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
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
|
||||
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