Home | History | Annotate | Download | only in tests
      1 cmake_minimum_required(VERSION 2.8.11)
      2 
      3 if(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)
      8 elseif(CMAKE_SYSTEM_NAME STREQUAL "Android")
      9     add_definitions(-DVK_USE_PLATFORM_ANDROID_KHR)
     10 elseif(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()
     27 else()
     28     message(FATAL_ERROR "Unsupported Platform!")
     29 endif()
     30 
     31 # On Windows, we must pair Debug and Release appropriately
     32 if (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)
     42 endif()
     43 
     44 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
     45 
     46 if(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 
     54 else()
     55     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
     56 endif()
     57 
     58 set (LIBGLM_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/libs)
     59 
     60 set(COMMON_CPP
     61     vkrenderframework.cpp
     62     vktestbinding.cpp
     63     vktestframework.cpp
     64     test_environment.cpp
     65    )
     66 
     67 include_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 
     79 if (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()
     91 else()
     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()
    102 endif()
    103 
    104 if(WIN32)
    105    set (LIBVK "${API_LOWERCASE}-${MAJOR}")
    106 elseif(UNIX)
    107    set (LIBVK "${API_LOWERCASE}")
    108 else()
    109 endif()
    110 
    111 add_executable(vk_layer_validation_tests layer_validation_tests.cpp ${COMMON_CPP})
    112 set_target_properties(vk_layer_validation_tests
    113    PROPERTIES
    114    COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
    115 if(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()
    121 endif()
    122 if(WIN32)
    123    target_link_libraries(vk_layer_validation_tests ${LIBVK} gtest gtest_main VkLayer_utils ${GLSLANG_LIBRARIES})
    124 endif()
    125 add_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 
    133 if (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})
    139 endif()
    140 
    141 add_executable(vk_loader_validation_tests loader_validation_tests.cpp ${COMMON_CPP})
    142 set_target_properties(vk_loader_validation_tests
    143    PROPERTIES
    144    COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
    145 target_link_libraries(vk_loader_validation_tests ${LIBVK} gtest gtest_main VkLayer_utils ${GLSLANG_LIBRARIES})
    146 
    147 add_subdirectory(gtest-1.7.0)
    148 add_subdirectory(layers)
    149