diff --git a/Makefile b/Makefile index 61995499..a9e4d0ea 100644 --- a/Makefile +++ b/Makefile @@ -37,6 +37,8 @@ CFLAGS := -I$(OUT) -Isrc -I$(OUT)board-generic/ -std=gnu11 -O2 -MD -g \ -ffunction-sections -fdata-sections CFLAGS += -flto -fwhole-program -fno-use-linker-plugin +OBJS_klipper.elf = $(patsubst %.c, $(OUT)src/%.o,$(src-y)) +OBJS_klipper.elf += $(OUT)compile_time_request.o CFLAGS_klipper.elf = $(CFLAGS) -Wl,--gc-sections CPPFLAGS = -I$(OUT) -P -MD -MT $@ @@ -83,9 +85,9 @@ $(OUT)compile_time_request.o: $(patsubst %.c, $(OUT)src/%.o.ctr,$(src-y)) ./scri $(Q)$(PYTHON) ./scripts/buildcommands.py -d $(OUT)klipper.dict -t "$(CC);$(AS);$(LD);$(OBJCOPY);$(OBJDUMP);$(STRIP)" $(OUT)klipper.compile_time_request $(OUT)compile_time_request.c $(Q)$(CC) $(CFLAGS) -c $(OUT)compile_time_request.c -o $@ -$(OUT)klipper.elf: $(patsubst %.c, $(OUT)src/%.o,$(src-y)) $(OUT)compile_time_request.o +$(OUT)klipper.elf: $(OBJS_klipper.elf) @echo " Linking $@" - $(Q)$(CC) $(patsubst %.c, $(OUT)src/%.o,$(src-y)) $(OUT)compile_time_request.o $(CFLAGS_klipper.elf) -o $@ + $(Q)$(CC) $(OBJS_klipper.elf) $(CFLAGS_klipper.elf) -o $@ $(Q)scripts/check-gcc.sh $@ $(OUT)compile_time_request.o ################ Kconfig rules diff --git a/src/lpc176x/Makefile b/src/lpc176x/Makefile index 406a6d97..ae15f880 100644 --- a/src/lpc176x/Makefile +++ b/src/lpc176x/Makefile @@ -9,9 +9,6 @@ dirs-y += lib/lpc176x/device/TOOLCHAIN_GCC_ARM CFLAGS += -mthumb -mcpu=cortex-m3 CFLAGS += -Ilib/lpc176x/device -Ilib/cmsis-core -CFLAGS_klipper.elf += -T $(OUT)LPC1768.ld -CFLAGS_klipper.elf += --specs=nano.specs --specs=nosys.specs - # Add source files src-y += lpc176x/main.c lpc176x/gpio.c src-$(CONFIG_HAVE_GPIO_ADC) += lpc176x/adc.c @@ -23,21 +20,23 @@ src-y += ../lib/lpc176x/device/system_LPC17xx.c src-$(CONFIG_USBSERIAL) += lpc176x/usbserial.c generic/usb_cdc.c src-$(CONFIG_SERIAL) += lpc176x/serial.c generic/serial_irq.c -# Add the TOOLCHAIN_GCC_ARM files to the build +# Add assembler build rules $(OUT)%.o: %.S @echo " Assembling $@" $(Q)$(AS) $< -o $@ asmsrc-y := ../lib/lpc176x/device/TOOLCHAIN_GCC_ARM/startup_LPC17xx.S +OBJS_klipper.elf += $(patsubst %.S, $(OUT)src/%.o,$(asmsrc-y)) -$(OUT)klipper.elf: $(patsubst %.S, $(OUT)src/%.o,$(asmsrc-y)) - -target-y := $(OUT)LPC1768.ld $(target-y) - +# Build the linker script $(OUT)LPC1768.ld: lib/lpc176x/device/TOOLCHAIN_GCC_ARM/LPC1768.ld $(OUT)board-link @echo " Preprocessing $@" $(Q)$(CPP) -P -MD -MT $@ -DMBED_APP_START=$(CONFIG_FLASH_START) -DMBED_APP_SIZE="(512K - $(CONFIG_FLASH_START))" $< -o $@ +CFLAGS_klipper.elf += -T $(OUT)LPC1768.ld +CFLAGS_klipper.elf += --specs=nano.specs --specs=nosys.specs +$(OUT)klipper.elf : $(OUT)LPC1768.ld + # Build the additional bin output file target-y += $(OUT)klipper.bin diff --git a/src/stm32f1/Makefile b/src/stm32f1/Makefile index 925038c2..12a60c2e 100644 --- a/src/stm32f1/Makefile +++ b/src/stm32f1/Makefile @@ -12,9 +12,6 @@ CFLAGS += -Ilib/cmsis-core CFLAGS += -Ilib/cmsis-stm32f1/include -Ilib/hal-stm32f1/include CFLAGS += -DSTM32F103xB -CFLAGS_klipper.elf += -T $(OUT)stm32f1.ld -CFLAGS_klipper.elf += --specs=nano.specs --specs=nosys.specs - # Add source files src-y += stm32f1/main.c stm32f1/gpio.c src-$(CONFIG_HAVE_GPIO_ADC) += stm32f1/adc.c @@ -24,22 +21,24 @@ src-y += generic/crc16_ccitt.c generic/armcm_irq.c generic/armcm_timer.c src-y += ../lib/cmsis-stm32f1/source/system_stm32f1xx.c src-$(CONFIG_USBSERIAL) += stm32f1/usbserial.c generic/usb_cdc.c src-$(CONFIG_SERIAL) += stm32f1/serial.c generic/serial_irq.c -asmsrc-y = ../lib/cmsis-stm32f1/source/startup_stm32f103xb.s # Add assembler build rules $(OUT)%.o: %.s $(OUT)autoconf.h $(OUT)board-link @echo " Assembling $@" $(Q)$(AS) $< -o $@ -$(OUT)klipper.elf: $(patsubst %.s, $(OUT)src/%.o,$(asmsrc-y)) +asmsrc-y = ../lib/cmsis-stm32f1/source/startup_stm32f103xb.s +OBJS_klipper.elf += $(patsubst %.s, $(OUT)src/%.o,$(asmsrc-y)) # Build the linker script -target-y := $(OUT)stm32f1.ld $(target-y) - $(OUT)stm32f1.ld: src/stm32f1/stm32f1.ld $(OUT)board-link @echo " Preprocessing $@" $(Q)$(CPP) -P -MD -MT $@ -DFLASH_START=$(CONFIG_FLASH_START) $< -o $@ +CFLAGS_klipper.elf += -T $(OUT)stm32f1.ld +CFLAGS_klipper.elf += --specs=nano.specs --specs=nosys.specs +$(OUT)klipper.elf : $(OUT)stm32f1.ld + # Binary output file rules target-y += $(OUT)klipper.bin