# 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...)")
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")
# 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})
# 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}")
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}")
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)
framework/randomshaders
framework/egl
framework/egl/wrapper
+ framework/xexml
external/vulkancts/framework/vulkan
)