aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Geiselbrecht <geist@foobox.com>2013-07-31 11:47:33 -0700
committerTravis Geiselbrecht <geist@foobox.com>2013-07-31 12:13:11 -0700
commite14309a95b7e44b4045bff69a3f213613895712e (patch)
tree097cd303ee8739b9b6f12613d8b629aefd458b62
parent7e8b333b97918fe31097ffae919ae9c2be032f41 (diff)
downloadlk-e14309a95b7e44b4045bff69a3f213613895712e.tar.gz
[make] add GLOBAL_SRCDEPS variable
Build a phony rule that depends on a delay evaluated SRCDEPS variable at the end of the build so that modules that add to it are properly tracked.
-rw-r--r--engine.mk7
-rw-r--r--make/compile.mk15
-rw-r--r--make/module.mk1
3 files changed, 12 insertions, 11 deletions
diff --git a/engine.mk b/engine.mk
index e2da15eb..49916613 100644
--- a/engine.mk
+++ b/engine.mk
@@ -74,9 +74,9 @@ GENERATED := $(CONFIGHEADER)
# anything added to GLOBAL_DEFINES will be put into $(BUILDDIR)/config.h
GLOBAL_DEFINES := LK=1
-# Anything added to SRCDEPS will become a dependency of every source file in the system.
+# Anything added to GLOBAL_SRCDEPS will become a dependency of every source file in the system.
# Useful for header files that may be included by one or more source files.
-SRCDEPS := $(CONFIGHEADER)
+GLOBAL_SRCDEPS := $(CONFIGHEADER)
# these need to be filled out by the project/target/platform rules.mk files
TARGET :=
@@ -203,6 +203,9 @@ endif
# the logic to compile and link stuff is in here
include make/build.mk
+# make all object files depend on any targets in GLOBAL_SRCDEPS
+$(ALLOBJS): $(GLOBAL_SRCDEPS)
+
clean: $(EXTRA_CLEANDEPS)
rm -f $(ALLOBJS) $(DEPS) $(GENERATED) $(OUTBIN) $(OUTELF) $(OUTELF).lst $(OUTELF).debug.lst $(OUTELF).sym $(OUTELF).size $(OUTELF).hex
diff --git a/make/compile.mk b/make/compile.mk
index 6ec8a2c0..9c4f8a9b 100644
--- a/make/compile.mk
+++ b/make/compile.mk
@@ -36,37 +36,34 @@ $(MODULE_OBJS): MODULE_CPPFLAGS:=$(MODULE_CPPFLAGS)
$(MODULE_OBJS): MODULE_ASMFLAGS:=$(MODULE_ASMFLAGS)
$(MODULE_OBJS): MODULE_SRCDEPS:=$(MODULE_SRCDEPS)
$(MODULE_OBJS): MODULE_INCLUDES:=$(MODULE_INCLUDES)
-$(MODULE_OBJS): SRCDEPS:=$(SRCDEPS)
-$(MODULE_OBJS): $(MODULE_SRCDEPS) $(SRCDEPS)
-
-$(MODULE_COBJS): $(BUILDDIR)/%.o: %.c $(SRCDEPS)
+$(MODULE_COBJS): $(BUILDDIR)/%.o: %.c $(MODULE_SRCDEPS)
@$(MKDIR)
@echo compiling $<
$(NOECHO)$(CC) $(GLOBAL_OPTFLAGS) $(MODULE_OPTFLAGS) $(GLOBAL_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) $(GLOBAL_CFLAGS) $(MODULE_CFLAGS) $(THUMBCFLAGS) $(GLOBAL_INCLUDES) $(MODULE_INCLUDES) -c $< -MD -MT $@ -MF $(@:%o=%d) -o $@
-$(MODULE_CPPOBJS): $(BUILDDIR)/%.o: %.cpp $(SRCDEPS)
+$(MODULE_CPPOBJS): $(BUILDDIR)/%.o: %.cpp $(MODULE_SRCDEPS)
@$(MKDIR)
@echo compiling $<
$(NOECHO)$(CC) $(GLOBAL_OPTFLAGS) $(MODULE_OPTFLAGS) $(GLOBAL_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) $(GLOBAL_CPPFLAGS) $(MODULE_CPPFLAGS) $(THUMBCFLAGS) $(GLOBAL_INCLUDES) $(MODULE_INCLUDES) -c $< -MD -MT $@ -MF $(@:%o=%d) -o $@
-$(MODULE_ASMOBJS): $(BUILDDIR)/%.o: %.S $(SRCDEPS)
+$(MODULE_ASMOBJS): $(BUILDDIR)/%.o: %.S $(MODULE_SRCDEPS)
@$(MKDIR)
@echo compiling $<
$(NOECHO)$(CC) $(GLOBAL_OPTFLAGS) $(MODULE_OPTFLAGS) $(GLOBAL_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) $(GLOBAL_ASMFLAGS) $(MODULE_ASMFLAGS) $(THUMBCFLAGS) $(GLOBAL_INCLUDES) $(MODULE_INCLUDES) -c $< -MD -MT $@ -MF $(@:%o=%d) -o $@
# overridden arm versions
-$(MODULE_ARM_COBJS): $(BUILDDIR)/%.o: %.c $(SRCDEPS)
+$(MODULE_ARM_COBJS): $(BUILDDIR)/%.o: %.c $(MODULE_SRCDEPS)
@$(MKDIR)
@echo compiling $<
$(NOECHO)$(CC) $(GLOBAL_OPTFLAGS) $(MODULE_OPTFLAGS) $(GLOBAL_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) $(GLOBAL_CFLAGS) $(MODULE_CFLAGS) $(GLOBAL_INCLUDES) $(MODULE_INCLUDES) -c $< -MD -MT $@ -MF $(@:%o=%d) -o $@
-$(MODULE_ARM_CPPOBJS): $(BUILDDIR)/%.o: %.cpp $(SRCDEPS)
+$(MODULE_ARM_CPPOBJS): $(BUILDDIR)/%.o: %.cpp $(MODULE_SRCDEPS)
@$(MKDIR)
@echo compiling $<
$(NOECHO)$(CC) $(GLOBAL_OPTFLAGS) $(MODULE_OPTFLAGS) $(GLOBAL_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) $(GLOBAL_CPPFLAGS) $(MODULE_CPPFLAGS) $(GLOBAL_INCLUDES) $(MODULE_INCLUDES) -c $< -MD -MT $@ -MF $(@:%o=%d) -o $@
-$(MODULE_ARM_ASMOBJS): $(BUILDDIR)/%.o: %.S $(SRCDEPS)
+$(MODULE_ARM_ASMOBJS): $(BUILDDIR)/%.o: %.S $(MODULE_SRCDEPS)
@$(MKDIR)
@echo compiling $<
$(NOECHO)$(CC) $(GLOBAL_OPTFLAGS) $(MODULE_OPTFLAGS) $(GLOBAL_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) $(GLOBAL_ASMFLAGS) $(MODULE_ASMFLAGS) $(GLOBAL_INCLUDES) $(MODULE_INCLUDES) -c $< -MD -MT $@ -MF $(@:%o=%d) -o $@
diff --git a/make/module.mk b/make/module.mk
index 99ccd882..4f763b9c 100644
--- a/make/module.mk
+++ b/make/module.mk
@@ -54,6 +54,7 @@ MODULE_DEFINES += MODULE_ASMFLAGS=\"$(subst $(SPACE),_,$(MODULE_ASMFLAGS))\"
MODULE_DEFINES += MODULE_LDFLAGS=\"$(subst $(SPACE),_,$(MODULE_LDFLAGS))\"
MODULE_DEFINES += MODULE_OPTFLAGS=\"$(subst $(SPACE),_,$(MODULE_OPTFLAGS))\"
MODULE_DEFINES += MODULE_INCLUDES=\"$(subst $(SPACE),_,$(MODULE_INCLUDES))\"
+MODULE_DEFINES += MODULE_SRCDEPS=\"$(subst $(SPACE),_,$(MODULE_SRCDEPS))\"
MODULE_DEFINES += MODULE_DEPS=\"$(subst $(SPACE),_,$(MODULE_DEPS))\"
# generate a per-module config.h file