Makefile: build flags as a target. (#163)
* Makefile: build flags as a target. * Makefile: proper BUILD_FLAGS generation routine Co-authored-by: Aleksandr Kutuzov <aku@plooks.com>
This commit is contained in:
		| @@ -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 | ||||
| @@ -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" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user