-
-
Notifications
You must be signed in to change notification settings - Fork 383
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
201 lines (178 loc) · 7.26 KB
/
CMakeLists.txt
File metadata and controls
201 lines (178 loc) · 7.26 KB
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
list(APPEND libf3dSDKTests_list
TestSDKAnimation.cxx
TestSDKCamera.cxx
TestSDKCompareWithFile.cxx
TestSDKDeprecatedOptions.cxx
TestSDKDynamicLightIntensity.cxx
TestSDKEngine.cxx
TestSDKEngineExceptions.cxx
TestSDKImage.cxx
TestSDKInteractorDropFullScene.cxx
TestSDKInteractorCommand.cxx
TestSDKSceneFromMemory.cxx
TestSDKSceneTemporalFromMemory.cxx
TestSDKScene.cxx
TestSDKLog.cxx
TestSDKMultiColoring.cxx
TestSDKOptions.cxx
TestSDKOptionsIO.cxx
TestSDKRenderFinalShader.cxx
TestSDKUtils.cxx
TestSDKWindowAuto.cxx
TestPseudoUnitTest.cxx
)
# Tests having UI widgets
if(F3D_MODULE_UI)
list(APPEND libf3dSDKTests_list
TestSDKConsole.cxx
TestSDKDropZone.cxx
TestSDKDropZoneDeprecated.cxx
TestSDKDropZoneNoLogo.cxx
TestSDKDropZoneMinSize.cxx
TestSDKDynamicBackgroundColor.cxx
TestSDKDynamicFontFile.cxx
TestSDKDynamicProperties.cxx
TestSDKInteractorCallBack.cxx
TestSDKInteractorDocumentation.cxx
TestSDKMultiOptions.cxx
TestSDKTriggerInteractions.cxx
)
# HDRI test needs https://gitlab.kitware.com/vtk/vtk/-/merge_requests/9767
if(VTK_VERSION VERSION_GREATER_EQUAL 9.2.20221220)
list(APPEND libf3dSDKTests_list
TestSDKDynamicHDRI.cxx
)
endif()
endif()
# These tests needs https://gitlab.kitware.com/vtk/vtk/-/merge_requests/10155
if(VTK_VERSION VERSION_GREATER_EQUAL 9.2.20230426)
list(APPEND libf3dSDKTests_list
TestSDKRenderAndInteract.cxx
TestSDKStartInteractor.cxx
)
endif()
if (VTK_VERSION VERSION_GREATER 9.2.6)
list(APPEND libf3dSDKTests_list
TestSDKEngineRecreation.cxx
)
endif()
# Invalid scene codepath needs https://gitlab.kitware.com/vtk/vtk/-/merge_requests/11287
# Merge with TestSDKScene.cxx when VTK 9.4.0 is required.
if(VTK_VERSION VERSION_GREATER_EQUAL 9.3.20240707)
list(APPEND libf3dSDKTests_list
TestSDKSceneInvalid.cxx
TestSDKInvalidForceReader.cxx
)
endif()
# Configure the log file for dropfile test
configure_file("${F3D_SOURCE_DIR}/testing/recordings/TestSDKInteractorCallBack.log.in"
"${CMAKE_BINARY_DIR}/TestSDKInteractorCallBack.log") # Dragon.vtu; S
configure_file("${F3D_SOURCE_DIR}/testing/recordings/TestSDKInteractorDropFullScene.log.in"
"${CMAKE_BINARY_DIR}/TestSDKInteractorDropFullScene.log") # world.obj; S
set(libf3dSDKTests_link_libs "")
# External window tests
if(VTK_VERSION VERSION_GREATER_EQUAL 9.3.20240914)
option(F3D_TESTING_ENABLE_EXTERNAL_GLFW "Test external GLFW" OFF)
option(F3D_TESTING_ENABLE_EXTERNAL_QT "Test external QT" OFF)
if(F3D_TESTING_ENABLE_EXTERNAL_GLFW)
find_package(glfw3 REQUIRED)
list(APPEND libf3dSDKTests_list TestSDKExternalWindowGLFW.cxx)
list(APPEND libf3dSDKTests_link_libs glfw)
endif()
if(F3D_TESTING_ENABLE_EXTERNAL_QT)
find_package(Qt5 COMPONENTS OpenGL REQUIRED)
list(APPEND libf3dSDKTests_list TestSDKExternalWindowQT.cxx)
list(APPEND libf3dSDKTests_link_libs Qt5::OpenGL)
endif()
if(F3D_TESTING_ENABLE_OSMESA_TESTS)
find_library(OSMesa_LIB OSMesa REQUIRED)
list(APPEND libf3dSDKTests_list TestSDKExternalWindowOSMesa.cxx)
list(APPEND libf3dSDKTests_link_libs "${OSMesa_LIB}")
endif()
if(F3D_TESTING_ENABLE_GLX_TESTS)
find_package(OpenGL COMPONENTS GLX REQUIRED)
find_library(X11_LIB X11 REQUIRED)
list(APPEND libf3dSDKTests_list TestSDKExternalWindowGLX.cxx)
list(APPEND libf3dSDKTests_link_libs OpenGL::GLX "${X11_LIB}")
endif()
if(F3D_TESTING_ENABLE_EGL_TESTS)
find_package(OpenGL COMPONENTS EGL REQUIRED)
list(APPEND libf3dSDKTests_list TestSDKExternalWindowEGL.cxx)
list(APPEND libf3dSDKTests_link_libs OpenGL::EGL)
endif()
if(WIN32)
find_package(OpenGL COMPONENTS OpenGL REQUIRED)
list(APPEND libf3dSDKTests_list TestSDKExternalWindowWGL.cxx)
list(APPEND libf3dSDKTests_link_libs OpenGL::GL)
endif()
if(APPLE)
find_library(COCOA_LIBRARY Cocoa)
find_library(OpenGL_LIBRARY OpenGL)
list(APPEND libf3dSDKTests_list TestSDKExternalWindowCOCOA.mm)
list(APPEND libf3dSDKTests_link_libs "${COCOA_LIBRARY}" "${OpenGL_LIBRARY}")
endif()
endif()
# create the testing file and list of tests
# CMake variables are set to work around this issue:
# https://gitlab.kitware.com/cmake/cmake/-/issues/21049
set(CMAKE_TESTDRIVER_BEFORE_TESTMAIN "f3d::engine::autoloadPlugins();")
set(CMAKE_TESTDRIVER_AFTER_TESTMAIN "")
set(CMAKE_TESTDRIVER_ARGVC_FUNCTION "")
create_test_sourcelist(_libf3dSDKTests libf3dSDKTests.cxx ${libf3dSDKTests_list} EXTRA_INCLUDE engine.h)
# add the executable
add_executable(libf3dSDKTests ${_libf3dSDKTests})
set_target_properties(libf3dSDKTests PROPERTIES
CXX_VISIBILITY_PRESET hidden
)
target_compile_definitions(libf3dSDKTests PRIVATE GL_SILENCE_DEPRECATION)
# Remove this once VTK 9.3 support is removed
if(VTK_VERSION VERSION_GREATER_EQUAL 9.3.20240729)
target_compile_definitions(libf3dSDKTests PRIVATE F3D_SSIM_COMPARE)
endif()
if (F3D_MODULE_EXR)
target_compile_definitions(libf3dSDKTests PRIVATE F3D_MODULE_EXR)
endif ()
if (F3D_MODULE_WEBP)
target_compile_definitions(libf3dSDKTests PRIVATE F3D_MODULE_WEBP)
endif ()
# List tests that do not require rendering
list(APPEND libf3dSDKTestsNoRender_list
TestSDKEngineExceptions
TestSDKLog
TestSDKOptions
TestSDKOptionsIO
TestSDKScene)
# Add all the ADD_TEST for each test
foreach (test ${libf3dSDKTests_list})
get_filename_component (TName ${test} NAME_WE)
add_test (NAME libf3d::${TName} COMMAND libf3dSDKTests ${TName} "${F3D_SOURCE_DIR}/testing/" "${CMAKE_BINARY_DIR}/Testing/Temporary/" "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
set_tests_properties(libf3d::${TName} PROPERTIES TIMEOUT 30)
if (NOT F3D_TESTING_ENABLE_RENDERING_TESTS AND NOT ${TName} IN_LIST libf3dSDKTestsNoRender_list)
set_tests_properties(libf3d::${TName} PROPERTIES DISABLED ON)
endif ()
endforeach ()
# Specific test properties to check
# CTest can't check colored output as it contains special chars
set_tests_properties(libf3d::TestSDKLog PROPERTIES PASS_REGULAR_EXPRESSION
"\
Test Info\nTest Warning\nTest Error\n\
Test Info\nTest Warning\nTest Error\n\
Test Warning\nTest Error\nTest Error\n\
Test Print Debug\nTest Print Info\nTest Print Warning\nTest Print Error\n\
Test Debug Coloring")
if(F3D_MODULE_UI AND VTK_VERSION VERSION_GREATER_EQUAL 9.2.20221220)
set_tests_properties(libf3d::TestSDKDynamicHDRI PROPERTIES TIMEOUT 120)
if(NOT F3D_TESTING_ENABLE_LONG_TIMEOUT_TESTS)
set_tests_properties(libf3d::TestSDKDynamicHDRI PROPERTIES DISABLED ON)
endif()
endif()
if(F3D_MODULE_UI AND NOT F3D_TESTING_ENABLE_LONG_TIMEOUT_TESTS)
set_tests_properties(libf3d::TestSDKInteractorCallBack PROPERTIES DISABLED ON)
set_tests_properties(libf3d::TestSDKTriggerInteractions PROPERTIES DISABLED ON)
endif()
set_tests_properties(libf3d::TestSDKUtils PROPERTIES ENVIRONMENT "F3D_TEST_ENV_STANDARD=TestEnv;F3D_TEST_ENV_EXTENDED=TestËnv;F3D_TEST_ENV_UTF8=🤔;")
target_link_libraries(libf3dSDKTests libf3d ${libf3dSDKTests_link_libs})
target_compile_options(libf3dSDKTests PUBLIC ${f3d_compile_options_public} PRIVATE ${f3d_compile_options_private})
target_link_options(libf3dSDKTests PUBLIC ${f3d_link_options_public})
# make sure the libf3d API is compatible with the right C++ standard
set_target_properties(libf3dSDKTests PROPERTIES CXX_STANDARD 17)