From 2ab6f82ddfbb93d4ba526642d0817ff44bad1208 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=82=E3=81=8F?= Date: Thu, 8 Oct 2020 12:47:12 +0300 Subject: [PATCH] Makefile: build flags as a target. (#163) * Makefile: build flags as a target. * Makefile: proper BUILD_FLAGS generation routine Co-authored-by: Aleksandr Kutuzov --- firmware/Makefile | 3 --- make/rules.mk | 20 ++++++++++++++++---- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/firmware/Makefile b/firmware/Makefile index 3adec02e..4c6a10f4 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -12,6 +12,3 @@ include $(TARGET_DIR)/target.mk include $(PROJECT_ROOT)/make/toolchain.mk include $(PROJECT_ROOT)/make/rules.mk - -$(OBJ_DIR)/app.o: .FORCE -.PHONY: .FORCE \ No newline at end of file diff --git a/make/rules.mk b/make/rules.mk index 6797b4f7..1c70fdff 100644 --- a/make/rules.mk +++ b/make/rules.mk @@ -13,6 +13,13 @@ DEPS = $(OBJECTS:.o=.d) $(shell mkdir -p $(OBJ_DIR)) +BUILD_FLAGS_SHELL=\ + echo -n "$(CFLAGS)" > $(OBJ_DIR)/BUILD_FLAGS.tmp; \ + diff $(OBJ_DIR)/BUILD_FLAGS $(OBJ_DIR)/BUILD_FLAGS.tmp > /dev/null \ + && ( echo "CFLAGS ok"; rm $(OBJ_DIR)/BUILD_FLAGS.tmp) \ + || ( echo "CFLAGS has been changed"; mv $(OBJ_DIR)/BUILD_FLAGS.tmp $(OBJ_DIR)/BUILD_FLAGS ) +$(info $(shell $(BUILD_FLAGS_SHELL))) + all: $(OBJ_DIR)/$(PROJECT).elf $(OBJ_DIR)/$(PROJECT).hex $(OBJ_DIR)/$(PROJECT).bin $(OBJ_DIR)/$(PROJECT).elf: $(OBJECTS) @@ -28,15 +35,15 @@ $(OBJ_DIR)/$(PROJECT).bin: $(OBJ_DIR)/$(PROJECT).elf @echo "\tBIN\t" $@ @$(BIN) $< $@ -$(OBJ_DIR)/%.o: %.c +$(OBJ_DIR)/%.o: %.c $(OBJ_DIR)/BUILD_FLAGS @echo "\tCC\t" $@ @$(CC) $(CFLAGS) -c $< -o $@ -$(OBJ_DIR)/%.o: %.s +$(OBJ_DIR)/%.o: %.s $(OBJ_DIR)/BUILD_FLAGS @echo "\tASM\t" $@ @$(AS) $(CFLAGS) -c $< -o $@ -$(OBJ_DIR)/%.o: %.cpp +$(OBJ_DIR)/%.o: %.cpp $(OBJ_DIR)/BUILD_FLAGS @echo "\tCPP\t" $@ @$(CPP) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ @@ -54,7 +61,12 @@ upload: $(OBJ_DIR)/upload debug: flash set -m; st-util -n --semihosting & echo $$! > st-util.PID - arm-none-eabi-gdb -ex "target extended-remote 127.0.0.1:4242" $(OBJ_DIR)/$(PROJECT).elf; kill `cat st-util.PID`; rm st-util.PID + arm-none-eabi-gdb \ + -ex "target extended-remote 127.0.0.1:4242" \ + -ex "set confirm off" \ + $(OBJ_DIR)/$(PROJECT).elf; \ + kill `cat st-util.PID`; \ + rm st-util.PID clean: @echo "\tCLEAN\t"