Merge vk-gl-cts/github-master into vk-gl-cts/master
[platform/upstream/VK-GL-CTS.git] / CMakeLists.txt
index de988f1..9eed0cd 100644 (file)
@@ -1,9 +1,10 @@
 # dEQP cmake file
 
 # Module FindGit requires cmake >= 2.8.2
-cmake_minimum_required(VERSION 2.8.2)
+cmake_minimum_required(VERSION 3.10.2)
 
 find_package(Git)
+find_package(PythonInterp 3)
 
 # dEQP Target.
 set(DEQP_TARGET "default" CACHE STRING "dEQP Target (default, android...)")
@@ -54,8 +55,10 @@ include_directories(
 include(targets/${DEQP_TARGET}/${DEQP_TARGET}.cmake)
 
 # zlib
-find_path(ZLIB_INCLUDE_PATH    zlib.h)
-find_library(ZLIB_LIBRARY      z)
+find_package(ZLIB)
+# dEQP CMake compatibility (as for libpng)
+set(ZLIB_INCLUDE_PATH ${ZLIB_INCLUDE_DIRS})
+set(ZLIB_LIBRARY ${ZLIB_LIBRARIES})
 
 if (NOT ZLIB_INCLUDE_PATH OR NOT ZLIB_LIBRARY)
        message(STATUS "System version of zlib not found, using external/zlib")
@@ -71,7 +74,7 @@ include_directories(${ZLIB_INCLUDE_PATH})
 # CMake files expect the non-standard PNG_INCLUDE_PATH and PNG_LIBRARY. Set the
 # non-standard variables here to retain compatibility with dEQP's existing
 # CMake files.
-include(FindPNG)
+find_package(PNG)
 set(PNG_INCLUDE_PATH ${PNG_INCLUDE_DIRS})
 set(PNG_LIBRARY ${PNG_LIBRARIES})
 
@@ -87,8 +90,36 @@ add_subdirectory(external/glslang)
 # spirv-tools
 add_subdirectory(external/spirv-tools)
 
+# spirv-headers
+set(SPIRV_INCLUDE_PATH "${PROJECT_SOURCE_DIR}/external/spirv-headers/src/include")
+if (NOT EXISTS ${SPIRV_INCLUDE_PATH})
+       message(FATAL_ERROR "SPIR-V headers not found, please run external/fetch_sources.py")
+endif()
+include_directories(${SPIRV_INCLUDE_PATH})
+
+# Amber
+add_subdirectory(external/amber)
+include_directories(external/amber)
+
+# RenderDoc API
+include_directories(external/renderdoc/src)
+
 include_directories(${PNG_INCLUDE_PATH})
 
+# DRM (Direct Rendering Manager) Headers
+find_path(XF86DRM_H_PATH NAMES xf86drm.h)
+find_path(DRM_H_PATH NAMES drm.h PATH_SUFFIXES libdrm drm)
+
+if (XF86DRM_H_PATH AND DRM_H_PATH)
+       include_directories(${XF86DRM_H_PATH})
+       include_directories(${DRM_H_PATH})
+       set(DEQP_SUPPORT_DRM ON CACHE BOOL "Build code requiring the Linux/Unix Direct Rendering Manager")
+       mark_as_advanced(XF86DRM_H_PATH)
+       mark_as_advanced(DRM_H_PATH)
+else ()
+       set(DEQP_SUPPORT_DRM OFF CACHE BOOL "Build code requiring the Linux/Unix Direct Rendering Manager")
+endif ()
+
 message(STATUS "DEQP_TARGET_NAME        = ${DEQP_TARGET_NAME}")
 message(STATUS "DEQP_SUPPORT_GLES1      = ${DEQP_SUPPORT_GLES1}")
 message(STATUS "DEQP_GLES1_LIBRARIES    = ${DEQP_GLES1_LIBRARIES}")
@@ -100,6 +131,7 @@ message(STATUS "DEQP_SUPPORT_VG         = ${DEQP_SUPPORT_VG}")
 message(STATUS "DEQP_VG_LIBRARIES       = ${DEQP_VG_LIBRARIES}")
 message(STATUS "DEQP_EGL_LIBRARIES      = ${DEQP_EGL_LIBRARIES}")
 message(STATUS "DEQP_PLATFORM_LIBRARIES = ${DEQP_PLATFORM_LIBRARIES}")
+message(STATUS "DEQP_SUPPORT_DRM        = ${DEQP_SUPPORT_DRM}")
 
 # Defines
 add_definitions(-DDEQP_TARGET_NAME="${DEQP_TARGET_NAME}")
@@ -142,11 +174,29 @@ if (DEQP_SUPPORT_VG)
        endif ()
 endif ()
 
+if (DEQP_SUPPORT_DRM)
+       add_definitions(-DDEQP_SUPPORT_DRM=1)
+else ()
+       add_definitions(-DDEQP_SUPPORT_DRM=0)
+endif ()
+
 if (DE_COMPILER_IS_MSC)
        # Don't nag about std::copy for example
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_SCL_SECURE_NO_WARNINGS")
 endif ()
 
+# Precompiled header macro. Parameters are source file list and filename for pch cpp file.
+macro(PCH SRCS PCHCPP)
+  if(MSVC AND CMAKE_GENERATOR MATCHES "^Visual Studio")
+    set(PCH_NAME "$(IntDir)\\pch.pch")
+    # make source files use/depend on PCH_NAME
+    set_source_files_properties(${${SRCS}} PROPERTIES COMPILE_FLAGS "/Yupch.h /FIpch.h /Fp${PCH_NAME}" OBJECT_DEPENDS "${PCH_NAME}")
+    # make PCHCPP file compile and generate PCH_NAME
+    set_source_files_properties(${PCHCPP} PROPERTIES COMPILE_FLAGS "/Ycpch.h /Fp${PCH_NAME}" OBJECT_OUTPUTS "${PCH_NAME}")
+    list(APPEND ${SRCS} "${PCHCPP}")
+  endif()
+endmacro(PCH)
+
 # delibs projects
 add_subdirectory(framework/delibs/debase)
 add_subdirectory(framework/delibs/depool)
@@ -174,6 +224,7 @@ include_directories(
        framework/randomshaders
        framework/egl
        framework/egl/wrapper
+       framework/xexml
        external/vulkancts/framework/vulkan
        )