r8832: Automatically rebuilding C files if headers change (in developer mode)
authorJelmer Vernooij <jelmer@samba.org>
Thu, 28 Jul 2005 14:37:54 +0000 (14:37 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:30:10 +0000 (13:30 -0500)
source/build/m4/check_path.m4
source/build/smb_build/makefile.pm
source/heimdal_build/config.m4

index 55f04dee9a7045cddf0563a342229723d0650e9b..d96e2e813090f2c6a224a0774df409943bfa6e0c 100644 (file)
@@ -146,6 +146,7 @@ AC_ARG_WITH(selftest-prefix,
   esac])
 
 developer=no
+AC_SUBST(developer)
 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
     [if test x$enable_developer = xyes; then
        debug=yes
index 0d0c851776f3f1b7007f7fd31fb0e9d21b2ea690..01d2de770a10f049a832da6293b7430dddeb1240 100644 (file)
@@ -7,6 +7,7 @@
 ###########################################################
 
 package makefile;
+use config qw(%config);
 use strict;
 
 sub _prepare_command_interpreters($)
@@ -118,7 +119,7 @@ sub _prepare_SUFFIXES($)
 
        $output = << '__EOD__';
 .SUFFIXES:
-.SUFFIXES: .c .o .h .h.gch .a .so .1 .1.xml .3 .3.xml .5 .5.xml .7 .7.xml
+.SUFFIXES: .c .d .o .h .h.gch .a .so .1 .1.xml .3 .3.xml .5 .5.xml .7 .7.xml
 
 __EOD__
 
@@ -212,6 +213,16 @@ dynconfig.o: dynconfig.c Makefile
 __EOD__
 }
 
+sub _prepare_depend_CC_rule()
+{
+       return << '__EOD__';
+.c.d:
+       @echo "Generating dependencies for $<"
+       @$(CC) -MM -MG -MT $(<:.c=.o) -MF $@ $(CFLAGS) $<
+
+__EOD__
+}
+
 ###########################################################
 # This function creates a standard make rule which is using $(CC)
 #
@@ -561,6 +572,13 @@ distclean: clean
        -rm -f config.log config.cache
        -rm -f samba4-deps.dot
        -rm -f lib/registry/winregistry.pc
+__EOD__
+
+       if ($config{developer} eq "yes") {
+               $output .= "\t@-rm -f \$(_ALL_OBJS_OBJS:.o=.d)\n";
+       }
+
+       $output .= << '__EOD__';
 
 removebackup:
        -rm -f *.bak *~ */*.bak */*~ */*/*.bak */*/*~ */*/*/*.bak */*/*/*~
@@ -821,6 +839,8 @@ sub _prepare_makefile_in($)
        $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_depend_CC_rule();
+       
        $output .= _prepare_man_rule("1");
        $output .= _prepare_man_rule("3");
        $output .= _prepare_man_rule("5");
@@ -837,6 +857,16 @@ sub _prepare_makefile_in($)
        
        $output .= _prepare_make_target({ TARGET => "all", DEPEND_LIST => \@all });
 
+       if ($config{developer} eq "yes") {
+               $output .= <<__EOD__
+-include \$(_ALL_OBJS_OBJS:.o=.d)
+IDL_FILES = \$(wildcard librpc/idl/*.idl)
+\$(patsubst librpc/idl/%.idl,librpc/gen_ndr/ndr_%.c,\$(IDL_FILES)) \\
+\$(patsubst librpc/idl/%.idl,librpc/gen_ndr/ndr_\%_c.c,\$(IDL_FILES)) \\
+\$(patsubst librpc/idl/%.idl,librpc/gen_ndr/ndr_%.h,\$(IDL_FILES)): idl
+__EOD__
+       }
+
        return $output;
 }
 
@@ -862,3 +892,4 @@ sub create_makefile_in($$)
 }
 
 1;
+
index 7f083e9314d45c448d07ae4bdf3450102f6c5fcf..fa798497508d4b1b7bb64f6c04f76da0ddc1613e 100644 (file)
@@ -192,7 +192,7 @@ AC_CHECK_TYPES(u_int8_t)
 # of the samba source tree
 if test -d heimdal; then
        AC_DEFINE(HAVE_KRB5,1,[Whether kerberos is available])
-       CFLAGS="${CFLAGS} -Iheimdal_build -Iheimdal/lib/krb5 -Iheimdal/lib/gssapi -Iheimdal/lib/asn1 -Iheimdal/lib/com_err -Iheimdal/lib/hdb -Iheimdal/kdc"
+       CFLAGS="${CFLAGS} -Iheimdal_build -Iheimdal/lib/krb5 -Iheimdal/lib/gssapi -Iheimdal/lib/asn1 -Iheimdal/lib/com_err -Iheimdal/lib/hdb -Iheimdal/kdc -Iheimdal/lib/roken -Iheimdal/lib/des"
        HAVE_KRB5=YES
        SMB_SUBSYSTEM_ENABLE(KERBEROS_LIB, YES)
        SMB_BINARY_ENABLE(asn1_compile, YES)