diff --git a/CMakeLists.txt b/CMakeLists.txt index affa00d..b8a919d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,37 +24,31 @@ set(GLOBAL_ENABLED_MACROS "" CACHE INTERNAL "List of enabled macros for main") list(APPEND GLOBAL_ENABLED_MACROS MEM_POOL_TOTAL_SIZE=${MY_MEMPOOL_SIZE}) set(GLOBAL_ENABLED_MACROS ${GLOBAL_ENABLED_MACROS} PARENT_SCOPE) -function(add_module MOD_NAME MOD_PATH) - if(ARGC GREATER 2) - set(DEFAULT_STATE ${ARGV2}) - else() - set(DEFAULT_STATE OFF) +function(add_module MOD_NAME MOD_PATH DEFAULT_STATE HAS_TEST) + if(NOT DEFAULT_STATE STREQUAL "ON" AND NOT DEFAULT_STATE STREQUAL "OFF") + message(FATAL_ERROR "[add_module] Invalid DEFAULT_STATE for ${MOD_NAME}: ${DEFAULT_STATE}") endif() - if(ARGC GREATER 3) - set(HAS_TEST ${ARGV2}) - set(HAS_TEST ${ARGV3}) - else() - set(HAS_TEST OFF) + if(NOT HAS_TEST STREQUAL "ON" AND NOT HAS_TEST STREQUAL "OFF") + message(FATAL_ERROR "[add_module] Invalid HAS_TEST for ${MOD_NAME}: ${HAS_TEST}") endif() if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${MOD_PATH}") message(WARNING "[Root] Module '${MOD_NAME}' skipped: Path '${MOD_PATH}' does not exist!") - # message(FATAL_ERROR "[Root] Module '${MOD_NAME}' failed: Path '${MOD_PATH}' does not exist!") return() endif() string(TOUPPER ${MOD_NAME} MOD_UPPER) option(BUILD_${MOD_UPPER} "Build ${MOD_NAME} module" ${DEFAULT_STATE}) - + if(${BUILD_${MOD_UPPER}}) set(BUILD_${MOD_UPPER}_HAS_TEST ${HAS_TEST} CACHE INTERNAL "Has test support") - list(APPEND GLOBAL_ENABLED_MODULES ${MOD_NAME}) - list(APPEND GLOBAL_ENABLED_MACROS BUILD_${MOD_UPPER}) - message(STATUS "[Root] Enabled module(TestSupport: ${HAS_TEST}): ${MOD_NAME} (Default: ${DEFAULT_STATE}) -> Macro: BUILD_${MOD_UPPER}") - set(GLOBAL_ENABLED_MODULES ${GLOBAL_ENABLED_MODULES} PARENT_SCOPE) - set(GLOBAL_ENABLED_MACROS ${GLOBAL_ENABLED_MACROS} PARENT_SCOPE) - add_subdirectory(${MOD_PATH}) + list(APPEND GLOBAL_ENABLED_MODULES ${MOD_NAME}) + list(APPEND GLOBAL_ENABLED_MACROS BUILD_${MOD_UPPER}) + message(STATUS "[Root] Enabled module(TestSupport: ${HAS_TEST}): ${MOD_NAME} (Default: ${DEFAULT_STATE}) -> Macro: BUILD_${MOD_UPPER}") + set(GLOBAL_ENABLED_MODULES ${GLOBAL_ENABLED_MODULES} PARENT_SCOPE) + set(GLOBAL_ENABLED_MACROS ${GLOBAL_ENABLED_MACROS} PARENT_SCOPE) + add_subdirectory(${MOD_PATH}) endif() endfunction()