diff --git a/Makefile.in b/Makefile.in --- a/Makefile.in +++ b/Makefile.in @@ -11,6 +11,7 @@ include Makefile.am SOURCE_LIST = !!SOURCE_LIST!! CONFIG_CACHE_SOURCE_LIST = !!CONFIG_CACHE_SOURCE_LIST!! +CONFIG_CACHE_PWD = !!CONFIG_CACHE_PWD!! CONFIGURE_FILES = !!CONFIGURE_FILES!! LIPO = !!LIPO!! BIN_DIR = !!BIN_DIR!! @@ -37,9 +38,10 @@ REVISION = !!REVISION!! AWK = !!AWK!! DISTCC = !!DISTCC!! -RES := $(shell if [ ! -f $(CONFIG_CACHE_SOURCE_LIST) ] || [ -n "`cmp $(CONFIG_CACHE_SOURCE_LIST) $(SOURCE_LIST)`" ]; then cp $(SOURCE_LIST) $(CONFIG_CACHE_SOURCE_LIST); fi ) +RES := $(shell if [ ! -f $(CONFIG_CACHE_PWD) ] || [ "`pwd`" != "`cat $(CONFIG_CACHE_PWD)`" ]; then echo "`pwd`" > $(CONFIG_CACHE_PWD); fi ) +RES := $(shell if [ ! -f $(CONFIG_CACHE_SOURCE_LIST) ] || [ -n "`cmp $(CONFIG_CACHE_SOURCE_LIST) $(SOURCE_LIST) 2>/dev/null`" ]; then cp $(SOURCE_LIST) $(CONFIG_CACHE_SOURCE_LIST); fi ) -all: config.cache +all: config.pwd config.cache ifdef DISTCC @if [ -z "`echo '$(MFLAGS)' | grep '\-j'`" ]; then echo; echo "WARNING: you enabled distcc support, but you don't seem to be using the -jN paramter"; echo; fi endif @@ -78,7 +80,13 @@ help: @echo " bundle_lha create the lha installation bundle" @echo " bundle_dmg create the dmg installation bundle" +config.pwd: $(CONFIG_CACHE_PWD) + $(MAKE) reconfigure + config.cache: $(CONFIG_CACHE_SOURCE_LIST) $(CONFIGURE_FILES) + $(MAKE) reconfigure + +reconfigure: ifeq ($(shell if test -f config.cache; then echo 1; fi), 1) @echo "----------------" @echo "The system detected that source.list or any configure file is altered." @@ -87,7 +95,7 @@ ifeq ($(shell if test -f config.cache; t # Make sure we don't lock config.cache @$(shell cat config.cache | sed 's/\\ /\\\\ /g') || exit 1 @echo "----------------" - @echo "Reconfig done. Now compiling..." + @echo "Reconfig done. Please re-execute make." @echo "----------------" else @echo "----------------" @@ -115,7 +123,7 @@ mrproper: $(Q)rm -rf objs $(Q)rm -f Makefile Makefile.am Makefile.bundle $(Q)rm -f media/openttd.desktop - $(Q)rm -f $(CONFIG_CACHE_SOURCE_LIST) config.cache config.log + $(Q)rm -f $(CONFIG_CACHE_SOURCE_LIST) config.cache config.pwd config.log $(CONFIG_CACHE_PWD) $(Q)rm -rf $(BUNDLE_DIR) $(Q)rm -rf $(BUNDLES_DIR) diff --git a/config.lib b/config.lib --- a/config.lib +++ b/config.lib @@ -2312,6 +2312,7 @@ make_sed() { s#!!CONFIG_CACHE_SOURCE!!#config.cache.source#g; s#!!CONFIG_CACHE_VERSION!!#config.cache.version#g; s#!!CONFIG_CACHE_SOURCE_LIST!!#config.cache.source.list#g; + s#!!CONFIG_CACHE_PWD!!#config.cache.pwd#g; s#!!LANG_SUPPRESS!!#$lang_suppress#g; s#!!OBJS_C!!#$OBJS_C#g; s#!!OBJS_CPP!!#$OBJS_CPP#g; @@ -2380,8 +2381,11 @@ generate_main() { echo >> Makefile.am # Make the copy of the source-list, so we don't trigger an unwanted recompile cp $SOURCE_LIST config.cache.source.list + # Add the current directory, so we don't trigger an unwanted recompile + echo "`pwd`" > config.cache.pwd # Make sure config.cache is OLDER then config.cache.source.list touch config.cache + touch config.pwd if [ "$menu_dir" != "" ]; then generate_menu_item