#!/usr/bin/env python import os def set_options(opt): opt.tool_options('perl') def configure(conf): conf.check_tool('perl') # we need a recent version of MakeMaker to get the right man page names 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) # yapp is used for building the parser conf.find_program('yapp', var='YAPP') def build(bld): bld.INSTALL_FILES('${BINDIR}', 'pidl', chmod=0755) bld.BUILD_SUBDIR('lib') if not bld.CONFIG_SET('HAVE_PERL_MAKEMAKER'): return pidl_src = ['pidl'] pidl_src.extend(bld.path.ant_glob('lib/**/*.pm').split()) pidl_manpages = '''blib/man1/pidl.${PERLMAN1EXT} blib/man3/Parse::Pidl::NDR.${PERLMAN3EXT} blib/man3/Parse::Pidl::Wireshark::Conformance.${PERLMAN3EXT} blib/man3/Parse::Pidl::Dump.${PERLMAN3EXT} blib/man3/Parse::Pidl::Util.${PERLMAN3EXT} blib/man3/Parse::Pidl::Wireshark::NDR.${PERLMAN3EXT}'''.split() pidl_manpages = bld.EXPAND_VARIABLES(pidl_manpages) # 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') for m in pidl_manpages: dname=os.path.dirname(m)[5:] bld.INSTALL_FILES('${MANDIR}/'+dname, m, flat=True)