forked from endless-sky/endless-sky
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCMakeLists.txt
121 lines (111 loc) · 5.45 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
add_executable(EndlessSkyTests)
if(UNIX AND NOT APPLE)
set_target_properties(EndlessSkyTests PROPERTIES OUTPUT_NAME "endless-sky-tests")
endif()
if(NOT MSVC)
target_compile_options(EndlessSkyTests PUBLIC
"-Wall" "-pedantic-errors" "-Wold-style-cast" "-fno-rtti")
endif()
find_package(Catch2 CONFIG REQUIRED)
# Every source file (and header file) should be listed here.
# If you add a new file, add it to this list.
target_sources(EndlessSkyTests PRIVATE
unit/include/datanode-factory.h
unit/include/es-test.hpp
unit/include/output-capture.hpp
unit/src/comparators/test_byGivenOrder.cpp
unit/src/comparators/test_byName.cpp
unit/src/helpers/datanode-factory.cpp
unit/src/test_account.cpp
unit/src/test_angle.cpp
unit/src/test_bitset.cpp
unit/src/test_categoryList.cpp
unit/src/test_conditionAssignments.cpp
unit/src/test_conditionSet.cpp
unit/src/test_conditionsStore.cpp
unit/src/test_datafile.cpp
unit/src/test_datanode.cpp
unit/src/test_datawriter.cpp
unit/src/test_dictionary.cpp
unit/src/test_distance_calculation_settings.cpp
unit/src/test_esuuid.cpp
unit/src/test_exclusiveItem.cpp
unit/src/test_firecommand.cpp
unit/src/test_formationPattern.cpp
unit/src/test_main.cpp
unit/src/test_point.cpp
unit/src/test_random.cpp
unit/src/test_scrollVar.cpp
unit/src/test_set.cpp
unit/src/test_ship.cpp
unit/src/test_stringInterner.cpp
unit/src/test_template.txt
unit/src/test_weightedList.cpp
unit/src/text/test_alignment.cpp
unit/src/text/test_displaytext.cpp
unit/src/text/test_format.cpp
unit/src/text/test_layout.cpp
unit/src/text/test_truncate.cpp
)
list(APPEND INTEGRATION_TESTS
integration/config/plugins/integration-tests/data/tests/tests_afterburn_flight.txt
integration/config/plugins/integration-tests/data/tests/tests_capture_override.txt
integration/config/plugins/integration-tests/data/tests/tests_common.txt
integration/config/plugins/integration-tests/data/tests/tests_conditional_choice.txt
integration/config/plugins/integration-tests/data/tests/tests_disown.txt
integration/config/plugins/integration-tests/data/tests/tests_flagship_attribute_autoconditions.txt
integration/config/plugins/integration-tests/data/tests/tests_flagship_model_condition.txt
integration/config/plugins/integration-tests/data/tests/tests_flagship_planet_attribute.txt
integration/config/plugins/integration-tests/data/tests/tests_framework.txt
integration/config/plugins/integration-tests/data/tests/tests_hyperjumps_to_autocondition.txt
integration/config/plugins/integration-tests/data/tests/tests_illegal_atrocity.txt
integration/config/plugins/integration-tests/data/tests/tests_job_board_missions.txt
integration/config/plugins/integration-tests/data/tests/tests_landing.txt
integration/config/plugins/integration-tests/data/tests/tests_take_ships.txt
integration/config/plugins/integration-tests/data/tests/tests_save_load.txt
integration/config/plugins/integration-tests/data/tests/tests_ship_sale.txt
integration/config/plugins/integration-tests/data/tests/tests_shipyard_outfitter_missions.txt
integration/config/plugins/integration-tests/data/tests/tests_spawn_limits.txt
integration/config/plugins/integration-tests/data/tests/tests_store_outfits_on_take_off.txt
integration/config/plugins/integration-tests/data/tests/tests_to_accept.txt
integration/config/plugins/integration-tests/data/tests/tests_wormhole_navigation.txt
integration/config/plugins/integration-tests/data/tests/tests_installed_plugin.txt
)
target_include_directories(EndlessSkyTests PRIVATE unit/include)
target_link_libraries(EndlessSkyTests PRIVATE Catch2::Catch2WithMain)
target_link_libraries(EndlessSkyTests PRIVATE ExternalLibraries $<TARGET_OBJECTS:EndlessSkyLib>)
target_compile_options(EndlessSkyTests PUBLIC ${SANITIZER_OPTS})
target_link_options(EndlessSkyTests PUBLIC ${SANITIZER_OPTS})
# CTest support for our unit tests.
add_test(NAME unit COMMAND EndlessSkyTests)
set_tests_properties(unit PROPERTIES WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" LABELS unit)
add_test(NAME benchmark COMMAND "$<TARGET_FILE:EndlessSkyTests>" [!benchmark])
set_tests_properties(benchmark PROPERTIES WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" LABELS benchmark)
# Integration tests.
add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/IntegrationTests_tests.cmake"
COMMENT "Discover every integration test"
COMMAND "${CMAKE_COMMAND}" -DES=$<TARGET_FILE:EndlessSky>
-DBINARY_PATH=${CMAKE_CURRENT_BINARY_DIR}
-DRESOURCE_PATH=${CMAKE_SOURCE_DIR}
-DES_USE_OFFSCREEN=${ES_USE_OFFSCREEN}
-P "${CMAKE_CURRENT_SOURCE_DIR}/integration/IntegrationTests.cmake"
DEPENDS EndlessSky ${INTEGRATION_TESTS}
"${CMAKE_CURRENT_SOURCE_DIR}/integration/IntegrationTests.cmake"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" VERBATIM)
set_property(DIRECTORY APPEND PROPERTY TEST_INCLUDE_FILES "${CMAKE_CURRENT_BINARY_DIR}/IntegrationTests_tests.cmake")
add_custom_target(IntegrationTests ALL
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/IntegrationTests_tests.cmake"
VERBATIM
)
if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/IntegrationTests_tests.cmake")
# If the target is not run, simply don't provide any integration tests instead of erroring out.
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/IntegrationTests_tests.cmake" "")
endif()
# Copy the MinGW runtime DLLs if necessary.
if(MINGW AND WIN32)
foreach(FILE_PATH ${MINGW_RUNTIME})
add_custom_command(TARGET EndlessSkyTests POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${FILE_PATH}" "$<TARGET_FILE_DIR:EndlessSkyTests>"
COMMAND_EXPAND_LISTS VERBATIM)
endforeach()
endif()