pidl-waf: build pidl man pages and parsers separately
[samba.git] / pidl / wscript
index 41d5b7431bcb0c67ee519758950ce7c34d150daf..4db7ca54d9b5290b9f24c122873f069056e5428a 100644 (file)
@@ -11,7 +11,7 @@ def configure(conf):
     if conf.CHECK_PERL_MANPAGE():
         conf.env.PERLMAN1EXT = conf.CHECK_PERL_MANPAGE(section='1')
         conf.env.PERLMAN3EXT = conf.CHECK_PERL_MANPAGE(section='3')
-        #conf.DEFINE('HAVE_PERL_MAKEMAKER', 1)
+        conf.DEFINE('HAVE_PERL_MAKEMAKER', 1)
 
     # yapp is used for building the parser
     conf.find_program('yapp', var='YAPP')
@@ -39,17 +39,22 @@ def build(bld):
     # use perl to build the manpages
     bld.env.pidl_srcdir = os.path.join(bld.srcnode.abspath(), 'pidl')
 
-    # we want to prefer the git version if we can. Only if the
-    # source has changed do we want to re-run yapp
-    if ('YAPP' in bld.env and (
-        bld.IS_NEWER('idl.yp', 'lib/Parse/Pidl/IDL.pm') or
-        bld.IS_NEWER('expr.yp', 'lib/Parse/Pidl/Expr.pm'))):
-        pidl_src.extend(['idl.yp', 'expr.yp'])
-
     bld.SAMBA_GENERATOR('pidl_manpages',
                         source=pidl_src,
                         target=pidl_manpages,
-                        rule='cd ${pidl_srcdir} && ${PERL} Makefile.PL && make && rm -f Makefile Makefile.old')
+                        rule='cd ${pidl_srcdir} && ${PERL} Makefile.PL && make manifypods && rm -f Makefile Makefile.old')
+
+    # we want to prefer the git version of the parsers if we can. Only if the
+    # source has changed do we want to re-run yapp
+    need_yapp_build = ('YAPP' in bld.env and (
+        bld.IS_NEWER('idl.yp', 'lib/Parse/Pidl/IDL.pm') or
+        bld.IS_NEWER('expr.yp', 'lib/Parse/Pidl/Expr.pm')))
+
+    if need_yapp_build:
+        bld.SAMBA_GENERATOR('pidl_parser',
+                            source='idl.yp expr.yp',
+                            target='lib/Parse/Pidl/IDL.pm lib/Parse/Pidl/Expr.pm Makefile.PL',
+                            rule='cd ${pidl_srcdir} && ${PERL} Makefile.PL && make lib/Parse/Pidl/IDL.pm lib/Parse/Pidl/Expr.pm && rm -f Makefile Makefile.old')
 
     for m in pidl_manpages:
         dname=os.path.dirname(m)[5:]