diff options
-rw-r--r-- | platforms/chibios/platform.mk | 19 | ||||
-rw-r--r-- | platforms/chibios/syscall-fallbacks.c | 1 | ||||
-rwxr-xr-x | util/install/debian.sh | 14 |
3 files changed, 22 insertions, 12 deletions
diff --git a/platforms/chibios/platform.mk b/platforms/chibios/platform.mk index 6b298732c2..1c8d430074 100644 --- a/platforms/chibios/platform.mk +++ b/platforms/chibios/platform.mk @@ -316,7 +316,7 @@ endif # # Use defined stack sizes of the main thread in linker scripts -LDSYMBOLS =--defsym=__process_stack_size__=$(USE_PROCESS_STACKSIZE),--defsym=__main_stack_size__=$(USE_EXCEPTIONS_STACKSIZE) +SHARED_LDSYMBOLS = -Wl,--defsym=__process_stack_size__=$(USE_PROCESS_STACKSIZE),--defsym=__main_stack_size__=$(USE_EXCEPTIONS_STACKSIZE) # Shared Compiler flags for all toolchains SHARED_CFLAGS = -fomit-frame-pointer \ @@ -327,7 +327,6 @@ SHARED_CFLAGS = -fomit-frame-pointer \ # Shared Linker flags for all toolchains SHARED_LDFLAGS = -T $(LDSCRIPT) \ - -Wl,$(LDSYMBOLS) \ -Wl,--gc-sections \ -nostartfiles @@ -346,14 +345,18 @@ ifeq ($(strip $(MCU)), risc-v) endif endif - # Default to compiling with picolibc for RISC-V targets if available, - # which is available by default on current (bullseye) debian based systems. + # Default to compiling with picolibc for RISC-V targets if available, which + # is available by default on distributions based on Debian 11+. ifeq ($(shell $(TOOLCHAIN)gcc --specs=picolibc.specs -E - 2>/dev/null >/dev/null </dev/null ; echo $$?),0) - # Toolchain specific Compiler flags - # Note that we still link with our own linker script - # by providing it via the -T flag above. + # Toolchain specific Compiler flags Note that we still link with our own + # linker script by providing it via the -T flag in SHARED_LDFLAGS. TOOLCHAIN_CFLAGS = --specs=picolibc.specs + # picolibc internally uses __heap_start and __heap_end instead of the + # defacto chibios linker script standard __heap_base__ and __heap_end__ + # therefore we introduce these symbols as an alias. + TOOLCHAIN_LDSYMBOLS = -Wl,--defsym=__heap_start=__heap_base__,--defsym=__heap_end=__heap_end__ + # Tell QMK that we are compiling with picolibc. OPT_DEFS += -DUSE_PICOLIBC endif @@ -404,7 +407,7 @@ CFLAGS += $(SHARED_CFLAGS) $(TOOLCHAIN_CFLAGS) CXXFLAGS += $(CFLAGS) $(SHARED_CXXFLAGS) $(TOOLCHAIN_CXXFLAGS) -fno-rtti # Linker flags -LDFLAGS += $(SHARED_LDFLAGS) $(TOOLCHAIN_LDFLAGS) $(MCUFLAGS) +LDFLAGS += $(SHARED_LDFLAGS) $(SHARED_LDSYMBOLS) $(TOOLCHAIN_LDFLAGS) $(TOOLCHAIN_LDSYMBOLS) $(MCUFLAGS) # Tell QMK that we are hosting it on ChibiOS. OPT_DEFS += -DPROTOCOL_CHIBIOS diff --git a/platforms/chibios/syscall-fallbacks.c b/platforms/chibios/syscall-fallbacks.c index 4569879c7c..7150a46326 100644 --- a/platforms/chibios/syscall-fallbacks.c +++ b/platforms/chibios/syscall-fallbacks.c @@ -22,6 +22,7 @@ * the _reent struct has to be defined. */ #if defined(USE_PICOLIBC) struct _reent; +struct timeval; #endif #pragma GCC diagnostic ignored "-Wmissing-prototypes" diff --git a/util/install/debian.sh b/util/install/debian.sh index 2a188334b6..3e02919bdd 100755 --- a/util/install/debian.sh +++ b/util/install/debian.sh @@ -11,12 +11,18 @@ _qmk_install_prepare() { _qmk_install() { echo "Installing dependencies" - sudo apt-get -yq install \ + sudo apt-get --quiet --yes install \ build-essential clang-format diffutils gcc git unzip wget zip \ python3-pip binutils-avr gcc-avr avr-libc binutils-arm-none-eabi \ gcc-arm-none-eabi libnewlib-arm-none-eabi avrdude dfu-programmer \ - dfu-util teensy-loader-cli libhidapi-hidraw0 libusb-dev \ - picolibc-riscv64-unknown-elf gcc-riscv64-unknown-elf binutils-riscv64-unknown-elf + dfu-util teensy-loader-cli libhidapi-hidraw0 libusb-dev - python3 -m pip install --user -r $QMK_FIRMWARE_DIR/requirements.txt + # RISC-V toolchains with picolibc support are only available for distributions based on Debian 11+. + if sudo apt-get install --simulate --quiet --yes picolibc-riscv64-unknown-elf gcc-riscv64-unknown-elf binutils-riscv64-unknown-elf > /dev/null 2>&1; then + sudo apt-get --quiet --yes install picolibc-riscv64-unknown-elf \ + gcc-riscv64-unknown-elf \ + binutils-riscv64-unknown-elf + fi + + python3 -m pip install --user -r "$QMK_FIRMWARE_DIR"/requirements.txt } |