#!/bin/sh
-PIDL_ARGS="--outputdir librpc/gen_ndr --header --ndr-parser --samba3-ndr-server --samba3-ndr-client --"
-PIDL_EXTRA_ARGS="$*"
+if [ "$1" = "--full" ]; then
+ FULL=1
+ shift 1
+else
+ FULL=0
+fi
+
+ARGS="--includedir=../librpc/idl --outputdir $PIDL_OUTPUTDIR --header --ndr-parser --samba3-ndr-server --samba3-ndr-client $PIDL_ARGS --"
+IDL_FILES="$*"
oldpwd=`pwd`
cd ${srcdir}
-[ -d librpc/gen_ndr ] || mkdir -p librpc/gen_ndr || exit 1
+[ -d $PIDL_OUTPUTDIR ] || mkdir -p $PIDL_OUTPUTDIR || exit 1
-PIDL="$PIDL ${PIDL_ARGS} ${PIDL_EXTRA_ARGS}"
+PIDL="$PIDL $ARGS"
+
+if [ $FULL = 1 ]; then
+ echo "Rebuilding all idl files"
+ $PIDL $IDL_FILES || exit 1
+ exit 0
+fi
##
## Find newer files rather than rebuild all of them
list=""
for f in ${IDL_FILES}; do
- basename=`basename $f .idl`
- ndr="librpc/gen_ndr/ndr_$basename.c"
-
- if [ -f $ndr ] && false; then
- if [ "x`find librpc/idl/$f -newer $ndr -print`" = "xlibrpc/idl/$f" ]; then
- list="$list librpc/idl/$f"
- fi
- else
- list="$list librpc/idl/$f"
- fi
+ b=`basename $f .idl`
+ outfiles="cli_$b.c $b.h ndr_$b.h srv_$b.c"
+ outfiles="$outfiles cli_$b.h ndr_$b.c srv_$b.h"
+
+ for o in $outfiles; do
+ [ -f $PIDL_OUTPUTDIR/$o ] || {
+ list="$list $f"
+ break
+ }
+ test "`find $f -newer $PIDL_OUTPUTDIR/$o`" != "" && {
+ list="$list $f"
+ break
+ }
+ done
done
##