create_test.cmake 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. # Taken from amazon-freertos repository
  2. #function to create the test executable
  3. function(create_test test_name
  4. test_src
  5. link_list
  6. dep_list
  7. include_list)
  8. include (CTest)
  9. get_filename_component(test_src_absolute ${test_src} ABSOLUTE)
  10. add_custom_command(OUTPUT ${test_name}_runner.c
  11. COMMAND ruby
  12. ${UNITY_DIR}/auto/generate_test_runner.rb
  13. ${MODULE_ROOT_DIR}/tools/unity/project.yml
  14. ${test_src_absolute}
  15. ${test_name}_runner.c
  16. DEPENDS ${test_src}
  17. )
  18. add_executable(${test_name} ${test_src} ${test_name}_runner.c)
  19. set_target_properties(${test_name} PROPERTIES
  20. COMPILE_FLAG "-O0 -ggdb"
  21. RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/tests"
  22. INSTALL_RPATH_USE_LINK_PATH TRUE
  23. LINK_FLAGS " \
  24. -Wl,-rpath,${CMAKE_BINARY_DIR}/lib \
  25. -Wl,-rpath,${CMAKE_CURRENT_BINARY_DIR}/lib"
  26. )
  27. target_include_directories(${test_name} PUBLIC
  28. ${include_list}
  29. )
  30. target_link_directories(${test_name} PUBLIC
  31. ${CMAKE_CURRENT_BINARY_DIR}
  32. )
  33. # link all libraries sent through parameters
  34. foreach(link IN LISTS link_list)
  35. target_link_libraries(${test_name} ${link})
  36. endforeach()
  37. # add dependency to all the dep_list parameter
  38. foreach(dependency IN LISTS dep_list)
  39. add_dependencies(${test_name} ${dependency})
  40. target_link_libraries(${test_name} ${dependency})
  41. endforeach()
  42. target_link_libraries(${test_name} -lgcov unity)
  43. target_link_directories(${test_name} PUBLIC
  44. ${CMAKE_CURRENT_BINARY_DIR}/lib
  45. )
  46. add_test(NAME ${test_name}
  47. COMMAND ${CMAKE_BINARY_DIR}/bin/tests/${test_name}
  48. WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
  49. )
  50. endfunction()
  51. function(create_real_library target
  52. src_file
  53. real_include_list)
  54. add_library(${target} STATIC
  55. ${src_file}
  56. )
  57. target_include_directories(${target} PUBLIC
  58. ${real_include_list}
  59. )
  60. set_target_properties(${target} PROPERTIES
  61. COMPILE_FLAGS "-Wextra -Wpedantic \
  62. -fprofile-arcs -ftest-coverage -fprofile-generate \
  63. -Wno-unused-but-set-variable"
  64. LINK_FLAGS "-fprofile-arcs -ftest-coverage \
  65. -fprofile-generate "
  66. ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib
  67. )
  68. endfunction()