diff options
author | George Hahn <george.hahn.vhs@gmail.com> | 2022-05-19 00:33:31 -0600 |
---|---|---|
committer | George Hahn <george.hahn.vhs@gmail.com> | 2022-05-19 00:33:31 -0600 |
commit | c40d75b8765a2972bb6a80a7c6f56865b52063e4 (patch) | |
tree | e934f383ad40c3a6c472048fbf48960dc9b3fd62 /rules.mk | |
parent | 190dca0a777a8961460faaf993c9e34f921a9a1a (diff) | |
download | Sensor-Watch-c40d75b8765a2972bb6a80a7c6f56865b52063e4.tar.gz Sensor-Watch-c40d75b8765a2972bb6a80a7c6f56865b52063e4.tar.bz2 Sensor-Watch-c40d75b8765a2972bb6a80a7c6f56865b52063e4.zip |
Make submodule and directory rules order-only prerequisites on objects
This instructs make to run the tinyusb and directory rules before
building any objects. Docs: [1].
After this change, `make clean` started running
the tinyusb submodule rule before cleaning. This appears to have been
caused by one of the `build/*.d` files overlapping with the `tinyusb`
name, triggering that rule. I didn't trace this all the way down to a
root cause, but switching the include to something less broad solved the
issue. Roughly guided by [2].
1: https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
2: http://make.mad-scientist.net/papers/advanced-auto-dependency-generation/
Diffstat (limited to 'rules.mk')
-rw-r--r-- | rules.mk | 11 |
1 files changed, 7 insertions, 4 deletions
@@ -7,9 +7,9 @@ SUBMODULES = tinyusb COBRA = cobra -f ifndef EMSCRIPTEN -all: directory $(SUBMODULES) $(BUILD)/$(BIN).elf $(BUILD)/$(BIN).hex $(BUILD)/$(BIN).bin $(BUILD)/$(BIN).uf2 size +all: $(BUILD)/$(BIN).elf $(BUILD)/$(BIN).hex $(BUILD)/$(BIN).bin $(BUILD)/$(BIN).uf2 size else -all: directory $(SUBMODULES) $(BUILD)/$(BIN).html +all: $(BUILD)/$(BIN).html endif $(BUILD)/$(BIN).html: $(OBJS) @@ -35,13 +35,14 @@ $(BUILD)/$(BIN).uf2: $(BUILD)/$(BIN).bin @echo UF2CONV $@ @$(UF2) $^ -co $@ +.phony: $(SUBMODULES) $(SUBMODULES): git submodule update --init install: @$(UF2) -D $(BUILD)/$(BIN).uf2 -%.o: +$(BUILD)/%.o: | $(SUBMODULES) directory @echo CC $@ @$(CC) $(CFLAGS) $(filter %/$(subst .o,.c,$(notdir $@)), $(SRCS)) -c -o $@ @@ -59,4 +60,6 @@ clean: analyze: @$(COBRA) basic $(INCLUDES) $(DEFINES) $(SRCS) --include $(wildcard $(BUILD)/*.d) +DEPFILES := $(SRCS:%.c=$(BUILD)/%.d) + +-include $(wildcard $(DEPFILES)) |