summaryrefslogtreecommitdiff
path: root/build/arch.mk
diff options
context:
space:
mode:
authorNicolas Schodet2016-01-18 16:54:26 +0100
committerNicolas Schodet2019-10-07 00:44:57 +0200
commit5b3a34d644bbedaf39efdf4a1d99d413eb986146 (patch)
tree411f71fe0ecb0014733c8e1be40c3e4b6971b997 /build/arch.mk
parent242d90c63e56d4cbac9a33a986f40f01f483edb0 (diff)
build: save link flags and rebuild as needed
Diffstat (limited to 'build/arch.mk')
-rw-r--r--build/arch.mk12
1 files changed, 9 insertions, 3 deletions
diff --git a/build/arch.mk b/build/arch.mk
index 33b8379..6b6410b 100644
--- a/build/arch.mk
+++ b/build/arch.mk
@@ -38,10 +38,14 @@ all.$1: elf.$1
elf.$1: $$($1_ELFS)
define $1_PROG_template
-$$1.$1$$$$($1_ELF_SUFFIX): $$$$(patsubst %,$$(OBJDIR)/%.$1.o,\
+$1_$$1_LINKFLAGS = $$$$($1_CFLAGS) $$$$($1_CXXFLAGS) $$$$($1_LDFLAGS)
+$$(call cmddep,$1_$$1_LINKFLAGS,$$$$(OBJDIR)/$$1.$1.linkflags)
+$1_$$1_OBJECTS = $$$$(patsubst %,$$(OBJDIR)/%.$1.o,\
$$$$(call filter_sources,$1,$$$$($$1_SOURCES)))
+$$1.$1$$$$($1_ELF_SUFFIX): $$$$($1_$$1_OBJECTS) $$$$(OBJDIR)/$$1.$1.linkflags
@echo "LINK [$1] $$$$@"
- $$$$Q$$$$($1_LINK.$$(call iscxx,$$($$1_SOURCES))) $$$$^ $$$$($1_LDLIBS) -o $$$$@
+ $$$$Q$$$$($1_LINK.$$(call iscxx,$$($$1_SOURCES))) $$$$($1_$$1_OBJECTS) \
+ $$$$($1_LDLIBS) -o $$$$@
endef
$$(foreach prog,$$($1_PROGS),$$(eval $$(call $1_PROG_template,$$(prog))))
@@ -169,9 +173,11 @@ define arch_misc_rules
clean: clean.$1
clean.$1:
- @echo rm -f '$$(OBJDIR)/.../*.$1.[od]' $$($1_ELFS) $$($1_EXTRA_CLEAN)
+ @echo rm -f '$$(OBJDIR)/.../*.$1.[od]' '$$(OBJDIR)/*.$1.linkflags' \
+ $$($1_ELFS) $$($1_EXTRA_CLEAN)
$$Qrm -f $$(patsubst %,$$(OBJDIR)/%.$1.[od],\
$$(call filter_sources,$1,$$(ALL_SOURCES))) \
+ $$($1_PROGS:%=$(OBJDIR)/%.$1.linkflags) \
$$($1_ELFS) $$($1_EXTRA_CLEAN)
endef