CMakeLists.txt revision fe01ea4c4da3e989f8274b6e296e9b0de4c84725
13c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# dEQP cmake file 23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 33c827367444ee418f129b2c238299f49d3264554Jarkko Poyrycmake_minimum_required(VERSION 2.6) 43c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 53c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Paths to dependencies 63c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DELIBS_DIR "framework/delibs" CACHE STRING "Path to delibs (../delibs).") 73c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 83c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# dEQP Target. 93c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_TARGET "default" CACHE STRING "dEQP Target (default, android...)") 103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 113c827367444ee418f129b2c238299f49d3264554Jarkko Poyryproject(dEQP-Core-${DEQP_TARGET}) 123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 133c827367444ee418f129b2c238299f49d3264554Jarkko Poyryinclude(${DELIBS_DIR}/cmake/Defs.cmake NO_POLICY_SCOPE) 143c827367444ee418f129b2c238299f49d3264554Jarkko Poyryinclude(${DELIBS_DIR}/cmake/CFlags.cmake) 153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 163c827367444ee418f129b2c238299f49d3264554Jarkko Poyryadd_definitions(-DDE_ASSERT_FAILURE_CALLBACK) 173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# dEQP-specific configuration. Target file should override these. 193c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_TARGET_NAME "UNKNOWN") # Target name 203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 213c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_SUPPORT_GLES1 OFF) # Is GLESv1 supported 223c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_GLES1_LIBRARIES ) # GLESv1 libraries 233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 243c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_SUPPORT_GLES2 OFF) # Is GLESv2 supported 253c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_GLES2_LIBRARIES ) # GLESv2 libraries. If empty, run-time linking is used 263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 273c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_SUPPORT_GLES3 OFF) # Is GLESv3 supported 283c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_GLES3_LIBRARIES ) # GLESv3 libraries. If empty, run-time linking is used 293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 303c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_SUPPORT_VG OFF) # Is VG supported 313c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_VG_LIBRARIES ) # VG libraries 323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 333c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_SUPPORT_EGL OFF) # Is EGL supported 343c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_EGL_LIBRARIES ) # EGL libraries 353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 363c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_SUPPORT_OPENCL OFF) # Is OpenCL supported 373c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_OPENCL_LIBRARIES ) # OpenCL libraries 383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 393c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_PLATFORM_LIBRARIES ) # Other platform libraries 403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 413c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_SUPPORT_OPENGL OFF) # Is OpenGL supported on platform 423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry # \note OpenGL is always loaded on run-time 433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 443c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_PLATFORM_COPY_LIBRARIES ) # Libraries / binaries that need to be copied to binary directory 453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Delibs include directories 473c827367444ee418f129b2c238299f49d3264554Jarkko Poyryinclude_directories( 483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ${DELIBS_DIR}/debase 493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ${DELIBS_DIR}/decpp 503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ${DELIBS_DIR}/depool 513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ${DELIBS_DIR}/dethread 523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ${DELIBS_DIR}/deutil 533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ${DELIBS_DIR}/destream 543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ) 553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Include target-specific definitions 573c827367444ee418f129b2c238299f49d3264554Jarkko Poyryinclude(targets/${DEQP_TARGET}/${DEQP_TARGET}.cmake) 583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 59fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos# zlib 60fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulosfind_path(ZLIB_INCLUDE_PATH zlib.h) 61fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulosfind_library(ZLIB_LIBRARY z) 62fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos 63fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulosif (NOT ZLIB_INCLUDE_PATH OR NOT ZLIB_LIBRARY) 64fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos message(STATUS "System version of zlib not found, using external/zlib") 65fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos add_subdirectory(external/zlib) 66fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos # \note ZLIB_LIBRARY and ZLIB_INCLUDE_PATH are promoted from external/zlib/CMakeLists.txt 67fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulosendif () 68fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos 69fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulosinclude_directories(${ZLIB_INCLUDE_PATH}) 70fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos 71fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos# libpng 72fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulosfind_path(PNG_INCLUDE_PATH libpng.h) 73fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulosfind_library(PNG_LIBRARY png) 74fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos 75fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulosif (NOT PNG_INCLUDE_PATH OR NOT PNG_LIBRARY) 76fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos message(STATUS "System version of libpng not found, using external/libpng") 77fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos add_subdirectory(external/libpng) 78fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos # \note PNG_LIBRARY and PNG_INCLUDE_PATH are promoted from external/libpng/CMakeLists.txt 79fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulosendif () 80fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos 81fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulosinclude_directories(${PNG_INCLUDE_PATH}) 82fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos 833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# \todo [2013-04-14 pyry] Remove once we've got dynamic loading of GL libraries figured out 843c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_RUNTIME_LINK) 853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry include_directories(wrappers/dynlib/inc) 863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (DEQP_SUPPORT_GLES3) 883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry set(DEQP_GLES2_LIBRARIES GLESv3) 893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry set(DEQP_GLES3_LIBRARIES GLESv3) 903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry else () 913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry set(DEQP_GLES2_LIBRARIES GLESv2) 923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry endif () 933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry set(DEQP_EGL_LIBRARIES EGL) 953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_definitions(-DKHRONOS_STATIC_LIB) 963c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 983c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_TARGET_NAME = ${DEQP_TARGET_NAME}") 993c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_SUPPORT_GLES1 = ${DEQP_SUPPORT_GLES1}") 1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_GLES1_LIBRARIES = ${DEQP_GLES1_LIBRARIES}") 1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_SUPPORT_GLES2 = ${DEQP_SUPPORT_GLES2}") 1023c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_GLES2_LIBRARIES = ${DEQP_GLES2_LIBRARIES}") 1033c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_SUPPORT_GLES3 = ${DEQP_SUPPORT_GLES3}") 1043c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_GLES3_LIBRARIES = ${DEQP_GLES3_LIBRARIES}") 1053c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_SUPPORT_VG = ${DEQP_SUPPORT_VG}") 1063c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_VG_LIBRARIES = ${DEQP_VG_LIBRARIES}") 1073c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_SUPPORT_EGL = ${DEQP_SUPPORT_EGL}") 1083c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_EGL_LIBRARIES = ${DEQP_EGL_LIBRARIES}") 1093c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_SUPPORT_OPENCL = ${DEQP_SUPPORT_OPENCL}") 1103c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_OPENCL_LIBRARIES = ${DEQP_OPENCL_LIBRARIES}") 1113c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_SUPPORT_OPENGL = ${DEQP_SUPPORT_OPENGL}") 1123c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_PLATFORM_LIBRARIES = ${DEQP_PLATFORM_LIBRARIES}") 1133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Defines 1153c827367444ee418f129b2c238299f49d3264554Jarkko Poyryadd_definitions(-DDEQP_TARGET_NAME="${DEQP_TARGET_NAME}") 1163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1173c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_GLES1) 1183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_definitions(-DDEQP_SUPPORT_GLES1=1) 1193c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 1203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1213c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_GLES2) 1223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_definitions(-DDEQP_SUPPORT_GLES2=1) 1233c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 1243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1253c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_GLES3) 1263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_definitions(-DDEQP_SUPPORT_GLES3=1) 1273c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 1283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1293c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_VG) 1303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_definitions(-DDEQP_SUPPORT_VG=1) 1313c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 1323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1333c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_EGL) 1343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_definitions(-DDEQP_SUPPORT_EGL=1) 1353c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 1363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1373c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_OPENCL) 1383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_definitions(-DDEQP_SUPPORT_OPENCL=1) 1393c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 1403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1413c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_OPENGL) 1423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_definitions(-DDEQP_SUPPORT_OPENGL=1) 1433c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 1443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1453c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_WGL) 1463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_definitions(-DDEQP_SUPPORT_WGL=1) 1473c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 1483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1493c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_GLX) 1503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_definitions(-DDEQP_SUPPORT_GLX=1) 1513c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 1523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Check runtime linking support 1543c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_GLES1 AND NOT DEFINED DEQP_GLES1_LIBRARIES) 1553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry message(FATAL_ERROR "Run-time loading of GLES1 is not supported (DEQP_GLES1_LIBRARIES is not set)") 1563c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 1573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1583c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_GLES2 AND NOT DEFINED DEQP_GLES2_LIBRARIES) 1593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_definitions(-DDEQP_GLES2_RUNTIME_LOAD=1) 1603c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 1613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1623c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_GLES3 AND NOT DEFINED DEQP_GLES3_LIBRARIES) 1633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_definitions(-DDEQP_GLES3_RUNTIME_LOAD=1) 1643c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 1653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1663c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_VG AND NOT DEFINED DEQP_VG_LIBRARIES) 1673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry message(FATAL_ERROR "Run-time loading of VG is not supported (DEQP_VG_LIBRARIES is not set)") 1683c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 1693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1703c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_EGL AND NOT DEFINED DEQP_EGL_LIBRARIES) 1713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry message(FATAL_ERROR "Run-time loading of EGL is not supported (DEQP_EGL_LIBRARIES is not set)") 1723c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 1733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1743c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_OPENCL AND NOT DEFINED DEQP_OPENCL_LIBRARIES) 1753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry message(FATAL_ERROR "Run-time loading of OpenCL is not supported (DEQP_OPENCL_LIBRARIES is not set)") 1763c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 1773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# OpenGL is always loaded on run-time 1793c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_OPENGL) 1803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_definitions(-DDEQP_OPENGL_RUNTIME_LOAD=1) 1813c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 1823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1833c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DE_COMPILER_IS_MSC) 1843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry # Don't nag about std::copy for example 1853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_SCL_SECURE_NO_WARNINGS") 1863c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 1873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# delibs projects 1893c827367444ee418f129b2c238299f49d3264554Jarkko Poyryadd_subdirectory(${DELIBS_DIR}/debase debase) 1903c827367444ee418f129b2c238299f49d3264554Jarkko Poyryadd_subdirectory(${DELIBS_DIR}/depool depool) 1913c827367444ee418f129b2c238299f49d3264554Jarkko Poyryadd_subdirectory(${DELIBS_DIR}/dethread dethread) 1923c827367444ee418f129b2c238299f49d3264554Jarkko Poyryadd_subdirectory(${DELIBS_DIR}/destream destream) 1933c827367444ee418f129b2c238299f49d3264554Jarkko Poyryadd_subdirectory(${DELIBS_DIR}/deutil deutil) 1943c827367444ee418f129b2c238299f49d3264554Jarkko Poyryadd_subdirectory(${DELIBS_DIR}/decpp decpp) 1953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# \todo [2013-04-14 pyry] Remove once we've got dynamic loading of GL libraries figured out 1973c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_RUNTIME_LINK) 1983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_subdirectory(wrappers/dynlib) 1993c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 2003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# ExecServer 2023c827367444ee418f129b2c238299f49d3264554Jarkko Poyryadd_subdirectory(execserver) 2033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Executor framework and tools 2053c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/executor) 2063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_subdirectory(executor) 2073c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 2083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2093c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_OPENCL) 2103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry # We need to support all older CL1.x versions 2113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_definitions(-DCL_USE_DEPRECATED_OPENCL_1_0_APIS) 2123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_definitions(-DCL_USE_DEPRECATED_OPENCL_1_1_APIS) 2133c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 2143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Test framework include directories 2163c827367444ee418f129b2c238299f49d3264554Jarkko Poyryinclude_directories( 2173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry framework/common 2183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry framework/qphelper 2193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry framework/opengl 2203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry framework/opengl/wrapper 2213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry framework/referencerenderer 2223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry framework/opengl/simplereference 2233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry framework/randomshaders 2243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ) 2253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2263c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_EGL) 2273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry include_directories(framework/egl) 2283c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 2293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2303c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DE_OS_IS_ANDROID OR DE_OS_IS_IOS) 2313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry # On Android deqp modules are compiled as libraries and linked into final .so 2323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry set(DEQP_MODULE_LIBRARIES ) 2333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry set(DEQP_MODULE_ENTRY_POINTS ) 2343c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 2353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2363c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DE_OS_IS_WIN32) 2373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry include_directories(framework/platform/win32) 2383c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 2393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Macro for adding targets for copying binaries (usually target libraries) to the target destination dir 2413c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymacro (target_copy_files target dep_name files) 2423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (NOT "${files}" STREQUAL "") 2433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry set(COPY_TARGETS ) 2443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry foreach (SRCNAME ${files}) 2453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry get_filename_component(BASENAME ${SRCNAME} NAME) 2463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry set(DSTNAME "${CMAKE_CURRENT_BINARY_DIR}/${BASENAME}") 2473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_custom_command(OUTPUT ${DSTNAME} 2483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SRCNAME} ${DSTNAME}) 2493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry set(COPY_TARGETS ${COPY_TARGETS} ${DSTNAME}) 2503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry endforeach () 2513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_custom_target(${dep_name} ALL DEPENDS ${COPY_TARGETS}) 2533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_dependencies(${target} ${dep_name}) 2543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry endif () 2553c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendmacro (target_copy_files) 2563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Macro for adding dEQP module 2583c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymacro (add_deqp_module MODULE_NAME SRCS LIBS ENTRY) 2593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (DE_OS_IS_ANDROID OR DE_OS_IS_IOS) 2603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry # Single-binary targets 2613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_library(${MODULE_NAME} STATIC ${SRCS}) 2623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry target_link_libraries(${MODULE_NAME} ${LIBS}) 2633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry set(DEQP_MODULE_LIBRARIES ${DEQP_MODULE_LIBRARIES} ${MODULE_NAME}) 2653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry set(DEQP_MODULE_ENTRY_POINTS ${DEQP_MODULE_ENTRY_POINTS} "${CMAKE_CURRENT_SOURCE_DIR}/${ENTRY}") 2663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry # Forward to parent scope 2683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry set(DEQP_MODULE_LIBRARIES ${DEQP_MODULE_LIBRARIES} PARENT_SCOPE) 2693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry set(DEQP_MODULE_ENTRY_POINTS ${DEQP_MODULE_ENTRY_POINTS} PARENT_SCOPE) 2703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry else () 2723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry # Separate binary per target 2733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_executable(${MODULE_NAME} ${CMAKE_SOURCE_DIR}/framework/platform/tcuMain.cpp ${ENTRY} ${SRCS}) 2743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry target_link_libraries(${MODULE_NAME} tcutil-platform ${LIBS}) 2753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry target_copy_files(${MODULE_NAME} platform-libs-${MODULE_NAME} "${DEQP_PLATFORM_COPY_LIBRARIES}") 2763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry endif () 2773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry # Data file target 2793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_custom_target(${MODULE_NAME}-data) 2803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_dependencies(${MODULE_NAME} ${MODULE_NAME}-data) 2813c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendmacro (add_deqp_module) 2823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Macro for adding data dirs to module 2843c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymacro (add_data_dir MODULE_NAME SRC_DIR DST_DIR) 2853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (DE_OS_IS_WIN32 OR DE_OS_IS_UNIX OR DE_OS_IS_OSX) 2863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_custom_command(TARGET ${MODULE_NAME}-data POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/${SRC_DIR} ${CMAKE_CURRENT_BINARY_DIR}/${DST_DIR}) 2873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry elseif (DE_OS_IS_ANDROID) 2893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_custom_command(TARGET ${MODULE_NAME}-data POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/${SRC_DIR} ${CMAKE_BINARY_DIR}/assets/${DST_DIR}) 2903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry elseif (DE_OS_IS_IOS) 2923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_custom_command(TARGET ${MODULE_NAME}-data POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/${SRC_DIR} ${CMAKE_BINARY_DIR}/\${CONFIGURATION}\${EFFECTIVE_PLATFORM_NAME}/deqp.app/${DST_DIR}) 2933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry endif () 2943c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendmacro (add_data_dir) 2953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Macro for adding individual data files to module 2973c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymacro (add_data_file MODULE_NAME SRC_FILE DST_FILE) 2983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (DE_OS_IS_WIN32 OR DE_OS_IS_UNIX OR DE_OS_IS_OSX) 2993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_custom_command(TARGET ${MODULE_NAME}-data POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${SRC_FILE} ${CMAKE_CURRENT_BINARY_DIR}/${DST_FILE}) 3003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry elseif (DE_OS_IS_ANDROID) 3023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_custom_command(TARGET ${MODULE_NAME}-data POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${SRC_FILE} ${CMAKE_BINARY_DIR}/assets/${DST_FILE}) 3033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry elseif (DE_OS_IS_IOS) 3053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_custom_command(TARGET ${MODULE_NAME}-data POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${SRC_FILE} ${CMAKE_BINARY_DIR}/\${CONFIGURATION}\${EFFECTIVE_PLATFORM_NAME}/deqp.app/${DST_FILE}) 3063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry endif () 3073c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendmacro (add_data_file) 3083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3093c827367444ee418f129b2c238299f49d3264554Jarkko Poyryadd_subdirectory(framework) 3103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3113c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DE_COMPILER_IS_MSC) 3123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_compile_options(/bigobj) # Required by glsBuiltinPrecisionTests.cpp 3133c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 3143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3153c827367444ee418f129b2c238299f49d3264554Jarkko Poyryadd_subdirectory(modules) 3163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Single-binary targets 3183c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DE_OS_IS_ANDROID) 3193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry # CTS activities require headers from Android port directory 3203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry include_directories(framework/platform/android) 3213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry include_directories(executor) 3223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_library(testercore SHARED framework/platform/android/tcuAndroidMain.cpp framework/platform/android/tcuAndroidJNI.cpp framework/platform/android/tcuTestLogParserJNI.cpp ${DEQP_MODULE_ENTRY_POINTS}) 3243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry target_link_libraries(testercore tcutil-platform xecore ${DEQP_MODULE_LIBRARIES}) 3253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3263c827367444ee418f129b2c238299f49d3264554Jarkko Poyryelseif (DE_OS_IS_IOS) 3273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry # Code sign identity 3283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry set(DEQP_IOS_CODE_SIGN_IDENTITY "drawElements" CACHE STRING "Code sign identity for iOS build") 3293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry set(MACOSX_BUNDLE_PRODUCT_NAME "\${PRODUCT_NAME}") 3313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.drawelements.\${PRODUCT_NAME:identifier}") 3323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry include_directories(framework/platform/ios) 3343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry set(TESTERCORE_SRC_FILES 3353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry framework/platform/ios/tcuEAGLView.h 3363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry framework/platform/ios/tcuEAGLView.m 3373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry framework/platform/ios/tcuIOSAppDelegate.h 3383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry framework/platform/ios/tcuIOSAppDelegate.m 3393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry framework/platform/ios/tcuIOSViewController.h 3403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry framework/platform/ios/tcuIOSViewController.m 3413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry framework/platform/ios/tcuIOSMain.m 3423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ) 3433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry set_source_files_properties(${TESTERCORE_SRC_FILES} COMPILE_FLAGS "-std=c99") 3443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry add_executable(deqp MACOSX_BUNDLE ${TESTERCORE_SRC_FILES} ${DEQP_MODULE_ENTRY_POINTS}) 3463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry target_link_libraries(deqp tcutil-platform xscore ${DEQP_MODULE_LIBRARIES}) 3473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry set_target_properties(deqp PROPERTIES XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2") 3483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry set_target_properties(deqp PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer: ${DEQP_IOS_CODE_SIGN_IDENTITY}") 3493c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif () 350