summaryrefslogtreecommitdiffstats
path: root/src/lib/gssapi
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@mit.edu>2003-03-08 20:50:54 +0000
committerKen Raeburn <raeburn@mit.edu>2003-03-08 20:50:54 +0000
commit492f3131cb52289e3be1eda590d87aa8c6d441a7 (patch)
tree7df9c076f8a1427588091e934bad6bb4eaa2e2af /src/lib/gssapi
parent0eb4a6874af190769d6726ae70a4364302822cfd (diff)
downloadkrb5-492f3131cb52289e3be1eda590d87aa8c6d441a7.tar.gz
krb5-492f3131cb52289e3be1eda590d87aa8c6d441a7.tar.xz
krb5-492f3131cb52289e3be1eda590d87aa8c6d441a7.zip
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
Diffstat (limited to 'src/lib/gssapi')
-rw-r--r--src/lib/gssapi/ChangeLog7
-rw-r--r--src/lib/gssapi/Makefile.in47
2 files changed, 46 insertions, 8 deletions
diff --git a/src/lib/gssapi/ChangeLog b/src/lib/gssapi/ChangeLog
index fa2832e0b0..26747104bc 100644
--- a/src/lib/gssapi/ChangeLog
+++ b/src/lib/gssapi/ChangeLog
@@ -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
diff --git a/src/lib/gssapi/Makefile.in b/src/lib/gssapi/Makefile.in
index c0a69b6265..baa776e5bc 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@