Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 2 additions & 48 deletions Makefile.dep
Original file line number Diff line number Diff line change
Expand Up @@ -440,9 +440,6 @@ ifneq (,$(filter newlib,$(USEMODULE)))
ifeq (,$(filter newlib_syscalls_%,$(USEMODULE)))
USEMODULE += newlib_syscalls_default
endif
ifeq (,$(filter stdio_cdc_acm stdio_native stdio_null stdio_rtt slipdev_stdio,$(USEMODULE)))
USEMODULE += stdio_uart
endif
endif

ifneq (,$(filter posix_sockets,$(USEMODULE)))
Expand All @@ -453,55 +450,12 @@ ifneq (,$(filter posix_sockets,$(USEMODULE)))
USEMODULE += xtimer
endif

ifneq (,$(filter stdio_cdc_acm,$(USEMODULE)))
USEMODULE += usbus_cdc_acm
USEMODULE += isrpipe
endif

ifneq (,$(filter stdio_rtt,$(USEMODULE)))
USEMODULE += xtimer
endif

ifneq (,$(filter shell,$(USEMODULE)))
USEMODULE += stdin
endif

ifneq (,$(filter stdio_ethos,$(USEMODULE)))
USEMODULE += ethos
USEMODULE += stdin
USEMODULE += stdio_uart
endif

ifneq (,$(filter stdin,$(USEMODULE)))
ifneq (,$(filter stdio_uart,$(USEMODULE)))
USEMODULE += stdio_uart_rx
endif
endif

ifneq (,$(filter stdio_uart_rx,$(USEMODULE)))
USEMODULE += isrpipe
USEMODULE += stdio_uart
endif

ifneq (,$(filter stdio_uart,$(USEMODULE)))
FEATURES_REQUIRED += periph_uart
endif

ifneq (,$(filter stdio_cdc_acm stdio_null stdio_uart slipdev_stdio,$(USEMODULE)))
# stdio_rtt cannot be used when another STDIO is loaded
DISABLE_MODULE += stdio_rtt
endif

ifneq (,$(filter stdio_rtt stdio_null stdio_uart slipdev_stdio,$(USEMODULE)))
# stdio_cdc_acm cannot be used when another STDIO is loaded
DISABLE_MODULE += stdio_cdc_acm
endif

ifeq (,$(filter stdio_cdc_acm,$(USEMODULE)))
# The arduino bootloader feature cannot be used if the stdio_cdc_acm module
# is not used
FEATURES_BLACKLIST += bootloader_arduino
endif
# Include all stdio_% dependencies after all USEMODULE += stdio_%
include $(RIOTBASE)/makefiles/stdio.inc.mk

ifneq (,$(filter isrpipe,$(USEMODULE)))
USEMODULE += tsrb
Expand Down
64 changes: 64 additions & 0 deletions makefiles/stdio.inc.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
STDIO_MODULES = \
slipdev_stdio \
stdio_cdc_acm \
stdio_ethos \
stdio_null \
stdio_rtt \
stdio_uart \
#

# Since USEMODULE and DEFAULT_MODULEs are recursively expanded we need to
# disable DEFAULT_MODULEs before any of there dependencies are evaluated,
# otherwise the disabled MODULE will be in USEMODULE (triggering) its
# dependencies, and then removed but leaving its dependencies
ifneq (,$(filter $(filter-out stdio_rtt,$(STDIO_MODULES)),$(USEMODULE)))
# stdio_rtt cannot be used when another STDIO is loaded
DISABLE_MODULE += stdio_rtt
endif

ifneq (,$(filter $(filter-out stdio_cdc_acm,$(STDIO_MODULES)),$(USEMODULE)))
# stdio_cdc_acm cannot be used when another STDIO is loaded
DISABLE_MODULE += stdio_cdc_acm
endif

ifneq (,$(filter newlib,$(USEMODULE)))
ifeq (,$(filter $(STDIO_MODULES),$(USEMODULE)))
USEMODULE += stdio_uart
endif
endif
Comment on lines +24 to +28

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adapted from Makefile.dep, I know, but does this dependency even make sense? Why enforce a STDIO when newlib is there? AFAIK newlib should just work fine without STDIO, or am I mistaken?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adapted from Makefile.dep, I know, but does this dependency even make sense? Why enforce a STDIO when newlib is there? AFAIK newlib should just work fine without STDIO, or am I mistaken?

This might just be a way of saying if newlib is included then default stdio is stdio_uart.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea, but basically this is why stdio_null is necessary, right? Why does there need to be a stdio at all?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea, but basically this is why stdio_null is necessary, right? Why does there need to be a stdio at all?

It doesn't but most users expect to see something if they do make term so it makes sense to usually include it.

Maybe more can be done towards cleaning this up by actually using DEFAULT_MODULE here, but I would rather leave it for later.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeahyeah, this was just a thought, not actually requesting a solution here.


ifneq (,$(filter stdio_cdc_acm,$(USEMODULE)))
USEMODULE += usbus_cdc_acm
USEMODULE += isrpipe
endif

ifneq (,$(filter stdio_rtt,$(USEMODULE)))
USEMODULE += xtimer
endif

ifneq (,$(filter stdio_ethos,$(USEMODULE)))
USEMODULE += ethos
USEMODULE += stdin
USEMODULE += stdio_uart
endif

ifneq (,$(filter stdin,$(USEMODULE)))
ifneq (,$(filter stdio_uart,$(USEMODULE)))
USEMODULE += stdio_uart_rx
endif
endif

ifneq (,$(filter stdio_uart_rx,$(USEMODULE)))
USEMODULE += isrpipe
USEMODULE += stdio_uart
endif

ifneq (,$(filter stdio_uart,$(USEMODULE)))
FEATURES_REQUIRED += periph_uart
endif

ifeq (,$(filter stdio_cdc_acm,$(USEMODULE)))
# The arduino bootloader feature cannot be used if the stdio_cdc_acm module
# is not used
FEATURES_BLACKLIST += bootloader_arduino
endif