diff --git a/Makefile b/Makefile index abd4dca30685447c41d2dd1f42f447eade5edfea..3625462ef49b1f251e0aab35985e96211f31e2db 100644 --- a/Makefile +++ b/Makefile @@ -380,6 +380,9 @@ endif default: build/system.elf +include/config.h: .config + ${QUIET}awk -f script/conf2h.awk .config > include/config.h + stack: default ${QUIET}test -n "${OBJDUMP}" ${QUIET}test -n "${ARCH_SHORTNAME}" diff --git a/script/conf2h.awk b/script/conf2h.awk new file mode 100644 index 0000000000000000000000000000000000000000..818beeabb46307318f3816bd6533dfe285f35f66 --- /dev/null +++ b/script/conf2h.awk @@ -0,0 +1,35 @@ +#! /usr/bin/gawk -f +# +# Copyright 2021 AG Eingebettete Softwaresysteme, Universität Osnabrück +# +# SPDX-License-Identicier: CC0-1.0 + +BEGIN { + print "// config.h generated from " ARGV[1] "\n" \ + "#ifndef CONFIG_H\n" \ + "#define CONFIG_H" +} + +/^CONFIG_.*?_INSTANCES=/ { next } + +/^#/ { sub(/^#/,"//") } + +/^CONFIG_.*?=/ { + if (/=n$/) { + sub(/^/,"// "); + } else { + sub(/^/,"#define ") + if (/=y$/) { + sub(/=.*$/,"") + } else if (/=".*"$/) { + sub(/="/, " ") + sub(/"$/, "") + } else { + sub(/=/," ") + } + } +} + +{ print } + +END { print "#endif" } diff --git a/src/arch/arduino-nano/Makefile.inc b/src/arch/arduino-nano/Makefile.inc index 12777d9741b8434ab2eb3460524a25e2d5f8a3e5..0ce2ef79b8396d2641c85fc6cb91e29bcfd581c5 100644 --- a/src/arch/arduino-nano/Makefile.inc +++ b/src/arch/arduino-nano/Makefile.inc @@ -140,10 +140,10 @@ COMMON_FLAGS += -DBAUD=${uart_baud}UL OBJECTS = ${CXX_TARGETS:.cc=.o} ${C_TARGETS:.c=.o} -.cc.o: +%.o : %.cc | include/config.h ${QUIET}${CXX} ${INCLUDES} ${COMMON_FLAGS} ${CXXFLAGS} -c -o $@ ${@:.o=.cc} -.c.o: +%.o : %.c | include/config.h ${QUIET}${CC} ${INCLUDES} ${COMMON_FLAGS} ${CFLAGS} -c -o $@ ${@:.o=.c} build/system.elf: ${OBJECTS} diff --git a/src/arch/atmega2560/Makefile.inc b/src/arch/atmega2560/Makefile.inc index d78db663bed8d31eadc3cdb1abbc7dc19b2d96e0..acfd65a5615ba6c93d797f719da9ed63a96be00e 100644 --- a/src/arch/atmega2560/Makefile.inc +++ b/src/arch/atmega2560/Makefile.inc @@ -135,10 +135,10 @@ COMMON_FLAGS += -DBAUD=${uart_baud}UL OBJECTS = ${CXX_TARGETS:.cc=.o} ${C_TARGETS:.c=.o} -.cc.o: +%.o : %.cc | include/config.h ${QUIET}${CXX} ${INCLUDES} ${COMMON_FLAGS} ${CXXFLAGS} -c -o $@ ${@:.o=.cc} -.c.o: +%.o : %.c | include/config.h ${QUIET}${CC} ${INCLUDES} ${COMMON_FLAGS} ${CFLAGS} -c -o $@ ${@:.o=.c} build/system.elf: ${OBJECTS} diff --git a/src/arch/blinkenrocket/Makefile.inc b/src/arch/blinkenrocket/Makefile.inc index 41e1de348b20e3cceea24c99811c29f456ea0844..64e87f54340460836550ed64717776374cf8b87b 100644 --- a/src/arch/blinkenrocket/Makefile.inc +++ b/src/arch/blinkenrocket/Makefile.inc @@ -54,10 +54,10 @@ endif OBJECTS = ${CXX_TARGETS:.cc=.o} ${C_TARGETS:.c=.o} -.cc.o: +%.o : %.cc | include/config.h ${QUIET}${CXX} ${INCLUDES} ${COMMON_FLAGS} ${CXXFLAGS} -c -o $@ ${@:.o=.cc} -.c.o: +%.o : %.c | include/config.h ${QUIET}${CC} ${INCLUDES} ${COMMON_FLAGS} ${CFLAGS} -c -o $@ ${@:.o=.c} build/system.elf: ${OBJECTS} diff --git a/src/arch/esp8266/Makefile.inc b/src/arch/esp8266/Makefile.inc index 18877eefde6d3f35e0a26e39460d1a003e5c335b..7bbc2f1d0b04b78c89653bbd46ca17c7ac81f600 100644 --- a/src/arch/esp8266/Makefile.inc +++ b/src/arch/esp8266/Makefile.inc @@ -64,11 +64,11 @@ ifdef CONFIG_arch_esp8266_driver_uptime CXX_TARGETS += src/arch/esp8266/driver/uptime.cc endif -.cc.o: +%.o : %.cc | include/config.h ${QUIET}${CXX} ${INCLUDES} ${COMMON_FLAGS} ${CXXFLAGS} -c -o $@ ${@:.o=.cc} ${QUIET}${OBJCOPY} --rename-section .text=.irom0.text --rename-section .literal=.irom0.literal $@ -.c.o: +%.o : %.c | include/config.h ${QUIET}${CC} ${INCLUDES} ${COMMON_FLAGS} ${CFLAGS} -c -o $@ ${@:.o=.c} ${QUIET}${OBJCOPY} --rename-section .text=.irom0.text --rename-section .literal=.irom0.literal $@ diff --git a/src/arch/lm4f120h5qr-stellaris/Makefile.inc b/src/arch/lm4f120h5qr-stellaris/Makefile.inc index d49391b9e3e34ab3af4386cc07d9ae7333e33866..7d1e5e9f64fa0eae31db8e548a3c711e63b94ea3 100644 --- a/src/arch/lm4f120h5qr-stellaris/Makefile.inc +++ b/src/arch/lm4f120h5qr-stellaris/Makefile.inc @@ -73,16 +73,16 @@ endif OBJECTS = ${CXX_TARGETS:.cc=.o} ${C_TARGETS:.c=.o} ${ASM_TARGETS:.S=.o} -.cc.o: +%.o : %.cc | include/config.h ${QUIET}${CXX} ${INCLUDES} ${COMMON_FLAGS} ${CXXFLAGS} -c -o $@ ${@:.o=.cc} -.c.o: +%.o : %.c | include/config.h ${QUIET}${CC} ${INCLUDES} ${COMMON_FLAGS} ${CFLAGS} -c -o $@ ${@:.o=.c} -.S.o: +%.o : %.S | include/config.h ${QUIET}${CC} ${INCLUDES} ${COMMON_FLAGS} -c -o $@ ${@:.o=.S} -.s.o: +%.o : %.s | include/config.h ${QUIET}${CC} ${INCLUDES} ${COMMON_FLAGS} -c -o $@ ${@:.o=.S} ext/libopencm3/Makefile: diff --git a/src/arch/msp430fr5969lp/Makefile.inc b/src/arch/msp430fr5969lp/Makefile.inc index f9d9a28af137c5bbb3078f6f7a483a4d84328731..d6f4d9f60138cbd6e068b9363d72fd5c051ee370 100644 --- a/src/arch/msp430fr5969lp/Makefile.inc +++ b/src/arch/msp430fr5969lp/Makefile.inc @@ -112,13 +112,13 @@ endif OBJECTS = ${CXX_TARGETS:.cc=.o} ${C_TARGETS:.c=.o} ${ASM_TARGETS:.S=.o} -.cc.o: +%.o : %.cc | include/config.h ${QUIET}${CXX} ${INCLUDES} ${COMMON_FLAGS} ${CXXFLAGS} -c -o $@ ${@:.o=.cc} -.c.o: +%.o : %.c | include/config.h ${QUIET}${CC} ${INCLUDES} ${COMMON_FLAGS} ${CFLAGS} -c -o $@ ${@:.o=.c} -.S.o: +%.o : %.S | include/config.h ${QUIET}${CC} ${INCLUDES} ${COMMON_FLAGS} -Wa,-gstabs,-ggdb -x assembler-with-cpp -c -o $@ ${@:.o=.S} build/system.elf: ${OBJECTS} diff --git a/src/arch/msp430fr5994lp/Makefile.inc b/src/arch/msp430fr5994lp/Makefile.inc index 57a7d2cfa122161e650003faa97452d572b39bf5..cffb3950bb705d4b0e86713179acb779f12eb398 100644 --- a/src/arch/msp430fr5994lp/Makefile.inc +++ b/src/arch/msp430fr5994lp/Makefile.inc @@ -154,13 +154,13 @@ endif OBJECTS = ${CXX_TARGETS:.cc=.o} ${C_TARGETS:.c=.o} ${ASM_TARGETS:.S=.o} -.cc.o: +%.o : %.cc | include/config.h ${QUIET}${CXX} ${INCLUDES} ${COMMON_FLAGS} ${CXXFLAGS} -c -o $@ ${@:.o=.cc} -.c.o: +%.o : %.c | include/config.h ${QUIET}${CC} ${INCLUDES} ${COMMON_FLAGS} ${CFLAGS} -c -o $@ ${@:.o=.c} -.S.o: +%.o : %.S | include/config.h ${QUIET}${CC} ${INCLUDES} ${COMMON_FLAGS} -Wa,-gstabs,-ggdb -x assembler-with-cpp -c -o $@ ${@:.o=.S} build/system.elf: ${OBJECTS} diff --git a/src/arch/posix/Makefile.inc b/src/arch/posix/Makefile.inc index 32a56cc20b00482b4c0207b1ed96af22c80b5584..5e7e7eed0f83588ed34e6811cb39e612d62abc91 100644 --- a/src/arch/posix/Makefile.inc +++ b/src/arch/posix/Makefile.inc @@ -45,10 +45,10 @@ ifdef CONFIG_gpio_trace COMMON_FLAGS += -DGPIO_TRACE endif -.cc.o: +%.o : %.cc | include/config.h ${QUIET}${CXX} ${INCLUDES} ${COMMON_FLAGS} ${CXXFLAGS} -c -o $@ ${@:.o=.cc} -.c.o: +%.o: %.c | include/config.h ${QUIET}${CC} ${INCLUDES} ${COMMON_FLAGS} ${CFLAGS} -c -o $@ ${@:.o=.c} build/system.elf: ${OBJECTS} diff --git a/src/arch/stm32f446re-nucleo/Makefile.inc b/src/arch/stm32f446re-nucleo/Makefile.inc index dd0de000948a53e96b07234fae7f4db9a0f2819e..2aec12bb494382383af7903b64bd6263b73e794a 100644 --- a/src/arch/stm32f446re-nucleo/Makefile.inc +++ b/src/arch/stm32f446re-nucleo/Makefile.inc @@ -72,16 +72,16 @@ endif OBJECTS = ${CXX_TARGETS:.cc=.o} ${C_TARGETS:.c=.o} ${ASM_TARGETS:.S=.o} -.cc.o: +%.o : %.cc | include/config.h ${QUIET}${CXX} ${INCLUDES} ${COMMON_FLAGS} ${CXXFLAGS} -c -o $@ ${@:.o=.cc} -.c.o: +%.o : %.c | include/config.h ${QUIET}${CC} ${INCLUDES} ${COMMON_FLAGS} ${CFLAGS} -c -o $@ ${@:.o=.c} -.S.o: +%.o : %.S | include/config.h ${QUIET}${CC} ${INCLUDES} ${COMMON_FLAGS} -c -o $@ ${@:.o=.S} -.s.o: +%.o : %.s | include/config.h ${QUIET}${CC} ${INCLUDES} ${COMMON_FLAGS} -c -o $@ ${@:.o=.S} ext/libopencm3/Makefile: