Raw
1 find_package(Python COMPONENTS Interpreter REQUIRED)
2
3 add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/clar.suite"
4 COMMAND "${Python_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/generate.py" --output "${CMAKE_CURRENT_BINARY_DIR}"
5 DEPENDS main.c selftest.c
6 WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
7 )
8
9 add_executable(selftest)
10 set_target_properties(selftest PROPERTIES
11 C_STANDARD 90
12 C_STANDARD_REQUIRED ON
13 C_EXTENSIONS OFF
14 )
15
16 # MSVC generates all kinds of warnings. We may want to fix these in the future
17 # and then unconditionally treat warnings as errors.
18 if (NOT MSVC)
19 set_target_properties(selftest PROPERTIES
20 COMPILE_WARNING_AS_ERROR ON
21 )
22 endif()
23
24 target_sources(selftest PRIVATE
25 main.c
26 selftest.c
27 "${CMAKE_CURRENT_BINARY_DIR}/clar.suite"
28 )
29 target_compile_definitions(selftest PRIVATE
30 CLAR_FIXTURE_PATH="${CMAKE_CURRENT_SOURCE_DIR}/expected/"
31 )
32 target_compile_options(selftest PRIVATE
33 $<IF:$<CXX_COMPILER_ID:MSVC>,/W4,-Wall>
34 )
35 target_include_directories(selftest PRIVATE
36 "${CMAKE_SOURCE_DIR}"
37 "${CMAKE_CURRENT_BINARY_DIR}"
38 )
39 target_link_libraries(selftest clar)
40
41 add_test(NAME build_selftest
42 COMMAND "${CMAKE_COMMAND}" --build "${CMAKE_BINARY_DIR}" --config "$<CONFIG>" --target selftest
43 )
44 set_tests_properties(build_selftest PROPERTIES FIXTURES_SETUP clar_test_fixture)
45
46 add_subdirectory(suites)
47
48 add_test(NAME selftest COMMAND "${CMAKE_CURRENT_BINARY_DIR}/selftest" $<TARGET_FILE_DIR:combined_suite>)
49 set_tests_properties(selftest PROPERTIES FIXTURES_REQUIRED clar_test_fixture)