From 72c812a5633b6462fe7e7c02bb69844d8db5b352 Mon Sep 17 00:00:00 2001 From: Joel Guittet Date: Mon, 29 Jul 2024 17:43:24 +0200 Subject: [PATCH 1/4] cmake: fix configure add-on definitions --- CMakeLists.txt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 90e836a..8014902 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -151,8 +151,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) From 8aad77c1ec9ecc915dbe67da1bc5085f1e08b3e0 Mon Sep 17 00:00:00 2001 From: Joel Guittet Date: Mon, 29 Jul 2024 17:44:39 +0200 Subject: [PATCH 2/4] cmake: add quotes in case path contains spaces --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8014902..1580662 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -211,9 +211,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 From aa0087209265a0784c406f1c3b0344b09c39df74 Mon Sep 17 00:00:00 2001 From: Joel Guittet Date: Mon, 29 Jul 2024 17:45:10 +0200 Subject: [PATCH 3/4] cmake: add options so that the default configuration is properly defined --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1580662..ae31713 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) @@ -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) @@ -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) From a7ecef3e1699deae5c77431999a1ff63dda8138e Mon Sep 17 00:00:00 2001 From: Joel Guittet Date: Mon, 29 Jul 2024 17:48:34 +0200 Subject: [PATCH 4/4] tests: cmake: general update to use main cmakelists file --- tests/CMakeLists.txt | 122 ++++++++-------------------- tests/mocks/cjson/CMakeLists.txt | 2 +- tests/mocks/esp-idf/CMakeLists.txt | 2 +- tests/mocks/freertos/CMakeLists.txt | 2 +- tests/mocks/mbedtls/CMakeLists.txt | 2 +- tests/mocks/zephyr/CMakeLists.txt | 2 +- 6 files changed, 37 insertions(+), 95 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 0aa360b..f73ddeb 100755 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -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) diff --git a/tests/mocks/cjson/CMakeLists.txt b/tests/mocks/cjson/CMakeLists.txt index c4122eb..8208418 100755 --- a/tests/mocks/cjson/CMakeLists.txt +++ b/tests/mocks/cjson/CMakeLists.txt @@ -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}) diff --git a/tests/mocks/esp-idf/CMakeLists.txt b/tests/mocks/esp-idf/CMakeLists.txt index 41f7000..68ae290 100755 --- a/tests/mocks/esp-idf/CMakeLists.txt +++ b/tests/mocks/esp-idf/CMakeLists.txt @@ -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") diff --git a/tests/mocks/freertos/CMakeLists.txt b/tests/mocks/freertos/CMakeLists.txt index bbed392..f0c1e8e 100755 --- a/tests/mocks/freertos/CMakeLists.txt +++ b/tests/mocks/freertos/CMakeLists.txt @@ -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" diff --git a/tests/mocks/mbedtls/CMakeLists.txt b/tests/mocks/mbedtls/CMakeLists.txt index d473f35..d4ed661 100755 --- a/tests/mocks/mbedtls/CMakeLists.txt +++ b/tests/mocks/mbedtls/CMakeLists.txt @@ -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") diff --git a/tests/mocks/zephyr/CMakeLists.txt b/tests/mocks/zephyr/CMakeLists.txt index 8320396..77049ff 100755 --- a/tests/mocks/zephyr/CMakeLists.txt +++ b/tests/mocks/zephyr/CMakeLists.txt @@ -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")