1 | #!/bin/sh
|
---|
2 |
|
---|
3 | LEX="$1"
|
---|
4 | SRC="$2"
|
---|
5 | DEST="$3"
|
---|
6 | shift 3
|
---|
7 | ARGS="$*"
|
---|
8 |
|
---|
9 | dir=`dirname $SRC`
|
---|
10 | file=`basename $SRC`
|
---|
11 | base=`basename $SRC .l`
|
---|
12 | if [ -z "$LEX" ]; then
|
---|
13 | # if $DEST is more recent than $SRC, we can just touch
|
---|
14 | # otherwise we touch but print out warnings
|
---|
15 | if [ -r $DEST ]; then
|
---|
16 | if [ x`find $SRC -newer $DEST -print` = x$SRC ]; then
|
---|
17 | echo "warning: lex not found - cannot generate $SRC => $DEST" >&2
|
---|
18 | echo "warning: lex not found - only updating the timestamp of $DEST" >&2
|
---|
19 | fi
|
---|
20 | touch $DEST;
|
---|
21 | exit;
|
---|
22 | fi
|
---|
23 | echo "error: lex not found - cannot generate $SRC => $DEST" >&2
|
---|
24 | exit 1;
|
---|
25 | fi
|
---|
26 | # if $DEST is more recent than $SRC, we can just touch
|
---|
27 | if [ -r $DEST ]; then
|
---|
28 | if [ x`find $SRC -newer $DEST -print` != x$SRC ]; then
|
---|
29 | touch $DEST;
|
---|
30 | exit;
|
---|
31 | fi
|
---|
32 | fi
|
---|
33 | TOP=`pwd`
|
---|
34 | echo "info: running $LEX $ARGS $file"
|
---|
35 | if cd $dir && $LEX $ARGS $file; then
|
---|
36 | if [ -r lex.yy.c ];then
|
---|
37 | # we must guarantee that config.h comes first
|
---|
38 | echo "info: move lex.yy.c to $base.c"
|
---|
39 | echo "#include \"config.h\"" > $base.c
|
---|
40 | sed -e "s|lex\.yy\.c|$DEST|" lex.yy.c >> $base.c
|
---|
41 | rm -f $base.yy.c
|
---|
42 | elif [ -r $base.yy.c ];then
|
---|
43 | # we must guarantee that config.h comes first
|
---|
44 | echo "info: move $base.yy.c to $base.c"
|
---|
45 | echo "#include \"config.h\"" > $base.c
|
---|
46 | sed -e "s|$base\.yy\.c|$DEST|" $base.yy.c >> $base.c
|
---|
47 | rm -f $base.yy.c
|
---|
48 | elif [ -r $base.c ];then
|
---|
49 | # we must guarantee that config.h comes first
|
---|
50 | echo "info: add #include \"config.h\" to $base.c"
|
---|
51 | mv $base.c $base.c.tmp
|
---|
52 | echo "#include \"config.h\"" > $base.c
|
---|
53 | sed -e "s|$base\.yy\.c|$DEST|" $base.c.tmp >> $base.c
|
---|
54 | rm -f $base.c.tmp
|
---|
55 | elif [ ! -r base.c ]; then
|
---|
56 | echo "$base.c nor $base.yy.c nor lex.yy.c generated."
|
---|
57 | exit 1
|
---|
58 | fi
|
---|
59 | fi
|
---|
60 | cd $TOP
|
---|