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.
62 lines
1.8 KiB
62 lines
1.8 KiB
cmake_minimum_required(VERSION 3.10)
|
|
|
|
option(A_BUILD_MAIN_AS_STATIC_LIB "Build as a static library instead of an executable" OFF)
|
|
|
|
get_filename_component(TARGET_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME)
|
|
|
|
set(MAIN_SRCS
|
|
main.c
|
|
)
|
|
|
|
if(A_BUILD_MAIN_AS_STATIC_LIB)
|
|
add_library(${TARGET_NAME} STATIC ${MAIN_SRCS})
|
|
else()
|
|
add_executable(${TARGET_NAME} ${MAIN_SRCS})
|
|
endif()
|
|
|
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
target_compile_definitions(${TARGET_NAME} PRIVATE DEBUG)
|
|
endif()
|
|
|
|
if(A_BUILD_MAIN_AS_STATIC_LIB)
|
|
set_target_properties(${TARGET_NAME} PROPERTIES
|
|
ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/output
|
|
)
|
|
else()
|
|
set_target_properties(${TARGET_NAME} PROPERTIES
|
|
RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/output
|
|
)
|
|
endif()
|
|
|
|
target_include_directories(${TARGET_NAME}
|
|
PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
${PROJECT_SOURCE_DIR}/include
|
|
${PROJECT_SOURCE_DIR}/include/peripheral
|
|
${PROJECT_SOURCE_DIR}/include/protocol
|
|
${PROJECT_SOURCE_DIR}/include/manger
|
|
)
|
|
|
|
if(TARGET list)
|
|
target_link_libraries(${TARGET_NAME} PRIVATE list)
|
|
endif()
|
|
|
|
if(DEFINED GLOBAL_ENABLED_MODULES AND NOT GLOBAL_ENABLED_MODULES STREQUAL "")
|
|
message(STATUS "[Main] Linking modules: ${GLOBAL_ENABLED_MODULES}")
|
|
target_link_libraries(${TARGET_NAME} PRIVATE ${GLOBAL_ENABLED_MODULES})
|
|
else()
|
|
message(STATUS "[Main] No additional modules linked.")
|
|
endif()
|
|
|
|
if(DEFINED GLOBAL_ENABLED_MACROS AND NOT GLOBAL_ENABLED_MACROS STREQUAL "")
|
|
message(STATUS "[Main] Defining macros: ${GLOBAL_ENABLED_MACROS}")
|
|
target_compile_definitions(${TARGET_NAME} PRIVATE ${GLOBAL_ENABLED_MACROS})
|
|
endif()
|
|
|
|
target_compile_options(${TARGET_NAME}
|
|
PRIVATE
|
|
-Wall
|
|
-Werror
|
|
$<$<CONFIG:Debug>:-g -O0>
|
|
$<$<CONFIG:Release>:-O2>
|
|
)
|