From 492f3131cb52289e3be1eda590d87aa8c6d441a7 Mon Sep 17 00:00:00 2001 From: Ken Raeburn Date: Sat, 8 Mar 2003 20:50:54 +0000 Subject: [PATCH] Yet another attempt at cross-directory dependencies. Seems to fix the parallel 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 | 7 ++++++ src/lib/gssapi/Makefile.in | 47 +++++++++++++++++++++++++++++++------- 2 files changed, 46 insertions(+), 8 deletions(-) diff --git a/src/lib/gssapi/ChangeLog b/src/lib/gssapi/ChangeLog index fa2832e0b..26747104b 100644 --- a/src/lib/gssapi/ChangeLog +++ b/src/lib/gssapi/ChangeLog @@ -1,3 +1,10 @@ +2003-03-08 Ken Raeburn + + * 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 * gss_libinit.c: Changed USE_HARDCODED_FALLBACK_ERROR_TABLES macro diff --git a/src/lib/gssapi/Makefile.in b/src/lib/gssapi/Makefile.in index c0a69b626..baa776e5b 100644 --- a/src/lib/gssapi/Makefile.in +++ b/src/lib/gssapi/Makefile.in @@ -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@ -- 2.26.2