build: split out the extension based build patterns
authorAndrew Tridgell <tridge@samba.org>
Fri, 26 Feb 2010 11:38:38 +0000 (22:38 +1100)
committerAndrew Tridgell <tridge@samba.org>
Tue, 6 Apr 2010 10:26:39 +0000 (20:26 +1000)
buildtools/wafsamba/samba_patterns.py [new file with mode: 0644]
buildtools/wafsamba/wafsamba.py

diff --git a/buildtools/wafsamba/samba_patterns.py b/buildtools/wafsamba/samba_patterns.py
new file mode 100644 (file)
index 0000000..15400f1
--- /dev/null
@@ -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)
+
index dd28368f652e44043a08007e45df5fa64d06e0e7..34ca3cf2ffd67ca00d9b07a91f78aebb30c8145d 100644 (file)
@@ -9,6 +9,7 @@ from TaskGen import extension
 # bring in the other samba modules
 from samba_utils import *
 from samba_autoconf import *
+from samba_patterns import *
 
 LIB_PATH="shared"
 
@@ -321,61 +322,6 @@ def SAMBA_PYTHON(bld, name, source_list,
 Build.BuildContext.SAMBA_PYTHON = SAMBA_PYTHON
 
 
-################################################################################
-# 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)
-
 
 #################################################################
 # define a Samba ASN1 target
@@ -396,21 +342,6 @@ Build.BuildContext.SAMBA_ASN1 = SAMBA_ASN1
 
 
 
-################################################################################
-# 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)
-
-
 #################################################################
 # define a Samba ET target
 def SAMBA_ERRTABLE(bld, name, source,
@@ -434,31 +365,6 @@ def NEW_NODE(node, name):
             name, node.name))
     return ret
 
-################################################################################
-# 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)
-
-
 #################################################################
 # define a PIDL target
 def SAMBA_PIDL(bld, directory, source):