aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2005-08-24 10:43:10 +0000
committerReid Spencer <rspencer@reidspencer.com>2005-08-24 10:43:10 +0000
commit755bcf086dc163d72d1d2fa1f1d708f6ac75910a (patch)
treeffbba6bfe5ca06d2bbccab5bf298ab6041c53331
parent0a262ba7c3250ef02833fae864459ccc905a2e9b (diff)
downloadexternal_llvm-755bcf086dc163d72d1d2fa1f1d708f6ac75910a.zip
external_llvm-755bcf086dc163d72d1d2fa1f1d708f6ac75910a.tar.gz
external_llvm-755bcf086dc163d72d1d2fa1f1d708f6ac75910a.tar.bz2
For PR619:
Make any header files that are automatically generated be preconditions of the compilation. This ensures that if a *.h.in file is changed then its corresponding *.h file gets updated on the next rebuild. Note that this can lead to confusing (but correct) results if the *.h.in file changed unsubstantially so that autoheader doesn't update the *.h file. In that case, manually touch the *.h file in question to restore order. Moral of the story, if you're going to "touch" a *.in file then modify it substantially. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23006 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--Makefile.rules16
-rw-r--r--autoconf/configure.ac4
2 files changed, 20 insertions, 0 deletions
diff --git a/Makefile.rules b/Makefile.rules
index 7dfb2b4..09c0a9c 100644
--- a/Makefile.rules
+++ b/Makefile.rules
@@ -28,6 +28,13 @@ TopLevelTargets := check dist dist-check dist-clean tags dist-gzip dist-bzip2 \
UserTargets := $(RecursiveTargets) $(LocalTargets) $(TopLevelTargets)
InternalTargets := preconditions distdir dist-hook
+FilesToConfig := \
+ include/llvm/Config/config.h \
+ include/llvm/Support/DataTypes.h \
+ include/llvm/ADT/hash_map \
+ include/llvm/ADT/hash_set \
+ include/llvm/ADT/iterator
+
################################################################################
# INITIALIZATION: Basic things the makefile needs
################################################################################
@@ -77,6 +84,9 @@ ifneq ($(MakefileConfigIn),)
PreConditions += $(MakefileConfig)
endif
+FilesToConfigPATH := $(addprefix $(PROJ_OBJ_ROOT)/,$(FilesToConfig))
+PreConditions += $(FilesToConfigPATH)
+
preconditions : $(PreConditions)
#------------------------------------------------------------------------
@@ -134,6 +144,11 @@ $(ConfigStatusScript): $(ConfigureScript)
$(ConfigStatusScript) --recheck $(ConfigureScriptFLAGS) && \
$(ConfigStatusScript)
+.PRECIOUS: $(FilesToConfigPATH)
+$(FilesToConfigPATH) : $(PROJ_OBJ_ROOT)/% : $(PROJ_SRC_ROOT)/%.in
+ $(Echo) Regenerating $*
+ $(Verb) cd $(PROJ_OBJ_ROOT) && $(ConfigStatusScript) $*
+
#------------------------------------------------------------------------
# Make sure the configuration makefile is up to date
#------------------------------------------------------------------------
@@ -1576,3 +1591,4 @@ printvars::
$(Echo) "YaccFiles : " '$(YaccFiles)'
$(Echo) "LexFiles : " '$(LexFiles)'
$(Echo) "Module : " '$(Module)'
+ $(Echo) "FilesToConfig: " '$(FilesToConfigPATH)'
diff --git a/autoconf/configure.ac b/autoconf/configure.ac
index 0c18451..661fc1d 100644
--- a/autoconf/configure.ac
+++ b/autoconf/configure.ac
@@ -634,6 +634,10 @@ dnl===
dnl===-----------------------------------------------------------------------===
dnl Configure header files
+dnl WARNING: dnl If you add or remove any of the following config headers, then
+dnl you MUST also update Makefile.rules so that the variable FilesToConfig
+dnl contains the same list of files as AC_CONFIG_HEADERS below. This ensures the
+dnl files can be updated automatically when their *.in sources change.
AC_CONFIG_HEADERS([include/llvm/Config/config.h])
AC_CONFIG_HEADERS([include/llvm/Support/DataTypes.h])
AC_CONFIG_HEADERS([include/llvm/ADT/hash_map])