6 opt
.tool_options('perl')
9 conf
.check_tool('perl')
10 # we need a recent version of MakeMaker to get the right man page names
11 if conf
.CHECK_PERL_MANPAGE():
12 conf
.env
.PERLMAN1EXT
= conf
.CHECK_PERL_MANPAGE(section
='1')
13 conf
.env
.PERLMAN3EXT
= conf
.CHECK_PERL_MANPAGE(section
='3')
14 #conf.DEFINE('HAVE_PERL_MAKEMAKER', 1)
16 # yapp is used for building the parser
17 conf
.find_program('yapp', var
='YAPP')
21 bld
.INSTALL_FILES('${BINDIR}', 'pidl', chmod
=O755
)
25 if not bld
.CONFIG_SET('HAVE_PERL_MAKEMAKER'):
29 pidl_src
.extend(bld
.path
.ant_glob('lib/**/*.pm').split())
31 pidl_manpages
= '''blib/man1/pidl.${PERLMAN1EXT} blib/man3/Parse::Pidl::NDR.${PERLMAN3EXT}
32 blib/man3/Parse::Pidl::Wireshark::Conformance.${PERLMAN3EXT}
33 blib/man3/Parse::Pidl::Dump.${PERLMAN3EXT}
34 blib/man3/Parse::Pidl::Util.${PERLMAN3EXT}
35 blib/man3/Parse::Pidl::Wireshark::NDR.${PERLMAN3EXT}'''.split()
37 pidl_manpages
= bld
.EXPAND_VARIABLES(pidl_manpages
)
39 # use perl to build the manpages
40 bld
.env
.pidl_srcdir
= os
.path
.join(bld
.srcnode
.abspath(), 'pidl')
42 blib_bld
= os
.path
.join(bld
.srcnode
.abspath(bld
.env
), 'pidl/blib')
44 link_command
= 'rm -rf blib && ln -s %s' % blib_bld
46 t
= bld
.SAMBA_GENERATOR('pidl_manpages',
49 rule
='cd ${pidl_srcdir} && ${LINK_COMMAND} && ${PERL} Makefile.PL && make manifypods && rm -f Makefile Makefile.old && rm -f blib')
50 t
.env
.LINK_COMMAND
= link_command
52 # we want to prefer the git version of the parsers if we can. Only if the
53 # source has changed do we want to re-run yapp
54 need_yapp_build
= ('YAPP' in bld
.env
and (
55 bld
.IS_NEWER('idl.yp', 'lib/Parse/Pidl/IDL.pm') or
56 bld
.IS_NEWER('expr.yp', 'lib/Parse/Pidl/Expr.pm')))
59 t
= bld
.SAMBA_GENERATOR('pidl_parser',
60 source
='idl.yp expr.yp',
61 target
='lib/Parse/Pidl/IDL.pm lib/Parse/Pidl/Expr.pm Makefile.PL',
62 rule
='cd ${pidl_srcdir} && ${LINK_COMMAND} && ${PERL} Makefile.PL && make lib/Parse/Pidl/IDL.pm lib/Parse/Pidl/Expr.pm && rm -f Makefile Makefile.old && rm -f blib')
63 t
.env
.LINK_COMMAND
= link_command
65 for m
in pidl_manpages
:
66 dname
=os
.path
.dirname(m
)[5:]
67 bld
.INSTALL_FILES('${MANDIR}/'+dname
, m
, flat
=True)