blob: 5d8af497da7fea73ed3be3523c9bd55a40de56fa [file] [log] [blame]
Tony Barbour500194c2015-05-21 11:07:47 -06001cmake_minimum_required(VERSION 2.8.11)
Courtney Goeltzenleuchterf21d32d2014-09-01 13:57:15 -06002
Tony Barbour29cc9522016-12-07 11:18:19 -07003if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
4 add_definitions(-DVK_USE_PLATFORM_WIN32_KHR -DWIN32_LEAN_AND_MEAN)
5 set(DisplayServer Win32)
6elseif(CMAKE_SYSTEM_NAME STREQUAL "Android")
7 add_definitions(-DVK_USE_PLATFORM_ANDROID_KHR)
8elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
9 if (BUILD_WSI_XCB_SUPPORT)
10 add_definitions(-DVK_USE_PLATFORM_XCB_KHR)
11 endif()
12
13 if (BUILD_WSI_XLIB_SUPPORT)
14 add_definitions(-DVK_USE_PLATFORM_XLIB_KHR)
15 endif()
16
17 if (BUILD_WSI_WAYLAND_SUPPORT)
18 add_definitions(-DVK_USE_PLATFORM_WAYLAND_KHR)
19 endif()
20
21 if (BUILD_WSI_MIR_SUPPORT)
22 add_definitions(-DVK_USE_PLATFORM_MIR_KHR)
Tony Barbourc53c7272016-12-07 10:19:21 -070023 include_directories(${MIR_INCLUDE_DIR})
Tony Barbour29cc9522016-12-07 11:18:19 -070024 endif()
25else()
26 message(FATAL_ERROR "Unsupported Platform!")
27endif()
28
Mark Young93ecb1d2016-01-13 13:47:16 -070029# On Windows, we must pair Debug and Release appropriately
30if (WIN32)
31 # For Windows, since 32-bit and 64-bit items can co-exist, we build each in its own build directory.
Mark Youngecf45822016-01-18 15:48:20 -070032 # 32-bit target data goes in build32, and 64-bit target data goes into build. So, include/link the
Mark Young93ecb1d2016-01-13 13:47:16 -070033 # appropriate data at build time.
34 if (CMAKE_CL_64)
Mark Youngecf45822016-01-18 15:48:20 -070035 set (BUILDTGT_DIR build)
Mark Young93ecb1d2016-01-13 13:47:16 -070036 else ()
37 set (BUILDTGT_DIR build32)
38 endif()
Dave Houlton33d58cb2017-03-13 12:19:36 -060039 file(COPY vk_layer_validation_tests.vcxproj.user DESTINATION ${CMAKE_BINARY_DIR}/tests)
Tony Barbour96db8822015-02-25 12:28:39 -070040endif()
41
Mark Young93ecb1d2016-01-13 13:47:16 -070042set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
43
Tony Barbour7ea6aa22015-05-22 09:44:58 -060044if(WIN32)
Tony Barbour7b60e492016-02-02 14:43:55 -070045 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES")
Mark Young44c90ba2016-01-25 16:49:47 -070046
47 # If MSVC, disable some signed/unsigned mismatch warnings.
48 if (MSVC)
49 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4267")
50 endif()
51
Tony Barbour500194c2015-05-21 11:07:47 -060052else()
Jeremy Hayes3b2a3a32016-06-21 11:05:08 -060053 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
Tony Barbour500194c2015-05-21 11:07:47 -060054endif()
Mark Lobodzinski391bb6d2015-01-09 15:12:03 -060055
Tony Barbour500194c2015-05-21 11:07:47 -060056set (LIBGLM_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/libs)
57
58set(COMMON_CPP
Courtney Goeltzenleuchterf53c3cb2015-04-14 14:55:44 -060059 vkrenderframework.cpp
60 vktestbinding.cpp
61 vktestframework.cpp
Tony Barbour92400bb2015-03-02 16:38:52 -070062 test_environment.cpp
Courtney Goeltzenleuchter24cec9b2014-08-11 13:15:04 -060063 )
64
Courtney Goeltzenleuchter6863ff42014-08-19 13:34:28 -060065include_directories(
Tony Barbourc516df82017-05-16 14:07:27 -060066 "${PROJECT_SOURCE_DIR}/tests"
Courtney Goeltzenleuchter6863ff42014-08-19 13:34:28 -060067 "${PROJECT_SOURCE_DIR}/tests/gtest-1.7.0/include"
68 "${PROJECT_SOURCE_DIR}/icd/common"
Mark Lobodzinski159ffe02015-05-14 14:30:48 -050069 "${PROJECT_SOURCE_DIR}/layers"
Dustin Graves3402bdd2016-03-15 15:39:08 -060070 ${GLSLANG_SPIRV_INCLUDE_DIR}
Tony Barbour500194c2015-05-21 11:07:47 -060071 ${LIBGLM_INCLUDE_DIR}
Mark Young0f183a82017-02-28 09:58:04 -070072 ${CMAKE_CURRENT_BINARY_DIR}
73 ${CMAKE_BINARY_DIR}
Courtney Goeltzenleuchter6863ff42014-08-19 13:34:28 -060074 )
Courtney Goeltzenleuchter24cec9b2014-08-11 13:15:04 -060075
Tony Barbour7ea6aa22015-05-22 09:44:58 -060076if (NOT WIN32)
77 # extra setup for out-of-tree builds
78 if (NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR))
79 add_custom_target(binary-dir-symlinks ALL
Tony Barbour7ea6aa22015-05-22 09:44:58 -060080 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/run_all_tests.sh
Jeremy Hayesab9804d2016-06-30 10:13:35 -060081 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/run_wrap_objects_tests.sh
82 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/run_loader_tests.sh
Jeremy Hayes52261802016-08-15 10:37:24 -060083 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/run_extra_loader_tests.sh
Tobin Ehlis12d4c6a2015-08-31 12:42:38 -060084 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/vkvalidatelayerdoc.sh
Tony Barbour7ea6aa22015-05-22 09:44:58 -060085 VERBATIM
86 )
87 endif()
Tony Barbour856aba32015-06-08 16:11:29 -060088else()
89 if (NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR))
Cody Northrop95cb6892015-08-14 10:55:56 -060090 FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/_run_all_tests.ps1 RUN_ALL)
Dustin Graves66bb7ea2016-05-06 13:45:34 -060091 FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/_vkvalidatelayerdoc.ps1 VALIDATE_DOC)
Tony Barbour856aba32015-06-08 16:11:29 -060092 add_custom_target(binary-dir-symlinks ALL
Dustin Graves66bb7ea2016-05-06 13:45:34 -060093 COMMAND ${CMAKE_COMMAND} -E copy_if_different ${RUN_ALL} run_all_tests.ps1
94 COMMAND ${CMAKE_COMMAND} -E copy_if_different ${VALIDATE_DOC} vkvalidatelayerdoc.ps1
Tony Barbour856aba32015-06-08 16:11:29 -060095 VERBATIM
96 )
97 endif()
Chia-I Wu05c71812014-12-06 10:22:40 +080098endif()
99
Jeremy Hayes22641442016-02-08 12:14:51 -0700100if(WIN32)
Lenny Komow63fc1692016-11-07 10:44:23 -0700101 set (LIBVK "${API_LOWERCASE}-${MAJOR}")
Jeremy Hayes22641442016-02-08 12:14:51 -0700102elseif(UNIX)
Lenny Komow63fc1692016-11-07 10:44:23 -0700103 set (LIBVK "${API_LOWERCASE}")
Jeremy Hayes22641442016-02-08 12:14:51 -0700104else()
105endif()
Tony Barbourbcf05fd2015-07-13 12:32:00 -0600106
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600107add_executable(vk_layer_validation_tests layer_validation_tests.cpp ${COMMON_CPP})
108set_target_properties(vk_layer_validation_tests
Tony Barbour300a6082015-04-07 13:44:53 -0600109 PROPERTIES
110 COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
Ian Elliott2c1daf52016-05-12 09:41:46 -0600111if(NOT WIN32)
Tony Barbour2e7bd402016-11-14 14:46:33 -0700112 if (BUILD_WSI_XCB_SUPPORT OR BUILD_WSI_XLIB_SUPPORT)
Norbert Nopper15a45db2016-09-08 09:31:36 +0200113 target_link_libraries(vk_layer_validation_tests ${LIBVK} ${XCB_LIBRARIES} ${X11_LIBRARIES} gtest gtest_main VkLayer_utils ${GLSLANG_LIBRARIES})
114 else()
115 target_link_libraries(vk_layer_validation_tests ${LIBVK} gtest gtest_main VkLayer_utils ${GLSLANG_LIBRARIES})
116 endif()
Ian Elliott2c1daf52016-05-12 09:41:46 -0600117endif()
118if(WIN32)
119 target_link_libraries(vk_layer_validation_tests ${LIBVK} gtest gtest_main VkLayer_utils ${GLSLANG_LIBRARIES})
120endif()
Corte13e0c02016-12-19 08:07:43 -0800121add_dependencies(vk_layer_validation_tests
122 VkLayer_core_validation
123 VkLayer_object_tracker
Corte13e0c02016-12-19 08:07:43 -0800124 VkLayer_threading
125 VkLayer_unique_objects
126 VkLayer_parameter_validation
127)
Tony Barbour300a6082015-04-07 13:44:53 -0600128
Mark Lobodzinskic518aab2017-03-13 10:26:19 -0600129if (WIN32)
130 # For Windows, copy necessary gtest DLLs to the right spot for the vk_layer_tests...
131 FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/gtest-1.7.0/$<CONFIGURATION>/*.dll SRC_GTEST_DLLS)
132 FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION> DST_GTEST_DLLS)
133 add_custom_command(TARGET vk_layer_validation_tests POST_BUILD
134 COMMAND xcopy /Y /I ${SRC_GTEST_DLLS} ${DST_GTEST_DLLS})
135endif()
136
Jeremy Hayes6650d1f2016-04-20 09:00:39 -0600137add_executable(vk_loader_validation_tests loader_validation_tests.cpp ${COMMON_CPP})
138set_target_properties(vk_loader_validation_tests
139 PROPERTIES
140 COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
141target_link_libraries(vk_loader_validation_tests ${LIBVK} gtest gtest_main VkLayer_utils ${GLSLANG_LIBRARIES})
142
Courtney Goeltzenleuchter24cec9b2014-08-11 13:15:04 -0600143add_subdirectory(gtest-1.7.0)
Jon Ashburn55585ed2016-05-11 16:57:26 -0600144add_subdirectory(layers)