Yet another attempt at cross-directory dependencies. Seems to fix the parallel
authorKen Raeburn <raeburn@mit.edu>
Sat, 8 Mar 2003 20:50:54 +0000 (20:50 +0000)
committerKen Raeburn <raeburn@mit.edu>
Sat, 8 Mar 2003 20:50:54 +0000 (20:50 +0000)
build, and hasn't broken the out-of-date case so far as I can tell, so far...
Added a bunch of comments describing the cases that need to be handled.

* Makefile.in ($(BUILDTOP)/include/gssapi/gssapi.h, generic/gssapi.h,
generic/gssapi_err_generic.h, krb5/gssapi_err_krb5.h): Comment out old rules
and dependencies; depend on all-recurse and supply a no-op rule.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@15270 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/gssapi/ChangeLog
src/lib/gssapi/Makefile.in

index fa2832e0b0218346564e897a5055903bd0496351..26747104bc24308116bddec308b5b09f691ecdb1 100644 (file)
@@ -1,3 +1,10 @@
+2003-03-08  Ken Raeburn  <raeburn@mit.edu>
+
+       * Makefile.in ($(BUILDTOP)/include/gssapi/gssapi.h,
+       generic/gssapi.h, generic/gssapi_err_generic.h,
+       krb5/gssapi_err_krb5.h): Comment out old rules and dependencies;
+       depend on all-recurse and supply a no-op rule.
+
 2003-03-07  Alexandra Ellwood  <lxs@mit.edu>
 
     * gss_libinit.c: Changed USE_HARDCODED_FALLBACK_ERROR_TABLES macro 
index c0a69b62655854d09a48a530563c4b2b80a31f90..baa776e5bcb98831af644aad46d618ab3af33421 100644 (file)
@@ -70,14 +70,45 @@ clean-windows::
        cd ..
        @echo Making clean in gssapi
 
-$(BUILDTOP)/include/gssapi/gssapi.h: generic/gssapi.h
-       (cd generic && $(MAKE) gssapi-include)
-generic/gssapi.h: generic/gssapi.hin
-       (cd generic && $(MAKE) gssapi.h)
-generic/gssapi_err_generic.h: generic/gssapi_err_generic.et
-       (cd generic && $(MAKE) gssapi_err_generic.h)
-krb5/gssapi_err_krb5.h: krb5/gssapi_err_krb5.et
-       (cd krb5 && $(MAKE) gssapi_err_krb5.h)
+# These rules are an attempt to handle several different problems:
+#
+# Certain files in subdirectories must be made current by the
+# recursion step before we can build files in this directory that
+# depend on them.  Existing but out-of-date versions must not be used.
+#
+# In a parallel make, nothing should be built more than once.  This
+# effect can be exaggerated for testing by sticking "sleep 5" into the
+# rules for generating the files in subdirectories.  For example, in
+# between testing for a directory and creating it -- do you then get
+# mkdir complaining that the directory exists?  Adding the sleep
+# command may also exaggerate the build-with-outdated-headers problem,
+# by causing the timestamp on the newly generated header to be several
+# seconds newer than object files built with its old version, even on
+# fast machines where the UNIX filesystem's one-second granularity
+# would mask the problem.
+#
+# We must not cause these files to always be considered newly updated
+# when it comes time to build the object files in this directory.
+# Otherwise, we wind up recompiling some files every time we run make.
+
+# This set of rules fails the parallel make case; it can build
+# gssapi-include and all-recurse at the same time, and both will
+# create include/gssapi and gssapi.h.
+#$(BUILDTOP)/include/gssapi/gssapi.h: generic/gssapi.h
+#      (cd generic && $(MAKE) gssapi-include)
+#generic/gssapi.h: generic/gssapi.hin
+#      (cd generic && $(MAKE) gssapi.h)
+#generic/gssapi_err_generic.h: generic/gssapi_err_generic.et
+#      (cd generic && $(MAKE) gssapi_err_generic.h)
+#krb5/gssapi_err_krb5.h: krb5/gssapi_err_krb5.et
+#      (cd krb5 && $(MAKE) gssapi_err_krb5.h)
+
+# This version, without the no-op command to run, reportedly caused
+# repeated rebuilds in certain cases.  With the no-op command, it
+# appears to be properly serializing the subdir processing and local
+# compiles... so far.
+$(BUILDTOP)/include/gssapi/gssapi.h generic/gssapi.h krb5/gssapi_err_krb5.h generic/gssapi_err_generic.h: all-recurse
+       : $@ updated by recursion rule
 
 # @lib_frag@
 # @libobj_frag@