Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmake: fix configure add-on and tests #74

Merged
merged 4 commits into from
Jul 29, 2024
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
15 changes: 11 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ if (NOT CONFIG_MENDER_CLIENT_UPDATE_POLL_INTERVAL)
else()
message(STATUS "Using custom '${CONFIG_MENDER_CLIENT_UPDATE_POLL_INTERVAL}' update poll interval")
endif()
option(CONFIG_MENDER_CLIENT_ADD_ON_CONFIGURE "Mender client Configure" OFF)
option(CONFIG_MENDER_CLIENT_CONFIGURE_STORAGE "Mender client Configure storage" ON)
if (CONFIG_MENDER_CLIENT_ADD_ON_CONFIGURE)
message(STATUS "Using mender-configure add-on")
if (CONFIG_MENDER_CLIENT_CONFIGURE_STORAGE)
Expand All @@ -63,6 +65,7 @@ if (CONFIG_MENDER_CLIENT_ADD_ON_CONFIGURE)
message(STATUS "Using custom '${CONFIG_MENDER_CLIENT_CONFIGURE_REFRESH_INTERVAL}' configure refresh interval")
endif()
endif()
option(CONFIG_MENDER_CLIENT_ADD_ON_INVENTORY "Mender client Inventory" ON)
if (CONFIG_MENDER_CLIENT_ADD_ON_INVENTORY)
message(STATUS "Using mender-inventory add-on")
if (NOT CONFIG_MENDER_CLIENT_INVENTORY_REFRESH_INTERVAL)
Expand All @@ -71,6 +74,7 @@ if (CONFIG_MENDER_CLIENT_ADD_ON_INVENTORY)
message(STATUS "Using custom '${CONFIG_MENDER_CLIENT_INVENTORY_REFRESH_INTERVAL}' inventory refresh interval")
endif()
endif()
option(CONFIG_MENDER_CLIENT_ADD_ON_TROUBLESHOOT "Mender client Troubleshoot (EXPERIMENTAL)" OFF)
if (CONFIG_MENDER_CLIENT_ADD_ON_TROUBLESHOOT)
message(STATUS "Using mender-troubleshoot add-on")
if (NOT CONFIG_MENDER_CLIENT_TROUBLESHOOT_HEALTHCHECK_INTERVAL)
Expand Down Expand Up @@ -151,8 +155,11 @@ if (CONFIG_MENDER_CLIENT_UPDATE_POLL_INTERVAL)
endif()
if (CONFIG_MENDER_CLIENT_ADD_ON_CONFIGURE)
target_compile_definitions(mender-mcu-client PUBLIC CONFIG_MENDER_CLIENT_ADD_ON_CONFIGURE)
if (CONFIG_MENDER_CLIENT_INVENTORY_REFRESH_INTERVAL)
target_compile_definitions(mender-mcu-client PRIVATE CONFIG_MENDER_CLIENT_INVENTORY_REFRESH_INTERVAL=${CONFIG_MENDER_CLIENT_INVENTORY_REFRESH_INTERVAL})
if (CONFIG_MENDER_CLIENT_CONFIGURE_STORAGE)
target_compile_definitions(mender-mcu-client PUBLIC CONFIG_MENDER_CLIENT_CONFIGURE_STORAGE)
endif()
if (CONFIG_MENDER_CLIENT_CONFIGURE_REFRESH_INTERVAL)
target_compile_definitions(mender-mcu-client PRIVATE CONFIG_MENDER_CLIENT_CONFIGURE_REFRESH_INTERVAL=${CONFIG_MENDER_CLIENT_CONFIGURE_REFRESH_INTERVAL})
endif()
endif()
if (CONFIG_MENDER_CLIENT_ADD_ON_INVENTORY)
Expand Down Expand Up @@ -208,9 +215,9 @@ endif()
target_sources(mender-mcu-client PRIVATE ${SOURCES_TEMP})

# Add include directories
target_include_directories(mender-mcu-client PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include)
target_include_directories(mender-mcu-client PUBLIC "${CMAKE_CURRENT_LIST_DIR}/include")
if (CONFIG_MENDER_PLATFORM_NET_TYPE STREQUAL "zephyr")
target_include_directories(mender-mcu-client PRIVATE ${CMAKE_CURRENT_LIST_DIR}/platform/net/${CONFIG_MENDER_PLATFORM_NET_TYPE}/include)
target_include_directories(mender-mcu-client PRIVATE "${CMAKE_CURRENT_LIST_DIR}/platform/net/${CONFIG_MENDER_PLATFORM_NET_TYPE}/include")
endif()

# Define version
Expand Down
122 changes: 32 additions & 90 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,117 +40,59 @@ set(CMAKE_CXX_EXTENSIONS OFF)
set(PROJECT_BASE_NAME mender-mcu-client)
message("Configuring for ${PROJECT_BASE_NAME} - Build type is ${CMAKE_BUILD_TYPE}")

# Flags
if(CMAKE_BUILD_TYPE MATCHES "Debug")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Og -g")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Og -g")
else()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
endif()
# Define VERSION_NUMBER
file(STRINGS "${CMAKE_CURRENT_LIST_DIR}/../VERSION" VERSION_NUMBER LIMIT_COUNT 1)
set_property(DIRECTORY . APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_CURRENT_LIST_DIR}/../VERSION)
STRING(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)-rc[0-9]+" "\\1.\\2.\\3" VERSION_NUMBER "${VERSION_NUMBER}")

# Define CMAKE_PROJECT_NAME, CMAKE_PROJECT_VERSION and LANGUAGES
project(${PROJECT_BASE_NAME} VERSION ${VERSION_NUMBER} LANGUAGES C ASM)

# Declare the executable first, so that we can add flags and sources later on
set(APP_EXECUTABLE_NAME ${PROJECT_BASE_NAME}.elf)
message("Executable name: ${APP_EXECUTABLE_NAME}")
add_executable(${APP_EXECUTABLE_NAME})
set(EXECUTABLE_NAME ${PROJECT_BASE_NAME}.elf)
message("Executable name: ${EXECUTABLE_NAME}")
add_executable(${EXECUTABLE_NAME})

# Define compile options
if(CMAKE_BUILD_TYPE MATCHES "Debug")
target_compile_definitions(${APP_EXECUTABLE_NAME} PRIVATE DEBUG)
endif()

# Add definitions to configure the client
if(CONFIG_MENDER_SERVER_HOST)
add_compile_definitions(CONFIG_MENDER_SERVER_HOST="${CONFIG_MENDER_SERVER_HOST}")
endif()
if(CONFIG_MENDER_CLIENT_AUTHENTICATION_POLL_INTERVAL)
add_compile_definitions(CONFIG_MENDER_CLIENT_AUTHENTICATION_POLL_INTERVAL=${CONFIG_MENDER_CLIENT_AUTHENTICATION_POLL_INTERVAL})
endif()
if(CONFIG_MENDER_CLIENT_UPDATE_POLL_INTERVAL)
add_compile_definitions(CONFIG_MENDER_CLIENT_UPDATE_POLL_INTERVAL=${CONFIG_MENDER_CLIENT_UPDATE_POLL_INTERVAL})
endif()
if(CONFIG_MENDER_FLASH_PATH)
add_compile_definitions(CONFIG_MENDER_FLASH_PATH="${CONFIG_MENDER_FLASH_PATH}")
endif()
if(CONFIG_MENDER_STORAGE_PATH)
add_compile_definitions(CONFIG_MENDER_STORAGE_PATH="${CONFIG_MENDER_STORAGE_PATH}")
endif()
if(CONFIG_MENDER_CLIENT_ADD_ON_CONFIGURE)
add_compile_definitions(CONFIG_MENDER_CLIENT_ADD_ON_CONFIGURE)
if(CONFIG_MENDER_CLIENT_CONFIGURE_REFRESH_INTERVAL)
add_compile_definitions(CONFIG_MENDER_CLIENT_CONFIGURE_REFRESH_INTERVAL=${CONFIG_MENDER_CLIENT_CONFIGURE_REFRESH_INTERVAL})
endif()
if(CONFIG_MENDER_CLIENT_CONFIGURE_STORAGE)
add_compile_definitions(CONFIG_MENDER_CLIENT_CONFIGURE_STORAGE)
endif()
endif()
if(CONFIG_MENDER_CLIENT_ADD_ON_INVENTORY)
add_compile_definitions(CONFIG_MENDER_CLIENT_ADD_ON_INVENTORY)
if(CONFIG_MENDER_CLIENT_INVENTORY_REFRESH_INTERVAL)
add_compile_definitions(CONFIG_MENDER_CLIENT_INVENTORY_REFRESH_INTERVAL=${CONFIG_MENDER_CLIENT_INVENTORY_REFRESH_INTERVAL})
endif()
endif()
if(CONFIG_MENDER_CLIENT_ADD_ON_TROUBLESHOOT)
add_compile_definitions(CONFIG_MENDER_CLIENT_ADD_ON_TROUBLESHOOT)
endif()

# Add definitions depending of the target
if(CONFIG_MENDER_PLATFORM_NET_TYPE MATCHES "generic/curl")
add_compile_definitions(CONFIG_MENDER_WEBSOCKET_THREAD_STACK_SIZE=64)
add_compile_definitions(CONFIG_MENDER_WEBSOCKET_THREAD_PRIORITY=0)
endif()
if(CONFIG_MENDER_PLATFORM_NET_TYPE MATCHES "zephyr")
add_compile_definitions(CONFIG_NET_SOCKETS_SOCKOPT_TLS)
add_compile_definitions(CONFIG_MENDER_NET_CA_CERTIFICATE_TAG=1)
endif()
if(CONFIG_MENDER_PLATFORM_SCHEDULER_TYPE MATCHES "freertos")
add_compile_definitions(CONFIG_MENDER_SCHEDULER_WORK_QUEUE_STACK_SIZE=20)
add_compile_definitions(CONFIG_MENDER_SCHEDULER_WORK_QUEUE_PRIORITY=5)
add_compile_definitions(CONFIG_MENDER_SCHEDULER_WORK_QUEUE_LENGTH=10)
endif()
if(CONFIG_MENDER_PLATFORM_SCHEDULER_TYPE MATCHES "posix")
add_compile_definitions(CONFIG_MENDER_SCHEDULER_WORK_QUEUE_STACK_SIZE=64)
add_compile_definitions(CONFIG_MENDER_SCHEDULER_WORK_QUEUE_PRIORITY=0)
add_compile_definitions(CONFIG_MENDER_SCHEDULER_WORK_QUEUE_LENGTH=10)
endif()
if(CONFIG_MENDER_PLATFORM_SCHEDULER_TYPE MATCHES "zephyr")
add_compile_definitions(CONFIG_MENDER_SCHEDULER_WORK_QUEUE_STACK_SIZE=12)
add_compile_definitions(CONFIG_MENDER_SCHEDULER_WORK_QUEUE_PRIORITY=5)
endif()
if(CONFIG_MENDER_PLATFORM_STORAGE_TYPE MATCHES "zephyr/nvs")
add_compile_definitions(CONFIG_MENDER_STORAGE_NVS_SECTOR_COUNT=4)
if (CMAKE_BUILD_TYPE MATCHES "Debug")
target_compile_options(${EXECUTABLE_NAME} PRIVATE -O1 -g)
target_compile_definitions(${EXECUTABLE_NAME} PRIVATE DEBUG)
else()
target_compile_options(${EXECUTABLE_NAME} PRIVATE -Os)
endif()

# Add sources
file(GLOB_RECURSE SOURCES_TEMP "${CMAKE_CURRENT_LIST_DIR}/src/*.c")
target_sources(${APP_EXECUTABLE_NAME} PRIVATE ${SOURCES_TEMP})
target_sources(${EXECUTABLE_NAME} PRIVATE ${SOURCES_TEMP})

# Include mocks
include("${CMAKE_CURRENT_LIST_DIR}/mocks/CMakeLists.txt")

# Include mender-mcu-client library
include_directories("${CMAKE_CURRENT_LIST_DIR}/../include")
include("${CMAKE_CURRENT_LIST_DIR}/../CMakeLists.txt")

# Link the executable with the mender-mcu-library
target_link_libraries(${APP_EXECUTABLE_NAME} mender-mcu-client pthread)
# Add definitions to configure the client
if(CONFIG_MENDER_PLATFORM_NET_TYPE MATCHES "zephyr")
target_compile_definitions(mender-mcu-client PRIVATE CONFIG_NET_SOCKETS_SOCKOPT_TLS)
target_compile_definitions(mender-mcu-client PRIVATE CONFIG_MENDER_NET_CA_CERTIFICATE_TAG=1)
endif()
if(CONFIG_MENDER_PLATFORM_STORAGE_TYPE MATCHES "zephyr/nvs")
target_compile_definitions(mender-mcu-client PRIVATE CONFIG_MENDER_STORAGE_NVS_SECTOR_COUNT=4)
endif()

# Link the mender-mcu-client library
if(CONFIG_MENDER_CLIENT_ADD_ON_TROUBLESHOOT)
target_link_libraries(${APP_EXECUTABLE_NAME} msgpack-c)
target_link_libraries(mender-mcu-client msgpack-c)
endif()
if(CONFIG_MENDER_PLATFORM_NET_TYPE MATCHES "generic/curl")
target_link_libraries(${APP_EXECUTABLE_NAME} curl)
target_link_libraries(mender-mcu-client curl)
endif()
if(CONFIG_MENDER_PLATFORM_SCHEDULER_TYPE MATCHES "posix")
target_link_libraries(${APP_EXECUTABLE_NAME} rt)
target_link_libraries(mender-mcu-client rt)
endif()
if(CONFIG_MENDER_PLATFORM_TLS_TYPE MATCHES "generic/cryptoauthlib")
target_link_libraries(${APP_EXECUTABLE_NAME} cryptoauth)
target_link_libraries(mender-mcu-client cryptoauth)
endif()

# Define project LANGUAGES
project(${PROJECT_BASE_NAME} LANGUAGES C ASM)

# Define project VERSION
file(STRINGS "${CMAKE_CURRENT_LIST_DIR}/../VERSION" VERSION_NUMBER LIMIT_COUNT 1)
STRING(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)-rc[0-9]+" "\\1.\\2.\\3" VERSION_NUMBER "${VERSION_NUMBER}")
project(${PROJECT_BASE_NAME} VERSION ${VERSION_NUMBER} LANGUAGES)
# Link the executable with the mender-mcu-client library
target_link_libraries(${EXECUTABLE_NAME} mender-mcu-client pthread)
2 changes: 1 addition & 1 deletion tests/mocks/cjson/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ if(NOT cjson_POPULATED)
endif()

# Add sources
target_sources(${APP_EXECUTABLE_NAME} PRIVATE "${GIT_FOLDER_NAME}/cJSON.c")
target_sources(${EXECUTABLE_NAME} PRIVATE "${GIT_FOLDER_NAME}/cJSON.c")

# Add include directories
include_directories(${GIT_FOLDER_NAME})
2 changes: 1 addition & 1 deletion tests/mocks/esp-idf/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@

# Add sources
file(GLOB_RECURSE SOURCES_TEMP "${CMAKE_CURRENT_LIST_DIR}/src/*.c")
target_sources(${APP_EXECUTABLE_NAME} PRIVATE ${SOURCES_TEMP})
target_sources(${EXECUTABLE_NAME} PRIVATE ${SOURCES_TEMP})

# Add include directories
include_directories("${CMAKE_CURRENT_LIST_DIR}/include")
Expand Down
2 changes: 1 addition & 1 deletion tests/mocks/freertos/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ if(NOT freertos_POPULATED)
endif()

# Add sources
target_sources(${APP_EXECUTABLE_NAME} PRIVATE
target_sources(${EXECUTABLE_NAME} PRIVATE
"${GIT_FOLDER_NAME}/croutine.c"
"${GIT_FOLDER_NAME}/event_groups.c"
"${GIT_FOLDER_NAME}/list.c"
Expand Down
2 changes: 1 addition & 1 deletion tests/mocks/mbedtls/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ endif()

# Add sources
file(GLOB_RECURSE SOURCES_TEMP "${GIT_FOLDER_NAME}/library/*.c")
target_sources(${APP_EXECUTABLE_NAME} PRIVATE ${SOURCES_TEMP})
target_sources(${EXECUTABLE_NAME} PRIVATE ${SOURCES_TEMP})

# Add include directories
include_directories("${GIT_FOLDER_NAME}/include")
2 changes: 1 addition & 1 deletion tests/mocks/zephyr/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@

# Add sources
file(GLOB_RECURSE SOURCES_TEMP "${CMAKE_CURRENT_LIST_DIR}/src/*.c")
target_sources(${APP_EXECUTABLE_NAME} PRIVATE ${SOURCES_TEMP})
target_sources(${EXECUTABLE_NAME} PRIVATE ${SOURCES_TEMP})

# Add include directories
include_directories("${CMAKE_CURRENT_LIST_DIR}/include")
Loading