Generate and use compiler dep rules
SDCC supports the `-MMD` option. Use it instead of having every file depend on *all* the headers. Reduces incremental build time after modifying headers as it will now only rebuild the actual dependents and not the entire project. Signed-off-by: Tim Crawford <tcrawford@system76.com>
This commit is contained in:
		
				
					committed by
					
						 Tim Crawford
						Tim Crawford
					
				
			
			
				
	
			
			
			
						parent
						
							84fe76cad4
						
					
				
				
					commit
					9a52042f95
				
			
							
								
								
									
										8
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								Makefile
									
									
									
									
									
								
							| @@ -25,14 +25,14 @@ all: $(BUILD)/ec.rom | ||||
|  | ||||
| # Include common source | ||||
| COMMON_DIR=src/common | ||||
| INCLUDE=$(wildcard $(COMMON_DIR)/include/common/*.h) $(COMMON_DIR)/common.mk | ||||
| INCLUDE += $(COMMON_DIR)/common.mk | ||||
| CFLAGS=-I$(COMMON_DIR)/include -D__FIRMWARE_VERSION__=$(VERSION) | ||||
| include $(COMMON_DIR)/common.mk | ||||
| SRC += $(foreach src, $(common-y), $(COMMON_DIR)/$(src)) | ||||
|  | ||||
| # Include the board's source | ||||
| BOARD_DIR=src/board/$(BOARD) | ||||
| INCLUDE+=$(wildcard $(BOARD_DIR)/include/board/*.h) $(BOARD_DIR)/board.mk | ||||
| INCLUDE += $(BOARD_DIR)/board.mk | ||||
| CFLAGS+=-I$(BOARD_DIR)/include -D__BOARD__=$(BOARD) | ||||
| include $(BOARD_DIR)/board.mk | ||||
| SRC += $(foreach src, $(board-y), $(BOARD_DIR)/$(src)) | ||||
| @@ -42,7 +42,7 @@ SRC += $(foreach src, $(keyboard-y), $(KEYBOARD_DIR)/$(src)) | ||||
| # The board will define the embedded controller | ||||
| # Include the embedded controller's source | ||||
| EC_DIR=src/ec/$(EC) | ||||
| INCLUDE+=$(wildcard $(EC_DIR)/include/ec/*.h) $(EC_DIR)/ec.mk | ||||
| INCLUDE += $(EC_DIR)/ec.mk | ||||
| CFLAGS+=-I$(EC_DIR)/include | ||||
| include $(EC_DIR)/ec.mk | ||||
| SRC += $(foreach src, $(ec-y), $(EC_DIR)/$(src)) | ||||
| @@ -50,7 +50,7 @@ SRC += $(foreach src, $(ec-y), $(EC_DIR)/$(src)) | ||||
| # The EC will define the architecture | ||||
| # Include the architecture's source | ||||
| ARCH_DIR=src/arch/$(ARCH) | ||||
| INCLUDE+=$(wildcard $(ARCH_DIR)/include/arch/*.h) $(ARCH_DIR)/arch.mk | ||||
| INCLUDE += $(ARCH_DIR)/arch.mk | ||||
| CFLAGS+=-I$(ARCH_DIR)/include -D__ARCH__=$(ARCH) | ||||
| include $(ARCH_DIR)/arch.mk | ||||
| SRC += $(foreach src, $(arch-y), $(ARCH_DIR)/$(src)) | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| # SPDX-License-Identifier: GPL-3.0-only | ||||
|  | ||||
| CC = sdcc -mmcs51 --model-large --code-size $(CODE_SIZE) --xram-size $(SRAM_SIZE) --Werror | ||||
| CC = sdcc -mmcs51 -MMD --model-large --code-size $(CODE_SIZE) --xram-size $(SRAM_SIZE) --Werror | ||||
|  | ||||
| AS = sdas8051 | ||||
| ASFLAGS = -plosgff | ||||
| @@ -48,3 +48,7 @@ $(ASM_OBJ): $(BUILD)/%.rel: src/%.asm | ||||
| $(C_OBJ): $(BUILD)/%.rel: src/%.c $(INCLUDE) | ||||
| 	@mkdir -p $(@D) | ||||
| 	$(CC) $(CFLAGS) -o $@ -c $< | ||||
|  | ||||
| # Add dependency rules | ||||
| DEP = $(OBJ:%.rel=%.d) | ||||
| -include $(DEP) | ||||
|   | ||||
| @@ -1,7 +1,8 @@ | ||||
| # SPDX-License-Identifier: GPL-3.0-only | ||||
|  | ||||
| CC=avr-gcc -mmcu=$(EC_VARIANT) | ||||
| CFLAGS+=-Os -fstack-usage -Wall -Werror -Wl,--gc-sections -Wl,-u,vfprintf -lprintf_flt | ||||
| CC = avr-gcc -mmcu=$(EC_VARIANT) | ||||
| CFLAGS += -MMD -Os -fstack-usage -Wall -Werror \ | ||||
| 	-Wl,--gc-sections -Wl,-u,vfprintf -lprintf_flt | ||||
|  | ||||
| # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105523 | ||||
| ifneq ($(findstring 12.,$(shell avr-gcc --version 2>/dev/null)),) | ||||
| @@ -35,3 +36,7 @@ $(BUILD)/ec.elf: $(OBJ) | ||||
| $(BUILD)/%.o: src/%.c $(INCLUDE) | ||||
| 	@mkdir -p $(@D) | ||||
| 	$(CC) $(CFLAGS) -o $@ -c $< | ||||
|  | ||||
| # Add dependency rules | ||||
| DEP = $(OBJ:%.o=%.d) | ||||
| -include $(DEP) | ||||
|   | ||||
| @@ -51,7 +51,7 @@ endif | ||||
|  | ||||
| # Include system76 common source | ||||
| SYSTEM76_COMMON_DIR=src/board/system76/common | ||||
| INCLUDE+=$(wildcard $(SYSTEM76_COMMON_DIR)/include/board/*.h) $(SYSTEM76_COMMON_DIR)/common.mk | ||||
| INCLUDE += $(SYSTEM76_COMMON_DIR)/common.mk | ||||
| CFLAGS+=-I$(SYSTEM76_COMMON_DIR)/include | ||||
|  | ||||
| # Set battery charging thresholds | ||||
|   | ||||
| @@ -14,7 +14,7 @@ FLASH_CFLAGS=$(CFLAGS) | ||||
| # Include flash source. | ||||
| FLASH_DIR=$(SYSTEM76_COMMON_DIR)/flash | ||||
| # Note: main.c *must* be first to ensure that flash_start is at the correct address | ||||
| FLASH_INCLUDE+=$(wildcard $(FLASH_DIR)/include/flash/*.h) $(FLASH_DIR)/flash.mk | ||||
| FLASH_INCLUDE += $(FLASH_DIR)/flash.mk | ||||
| FLASH_CFLAGS+=-I$(FLASH_DIR)/include -D__FLASH__ | ||||
| FLASH_SRC += $(foreach src, $(flash-y), $(FLASH_DIR)/$(src)) | ||||
|  | ||||
| @@ -23,6 +23,7 @@ FLASH_OBJ=$(sort $(patsubst src/%.c,$(FLASH_BUILD)/%.rel,$(FLASH_SRC))) | ||||
| FLASH_CC=\ | ||||
| 	sdcc \ | ||||
| 	-mmcs51 \ | ||||
| 	-MMD \ | ||||
| 	--model-large \ | ||||
| 	--opt-code-size \ | ||||
| 	--acall-ajmp \ | ||||
|   | ||||
| @@ -15,7 +15,7 @@ SCRATCH_CFLAGS=$(CFLAGS) | ||||
|  | ||||
| # Include scratch source | ||||
| SCRATCH_DIR=$(SYSTEM76_COMMON_DIR)/scratch | ||||
| SCRATCH_INCLUDE+=$(wildcard $(SCRATCH_DIR)/include/scratch/*.h) $(SCRATCH_DIR)/scratch.mk | ||||
| SCRATCH_INCLUDE += $(SCRATCH_DIR)/scratch.mk | ||||
| SCRATCH_CFLAGS+=-I$(SCRATCH_DIR)/include -D__SCRATCH__ | ||||
| SCRATCH_SRC += $(foreach src, $(scratch-y), $(SCRATCH_DIR)/$(src)) | ||||
|  | ||||
| @@ -24,6 +24,7 @@ SCRATCH_OBJ=$(sort $(patsubst src/%.c,$(SCRATCH_BUILD)/%.rel,$(SCRATCH_SRC))) | ||||
| SCRATCH_CC=\ | ||||
| 	sdcc \ | ||||
| 	-mmcs51 \ | ||||
| 	-MMD \ | ||||
| 	--model-small \ | ||||
| 	--code-loc $(SCRATCH_OFFSET) \ | ||||
| 	--code-size $(SCRATCH_SIZE) \ | ||||
|   | ||||
| @@ -3,5 +3,5 @@ | ||||
| KEYMAP?=default | ||||
| keyboard-y += keymap/$(KEYMAP).c | ||||
|  | ||||
| INCLUDE+=$(wildcard $(KEYBOARD_DIR)/include/board/*.h) $(KEYBOARD_DIR)/keyboard.mk | ||||
| INCLUDE += $(KEYBOARD_DIR)/keyboard.mk | ||||
| CFLAGS+=-I$(KEYBOARD_DIR)/include | ||||
|   | ||||
| @@ -3,5 +3,5 @@ | ||||
| KEYMAP?=default | ||||
| keyboard-y += keymap/$(KEYMAP).c | ||||
|  | ||||
| INCLUDE+=$(wildcard $(KEYBOARD_DIR)/include/board/*.h) $(KEYBOARD_DIR)/keyboard.mk | ||||
| INCLUDE += $(KEYBOARD_DIR)/keyboard.mk | ||||
| CFLAGS+=-I$(KEYBOARD_DIR)/include | ||||
|   | ||||
| @@ -3,5 +3,5 @@ | ||||
| KEYMAP?=default | ||||
| keyboard-y += keymap/$(KEYMAP).c | ||||
|  | ||||
| INCLUDE+=$(wildcard $(KEYBOARD_DIR)/include/board/*.h) $(KEYBOARD_DIR)/keyboard.mk | ||||
| INCLUDE += $(KEYBOARD_DIR)/keyboard.mk | ||||
| CFLAGS+=-I$(KEYBOARD_DIR)/include | ||||
|   | ||||
| @@ -3,5 +3,5 @@ | ||||
| KEYMAP?=default | ||||
| keyboard-y += keymap/$(KEYMAP).c | ||||
|  | ||||
| INCLUDE+=$(wildcard $(KEYBOARD_DIR)/include/board/*.h) $(KEYBOARD_DIR)/keyboard.mk | ||||
| INCLUDE += $(KEYBOARD_DIR)/keyboard.mk | ||||
| CFLAGS+=-I$(KEYBOARD_DIR)/include | ||||
|   | ||||
		Reference in New Issue
	
	Block a user