132 lines
4.2 KiB
CMake
132 lines
4.2 KiB
CMake
include_directories(${CMAKE_HOME_DIRECTORY})
|
|
|
|
include(CTest)
|
|
|
|
enable_testing()
|
|
|
|
add_custom_target(yap_check COMMAND ${CMAKE_CTEST_COMMAND} -VV -C ${CMAKE_CFG_INTDIR})
|
|
if (NOT TARGET check)
|
|
add_custom_target(check DEPENDS yap_check)
|
|
else()
|
|
add_dependencies(check yap_check)
|
|
endif()
|
|
|
|
set(coverage_gcda_files)
|
|
|
|
macro(add_test_executable name)
|
|
add_executable(${name} ${name}.cpp)
|
|
target_link_libraries(${name} yap)
|
|
target_compile_definitions(${name} PRIVATE BOOST_NO_AUTO_PTR)
|
|
add_test(${name} ${CMAKE_CURRENT_BINARY_DIR}/${name})
|
|
if (clang_on_linux)
|
|
target_link_libraries(${name} c++)
|
|
endif ()
|
|
list(APPEND coverage_gcda_files ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${name}.dir/${name}.cpp.gcda)
|
|
endmacro()
|
|
|
|
add_test_executable(deref)
|
|
add_test_executable(value)
|
|
add_test_executable(left)
|
|
add_test_executable(right)
|
|
add_test_executable(print)
|
|
add_test_executable(default_eval)
|
|
add_test_executable(user_expression_transform_1)
|
|
add_test_executable(user_expression_transform_2)
|
|
add_test_executable(placeholder_eval)
|
|
add_test_executable(call_expr)
|
|
add_test_executable(reference_returns)
|
|
add_test_executable(depth_stress_test_left)
|
|
add_test_executable(depth_stress_test_right)
|
|
add_test_executable(lazy_vector_alloc_test)
|
|
add_test_executable(vector_alloc_test)
|
|
add_test_executable(operators_unary)
|
|
add_test_executable(comma)
|
|
add_test_executable(if_else)
|
|
add_test_executable(expression_function)
|
|
add_test_executable(transform)
|
|
|
|
add_executable(
|
|
compile_tests
|
|
compile_tests_main.cpp
|
|
compile_is_expr.cpp
|
|
compile_const_term.cpp
|
|
compile_placeholders.cpp
|
|
compile_term_plus_expr.cpp
|
|
compile_term_plus_term.cpp
|
|
compile_term_plus_x.cpp
|
|
compile_x_plus_term.cpp
|
|
compile_term_plus_x_this_ref_overloads.cpp
|
|
compile_const_term.cpp
|
|
compile_move_only_types.cpp
|
|
compile_user_macros.cpp
|
|
)
|
|
target_link_libraries(compile_tests yap)
|
|
if (clang_on_linux)
|
|
target_link_libraries(compile_tests c++)
|
|
endif ()
|
|
|
|
function(add_compile_fail_test name)
|
|
try_compile(
|
|
compiles
|
|
${CMAKE_BINARY_DIR}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/${name}.cpp
|
|
COMPILE_DEFINITIONS
|
|
${std_flag} -I${Boost_INCLUDE_DIRS} -I${CMAKE_SOURCE_DIR}/include
|
|
OUTPUT_VARIABLE foo
|
|
)
|
|
#message("foo=${foo}")
|
|
if (compiles)
|
|
message(FATAL_ERROR "Compile-fail test ${name} does not fail to compile.")
|
|
endif ()
|
|
endfunction()
|
|
|
|
add_compile_fail_test(fail_transform)
|
|
add_compile_fail_test(fail_get)
|
|
add_compile_fail_test(fail_left)
|
|
add_compile_fail_test(fail_right)
|
|
add_compile_fail_test(fail_cond)
|
|
add_compile_fail_test(fail_then)
|
|
add_compile_fail_test(fail_else)
|
|
add_compile_fail_test(fail_callable)
|
|
add_compile_fail_test(fail_argument)
|
|
add_compile_fail_test(fail_make_expression)
|
|
add_compile_fail_test(fail_make_terminal)
|
|
|
|
if (BUILD_COVERAGE AND UNIX)
|
|
if (APPLE)
|
|
add_custom_target(
|
|
coverage
|
|
rm -rf ${coverage_gcda_files} lcov-all.info lcov.info output
|
|
COMMAND
|
|
${CMAKE_CTEST_COMMAND} -VV -C ${CMAKE_CFG_INTDIR}
|
|
COMMAND
|
|
cd ${CMAKE_BINARY_DIR}
|
|
COMMAND
|
|
llvm-cov gcov -f -b ${coverage_gcda_files}
|
|
COMMAND
|
|
lcov --directory . --base-directory . --gcov-tool ${CMAKE_SOURCE_DIR}/llvm-gcov.sh --capture -o lcov-all.info
|
|
COMMAND
|
|
lcov -e lcov-all.info ${CMAKE_SOURCE_DIR}/include/boost/yap/* ${CMAKE_SOURCE_DIR}/include/boost/yap/detail/* -o lcov.info
|
|
COMMAND
|
|
genhtml lcov.info -o output
|
|
)
|
|
else ()
|
|
add_custom_target(
|
|
coverage
|
|
rm -rf ${coverage_gcda_files} lcov-all.info lcov.info output
|
|
COMMAND
|
|
${CMAKE_CTEST_COMMAND} -j4 -VV -C ${CMAKE_CFG_INTDIR}
|
|
COMMAND
|
|
cd ${CMAKE_BINARY_DIR}
|
|
COMMAND
|
|
gcov -f -b ${coverage_gcda_files}
|
|
COMMAND
|
|
lcov --directory . --base-directory . --capture -o lcov-all.info
|
|
COMMAND
|
|
lcov -e lcov-all.info ${CMAKE_SOURCE_DIR}/include/boost/yap/* ${CMAKE_SOURCE_DIR}/include/boost/yap/detail/* -o lcov.info
|
|
COMMAND
|
|
genhtml lcov.info -o output
|
|
)
|
|
endif ()
|
|
endif ()
|