1cmake_minimum_required(VERSION 2.8.11) 2 3if(CMAKE_SYSTEM_NAME STREQUAL "Windows") 4 add_definitions(-DVK_USE_PLATFORM_WIN32_KHR -DWIN32_LEAN_AND_MEAN) 5 # Workaround for TR1 deprecation in Visual Studio 15.5 until Google Test is updated 6 add_definitions(-D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING) 7 set(DisplayServer Win32) 8elseif(CMAKE_SYSTEM_NAME STREQUAL "Android") 9 add_definitions(-DVK_USE_PLATFORM_ANDROID_KHR) 10elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") 11 if (BUILD_WSI_XCB_SUPPORT) 12 add_definitions(-DVK_USE_PLATFORM_XCB_KHR) 13 endif() 14 15 if (BUILD_WSI_XLIB_SUPPORT) 16 add_definitions(-DVK_USE_PLATFORM_XLIB_KHR) 17 endif() 18 19 if (BUILD_WSI_WAYLAND_SUPPORT) 20 add_definitions(-DVK_USE_PLATFORM_WAYLAND_KHR) 21 endif() 22 23 if (BUILD_WSI_MIR_SUPPORT) 24 add_definitions(-DVK_USE_PLATFORM_MIR_KHR) 25 include_directories(${MIR_INCLUDE_DIR}) 26 endif() 27else() 28 message(FATAL_ERROR "Unsupported Platform!") 29endif() 30 31# On Windows, we must pair Debug and Release appropriately 32if (WIN32) 33 # For Windows, since 32-bit and 64-bit items can co-exist, we build each in its own build directory. 34 # 32-bit target data goes in build32, and 64-bit target data goes into build. So, include/link the 35 # appropriate data at build time. 36 if (CMAKE_CL_64) 37 set (BUILDTGT_DIR build) 38 else () 39 set (BUILDTGT_DIR build32) 40 endif() 41 file(COPY vk_layer_validation_tests.vcxproj.user DESTINATION ${CMAKE_BINARY_DIR}/tests) 42endif() 43 44set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake") 45 46if(WIN32) 47 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES") 48 49 # If MSVC, disable some signed/unsigned mismatch warnings. 50 if (MSVC) 51 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4267") 52 endif() 53 54else() 55 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 56endif() 57 58set (LIBGLM_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/libs) 59 60set(COMMON_CPP 61 vkrenderframework.cpp 62 vktestbinding.cpp 63 vktestframework.cpp 64 test_environment.cpp 65 ) 66 67include_directories( 68 ${PROJECT_SOURCE_DIR}/tests 69 ${PROJECT_SOURCE_DIR}/tests/gtest-1.7.0/include 70 ${PROJECT_SOURCE_DIR}/icd/common 71 ${PROJECT_SOURCE_DIR}/layers 72 ${GLSLANG_SPIRV_INCLUDE_DIR} 73 ${LIBGLM_INCLUDE_DIR} 74 ${CMAKE_CURRENT_BINARY_DIR} 75 ${CMAKE_BINARY_DIR} 76 ${PROJECT_BINARY_DIR} 77 ) 78 79if (NOT WIN32) 80 # extra setup for out-of-tree builds 81 if (NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)) 82 add_custom_target(binary-dir-symlinks ALL 83 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/run_all_tests.sh 84 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/run_wrap_objects_tests.sh 85 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/run_loader_tests.sh 86 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/run_extra_loader_tests.sh 87 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/vkvalidatelayerdoc.sh 88 VERBATIM 89 ) 90 endif() 91else() 92 if (NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)) 93 FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/_run_all_tests.ps1 RUN_ALL) 94 FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/_vkvalidatelayerdoc.ps1 VALIDATE_DOC) 95 add_custom_target(binary-dir-symlinks ALL 96 COMMAND ${CMAKE_COMMAND} -E copy_if_different ${RUN_ALL} run_all_tests.ps1 97 COMMAND ${CMAKE_COMMAND} -E copy_if_different ${VALIDATE_DOC} vkvalidatelayerdoc.ps1 98 VERBATIM 99 ) 100 set_target_properties(binary-dir-symlinks PROPERTIES FOLDER ${LVL_TARGET_FOLDER}) 101 endif() 102endif() 103 104if(WIN32) 105 set (LIBVK "${API_LOWERCASE}-${MAJOR}") 106elseif(UNIX) 107 set (LIBVK "${API_LOWERCASE}") 108else() 109endif() 110 111add_executable(vk_layer_validation_tests layer_validation_tests.cpp ${COMMON_CPP}) 112set_target_properties(vk_layer_validation_tests 113 PROPERTIES 114 COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1") 115if(NOT WIN32) 116 if (BUILD_WSI_XCB_SUPPORT OR BUILD_WSI_XLIB_SUPPORT) 117 target_link_libraries(vk_layer_validation_tests ${LIBVK} ${XCB_LIBRARIES} ${X11_LIBRARIES} gtest gtest_main VkLayer_utils ${GLSLANG_LIBRARIES}) 118 else() 119 target_link_libraries(vk_layer_validation_tests ${LIBVK} gtest gtest_main VkLayer_utils ${GLSLANG_LIBRARIES}) 120 endif() 121endif() 122if(WIN32) 123 target_link_libraries(vk_layer_validation_tests ${LIBVK} gtest gtest_main VkLayer_utils ${GLSLANG_LIBRARIES}) 124endif() 125add_dependencies(vk_layer_validation_tests 126 VkLayer_core_validation 127 VkLayer_object_tracker 128 VkLayer_threading 129 VkLayer_unique_objects 130 VkLayer_parameter_validation 131) 132 133if (WIN32) 134 # For Windows, copy necessary gtest DLLs to the right spot for the vk_layer_tests... 135 FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/gtest-1.7.0/$<CONFIGURATION>/*.dll SRC_GTEST_DLLS) 136 FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION> DST_GTEST_DLLS) 137 add_custom_command(TARGET vk_layer_validation_tests POST_BUILD 138 COMMAND xcopy /Y /I ${SRC_GTEST_DLLS} ${DST_GTEST_DLLS}) 139endif() 140 141add_executable(vk_loader_validation_tests loader_validation_tests.cpp ${COMMON_CPP}) 142set_target_properties(vk_loader_validation_tests 143 PROPERTIES 144 COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1") 145target_link_libraries(vk_loader_validation_tests ${LIBVK} gtest gtest_main VkLayer_utils ${GLSLANG_LIBRARIES}) 146 147add_subdirectory(gtest-1.7.0) 148add_subdirectory(layers) 149