CMakeLists.txt 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. include_directories(${CMAKE_HOME_DIRECTORY})
  2. include(CTest)
  3. enable_testing()
  4. add_custom_target(yap_check COMMAND ${CMAKE_CTEST_COMMAND} -VV -C ${CMAKE_CFG_INTDIR})
  5. if (NOT TARGET check)
  6. add_custom_target(check DEPENDS yap_check)
  7. else()
  8. add_dependencies(check yap_check)
  9. endif()
  10. set(coverage_gcda_files)
  11. macro(add_test_executable name)
  12. add_executable(${name} ${name}.cpp)
  13. target_link_libraries(${name} yap)
  14. target_compile_definitions(${name} PRIVATE BOOST_NO_AUTO_PTR)
  15. add_test(${name} ${CMAKE_CURRENT_BINARY_DIR}/${name})
  16. if (clang_on_linux)
  17. target_link_libraries(${name} c++)
  18. endif ()
  19. list(APPEND coverage_gcda_files ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${name}.dir/${name}.cpp.gcda)
  20. endmacro()
  21. add_test_executable(deref)
  22. add_test_executable(value)
  23. add_test_executable(left)
  24. add_test_executable(right)
  25. add_test_executable(print)
  26. add_test_executable(default_eval)
  27. add_test_executable(user_expression_transform_1)
  28. add_test_executable(user_expression_transform_2)
  29. add_test_executable(placeholder_eval)
  30. add_test_executable(call_expr)
  31. add_test_executable(reference_returns)
  32. add_test_executable(depth_stress_test_left)
  33. add_test_executable(depth_stress_test_right)
  34. add_test_executable(lazy_vector_alloc_test)
  35. add_test_executable(vector_alloc_test)
  36. add_test_executable(operators_unary)
  37. add_test_executable(comma)
  38. add_test_executable(if_else)
  39. add_test_executable(expression_function)
  40. add_test_executable(transform)
  41. add_executable(
  42. compile_tests
  43. compile_tests_main.cpp
  44. compile_is_expr.cpp
  45. compile_const_term.cpp
  46. compile_placeholders.cpp
  47. compile_term_plus_expr.cpp
  48. compile_term_plus_term.cpp
  49. compile_term_plus_x.cpp
  50. compile_x_plus_term.cpp
  51. compile_term_plus_x_this_ref_overloads.cpp
  52. compile_const_term.cpp
  53. compile_move_only_types.cpp
  54. compile_user_macros.cpp
  55. )
  56. target_link_libraries(compile_tests yap)
  57. if (clang_on_linux)
  58. target_link_libraries(compile_tests c++)
  59. endif ()
  60. function(add_compile_fail_test name)
  61. try_compile(
  62. compiles
  63. ${CMAKE_BINARY_DIR}
  64. ${CMAKE_CURRENT_SOURCE_DIR}/${name}.cpp
  65. COMPILE_DEFINITIONS
  66. ${std_flag} -I${Boost_INCLUDE_DIRS} -I${CMAKE_SOURCE_DIR}/include
  67. OUTPUT_VARIABLE foo
  68. )
  69. #message("foo=${foo}")
  70. if (compiles)
  71. message(FATAL_ERROR "Compile-fail test ${name} does not fail to compile.")
  72. endif ()
  73. endfunction()
  74. add_compile_fail_test(fail_transform)
  75. add_compile_fail_test(fail_get)
  76. add_compile_fail_test(fail_left)
  77. add_compile_fail_test(fail_right)
  78. add_compile_fail_test(fail_cond)
  79. add_compile_fail_test(fail_then)
  80. add_compile_fail_test(fail_else)
  81. add_compile_fail_test(fail_callable)
  82. add_compile_fail_test(fail_argument)
  83. add_compile_fail_test(fail_make_expression)
  84. add_compile_fail_test(fail_make_terminal)
  85. if (BUILD_COVERAGE AND UNIX)
  86. if (APPLE)
  87. add_custom_target(
  88. coverage
  89. rm -rf ${coverage_gcda_files} lcov-all.info lcov.info output
  90. COMMAND
  91. ${CMAKE_CTEST_COMMAND} -VV -C ${CMAKE_CFG_INTDIR}
  92. COMMAND
  93. cd ${CMAKE_BINARY_DIR}
  94. COMMAND
  95. llvm-cov gcov -f -b ${coverage_gcda_files}
  96. COMMAND
  97. lcov --directory . --base-directory . --gcov-tool ${CMAKE_SOURCE_DIR}/llvm-gcov.sh --capture -o lcov-all.info
  98. COMMAND
  99. lcov -e lcov-all.info ${CMAKE_SOURCE_DIR}/include/boost/yap/* ${CMAKE_SOURCE_DIR}/include/boost/yap/detail/* -o lcov.info
  100. COMMAND
  101. genhtml lcov.info -o output
  102. )
  103. else ()
  104. add_custom_target(
  105. coverage
  106. rm -rf ${coverage_gcda_files} lcov-all.info lcov.info output
  107. COMMAND
  108. ${CMAKE_CTEST_COMMAND} -j4 -VV -C ${CMAKE_CFG_INTDIR}
  109. COMMAND
  110. cd ${CMAKE_BINARY_DIR}
  111. COMMAND
  112. gcov -f -b ${coverage_gcda_files}
  113. COMMAND
  114. lcov --directory . --base-directory . --capture -o lcov-all.info
  115. COMMAND
  116. lcov -e lcov-all.info ${CMAKE_SOURCE_DIR}/include/boost/yap/* ${CMAKE_SOURCE_DIR}/include/boost/yap/detail/* -o lcov.info
  117. COMMAND
  118. genhtml lcov.info -o output
  119. )
  120. endif ()
  121. endif ()