CMakeLists.txt 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
  2. cmake_policy(SET CMP0054 NEW)
  3. cmake_policy(SET CMP0057 NEW)
  4. project(threadx_test LANGUAGES C)
  5. # Set build configurations
  6. set(BUILD_CONFIGURATIONS
  7. default_build_coverage no_cache_build no_cache_standalone_build
  8. fault_tolerant_build_coverage no_check_build no_cache_fault_tolerant_build
  9. standalone_build_coverage standalone_fault_tolerant_build_coverage
  10. standalone_no_cache_fault_tolerant_build)
  11. set(CMAKE_CONFIGURATION_TYPES
  12. ${BUILD_CONFIGURATIONS}
  13. CACHE STRING "list of supported configuration types" FORCE)
  14. set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
  15. ${CMAKE_CONFIGURATION_TYPES})
  16. list(GET CMAKE_CONFIGURATION_TYPES 0 BUILD_TYPE)
  17. if((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)
  22. endif()
  23. message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
  24. message(STATUS "Using toolchain file: ${CMAKE_TOOLCHAIN_FILE}.")
  25. set(FX_FAULT_TOLERANT_DEFINITIONS
  26. -DFX_ENABLE_FAULT_TOLERANT -DFX_UPDATE_FILE_SIZE_ON_ALLOCATE
  27. -DFX_FAULT_TOLERANT_TRANSACTION_FAIL_FUNCTION)
  28. set(default_build_coverage "")
  29. set(no_cache_build -DFX_DISABLE_CACHE -DFX_DISABLE_FAT_ENTRY_REFRESH)
  30. set(fault_tolerant_build_coverage ${FX_FAULT_TOLERANT_DEFINITIONS})
  31. set(standalone_build_coverage -DFX_STANDALONE_ENABLE)
  32. set(standalone_fault_tolerant_build_coverage ${FX_FAULT_TOLERANT_DEFINITIONS}
  33. -DFX_STANDALONE_ENABLE)
  34. set(no_cache_standalone_build -DFX_DISABLE_CACHE -DFX_STANDALONE_ENABLE)
  35. set(no_check_build ${FX_COMPILE_DEFINITIONS} -DFX_DISABLE_ERROR_CHECKING)
  36. set(no_cache_fault_tolerant_build ${no_cache_build} ${FX_FAULT_TOLERANT_DEFINITIONS})
  37. set(standalone_no_cache_fault_tolerant_build ${no_cache_build} ${FX_FAULT_TOLERANT_DEFINITIONS} -DFX_STANDALONE_ENABLE)
  38. add_compile_options(
  39. -m32
  40. -std=c99
  41. -ggdb
  42. -g3
  43. -gdwarf-2
  44. -fdiagnostics-color
  45. -Werror
  46. -DFX_REGRESSION_TEST
  47. ${${CMAKE_BUILD_TYPE}})
  48. add_link_options(-m32)
  49. if(CMAKE_BUILD_TYPE MATCHES ".*standalone.*")
  50. set(FX_STANDALONE_ENABLE
  51. ON
  52. CACHE BOOL "Enable Filex in standalone mode")
  53. endif()
  54. enable_testing()
  55. add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../.. filex)
  56. add_subdirectory(regression)
  57. add_subdirectory(samples)
  58. # Coverage
  59. if(CMAKE_BUILD_TYPE MATCHES ".*_coverage")
  60. target_compile_options(filex PRIVATE -fprofile-arcs -ftest-coverage)
  61. target_link_options(filex PRIVATE -fprofile-arcs -ftest-coverage)
  62. endif()
  63. # Build ThreadX library once
  64. if(NOT FX_STANDALONE_ENABLE)
  65. execute_process(COMMAND ${CMAKE_CURRENT_LIST_DIR}/run.sh build_libs)
  66. add_custom_target(build_libs ALL COMMAND ${CMAKE_CURRENT_LIST_DIR}/run.sh
  67. build_libs)
  68. add_dependencies(filex build_libs)
  69. target_include_directories(filex PUBLIC ${CMAKE_BINARY_DIR}/../libs/inc)
  70. add_library(threadx SHARED IMPORTED GLOBAL)
  71. add_library("azrtos::threadx" ALIAS threadx)
  72. set_target_properties(
  73. threadx PROPERTIES IMPORTED_LOCATION
  74. ${CMAKE_BINARY_DIR}/../libs/threadx/libthreadx.so)
  75. endif()
  76. target_compile_options(
  77. filex
  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)