From 49b4d29ad357ea6347f7269a6cc3506fea70940b Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 26 Feb 2010 22:38:38 +1100 Subject: build: split out the extension based build patterns --- buildtools/wafsamba/samba_patterns.py | 107 ++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 buildtools/wafsamba/samba_patterns.py (limited to 'buildtools/wafsamba/samba_patterns.py') diff --git a/buildtools/wafsamba/samba_patterns.py b/buildtools/wafsamba/samba_patterns.py new file mode 100644 index 0000000000..15400f10b6 --- /dev/null +++ b/buildtools/wafsamba/samba_patterns.py @@ -0,0 +1,107 @@ +# a waf tool to add extension based build patterns for Samba + +import os, sys, Options +import string, Task, Utils, optparse +from Configure import conf +from Logs import debug +from TaskGen import extension +from samba_utils import * + + +################################################################################ +# a et task which calls out to compile_et to do the work +Task.simple_task_type('et', + '../heimdal_build/et_compile_wrapper.sh . ${TGT[0].bld_dir(env)} default/source4/heimdal_build/compile_et ${SRC[0].abspath(env)} ${TGT[0].bldpath(env)}', + color='BLUE', ext_out='.c', + shell = False) + +@extension('.et') +def process_et(self, node): + c_node = node.change_ext('.c') + h_node = node.change_ext('.h') + self.create_task('et', node, [c_node, h_node]) + self.allnodes.append(c_node) + + +################################################################################ +# a idl task which calls out to pidl to do the work +Task.simple_task_type('idl', '../../pidl/pidl --header --ndr-parser --client --python --server --outputdir=${TGT[0].outputdir} -- ${SRC}', color='BLUE', ext_out='.c') + +@extension('.idl') +def process_idl(self, node): + bname = node.file_base() + c_node = NEW_NODE(node, 'ndr_%s.c' % bname) + h1_node = NEW_NODE(node, '%s.h' % bname) + h2_node = NEW_NODE(node, 'ndr_%s.h' % bname) + s_node = NEW_NODE(node, 'ndr_%s_s.c' % bname) + cli_node = NEW_NODE(node, 'ndr_%s_c.c' % bname) + cli_h_node = NEW_NODE(node, 'ndr_%s_c.h' % bname) + py_node = NEW_NODE(node, 'py_%s.c' % bname) + + + dname = os.path.dirname(node.bld_dir(self.env)) + "/gen_ndr" + c_node.outputdir = dname + + self.create_task('idl', node, [c_node, h1_node, h2_node, s_node, cli_node, cli_h_node, py_node]) + + # reinject the c node to the list of nodes to process + self.allnodes.append(c_node) + + + + +################################################################################ +# a asn1 task which calls out to asn1_compile_wrapper.sh to do the work +Task.simple_task_type('asn1', + ''' +# shell script to convert ASN1 to C. This could be separated out if we want to +set -e +compiler=${TGT[0].compiler} +destdir=${TGT[0].destdir} +wrapper=${TGT[0].asn1wrapper} +srcfile=${SRC[0].abspath(env)} +asn1name=${TGT[0].asn1name} +options="${TGT[0].asn1options}" + +# run the wrapper +$wrapper . $destdir $compiler $srcfile $asn1name ${options} --one-code-file + +# that generated 3 files: +# ${asn1name}.hx +# asn1_${asn1name}.x +# ${asn1name}_files + + +hxfile=$destdir/$asn1name.hx +xfile=$destdir/asn1_$asn1name.x +listfilee=$destdir/"$asn1name"_files + +cfile=${TGT[0].abspath(env)} +hfile=${TGT[1].abspath(env)} + +cp $hxfile $hfile +echo '#include "config.h"' > $cfile +cat $xfile >> $cfile +rm -f $listfile + +''', + color='BLUE', + ext_out='.c', + shell = True) + +@extension('.asn1') +def process_asn1(self, node): + + asn1name = string.replace(node.file(), '.', '_') + c_node = NEW_NODE(node, 'asn1_%s.c' % asn1name) + h_node = NEW_NODE(node, '%s.h' % asn1name) + + c_node.destdir = "default/source4/heimdal/" + self.asn1directory + c_node.asn1options = self.asn1options + c_node.asn1name = asn1name + c_node.asn1wrapper = "../heimdal_build/asn1_compile_wrapper.sh" + c_node.compiler = "default/source4/heimdal_build/asn1_compile" + + self.create_task('asn1', node, [c_node, h_node]) + self.allnodes.append(c_node) + -- cgit