-
Notifications
You must be signed in to change notification settings - Fork 2.1k
sys/stdio_semihosting: model in Kconfig #19651
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
sys/stdio_semihosting: model in Kconfig #19651
Conversation
Maybe we wait until #19086 gets in, it should simplify the stdio system a lot more. |
4ae446e
to
a6b7f2f
Compare
a6b7f2f
to
ac4a8c5
Compare
ping @MrKevinWeiss |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ACK
bors merge |
Build failed: |
hmmm I will look into it. |
Looks like a leftover: diff --git a/boards/common/weact-f4x1cx/weact-f4x1cx.config b/boards/common/weact-f4x1cx/weact-f4x1cx.config
index d7a295b937..1fdb032431 100644
--- a/boards/common/weact-f4x1cx/weact-f4x1cx.config
+++ b/boards/common/weact-f4x1cx/weact-f4x1cx.config
@@ -1,2 +1 @@
CONFIG_MODULE_BOOTLOADER_STM32=y
-CONFIG_MODULE_USB_BOARD_RESET=y |
ac4a8c5
to
c84f97a
Compare
Thanks, applied! |
I found some things locally testing, let me go through them. |
Turns out a bit more than I thought: diff --git a/boards/common/weact-f4x1cx/Kconfig b/boards/common/weact-f4x1cx/Kconfig
index 46fc01fcd7..825127591f 100644
--- a/boards/common/weact-f4x1cx/Kconfig
+++ b/boards/common/weact-f4x1cx/Kconfig
@@ -24,6 +24,8 @@ config BOARD_COMMON_WEACT_F4X1CX
select HAVE_SAUL_GPIO
select HAVE_MTD_SPI_NOR
+ select MODULE_BOOTLOADER_STM32 if MODULE_STDIO_CDC_ACM
+ select MODULE_USB_BOARD_RESET if KCONFIG_USB && TEST_KCONFIG
config CLOCK_HSE
default 25000000
diff --git a/boards/common/weact-f4x1cx/Makefile.features b/boards/common/weact-f4x1cx/Makefile.features
index 8778a2e59c..d2d81aba42 100644
--- a/boards/common/weact-f4x1cx/Makefile.features
+++ b/boards/common/weact-f4x1cx/Makefile.features
@@ -12,9 +12,3 @@ FEATURES_PROVIDED += periph_usbdev
# Various other features (if any)
FEATURES_PROVIDED += highlevel_stdio
-
-# This configuration enables modules that are only available when using Kconfig
-# module modelling
-ifeq (1, $(TEST_KCONFIG))
- KCONFIG_BOARD_CONFIG += $(RIOTBOARD)/common/weact-f4x1cx/weact-f4x1cx.config
-endif
diff --git a/boards/common/weact-f4x1cx/weact-f4x1cx.config b/boards/common/weact-f4x1cx/weact-f4x1cx.config
deleted file mode 100644
index d7a295b937..0000000000
--- a/boards/common/weact-f4x1cx/weact-f4x1cx.config
+++ /dev/null
@@ -1,2 +0,0 @@
-CONFIG_MODULE_BOOTLOADER_STM32=y
-CONFIG_MODULE_USB_BOARD_RESET=y
diff --git a/boards/nrf51dk/Kconfig b/boards/nrf51dk/Kconfig
index 6cc36c9b6b..be2b3812bf 100644
--- a/boards/nrf51dk/Kconfig
+++ b/boards/nrf51dk/Kconfig
@@ -20,6 +20,6 @@ config BOARD_NRF51DK
select HAVE_SAUL_GPIO
- select MODULE_PERIPH_UART_HW_FC if TEST_KCONFIG && HAS_PERIPH_UART_HW_FC
+ select MODULE_PERIPH_UART_HW_FC if HAS_PERIPH_UART_HW_FC && MODULE_PERIPH_UART
source "$(RIOTBOARD)/common/nrf51/Kconfig"
diff --git a/boards/nrf51dk/Makefile.dep b/boards/nrf51dk/Makefile.dep
index 7b8cb845b6..48cf92c800 100644
--- a/boards/nrf51dk/Makefile.dep
+++ b/boards/nrf51dk/Makefile.dep
@@ -2,6 +2,8 @@ ifneq (,$(filter saul_default,$(USEMODULE)))
USEMODULE += saul_gpio
endif
-FEATURES_REQUIRED += periph_uart_hw_fc
+ifneq (,$(filter periph_uart,$(USEMODULE)))
+ FEATURES_REQUIRED += periph_uart_hw_fc
+endif
include $(RIOTBOARD)/common/nrf51/Makefile.dep
diff --git a/boards/nrf51dongle/Kconfig b/boards/nrf51dongle/Kconfig
index 367b8714c0..4c4b61861b 100644
--- a/boards/nrf51dongle/Kconfig
+++ b/boards/nrf51dongle/Kconfig
@@ -15,6 +15,6 @@ config BOARD_NRF51DONGLE
select HAS_PERIPH_UART
select HAS_PERIPH_UART_HW_FC
- select MODULE_PERIPH_UART_HW_FC if TEST_KCONFIG && HAS_PERIPH_UART_HW_FC
+ select MODULE_PERIPH_UART_HW_FC if HAS_PERIPH_UART_HW_FC && MODULE_PERIPH_UART
source "$(RIOTBOARD)/common/nrf51/Kconfig"
diff --git a/boards/nrf51dongle/Makefile.dep b/boards/nrf51dongle/Makefile.dep
index 581680658c..8237864e02 100644
--- a/boards/nrf51dongle/Makefile.dep
+++ b/boards/nrf51dongle/Makefile.dep
@@ -1,3 +1,6 @@
-FEATURES_REQUIRED += periph_uart_hw_fc
+
+ifneq (,$(filter periph_uart,$(USEMODULE)))
+ FEATURES_REQUIRED += periph_uart_hw_fc
+endif
include $(RIOTBOARD)/common/nrf51/Makefile.dep
diff --git a/boards/particle-argon/Kconfig b/boards/particle-argon/Kconfig
index 28729ede92..3420c70f8d 100644
--- a/boards/particle-argon/Kconfig
+++ b/boards/particle-argon/Kconfig
@@ -11,6 +11,6 @@ config BOARD_PARTICLE_ARGON
bool
default y
select BOARD_COMMON_PARTICLE_MESH
- select MODULE_PERIPH_UART_HW_FC if TEST_KCONFIG && HAS_PERIPH_UART_HW_FC && MODULE_PERIPH_UART
+ select MODULE_PERIPH_UART_HW_FC if HAS_PERIPH_UART_HW_FC && MODULE_PERIPH_UART
source "$(RIOTBOARD)/common/particle-mesh/Kconfig"
diff --git a/boards/particle-boron/Kconfig b/boards/particle-boron/Kconfig
index 842061223b..cdd324939f 100644
--- a/boards/particle-boron/Kconfig
+++ b/boards/particle-boron/Kconfig
@@ -11,6 +11,6 @@ config BOARD_PARTICLE_BORON
bool
default y
select BOARD_COMMON_PARTICLE_MESH
- select MODULE_PERIPH_UART_HW_FC if TEST_KCONFIG && HAS_PERIPH_UART_HW_FC && MODULE_PERIPH_UART
+ select MODULE_PERIPH_UART_HW_FC if HAS_PERIPH_UART_HW_FC && MODULE_PERIPH_UART
source "$(RIOTBOARD)/common/particle-mesh/Kconfig"
diff --git a/boards/stm32f723e-disco/Kconfig b/boards/stm32f723e-disco/Kconfig
index 4621f6a6da..fa9b2e71c6 100644
--- a/boards/stm32f723e-disco/Kconfig
+++ b/boards/stm32f723e-disco/Kconfig
@@ -34,7 +34,7 @@ config BOARD_STM32F723E_DISCO
select HAVE_SAUL_GPIO
select HAVE_FT5X06
- select MODULE_PERIPH_UART_HW_FC if TEST_KCONFIG && HAS_PERIPH_UART_HW_FC && MODULE_PERIPH_UART
+ select MODULE_PERIPH_UART_HW_FC if HAS_PERIPH_UART_HW_FC && MODULE_PERIPH_UART
# Workaround due to stdout only working with stdin enabled
select MODULE_STDIN if TEST_KCONFIG
diff --git a/boards/stm32f723e-disco/Makefile.dep b/boards/stm32f723e-disco/Makefile.dep
index c58bbadcdb..6334b41c7e 100644
--- a/boards/stm32f723e-disco/Makefile.dep
+++ b/boards/stm32f723e-disco/Makefile.dep
@@ -1,5 +1,5 @@
ifneq (,$(filter periph_uart,$(USEMODULE)))
- USEMODULE += periph_uart_hw_fc
+ FEATURES_REQUIRED += periph_uart_hw_fc
endif
ifneq (,$(filter saul_default,$(USEMODULE)))
diff --git a/boards/stm32l496g-disco/Kconfig b/boards/stm32l496g-disco/Kconfig
index 5121c61815..cc5a452ffe 100644
--- a/boards/stm32l496g-disco/Kconfig
+++ b/boards/stm32l496g-disco/Kconfig
@@ -41,7 +41,7 @@ config BOARD_STM32L496G_DISCO
select HAVE_FT5X06
select MODULE_PERIPH_LPUART if MODULE_PERIPH_UART
- select MODULE_PERIPH_UART_HW_FC if MODULE_PERIPH_UART && !MODULE_PERIPH_SPI_STMOD
+ select MODULE_PERIPH_UART_HW_FC if MODULE_PERIPH_UART && !MODULE_PERIPH_SPI_STMOD && HAS_PERIPH_UART_HW_FC
source "$(RIOTBOARD)/common/stm32/Kconfig"
diff --git a/boards/stm32l496g-disco/Makefile.dep b/boards/stm32l496g-disco/Makefile.dep
index f1d8250e5c..27f8d0c45e 100644
--- a/boards/stm32l496g-disco/Makefile.dep
+++ b/boards/stm32l496g-disco/Makefile.dep
@@ -14,6 +14,6 @@ ifneq (,$(filter periph_uart,$(USEMODULE)))
USEMODULE += periph_lpuart
ifeq (,$(filter periph_spi_stmod_plus,$(USEMODULE)))
# if STMod+ is not used with SPI (default), the UART interface uses HW FC
- USEMODULE += periph_uart_hw_fc
+ FEATURES_REQUIRED += periph_uart_hw_fc
endif
endif
diff --git a/boards/ublox-c030-u201/Kconfig b/boards/ublox-c030-u201/Kconfig
index fc73c1fa7b..2e1fd0ddd7 100644
--- a/boards/ublox-c030-u201/Kconfig
+++ b/boards/ublox-c030-u201/Kconfig
@@ -28,7 +28,7 @@ config BOARD_UBLOX_C030_U201
select BOARD_HAS_LSE
select HAVE_SAUL_GPIO
- select MODULE_PERIPH_UART_HW_FC if TEST_KCONFIG && HAS_PERIPH_UART_HW_FC
+ select MODULE_PERIPH_UART_HW_FC if HAS_PERIPH_UART_HW_FC && MODULE_PERIPH_UART
config CLOCK_HSE
default 12000000
diff --git a/boards/ublox-c030-u201/Makefile.dep b/boards/ublox-c030-u201/Makefile.dep
index 78e64f15ca..5bac246cb4 100644
--- a/boards/ublox-c030-u201/Makefile.dep
+++ b/boards/ublox-c030-u201/Makefile.dep
@@ -1,4 +1,7 @@
-USEMODULE += periph_uart_hw_fc
+ifneq (,$(filter periph_uart,$(USEMODULE)))
+ FEATURES_REQUIRED += periph_uart_hw_fc
+endif
+
ifneq (,$(filter saul_default,$(USEMODULE)))
USEMODULE += saul_gpio
diff --git a/pkg/tinyusb/cdc_acm_stdio/Kconfig b/pkg/tinyusb/cdc_acm_stdio/Kconfig
index b25cf791e5..91addc0a19 100644
--- a/pkg/tinyusb/cdc_acm_stdio/Kconfig
+++ b/pkg/tinyusb/cdc_acm_stdio/Kconfig
@@ -14,5 +14,6 @@ config MODULE_STDIO_TINYUSB_CDC_ACM
depends on MODULE_TINYUSB_DEVICE
depends on MODULE_TINYUSB_CLASS_CDC
select MODULE_STDIO_AVAILABLE
+ select USE_STDOUT_BUFFERED
endchoice
diff --git a/sys/Kconfig.picolibc b/sys/Kconfig.picolibc
index cabfc3d015..ccb18a9528 100644
--- a/sys/Kconfig.picolibc
+++ b/sys/Kconfig.picolibc
@@ -7,7 +7,7 @@
if MODULE_PICOLIBC
-config PICOLIBC_STDOUT_BUFFERED
+config MODULE_PICOLIBC_STDOUT_BUFFERED
bool "Buffered standard output"
default USE_STDOUT_BUFFERED
help
diff --git a/sys/Kconfig.stdio b/sys/Kconfig.stdio
index e29bf20a88..15e5f28597 100644
--- a/sys/Kconfig.stdio
+++ b/sys/Kconfig.stdio
@@ -34,6 +34,7 @@ config MODULE_STDIO_SEMIHOSTING
depends on HAS_ARCH_ARM || HAS_ARCH_RISCV
select MODULE_ZTIMER
select MODULE_ZTIMER_MSEC
+ select USE_STDOUT_BUFFERED
config MODULE_SLIPDEV_STDIO
bool "SLIP network device"
diff --git a/sys/usb/usbus/cdc/acm/Kconfig b/sys/usb/usbus/cdc/acm/Kconfig
index 524e4b9cb1..897ce2b230 100644
--- a/sys/usb/usbus/cdc/acm/Kconfig
+++ b/sys/usb/usbus/cdc/acm/Kconfig
@@ -61,5 +61,7 @@ config MODULE_STDIO_CDC_ACM
depends on MODULE_USBUS_CDC_ACM && !MODULE_TINYUSB_DEVICE
select MODULE_ISRPIPE
select MODULE_STDIO_AVAILABLE
+ select USE_STDOUT_BUFFERED
+
endchoice Some make behaviour also changes but I think that it is a fix that should have been done. |
c84f97a
to
d4b35ec
Compare
Applied, thanks! |
bors merge |
Build succeeded! The publicly hosted instance of bors-ng is deprecated and will go away soon. If you want to self-host your own instance, instructions are here. If you want to switch to GitHub's built-in merge queue, visit their help page. |
Thanks! |
Contribution description
This was quite straight-forward.
Testing procedure
tests/sys/stdio_semihosting
builds fine and produces the same binary with TEST_KCONFIG=1 and TEST_KCONFIG=0Issues/PRs references
Ticks one item in #16875