You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
3.1 KiB
79 lines
3.1 KiB
cmake_minimum_required(VERSION 3.10)
|
|
|
|
project(interface_test VERSION 1.0.0 LANGUAGES C CXX)
|
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
|
message(STATUS "Setting build type to 'Release' as none was specified.")
|
|
set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)
|
|
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
|
|
endif()
|
|
|
|
option(A_BUILD_MAIN "Build the main executable" ON)
|
|
option(MY_BUILD_SHARED_LIBS "Build libraries as shared (.so/.dll) instead of static (.a)" OFF)
|
|
set(MY_MEMPOOL_SIZE "800 * 1024" CACHE STRING "Custom memory pool size (e.g., 800*1024 or 2097152)")
|
|
|
|
set(MY_BUILD_STATIC ON CACHE BOOL "Build libraries as static (.a)")
|
|
if(MY_BUILD_SHARED_LIBS)
|
|
set(MY_BUILD_STATIC OFF)
|
|
endif()
|
|
|
|
set(GLOBAL_ENABLED_MODULES "" CACHE INTERNAL "List of enabled module targets")
|
|
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)
|
|
endif()
|
|
|
|
if(ARGC GREATER 3)
|
|
set(HAS_TEST ${ARGV2})
|
|
set(HAS_TEST ${ARGV3})
|
|
else()
|
|
set(HAS_TEST OFF)
|
|
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})
|
|
endif()
|
|
endfunction()
|
|
|
|
add_module(base base ON OFF)
|
|
add_module(CANmotor CANmotor ON OFF)
|
|
add_module(controller controller OFF ON)
|
|
add_module(motor motor OFF ON)
|
|
add_module(ctrl2 ctrl2 OFF ON)
|
|
add_module(motorTT motorTT OFF ON)
|
|
add_module(paint paint OFF ON)
|
|
add_module(swing swing OFF ON)
|
|
|
|
if(A_BUILD_MAIN)
|
|
add_subdirectory(main)
|
|
endif()
|
|
|
|
message(STATUS "========================================")
|
|
message(STATUS "Enabled Modules: ${GLOBAL_ENABLED_MODULES}")
|
|
message(STATUS "Macros for Main: ${GLOBAL_ENABLED_MACROS}")
|
|
message(STATUS "Build Static Libs: ${MY_BUILD_STATIC}")
|
|
message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
|
|
message(STATUS "========================================")
|