Merge pull request #496 from fredizzimo/makefile_optimization
Makefile optimization
This commit is contained in:
		
						commit
						8610481c37
					
				
					 2 changed files with 22 additions and 39 deletions
				
			
		|  | @ -107,7 +107,7 @@ endif | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # Version string
 | # Version string
 | ||||||
| OPT_DEFS += -DVERSION=$(shell (git describe --always --dirty || echo 'unknown') 2> /dev/null) | OPT_DEFS += -DVERSION=$(GIT_VERSION) | ||||||
| 
 | 
 | ||||||
| # Bootloader address
 | # Bootloader address
 | ||||||
| ifdef STM32_BOOTLOADER_ADDRESS | ifdef STM32_BOOTLOADER_ADDRESS | ||||||
|  |  | ||||||
|  | @ -271,23 +271,10 @@ ALL_CPPFLAGS = $(MCUFLAGS) -x c++ $(CPPFLAGS) $(GENDEPFLAGS) $(EXTRAFLAGS) | ||||||
| ALL_ASFLAGS = $(MCUFLAGS) -x assembler-with-cpp $(ASFLAGS) $(EXTRAFLAGS) | ALL_ASFLAGS = $(MCUFLAGS) -x assembler-with-cpp $(ASFLAGS) $(EXTRAFLAGS) | ||||||
| 
 | 
 | ||||||
| # Default target.
 | # Default target.
 | ||||||
| all: | all: build sizeafter | ||||||
| 	@$(MAKE) begin |  | ||||||
| 	@$(MAKE) gccversion |  | ||||||
| 	@$(MAKE) sizebefore |  | ||||||
| 	@$(MAKE) clean_list # force clean each time |  | ||||||
| 	@$(MAKE) build |  | ||||||
| 	@$(MAKE) sizeafter |  | ||||||
| 	@$(MAKE) end |  | ||||||
| 
 | 
 | ||||||
| # Quick make that doesn't clean
 | # Quick make that doesn't clean
 | ||||||
| quick: | quick: build sizeafter | ||||||
| 	@$(MAKE) begin |  | ||||||
| 	@$(MAKE) gccversion |  | ||||||
| 	@$(MAKE) sizebefore |  | ||||||
| 	@$(MAKE) build |  | ||||||
| 	@$(MAKE) sizeafter |  | ||||||
| 	@$(MAKE) end |  | ||||||
| 
 | 
 | ||||||
| # Change the build target to build a HEX file or a library.
 | # Change the build target to build a HEX file or a library.
 | ||||||
| build: elf hex | build: elf hex | ||||||
|  | @ -303,13 +290,7 @@ sym: $(BUILD_DIR)/$(TARGET).sym | ||||||
| LIBNAME=lib$(TARGET).a | LIBNAME=lib$(TARGET).a | ||||||
| lib: $(LIBNAME) | lib: $(LIBNAME) | ||||||
| 
 | 
 | ||||||
| 
 | check_submodule: | ||||||
| 
 |  | ||||||
| # Eye candy.
 |  | ||||||
| # AVR Studio 3.x does not check make's exit code but relies on
 |  | ||||||
| # the following magic strings to be generated by the compile job.
 |  | ||||||
| begin: |  | ||||||
| 	@$(SECHO) $(MSG_BEGIN) |  | ||||||
| 	git submodule status --recursive | \
 | 	git submodule status --recursive | \
 | ||||||
| 	while IFS= read -r x; do \
 | 	while IFS= read -r x; do \
 | ||||||
| 		case "$$x" in \
 | 		case "$$x" in \
 | ||||||
|  | @ -318,10 +299,6 @@ begin: | ||||||
| 		esac \
 | 		esac \
 | ||||||
| 	done | 	done | ||||||
| 
 | 
 | ||||||
| end: |  | ||||||
| 	@$(SECHO) $(MSG_END) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| # Display size of file.
 | # Display size of file.
 | ||||||
| HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex | HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex | ||||||
| #ELFSIZE = $(SIZE) --mcu=$(MCU) --format=avr $(TARGET).elf
 | #ELFSIZE = $(SIZE) --mcu=$(MCU) --format=avr $(TARGET).elf
 | ||||||
|  | @ -331,7 +308,7 @@ sizebefore: | ||||||
| 	@if test -f $(TARGET).hex; then $(SECHO) $(MSG_SIZE_BEFORE); $(SILENT) || $(HEXSIZE); \
 | 	@if test -f $(TARGET).hex; then $(SECHO) $(MSG_SIZE_BEFORE); $(SILENT) || $(HEXSIZE); \
 | ||||||
| 	2>/dev/null; $(SECHO); fi | 	2>/dev/null; $(SECHO); fi | ||||||
| 
 | 
 | ||||||
| sizeafter: | sizeafter: $(BUILD_DIR)/$(TARGET).hex | ||||||
| 	@if test -f $(TARGET).hex; then $(SECHO); $(SECHO) $(MSG_SIZE_AFTER); $(SILENT) || $(HEXSIZE); \
 | 	@if test -f $(TARGET).hex; then $(SECHO); $(SECHO) $(MSG_SIZE_AFTER); $(SILENT) || $(HEXSIZE); \
 | ||||||
| 	2>/dev/null; $(SECHO); fi | 	2>/dev/null; $(SECHO); fi | ||||||
| 	# test file sizes eventually | 	# test file sizes eventually | ||||||
|  | @ -386,9 +363,9 @@ gccversion : | ||||||
| # Link: create ELF output file from object files.
 | # Link: create ELF output file from object files.
 | ||||||
| .SECONDARY : $(BUILD_DIR)/$(TARGET).elf | .SECONDARY : $(BUILD_DIR)/$(TARGET).elf | ||||||
| .PRECIOUS : $(OBJ) | .PRECIOUS : $(OBJ) | ||||||
| %.elf: $(OBJ) | %.elf: gccversion sizebefore check_submodule $(OBJ) | ||||||
| 	@$(SILENT) || printf "$(MSG_LINKING) $@" | $(AWK_CMD) | 	@$(SILENT) || printf "$(MSG_LINKING) $@" | $(AWK_CMD) | ||||||
| 	$(eval CMD=$(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)) | 	$(eval CMD=$(CC) $(ALL_CFLAGS) $(filter-out gccversion sizebefore check_submodule,$^) --output $@ $(LDFLAGS)) | ||||||
| 	@$(BUILD_CMD) | 	@$(BUILD_CMD) | ||||||
| 
 | 
 | ||||||
| # Compile: create object files from C source files.
 | # Compile: create object files from C source files.
 | ||||||
|  | @ -429,14 +406,7 @@ $(OBJDIR)/%.o : %.S | ||||||
| 	$(CC) -E -mmcu=$(MCU) $(CFLAGS) $< -o $@ | 	$(CC) -E -mmcu=$(MCU) $(CFLAGS) $< -o $@ | ||||||
| 
 | 
 | ||||||
| # Target: clean project.
 | # Target: clean project.
 | ||||||
| clean: begin clean_list end | clean:  | ||||||
| 
 |  | ||||||
| clean_list : |  | ||||||
| 	@$(REMOVE) -r $(BUILD_DIR) |  | ||||||
| 	@$(REMOVE) -r $(TOP_DIR)/$(BUILD_DIR) |  | ||||||
| 	@$(REMOVE) -r $(KEYBOARD_PATH)/$(BUILD_DIR) |  | ||||||
| 	@if $$SUBPROJECT; then $(REMOVE) -r $(SUBPROJECT_PATH)/$(BUILD_DIR); fi |  | ||||||
| 	@$(REMOVE) -r $(KEYMAP_PATH)/$(BUILD_DIR) |  | ||||||
| 
 | 
 | ||||||
| show_path: | show_path: | ||||||
| 	@echo VPATH=$(VPATH) | 	@echo VPATH=$(VPATH) | ||||||
|  | @ -496,6 +466,19 @@ all-keymaps-%: | ||||||
| 
 | 
 | ||||||
| all-keymaps: all-keymaps-all | all-keymaps: all-keymaps-all | ||||||
| 
 | 
 | ||||||
|  | GOAL=$(MAKECMDGOALS) | ||||||
|  | ifeq ($(MAKECMDGOALS),) | ||||||
|  | GOAL = all | ||||||
|  | endif | ||||||
|  | CLEANING_GOALS=clean clean_list all | ||||||
|  | ifneq ($(findstring $(GOAL),$(CLEANING_GOALS)),) | ||||||
|  | $(shell $(REMOVE) -r $(BUILD_DIR) 2>/dev/null) | ||||||
|  | $(shell $(REMOVE) -r $(TOP_DIR)/$(BUILD_DIR)) | ||||||
|  | $(shell $(REMOVE) -r $(KEYBOARD_PATH)/$(BUILD_DIR)) | ||||||
|  | $(shell if $$SUBPROJECT; then $(REMOVE) -r $(SUBPROJECT_PATH)/$(BUILD_DIR); fi) | ||||||
|  | $(shell $(REMOVE) -r $(KEYMAP_PATH)/$(BUILD_DIR)) | ||||||
|  | endif | ||||||
|  | 
 | ||||||
| # Create build directory
 | # Create build directory
 | ||||||
| $(shell mkdir $(BUILD_DIR) 2>/dev/null) | $(shell mkdir $(BUILD_DIR) 2>/dev/null) | ||||||
| 
 | 
 | ||||||
|  | @ -508,7 +491,7 @@ $(shell mkdir $(OBJDIR) 2>/dev/null) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # Listing of phony targets.
 | # Listing of phony targets.
 | ||||||
| .PHONY : all quick begin finish end sizebefore sizeafter gccversion \ | .PHONY : all quick finish sizebefore sizeafter gccversion \ | ||||||
| build elf hex eep lss sym coff extcoff \ | build elf hex eep lss sym coff extcoff \ | ||||||
| clean clean_list debug gdb-config show_path \ | clean clean_list debug gdb-config show_path \ | ||||||
| program teensy dfu flip dfu-ee flip-ee dfu-start \ | program teensy dfu flip dfu-ee flip-ee dfu-start \ | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jack Humbert
						Jack Humbert