r24667: Finally merge the registry improvements that Wilco Baan Hofman and I have
[sfrench/samba-autobuild/.git] / source4 / script / lex_compile.sh
index f33a7f0fbaf0bf8e332a4eb1f5833d3cb7b27b25..f655f81f2d5bc4235a237a29fe7c7ea5e0b6ae37 100755 (executable)
@@ -3,24 +3,43 @@
 LEX="$1"
 SRC="$2"
 DEST="$3"
+shift 3
+ARGS="$*"
 
 dir=`dirname $SRC`
 file=`basename $SRC`
 base=`basename $SRC .l`
 if [ -z "$LEX" ]; then
-       echo "lex not found - not regenerating $DEST"
-       exit;
+       # if $DEST is more recent than $SRC, we can just touch
+       # otherwise we touch but print out warnings
+       if [ -r $DEST ]; then
+               if [ x`find $SRC -newer $DEST -print` = x$SRC ]; then
+                       echo "warning: lex not found - cannot generate $SRC => $DEST" >&2
+                       echo "warning: lex not found - only updating the timestamp of $DEST" >&2
+               fi
+               touch $DEST;
+               exit;
+       fi
+       echo "error: lex not found - cannot generate $SRC => $DEST" >&2
+       exit 1;
 fi
+# if $DEST is more recent than $SRC, we can just touch
 if [ -r $DEST ]; then
        if [ x`find $SRC -newer $DEST -print` != x$SRC ]; then
+               touch $DEST;
                exit;
        fi
 fi
 TOP=`pwd`
-if cd $dir && $LEX $file; then
+if cd $dir && $LEX $ARGS $file; then
        if [ -r $base.yy.c ];then
-               sed '/^#/ s|$base.yy\.c|$DEST|' $base.yy.c > $base.c
+               # we must guarantee that config.h comes first
+               echo "#include \"config.h\"" > $base.c
+               sed '/^#/ s|$base.yy\.c|$DEST|' $base.yy.c >> $base.c
                rm -f $base.yy.c
+       elif [ ! -r base.c ]; then
+               echo "$base.c nor $base.yy.c generated."
+               exit 1
        fi
 fi
 cd $TOP