blob: a59cc74dbf193121ca496adefa069c821d7786be [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 find_package(Mir REQUIRED)
24 include_directories(${MIR_INCLUDE_DIR})
Tony Barbour29cc9522016-12-07 11:18:19 -070025 endif()
26else()
27 message(FATAL_ERROR "Unsupported Platform!")
28endif()
29
Mark Young93ecb1d2016-01-13 13:47:16 -070030# On Windows, we must pair Debug and Release appropriately
31if (WIN32)
32 # 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 -070033 # 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 -070034 # appropriate data at build time.
35 if (CMAKE_CL_64)
Mark Youngecf45822016-01-18 15:48:20 -070036 set (BUILDTGT_DIR build)
Mark Young93ecb1d2016-01-13 13:47:16 -070037 else ()
38 set (BUILDTGT_DIR build32)
39 endif()
40else()
Tony Barbour89dc91c2015-12-16 14:57:33 -070041 include (FindPkgConfig)
Norbert Nopper15a45db2016-09-08 09:31:36 +020042 if (BUILD_WSI_XCB_SUPPORT)
43 find_package(XCB REQUIRED)
44 endif()
Tony Barbour96db8822015-02-25 12:28:39 -070045endif()
46
Mark Young93ecb1d2016-01-13 13:47:16 -070047set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
48
Tony Barbour7ea6aa22015-05-22 09:44:58 -060049if(WIN32)
Tony Barbour7b60e492016-02-02 14:43:55 -070050 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES")
Mark Young44c90ba2016-01-25 16:49:47 -070051
52 # If MSVC, disable some signed/unsigned mismatch warnings.
53 if (MSVC)
54 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4267")
55 endif()
56
Tony Barbour500194c2015-05-21 11:07:47 -060057else()
Jeremy Hayes3b2a3a32016-06-21 11:05:08 -060058 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
Tony Barbour500194c2015-05-21 11:07:47 -060059endif()
Mark Lobodzinski391bb6d2015-01-09 15:12:03 -060060
Tony Barbour500194c2015-05-21 11:07:47 -060061set (LIBGLM_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/libs)
62
63set(COMMON_CPP
Courtney Goeltzenleuchterf53c3cb2015-04-14 14:55:44 -060064 vkrenderframework.cpp
65 vktestbinding.cpp
66 vktestframework.cpp
Tony Barbour92400bb2015-03-02 16:38:52 -070067 test_environment.cpp
Courtney Goeltzenleuchter24cec9b2014-08-11 13:15:04 -060068 )
69
Courtney Goeltzenleuchter6863ff42014-08-19 13:34:28 -060070include_directories(
71 "${PROJECT_SOURCE_DIR}/tests/gtest-1.7.0/include"
72 "${PROJECT_SOURCE_DIR}/icd/common"
Mark Lobodzinski159ffe02015-05-14 14:30:48 -050073 "${PROJECT_SOURCE_DIR}/layers"
Dustin Graves3402bdd2016-03-15 15:39:08 -060074 ${GLSLANG_SPIRV_INCLUDE_DIR}
Tony Barbour500194c2015-05-21 11:07:47 -060075 ${LIBGLM_INCLUDE_DIR}
Courtney Goeltzenleuchter6863ff42014-08-19 13:34:28 -060076 )
Courtney Goeltzenleuchter24cec9b2014-08-11 13:15:04 -060077
Tony Barbour7ea6aa22015-05-22 09:44:58 -060078if (NOT WIN32)
79 # extra setup for out-of-tree builds
80 if (NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR))
81 add_custom_target(binary-dir-symlinks ALL
Tony Barbour7ea6aa22015-05-22 09:44:58 -060082 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/run_all_tests.sh
Jeremy Hayesab9804d2016-06-30 10:13:35 -060083 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/run_wrap_objects_tests.sh
84 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/run_loader_tests.sh
Jeremy Hayes52261802016-08-15 10:37:24 -060085 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/run_extra_loader_tests.sh
Tobin Ehlis12d4c6a2015-08-31 12:42:38 -060086 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/vkvalidatelayerdoc.sh
Tony Barbour7ea6aa22015-05-22 09:44:58 -060087 VERBATIM
88 )
89 endif()
Tony Barbour856aba32015-06-08 16:11:29 -060090else()
91 if (NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR))
Cody Northrop95cb6892015-08-14 10:55:56 -060092 FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/_run_all_tests.ps1 RUN_ALL)
Dustin Graves66bb7ea2016-05-06 13:45:34 -060093 FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/_vkvalidatelayerdoc.ps1 VALIDATE_DOC)
Tony Barbour856aba32015-06-08 16:11:29 -060094 add_custom_target(binary-dir-symlinks ALL
Dustin Graves66bb7ea2016-05-06 13:45:34 -060095 COMMAND ${CMAKE_COMMAND} -E copy_if_different ${RUN_ALL} run_all_tests.ps1
96 COMMAND ${CMAKE_COMMAND} -E copy_if_different ${VALIDATE_DOC} vkvalidatelayerdoc.ps1
Tony Barbour856aba32015-06-08 16:11:29 -060097 VERBATIM
98 )
99 endif()
Chia-I Wu05c71812014-12-06 10:22:40 +0800100endif()
101
Jeremy Hayes22641442016-02-08 12:14:51 -0700102if(WIN32)
Lenny Komow63fc1692016-11-07 10:44:23 -0700103 set (LIBVK "${API_LOWERCASE}-${MAJOR}")
Jeremy Hayes22641442016-02-08 12:14:51 -0700104elseif(UNIX)
Lenny Komow63fc1692016-11-07 10:44:23 -0700105 set (LIBVK "${API_LOWERCASE}")
Jeremy Hayes22641442016-02-08 12:14:51 -0700106else()
107endif()
Tony Barbourbcf05fd2015-07-13 12:32:00 -0600108
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600109add_executable(vk_layer_validation_tests layer_validation_tests.cpp ${COMMON_CPP})
110set_target_properties(vk_layer_validation_tests
Tony Barbour300a6082015-04-07 13:44:53 -0600111 PROPERTIES
112 COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
Ian Elliott2c1daf52016-05-12 09:41:46 -0600113if(NOT WIN32)
Tony Barbour2e7bd402016-11-14 14:46:33 -0700114 if (BUILD_WSI_XCB_SUPPORT OR BUILD_WSI_XLIB_SUPPORT)
Norbert Nopper15a45db2016-09-08 09:31:36 +0200115 target_link_libraries(vk_layer_validation_tests ${LIBVK} ${XCB_LIBRARIES} ${X11_LIBRARIES} gtest gtest_main VkLayer_utils ${GLSLANG_LIBRARIES})
116 else()
117 target_link_libraries(vk_layer_validation_tests ${LIBVK} gtest gtest_main VkLayer_utils ${GLSLANG_LIBRARIES})
118 endif()
Ian Elliott2c1daf52016-05-12 09:41:46 -0600119endif()
120if(WIN32)
121 target_link_libraries(vk_layer_validation_tests ${LIBVK} gtest gtest_main VkLayer_utils ${GLSLANG_LIBRARIES})
122endif()
Tony Barbour300a6082015-04-07 13:44:53 -0600123
Jeremy Hayes6650d1f2016-04-20 09:00:39 -0600124add_executable(vk_loader_validation_tests loader_validation_tests.cpp ${COMMON_CPP})
125set_target_properties(vk_loader_validation_tests
126 PROPERTIES
127 COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
128target_link_libraries(vk_loader_validation_tests ${LIBVK} gtest gtest_main VkLayer_utils ${GLSLANG_LIBRARIES})
129
Courtney Goeltzenleuchter24cec9b2014-08-11 13:15:04 -0600130add_subdirectory(gtest-1.7.0)
Jon Ashburn55585ed2016-05-11 16:57:26 -0600131add_subdirectory(layers)