r8803: Rename --header to --ndr-header and --parser to --ndr-parser
[sfrench/samba-autobuild/.git] / source4 / script / build_idl.sh
index 1eef5644e8c46257a49748767d63e26e1f96303c..5f232a9fb450ea2b6722d9e3305a75639ead6486 100755 (executable)
@@ -1,17 +1,36 @@
 #!/bin/sh
 
 FULLBUILD=$1
+shift 1
+PIDL_EXTRA_ARGS="$*"
 
 [ -d librpc/gen_ndr ] || mkdir -p librpc/gen_ndr || exit 1
-[ -d librpc/gen_rpc ] || mkdir -p librpc/gen_rpc || exit 1
-
-for f in librpc/idl/*.idl; do
-    base=`basename $f .idl`
-    ndr=librpc/gen_ndr/ndr_$base
-    if [ x$FULLBUILD = xFULL -o "$f" -nt $ndr.c ]; then
-      echo Processing $f
-      pidl.pl --output $ndr --parse --header --parser --client librpc/gen_rpc/rpc_$base.c $f || exit 1
+
+PIDL="$PERL -Ibuild/pidl ./build/pidl/pidl --outputdir librpc/gen_ndr --parse --ndr-header --ndr-parser --server --client --dcom-proxy --com-header --swig --odl --ejs $PIDL_EXTRA_ARGS"
+
+if [ x$FULLBUILD = xFULL ]; then
+      echo Rebuilding all idl files in librpc/idl
+      $PIDL librpc/idl/*.idl || exit 1
+      exit 0
+fi
+
+list=""
+
+for f in librpc/idl/*.idl ; do
+    basename=`basename $f .idl`
+    ndr="librpc/gen_ndr/ndr_$basename.c"
+    # blergh - most shells don't have the -nt function
+    if [ -f $ndr ]; then
+       if [ x`find $f -newer $ndr -print` = x$f ]; then
+           list="$list $f"
+       fi
+    else 
+        list="$list $f"
     fi
 done
 
+if [ "x$list" != x ]; then
+    $PIDL $list || exit 1
+fi
+
 exit 0