forked from KhronosGroup/Vulkan-ValidationLayers
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
171 lines (151 loc) · 6.02 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
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
# ~~~
# Copyright (c) 2014-2022 Valve Corporation
# Copyright (c) 2014-2022 LunarG, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ~~~
# Needed to make structure definitions match with glslang libraries
add_definitions(-DNV_EXTENSIONS -DAMD_EXTENSIONS)
if(ANNOTATED_SPEC_LINK)
add_definitions(-DANNOTATED_SPEC_LINK=${ANNOTATED_SPEC_LINK})
endif()
if(WIN32)
add_definitions(-DVK_USE_PLATFORM_WIN32_KHR -DWIN32_LEAN_AND_MEAN -DNOMINMAX)
# Workaround for TR1 deprecation in Visual Studio 15.5 until Google Test is updated
add_definitions(-D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING)
# If MSVC, allow Windows to use multiprocessor compilation
if(MSVC)
add_compile_options(/MP)
endif()
elseif(ANDROID)
add_definitions(-DVK_USE_PLATFORM_ANDROID_KHR)
elseif(APPLE)
add_definitions(-DVK_USE_PLATFORM_METAL_EXT)
elseif(UNIX AND NOT APPLE) # i.e. Linux
if(BUILD_WSI_XCB_SUPPORT)
add_definitions(-DVK_USE_PLATFORM_XCB_KHR)
endif()
if(BUILD_WSI_XLIB_SUPPORT)
add_definitions(-DVK_USE_PLATFORM_XLIB_KHR)
endif()
if(BUILD_WSI_WAYLAND_SUPPORT)
add_definitions(-DVK_USE_PLATFORM_WAYLAND_KHR)
endif()
else()
message(FATAL_ERROR "Unsupported Platform!")
endif()
if(WIN32)
file(COPY vk_layer_validation_tests.vcxproj.user DESTINATION ${CMAKE_BINARY_DIR}/tests)
endif()
if(WIN32)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES")
# If MSVC, disable some signed/unsigned mismatch warnings.
if(MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4267")
endif()
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
endif()
set(LIBGLM_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/libs)
set(COMMON_CPP
vklayertests_instanceless.cpp
vklayertests_pipeline_shader.cpp
vklayertests_buffer_image_memory_sampler.cpp
vklayertests_others.cpp
vklayertests_best_practices.cpp
vklayertests_arm_best_practices.cpp
vklayertests_amd_best_practices.cpp
vklayertests_gpu.cpp
vklayertests_descriptor_renderpass_framebuffer.cpp
vklayertests_dynamic_rendering.cpp
vklayertests_command.cpp
vklayertests_imageless_framebuffer.cpp
vklayertests_portability_subset.cpp
vklayertests_viewport_inheritance.cpp
vklayertests_wsi.cpp
vklayertests_graphics_library.cpp
positive/command.cpp
positive/descriptors.cpp
positive/dynamic_rendering.cpp
positive/image_buffer.cpp
positive/instance.cpp
positive/other.cpp
positive/pipeline.cpp
positive/render_pass.cpp
positive/shaderval.cpp
positive/sync.cpp
positive/tooling.cpp
positive/graphics_library.cpp
vksyncvaltests.cpp
vkrenderframework.cpp
vktestbinding.cpp
vktestframework.cpp)
if(NOT TARGET vulkan)
set(
CMAKE_PREFIX_PATH
${CMAKE_PREFIX_PATH};${VULKAN_HEADERS_INSTALL_DIR};$ENV{VULKAN_HEADERS_INSTALL_DIR}
)
endif()
set_source_files_properties(${PROJECT_BINARY_DIR}/vk_safe_struct.cpp PROPERTIES GENERATED TRUE)
add_executable(vk_layer_validation_tests
layer_validation_tests.cpp
../layers/generated/vk_format_utils.cpp
../layers/convert_to_renderpass2.cpp
../layers/generated/vk_safe_struct.cpp
../layers/generated/lvt_function_pointers.cpp
${COMMON_CPP})
add_test(NAME vk_layer_validation_tests COMMAND vk_layer_validation_tests)
add_dependencies(vk_layer_validation_tests VkLayer_khronos_validation VkLayer_khronos_validation-json)
target_include_directories(vk_layer_validation_tests
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/layers
${PROJECT_SOURCE_DIR}/layers/generated
${GLSLANG_INCLUDE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_BINARY_DIR}
${PROJECT_BINARY_DIR}
${VulkanHeaders_INCLUDE_DIR}
${PROJECT_BINARY_DIR}/layers)
add_dependencies(vk_layer_validation_tests
VkLayer_utils)
option(PORTABILITY_TESTS_USE_DEVSIM "Automatically add the devsim layer for portability tests" OFF)
if (PORTABILITY_TESTS_USE_DEVSIM)
target_compile_definitions(vk_layer_validation_tests PRIVATE PORTABILITY_TESTS_USE_DEVSIM=1)
endif()
if (VVL_ENABLE_ASAN)
target_compile_options(vk_layer_validation_tests PRIVATE -fsanitize=address)
# NOTE: Use target_link_options when cmake 3.13 is available on CI
target_link_libraries(vk_layer_validation_tests PRIVATE "-fsanitize=address")
endif()
if (NOT MSVC)
target_compile_options(vk_layer_validation_tests PRIVATE "-Wno-sign-compare")
endif()
target_include_directories(vk_layer_validation_tests PRIVATE ${SPIRV_HEADERS_INCLUDE_DIR})
# Specify target_link_libraries
target_link_libraries(vk_layer_validation_tests
PRIVATE VkLayer_utils
${GLSLANG_LIBRARIES}
${SPIRV_TOOLS_TARGET} SPIRV-Tools-opt
GTest::gtest GTest::gtest_main)
if(NOT WIN32)
target_link_libraries(vk_layer_validation_tests PRIVATE dl)
if(BUILD_WSI_XCB_SUPPORT OR BUILD_WSI_XLIB_SUPPORT)
target_link_libraries(vk_layer_validation_tests
PRIVATE ${XCB_LIBRARIES}
${X11_LIBRARIES})
endif()
endif()
if(INSTALL_TESTS)
install(TARGETS vk_layer_validation_tests DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()
add_subdirectory(layers)