1cmake_minimum_required(VERSION 3.13 FATAL_ERROR) 2cmake_policy(SET CMP0054 NEW) 3cmake_policy(SET CMP0057 NEW) 4cmake_policy(SET CMP0077 NEW) 5 6project(web_test LANGUAGES C) 7 8# Set build configurations 9set(BUILD_CONFIGURATIONS default_build_coverage no_tls_build_coverage 10 digest_authenticate_build) 11set(CMAKE_CONFIGURATION_TYPES 12 ${BUILD_CONFIGURATIONS} 13 CACHE STRING "list of supported configuration types" FORCE) 14set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS 15 ${CMAKE_CONFIGURATION_TYPES}) 16list(GET CMAKE_CONFIGURATION_TYPES 0 BUILD_TYPE) 17if((NOT CMAKE_BUILD_TYPE) OR (NOT ("${CMAKE_BUILD_TYPE}" IN_LIST 18 CMAKE_CONFIGURATION_TYPES))) 19 set(CMAKE_BUILD_TYPE 20 "${BUILD_TYPE}" 21 CACHE STRING "Build Type of the project" FORCE) 22endif() 23 24message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") 25message(STATUS "Using toolchain file: ${CMAKE_TOOLCHAIN_FILE}.") 26 27set(SECURE -DNX_WEB_HTTPS_ENABLE -DNX_TCPSERVER_ENABLE_TLS -DNX_SECURE_ENABLE_CLIENT_CERTIFICATE_VERIFY) 28set(MULTIPART -DNX_WEB_HTTP_MULTIPART_ENABLE) 29set(DIGEST -DNX_WEB_HTTP_DIGEST_ENABLE) 30 31set(default_build_coverage ${SECURE} ${MULTIPART} -DNX_ENABLE_EXTENDED_NOTIFY_SUPPORT) 32set(no_tls_build_coverage ${MULTIPART}) 33set(digest_authenticate_build ${SECURE} ${MULTIPART} ${DIGEST}) 34 35add_compile_options( 36 -m32 37 -std=c99 38 -ggdb 39 -g3 40 -gdwarf-2 41 -fdiagnostics-color 42 -Werror 43 -DTX_INCLUDE_USER_DEFINE_FILE 44 ${${CMAKE_BUILD_TYPE}}) 45add_link_options(-m32) 46 47enable_testing() 48 49add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../../.. netxduo) 50add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/regression regression) 51 52# Coverage 53if(CMAKE_BUILD_TYPE MATCHES ".*_coverage") 54 target_compile_options(netxduo PRIVATE -fprofile-arcs -ftest-coverage) 55 target_link_options(netxduo PRIVATE -fprofile-arcs -ftest-coverage) 56endif() 57 58# Build ThreadX library once 59execute_process(COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/run.sh build_libs) 60add_custom_target(build_libs ALL COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/run.sh 61 build_libs) 62add_dependencies(netxduo build_libs) 63target_include_directories(netxduo PUBLIC ${CMAKE_BINARY_DIR}/../libs/inc) 64add_library(threadx SHARED IMPORTED GLOBAL) 65add_library("azrtos::threadx" ALIAS threadx) 66set_target_properties( 67 threadx PROPERTIES IMPORTED_LOCATION 68 ${CMAKE_BINARY_DIR}/../libs/threadx/libthreadx.so) 69add_library(filex SHARED IMPORTED GLOBAL) 70add_library("azrtos::filex" ALIAS filex) 71set_target_properties( 72 filex PROPERTIES IMPORTED_LOCATION 73 ${CMAKE_BINARY_DIR}/../libs/filex/libfilex.so) 74target_link_libraries(netxduo PUBLIC filex) 75 76target_compile_options( 77 netxduo 78 PRIVATE -Werror 79 -Wall 80 -Wextra 81 -pedantic 82 -fmessage-length=0 83 -fsigned-char 84 -ffunction-sections 85 -fdata-sections 86 -Wunused 87 -Wuninitialized 88 -Wmissing-declarations 89 -Wconversion 90 -Wpointer-arith 91 -Wshadow 92 -Wlogical-op 93 -Waggregate-return 94 -Wfloat-equal) 95