aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2020-12-17 09:55:44 -0500
committerKevin O'Connor <kevin@koconnor.net>2020-12-17 10:02:16 -0500
commit85300a4aadaaf2fbb0aadc01d6ed273b6ecb1215 (patch)
treef4316b0c8b88ee55d000dc5402a6329a1a631bce /Makefile
parent4c2d0749677976f76905962c6fa7118c99f36f10 (diff)
downloadkutter-85300a4aadaaf2fbb0aadc01d6ed273b6ecb1215.tar.gz
kutter-85300a4aadaaf2fbb0aadc01d6ed273b6ecb1215.tar.xz
kutter-85300a4aadaaf2fbb0aadc01d6ed273b6ecb1215.zip
Makefile: Improve build when changing micro-controller architecture
Try to clean up the dependency files when changing the micro-controller architecture so that an explicit "make clean" isn't needed. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile41
1 files changed, 23 insertions, 18 deletions
diff --git a/Makefile b/Makefile
index 955a752b..39e01f82 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
# Klipper build system
#
-# Copyright (C) 2016-2019 Kevin O'Connor <kevin@koconnor.net>
+# Copyright (C) 2016-2020 Kevin O'Connor <kevin@koconnor.net>
#
# This file may be distributed under the terms of the GNU GPLv3 license.
@@ -57,27 +57,22 @@ endif
include src/Makefile
-include src/$(patsubst "%",%,$(CONFIG_BOARD_DIRECTORY))/Makefile
-################ Common build rules
+################ Main build rules
-$(OUT)%.o: %.c $(OUT)autoconf.h $(OUT)board-link
+$(OUT)%.o: %.c $(OUT)autoconf.h
@echo " Compiling $@"
$(Q)$(CC) $(CFLAGS) -c $< -o $@
-$(OUT)%.ld: %.lds.S $(OUT)autoconf.h $(OUT)board-link
+$(OUT)%.ld: %.lds.S $(OUT)autoconf.h
@echo " Preprocessing $@"
$(Q)$(CPP) -I$(OUT) -P -MD -MT $@ $< -o $@
-################ Main build rules
+$(OUT)klipper.elf: $(OBJS_klipper.elf)
+ @echo " Linking $@"
+ $(Q)$(CC) $(OBJS_klipper.elf) $(CFLAGS_klipper.elf) -o $@
+ $(Q)scripts/check-gcc.sh $@ $(OUT)compile_time_request.o
-$(OUT)board-link: $(KCONFIG_CONFIG)
- @echo " Creating symbolic link $(OUT)board"
- $(Q)mkdir -p $(addprefix $(OUT), $(dirs-y))
- $(Q)touch $@
- $(Q)rm -f $(OUT)board
- $(Q)ln -sf $(PWD)/src/$(CONFIG_BOARD_DIRECTORY) $(OUT)board
- $(Q)mkdir -p $(OUT)board-generic
- $(Q)rm -f $(OUT)board-generic/board
- $(Q)ln -sf $(PWD)/src/generic $(OUT)board-generic/board
+################ Compile time requests
$(OUT)%.o.ctr: $(OUT)%.o
$(Q)$(OBJCOPY) -j '.compile_time_request' -O binary $^ $@
@@ -88,10 +83,20 @@ $(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)compile_time_request.txt $(OUT)compile_time_request.c
$(Q)$(CC) $(CFLAGS) -c $(OUT)compile_time_request.c -o $@
-$(OUT)klipper.elf: $(OBJS_klipper.elf)
- @echo " Linking $@"
- $(Q)$(CC) $(OBJS_klipper.elf) $(CFLAGS_klipper.elf) -o $@
- $(Q)scripts/check-gcc.sh $@ $(OUT)compile_time_request.o
+################ Auto generation of "board/" include file link
+
+$(OUT)board-link: $(KCONFIG_CONFIG)
+ @echo " Creating symbolic link $(OUT)board"
+ $(Q)mkdir -p $(addprefix $(OUT), $(dirs-y))
+ $(Q)echo "#$(CONFIG_BOARD_DIRECTORY)" > $@.temp
+ $(Q)if ! cmp -s $@.temp $@; then rm -f $(OUT)*.d $(patsubst %,$(OUT)%/*.d,$(dirs-y)) ; mv $@.temp $@ ; fi
+ $(Q)rm -f $(OUT)board
+ $(Q)ln -sf $(PWD)/src/$(CONFIG_BOARD_DIRECTORY) $(OUT)board
+ $(Q)mkdir -p $(OUT)board-generic
+ $(Q)rm -f $(OUT)board-generic/board
+ $(Q)ln -sf $(PWD)/src/generic $(OUT)board-generic/board
+
+include $(OUT)board-link
################ Kconfig rules