changeset 2792:a12a1178d130 draft

(svn r3340) Fix dependency calculation: dependencies didn't get recalculated if a header file changed Also really automagically create the dependency directories by deriving the directory names from $(DEPS)
author tron <tron@openttd.org>
date Sun, 25 Dec 2005 09:19:16 +0000
parents 483f9b957b5c
children 5f7cd758e6c7
files Makefile
diffstat 1 files changed, 14 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile
+++ b/Makefile
@@ -978,26 +978,31 @@
 ### Internal build rules
 
 # This makes sure the .deps dir is always around.
-DEPS_MAGIC := $(shell mkdir -p .deps .deps/music .deps/sound .deps/video .deps/os .deps/os/macosx .deps/ai/default .deps/ai/trolly)
+DEPS_MAGIC := $(shell mkdir -p $(sort $(dir $(DEPS))))
+
+depend:
+	@true # The include handles this automagically
 
 # Introduce the dependencies
-ifneq ($(MAKECMDGOALS), clean)
+ifeq ($(findstring $(MAKECMDGOALS), clean info),)
 -include $(DEPS)
 endif
 
-%.o: .deps/%.d
+# Silence stale header dependency errors
+%.h:
+	@true
 
 .deps/%.d: %.c $(MAKE_CONFIG) table/strings.h endian_target.h
-	@echo '===> Determining dependencies of $<'
-	$(Q)$(CC) $(CFLAGS) $(CDEFS) -MM $< > $@
+	@echo '===> DEP $<'
+	$(Q)$(CC) $(CFLAGS) -MM $< | sed 's#^$(@F:%.d=%.o):#$@ $(@:.deps/%.d=%.o):#' > $@
 
 .deps/%.d: %.cpp $(MAKE_CONFIG) table/strings.h endian_target.h
-	@echo '===> Determining dependencies of $<'
-	$(Q)$(CXX) $(CFLAGS) $(CDEFS) -MM $< > $@
+	@echo '===> DEP $<'
+	$(Q)$(CXX) $(CXXFLAGS) -MM $< | sed 's#^$(@F:%.d=%.o):#$@ $(@:.deps/%.d=%.o):#' > $@
 
 .deps/%.d: %.m $(MAKE_CONFIG) table/strings.h endian_target.h
-	@echo '===> Determining dependencies of $<'
-	$(Q)$(CC) $(CFLAGS) $(CDEFS) -MM $< > $@
+	@echo '===> DEP $<'
+	$(Q)$(CC) $(OBJCFLAGS) -MM $< | sed 's#^$(@F:%.d=%.o):#$@ $(@:.deps/%.d=%.o):#' > $@
 
 
 %.o: %.c $(MAKE_CONFIG)