r8955: Move a bit more of the build process to the Makefile
authorJelmer Vernooij <jelmer@samba.org>
Tue, 2 Aug 2005 23:15:56 +0000 (23:15 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:31:00 +0000 (13:31 -0500)
source/build/smb_build/makefile.pm
source/heimdal_build/build_external.sh
source/heimdal_build/config.mk

index d5dbfa1751d6555ecb71692755d7c1fd2a5fa288..1ccdb3239dbcd183f89e826d03c9dc7c5f82308c 100644 (file)
@@ -96,6 +96,9 @@ SHLD_FLAGS=@LDSHFLAGS@ @LDFLAGS@ -Lbin
 
 XSLTPROC=@XSLTPROC@
 
+LEX=@LEX@
+YACC=@YACC@
+
 __EOD__
 }
 
@@ -119,7 +122,7 @@ sub _prepare_SUFFIXES($)
 
        $output = << '__EOD__';
 .SUFFIXES:
-.SUFFIXES: .c .d .o .h .h.gch .a .so .1 .1.xml .3 .3.xml .5 .5.xml .7 .7.xml
+.SUFFIXES: .c .et .y .l .d .o .h .h.gch .a .so .1 .1.xml .3 .3.xml .5 .5.xml .7 .7.xml
 
 __EOD__
 
@@ -220,6 +223,36 @@ dynconfig.o: dynconfig.c Makefile
 __EOD__
 }
 
+sub _prepare_et_rule()
+{
+       return << '__EOD__';
+
+.et.c: 
+       $(MAKE) bin/compile_et
+       ./bin/compile_et $<
+       mv `basename $@` $@
+
+__EOD__
+}
+
+sub _prepare_yacc_rule()
+{
+       return << '__EOD__';
+.y.c:
+       $(YACC) -d -o $@ $<     
+       
+__EOD__
+}
+
+sub _prepare_lex_rule()
+{
+       return << '__EOD__';
+.l.c:
+       $(LEX) -o $@ $<
+
+__EOD__
+}
+
 sub _prepare_depend_CC_rule()
 {
        return << '__EOD__';
@@ -869,6 +902,9 @@ sub _prepare_makefile_in($)
        $output .= _prepare_dummy_MAKEDIR();
        $output .= _prepare_std_CC_rule("c","o",'@PICFLAG@',"Compiling","Rule for std objectfiles");
        $output .= _prepare_std_CC_rule("h","h.gch",'@PICFLAG@',"Precompiling","Rule for precompiled headerfiles");
+       $output .= _prepare_lex_rule();
+       $output .= _prepare_yacc_rule();
+       $output .= _prepare_et_rule();
 
        $output .= _prepare_depend_CC_rule();
        
index ff9dc2ac2e46f04f10fac49e5aa1d7d06e22d150..9d80625a38d2572f5acade0ac225a57f7af2d300 100755 (executable)
@@ -1,15 +1,12 @@
 #!/bin/sh
 #####################
-# build generated asn1, et and flex files in heimdal/ tree
+# build generated asn1 files in heimdal/ tree
 # tridge@samba.org, June 2005
 
 CC="$1"
-LEX="$2"
-YACC="$3"
 
 TOP=`pwd`
 ASN1_COMPILE=$TOP/bin/asn1_compile
-ET_COMPILE=$TOP/bin/compile_et
 
 build_asn1() {
     f=$1
@@ -26,60 +23,6 @@ build_asn1() {
     cd $TOP || exit 1
 }
 
-build_et() {
-    f=$1
-    dir=`dirname $f`
-    file=`basename $f`
-    echo Building $f
-    cd $dir && $ET_COMPILE $file || exit 1
-    cd $TOP || exit 1
-}
-
-build_lex() {
-    f=$1
-    dir=`dirname $f`
-    file=`basename $f`
-    base=`basename $f .l`
-    if [ -z "$LEX" ]; then
-       echo "lex not found"
-       return;
-    fi
-    if [ -r $dir/$base.c ]; then
-       if [ x`find $f -newer $dir/$base.c -print` != x$f ]; then
-           return;
-        fi
-    fi
-    echo Building $f
-    if cd $dir && $LEX $file; then
-       sed '/^#/ s|$base.yy\.c|$base.c|' $base.yy.c > $base.c
-       rm -f $base.yy.c
-    fi
-    cd $TOP || exit 1
-}
-
-build_yacc() {
-    f=$1
-    dir=`dirname $f`
-    file=`basename $f`
-    base=`basename $f .y`
-    if [ -z "$YACC" ]; then
-       echo "yacc not found"
-       return;
-    fi
-    if [ -r $dir/$base.c ]; then
-       if [ x`find $f -newer $dir/$base.c -print` != x$f ]; then
-           return;
-        fi
-    fi
-    echo Building $f
-    if cd $dir && $YACC -d $file; then
-       sed -e "/^#/!b" -e "s|y\.tab\.h|$base.h|" y.tab.h > $base.h
-       sed '/^#/ s|y\.tab\.c|$base.c|' y.tab.c > $base.c
-       rm -f y.tab.c y.tab.h
-    fi
-    cd $TOP || exit 1
-}
-
 build_cp() {
     f=$1
     dir=`dirname $f`
@@ -93,19 +36,8 @@ build_cp() {
 
 build_cp heimdal/lib/roken/vis.hin
 build_cp heimdal/lib/roken/err.hin
-build_lex heimdal/lib/asn1/lex.l
-build_lex heimdal/lib/com_err/lex.l
-build_yacc heimdal/lib/com_err/parse.y
-build_yacc heimdal/lib/asn1/parse.y
 
 make bin/asn1_compile || exit 1
 build_asn1 heimdal/lib/hdb/hdb.asn1 hdb_asn1
 build_asn1 heimdal/lib/gssapi/spnego.asn1 spnego_asn1
 build_asn1 heimdal/lib/asn1/k5.asn1 krb5_asn1
-
-make bin/compile_et || exit 1
-build_et heimdal/lib/hdb/hdb_err.et
-build_et heimdal/lib/krb5/krb5_err.et
-build_et heimdal/lib/krb5/heim_err.et
-build_et heimdal/lib/krb5/k524_err.et
-build_et heimdal/lib/asn1/asn1_err.et
index 2b961701b2d01d3670a1294d2d6ecb88d4e1516d..d2a29626f6c63a12fda42ac557a1f4b746c4fb12 100644 (file)
@@ -384,7 +384,7 @@ REQUIRED_SUBSYSTEMS = COMPILE_ET LIBREPLACE
 #######################
 # Start TARGET HEIMDAL_EXTERNAL
 [TARGET::HEIMDAL_EXTERNAL]
-CMD = heimdal_build/build_external.sh "@HOSTCC@" "@LEX@" "@YACC@"
+CMD = heimdal_build/build_external.sh "@HOSTCC@"
 REQUIRED_SUBSYSTEMS = ASN1_COMPILER
 # END TARGET HEIMDAL_EXTERNAL
 #######################