diff --git a/Makefile.base b/Makefile.base index 582ae88f3..1def37be5 100644 --- a/Makefile.base +++ b/Makefile.base @@ -22,16 +22,33 @@ ${DIRS:%=ALL--%}: ${DIRS:%=CLEAN--%}: $(QQ)"$(MAKE)" -C ${@:CLEAN--%=%} clean -ifeq ($(strip $(SRC)),) +## submodules +ifeq (1, $(SUBMODULES)) + # don't use *.c as SRC if SRC is empty (e.g., no module selected) + NO_AUTO_SRC := 1 + + # allow different submodule basename (e.g., MODULE=cpu_periph_common, but match just periph_%) + BASE_MODULE ?= $(MODULE) + + # for each $(BASE_MODULE)_ in USEMODULE, add .c to SRC + SRC += $(patsubst $(BASE_MODULE)_%,%.c,$(filter $(BASE_MODULE)_%,$(USEMODULE))) + + # don't fail if a selected *.c file does not exist + ifeq (1, $(SUBMODULES_NOFORCE)) + SRC := $(filter $(SRC), $(wildcard *.c)) + endif +endif + +ifeq ($(strip $(SRC))$(NO_AUTO_SRC),) SRC := $(filter-out $(SRC_NOLTO), $(wildcard *.c)) endif -ifeq ($(strip $(SRCXX)),) +ifeq ($(strip $(SRCXX))$(NO_AUTO_SRC),) SRCXX := $(wildcard *.cpp) endif -ifeq ($(strip $(ASMSRC)),) +ifeq ($(strip $(ASMSRC))$(NO_AUTO_SRC),) ASMSRC := $(wildcard *.s) endif -ifeq ($(strip $(ASSMSRC)),) +ifeq ($(strip $(ASSMSRC))$(NO_AUTO_SRC),) ASSMSRC := $(wildcard *.S) endif diff --git a/Makefile.pseudomodules b/Makefile.pseudomodules index a91c8c63e..2602805b4 100644 --- a/Makefile.pseudomodules +++ b/Makefile.pseudomodules @@ -3,9 +3,7 @@ PSEUDOMODULES += conn PSEUDOMODULES += conn_ip PSEUDOMODULES += conn_tcp PSEUDOMODULES += conn_udp -PSEUDOMODULES += core_msg -PSEUDOMODULES += core_mbox -PSEUDOMODULES += core_thread_flags +PSEUDOMODULES += core_% PSEUDOMODULES += emb6_router PSEUDOMODULES += gnrc_ipv6_default PSEUDOMODULES += gnrc_ipv6_router diff --git a/core/Makefile b/core/Makefile index 48422e909..4f1236694 100644 --- a/core/Makefile +++ b/core/Makefile @@ -1 +1,7 @@ +# exclude submodule sources from *.c wildcard source selection +SRC := $(filter-out mbox.c msg.c thread_flags.c,$(wildcard *.c)) + +# enable submodules +SUBMODULES := 1 + include $(RIOTBASE)/Makefile.base diff --git a/core/mbox.c b/core/mbox.c index 7c14f3514..bd5e32415 100644 --- a/core/mbox.c +++ b/core/mbox.c @@ -28,8 +28,6 @@ #define ENABLE_DEBUG (0) #include "debug.h" -#ifdef MODULE_CORE_MBOX - static void _wake_waiter(thread_t *thread, unsigned irqstate) { sched_set_status(thread, STATUS_PENDING); @@ -122,5 +120,3 @@ int _mbox_get(mbox_t *mbox, msg_t *msg, int blocking) return 0; } } - -#endif /* MODULE_CORE_MBOX */ diff --git a/core/msg.c b/core/msg.c index 4ab206141..190244cca 100644 --- a/core/msg.c +++ b/core/msg.c @@ -34,8 +34,6 @@ #include "debug.h" #include "thread.h" -#ifdef MODULE_CORE_MSG - static int _msg_receive(msg_t *m, int block); static int _msg_send(msg_t *m, kernel_pid_t target_pid, bool block, unsigned state); @@ -409,5 +407,3 @@ void msg_queue_print(void) irq_restore(state); } - -#endif /* MODULE_CORE_MSG */ diff --git a/core/thread_flags.c b/core/thread_flags.c index 9396c31e3..281a59230 100644 --- a/core/thread_flags.c +++ b/core/thread_flags.c @@ -26,7 +26,6 @@ #define ENABLE_DEBUG (0) #include "debug.h" -#ifdef MODULE_CORE_THREAD_FLAGS static thread_flags_t _thread_flags_clear_atomic(thread_t *thread, thread_flags_t mask) { unsigned state = irq_disable(); @@ -133,4 +132,3 @@ void thread_flags_set(thread_t *thread, thread_flags_t mask) irq_restore(state); } } -#endif /* MODULE_CORE_THREAD_FLAGS */