blob: 1cbdaf0c6a43ed4e07c8673bc07a25d98d595e5a [file] [log] [blame]
Tony Barbourb4ab8742015-05-21 11:07:47 -06001cmake_minimum_required(VERSION 2.8.11)
Courtney Goeltzenleuchter2268d1e2014-09-01 13:57:15 -06002
Tony Barbour38080742016-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 Barbour5c8ad032016-12-07 10:19:21 -070023 include_directories(${MIR_INCLUDE_DIR})
Tony Barbour38080742016-12-07 11:18:19 -070024 endif()
25else()
26 message(FATAL_ERROR "Unsupported Platform!")
27endif()
28
Mark Young2acdd152016-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 Young48fb9782016-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 Young2acdd152016-01-13 13:47:16 -070033 # appropriate data at build time.
34 if (CMAKE_CL_64)
Mark Young48fb9782016-01-18 15:48:20 -070035 set (BUILDTGT_DIR build)
Mark Young2acdd152016-01-13 13:47:16 -070036 else ()
37 set (BUILDTGT_DIR build32)
38 endif()
Tony Barbouref20d322015-02-25 12:28:39 -070039endif()
40
Mark Young2acdd152016-01-13 13:47:16 -070041set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
42
Tony Barbour8bef8ee2015-05-22 09:44:58 -060043if(WIN32)
Tony Barbour55e270b2016-02-02 14:43:55 -070044 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES")
Mark Young6d312ff2016-01-25 16:49:47 -070045
46 # If MSVC, disable some signed/unsigned mismatch warnings.
47 if (MSVC)
48 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4267")
49 endif()
50
Tony Barbourb4ab8742015-05-21 11:07:47 -060051else()
Jeremy Hayes57a24232016-06-21 11:05:08 -060052 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
Tony Barbourb4ab8742015-05-21 11:07:47 -060053endif()
Mark Lobodzinski953a1692015-01-09 15:12:03 -060054
Tony Barbourb4ab8742015-05-21 11:07:47 -060055set (LIBGLM_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/libs)
56
57set(COMMON_CPP
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -060058 vkrenderframework.cpp
59 vktestbinding.cpp
60 vktestframework.cpp
Tony Barbour34888cf2015-03-02 16:38:52 -070061 test_environment.cpp
Courtney Goeltzenleuchteraa46da22014-08-11 13:15:04 -060062 )
63
Courtney Goeltzenleuchtera693ed22014-08-19 13:34:28 -060064include_directories(
65 "${PROJECT_SOURCE_DIR}/tests/gtest-1.7.0/include"
66 "${PROJECT_SOURCE_DIR}/icd/common"
Mark Lobodzinskia910dc82015-05-14 14:30:48 -050067 "${PROJECT_SOURCE_DIR}/layers"
Dustin Graves7ef139e2016-03-15 15:39:08 -060068 ${GLSLANG_SPIRV_INCLUDE_DIR}
Tony Barbourb4ab8742015-05-21 11:07:47 -060069 ${LIBGLM_INCLUDE_DIR}
Courtney Goeltzenleuchtera693ed22014-08-19 13:34:28 -060070 )
Courtney Goeltzenleuchteraa46da22014-08-11 13:15:04 -060071
Tony Barbour8bef8ee2015-05-22 09:44:58 -060072if (NOT WIN32)
73 # extra setup for out-of-tree builds
74 if (NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR))
75 add_custom_target(binary-dir-symlinks ALL
Tony Barbour8bef8ee2015-05-22 09:44:58 -060076 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/run_all_tests.sh
Jeremy Hayesde2b7232016-06-30 10:13:35 -060077 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/run_wrap_objects_tests.sh
78 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/run_loader_tests.sh
Jeremy Hayes251fe802016-08-15 10:37:24 -060079 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/run_extra_loader_tests.sh
Tobin Ehlis236717c2015-08-31 12:42:38 -060080 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/vkvalidatelayerdoc.sh
Tony Barbour8bef8ee2015-05-22 09:44:58 -060081 VERBATIM
82 )
83 endif()
Tony Barbour5ed1f402015-06-08 16:11:29 -060084else()
85 if (NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR))
Cody Northropf9af8172015-08-14 10:55:56 -060086 FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/_run_all_tests.ps1 RUN_ALL)
Dustin Graves7af6b6a2016-05-06 13:45:34 -060087 FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/_vkvalidatelayerdoc.ps1 VALIDATE_DOC)
Tony Barbour5ed1f402015-06-08 16:11:29 -060088 add_custom_target(binary-dir-symlinks ALL
Dustin Graves7af6b6a2016-05-06 13:45:34 -060089 COMMAND ${CMAKE_COMMAND} -E copy_if_different ${RUN_ALL} run_all_tests.ps1
90 COMMAND ${CMAKE_COMMAND} -E copy_if_different ${VALIDATE_DOC} vkvalidatelayerdoc.ps1
Tony Barbour5ed1f402015-06-08 16:11:29 -060091 VERBATIM
92 )
93 endif()
Chia-I Wu08f6f8d2014-12-06 10:22:40 +080094endif()
95
Jeremy Hayesf1782e32016-02-08 12:14:51 -070096if(WIN32)
Lenny Komowa5333ee2016-11-07 10:44:23 -070097 set (LIBVK "${API_LOWERCASE}-${MAJOR}")
Jeremy Hayesf1782e32016-02-08 12:14:51 -070098elseif(UNIX)
Lenny Komowa5333ee2016-11-07 10:44:23 -070099 set (LIBVK "${API_LOWERCASE}")
Jeremy Hayesf1782e32016-02-08 12:14:51 -0700100else()
101endif()
Tony Barbour2e65ad92015-07-13 12:32:00 -0600102
Courtney Goeltzenleuchter9cc421e2015-04-08 15:36:08 -0600103add_executable(vk_layer_validation_tests layer_validation_tests.cpp ${COMMON_CPP})
104set_target_properties(vk_layer_validation_tests
Tony Barbour30486ea2015-04-07 13:44:53 -0600105 PROPERTIES
106 COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
Ian Elliott652d4f92016-05-12 09:41:46 -0600107if(NOT WIN32)
Tony Barbour9c699d02016-11-14 14:46:33 -0700108 if (BUILD_WSI_XCB_SUPPORT OR BUILD_WSI_XLIB_SUPPORT)
Norbert Nopper886977f2016-09-08 09:31:36 +0200109 target_link_libraries(vk_layer_validation_tests ${LIBVK} ${XCB_LIBRARIES} ${X11_LIBRARIES} gtest gtest_main VkLayer_utils ${GLSLANG_LIBRARIES})
110 else()
111 target_link_libraries(vk_layer_validation_tests ${LIBVK} gtest gtest_main VkLayer_utils ${GLSLANG_LIBRARIES})
112 endif()
Ian Elliott652d4f92016-05-12 09:41:46 -0600113endif()
114if(WIN32)
115 target_link_libraries(vk_layer_validation_tests ${LIBVK} gtest gtest_main VkLayer_utils ${GLSLANG_LIBRARIES})
116endif()
Tony Barbour30486ea2015-04-07 13:44:53 -0600117
Jeremy Hayes48209242016-04-20 09:00:39 -0600118add_executable(vk_loader_validation_tests loader_validation_tests.cpp ${COMMON_CPP})
119set_target_properties(vk_loader_validation_tests
120 PROPERTIES
121 COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
122target_link_libraries(vk_loader_validation_tests ${LIBVK} gtest gtest_main VkLayer_utils ${GLSLANG_LIBRARIES})
123
Courtney Goeltzenleuchteraa46da22014-08-11 13:15:04 -0600124add_subdirectory(gtest-1.7.0)
Jon Ashburnd45cf272016-05-11 16:57:26 -0600125add_subdirectory(layers)