summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2020-10-02 13:09:19 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2020-10-02 13:09:19 +0100
commitf9f8129199736929ef7e9f100a38149a3b9d1ce1 (patch)
tree42c4dfdbfd21133f7ea46e42d1ccafb9276de3cd /Makefile
parent44225f1b34eb1d393a74cc44dcfc32d102205ef6 (diff)
downloadnetsurf-f9f8129199736929ef7e9f100a38149a3b9d1ce1.tar.gz
netsurf-f9f8129199736929ef7e9f100a38149a3b9d1ce1.tar.bz2
Makefile: Determine and use linker deps
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile15
1 files changed, 11 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index 9fb2c84e4..ec9e813b3 100644
--- a/Makefile
+++ b/Makefile
@@ -609,6 +609,10 @@ CFLAGS += -DSTMTEXPR=1
CXXFLAGS += -DSTMTEXPR=1
endif
+# We trace during link so that we can determine if a libary changes under us in
+# order to re-link. This *may* be gcc specific, so may need tweaks in future.
+LDFLAGS += -Wl,--trace
+
# ----------------------------------------------------------------------------
# General make rules
# ----------------------------------------------------------------------------
@@ -718,15 +722,18 @@ OBJECTS := $(sort $(addprefix $(OBJROOT)/,$(subst /,_,$(patsubst %.c,%.o,$(patsu
# Include directory flags
IFLAGS = $(addprefix -I,$(INCLUDE_DIRS))
-$(EXETARGET): $(OBJECTS) $(RESOURCES) $(MESSAGES)
+$(EXETARGET): $(OBJECTS) $(RESOURCES) $(MESSAGES) tools/linktrace-to-depfile.pl
$(VQ)echo " LINK: $(EXETARGET)"
ifneq ($(TARGET)$(SUBTARGET),riscos-elf)
- $(Q)$(CC) -o $(EXETARGET) $(OBJECTS) $(LDFLAGS)
+ $(Q)$(CC) -o $(EXETARGET) $(OBJECTS) $(LDFLAGS) > $(DEPROOT)/link-raw.d
else
- $(Q)$(CXX) -o $(EXETARGET:,ff8=,e1f) $(OBJECTS) $(LDFLAGS)
+ $(Q)$(CXX) -o $(EXETARGET:,ff8=,e1f) $(OBJECTS) $(LDFLAGS) > $(DEPROOT)/link-raw.d
$(Q)$(ELF2AIF) $(EXETARGET:,ff8=,e1f) $(EXETARGET)
$(Q)$(RM) $(EXETARGET:,ff8=,e1f)
endif
+ $(VQ)echo "LINKDEPS: $(EXETARGET)"
+ $(Q)echo -n "$(EXETARGET) $(DEPROOT)/link.d: " > $@
+ $(Q)$(PERL) tools/linktrace-to-depfile.pl < $(DEPROOT)/link-raw.d >> $(DEPROOT)/link.d
ifeq ($(NETSURF_STRIP_BINARY),YES)
$(VQ)echo " STRIP: $(EXETARGET)"
$(Q)$(STRIP) $(EXETARGET)
@@ -743,7 +750,6 @@ ifeq ($(TARGET),beos)
$(Q)$(BEOS_MIMESET) $(EXETARGET)
endif
-
clean-target:
$(VQ)echo " CLEAN: $(EXETARGET)"
$(Q)$(RM) $(EXETARGET)
@@ -855,6 +861,7 @@ $(eval $(foreach SOURCE,$(filter %.m,$(SOURCES)), \
ifeq ($(filter $(MAKECMDGOALS),clean test coverage),)
-include $(sort $(addprefix $(DEPROOT)/,$(DEPFILES)))
+-include $(DEPROOT)/link.d
endif
# And rules to build the objects themselves...