13c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# dEQP cmake file
23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
33c827367444ee418f129b2c238299f49d3264554Jarkko Poyrycmake_minimum_required(VERSION 2.6)
43c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
53c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# dEQP Target.
63c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_TARGET "default" CACHE STRING "dEQP Target (default, android...)")
73c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
83c827367444ee418f129b2c238299f49d3264554Jarkko Poyryproject(dEQP-Core-${DEQP_TARGET})
93c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10eccd5bc6a92a307a3e665fb6f4686dc12abf3b65Pyry Haulosinclude(framework/delibs/cmake/Defs.cmake NO_POLICY_SCOPE)
11eccd5bc6a92a307a3e665fb6f4686dc12abf3b65Pyry Haulosinclude(framework/delibs/cmake/CFlags.cmake)
123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
133c827367444ee418f129b2c238299f49d3264554Jarkko Poyryadd_definitions(-DDE_ASSERT_FAILURE_CALLBACK)
143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# dEQP-specific configuration. Target file should override these.
163c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_TARGET_NAME		"UNKNOWN")		# Target name
173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
183c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_SUPPORT_GLES1		OFF)			# Is GLESv1 supported
193c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_GLES1_LIBRARIES	)				# GLESv1 libraries
203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
213c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_SUPPORT_GLES2		OFF)			# Is GLESv2 supported
223c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_GLES2_LIBRARIES	)				# GLESv2 libraries. If empty, run-time linking is used
233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
243c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_SUPPORT_GLES3		OFF)			# Is GLESv3 supported
253c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_GLES3_LIBRARIES	)				# GLESv3 libraries. If empty, run-time linking is used
263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
273c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_SUPPORT_VG			OFF)			# Is VG supported
283c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_VG_LIBRARIES		)				# VG libraries
293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
303c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_SUPPORT_EGL		OFF)			# Is EGL supported
313c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_EGL_LIBRARIES		)				# EGL libraries
323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
33573d3236b66a968d1547bc7252adba27ed697fbeJarkko Pöyryset(DEQP_SUPPORT_GLX		OFF)			# Is GLX supported
34573d3236b66a968d1547bc7252adba27ed697fbeJarkko Pöyryset(DEQP_SUPPORT_WGL		OFF)			# Is WGL supported
35573d3236b66a968d1547bc7252adba27ed697fbeJarkko Pöyry
363c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_PLATFORM_LIBRARIES	)				# Other platform libraries
373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
383c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_SUPPORT_OPENGL		OFF)			# Is OpenGL supported on platform
393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry											# \note OpenGL is always loaded on run-time
403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
413c827367444ee418f129b2c238299f49d3264554Jarkko Poyryset(DEQP_PLATFORM_COPY_LIBRARIES	)		# Libraries / binaries that need to be copied to binary directory
423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Delibs include directories
443c827367444ee418f129b2c238299f49d3264554Jarkko Poyryinclude_directories(
45eccd5bc6a92a307a3e665fb6f4686dc12abf3b65Pyry Haulos	framework/delibs/debase
46eccd5bc6a92a307a3e665fb6f4686dc12abf3b65Pyry Haulos	framework/delibs/decpp
47eccd5bc6a92a307a3e665fb6f4686dc12abf3b65Pyry Haulos	framework/delibs/depool
48eccd5bc6a92a307a3e665fb6f4686dc12abf3b65Pyry Haulos	framework/delibs/dethread
49eccd5bc6a92a307a3e665fb6f4686dc12abf3b65Pyry Haulos	framework/delibs/deutil
50eccd5bc6a92a307a3e665fb6f4686dc12abf3b65Pyry Haulos	framework/delibs/destream
513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	)
523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Include target-specific definitions
543c827367444ee418f129b2c238299f49d3264554Jarkko Poyryinclude(targets/${DEQP_TARGET}/${DEQP_TARGET}.cmake)
553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
56fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos# zlib
57fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulosfind_path(ZLIB_INCLUDE_PATH	zlib.h)
58fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulosfind_library(ZLIB_LIBRARY	z)
59fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos
60fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulosif (NOT ZLIB_INCLUDE_PATH OR NOT ZLIB_LIBRARY)
61fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos	message(STATUS "System version of zlib not found, using external/zlib")
62fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos	add_subdirectory(external/zlib)
63fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos	# \note ZLIB_LIBRARY and ZLIB_INCLUDE_PATH are promoted from external/zlib/CMakeLists.txt
64fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulosendif ()
65fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos
66fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulosinclude_directories(${ZLIB_INCLUDE_PATH})
67fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos
68fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos# libpng
69fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulosfind_path(PNG_INCLUDE_PATH	libpng.h)
70fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulosfind_library(PNG_LIBRARY	png)
71fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos
72fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulosif (NOT PNG_INCLUDE_PATH OR NOT PNG_LIBRARY)
73fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos	message(STATUS "System version of libpng not found, using external/libpng")
74fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos	add_subdirectory(external/libpng)
75fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos	# \note PNG_LIBRARY and PNG_INCLUDE_PATH are promoted from external/libpng/CMakeLists.txt
76fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulosendif ()
77fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos
78fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulosinclude_directories(${PNG_INCLUDE_PATH})
79fe01ea4c4da3e989f8274b6e296e9b0de4c84725Pyry Haulos
803c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_TARGET_NAME        = ${DEQP_TARGET_NAME}")
813c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_SUPPORT_GLES1      = ${DEQP_SUPPORT_GLES1}")
823c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_GLES1_LIBRARIES    = ${DEQP_GLES1_LIBRARIES}")
833c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_SUPPORT_GLES2      = ${DEQP_SUPPORT_GLES2}")
843c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_GLES2_LIBRARIES    = ${DEQP_GLES2_LIBRARIES}")
853c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_SUPPORT_GLES3      = ${DEQP_SUPPORT_GLES3}")
863c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_GLES3_LIBRARIES    = ${DEQP_GLES3_LIBRARIES}")
873c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_SUPPORT_VG         = ${DEQP_SUPPORT_VG}")
883c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_VG_LIBRARIES       = ${DEQP_VG_LIBRARIES}")
893c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_SUPPORT_EGL        = ${DEQP_SUPPORT_EGL}")
903c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_EGL_LIBRARIES      = ${DEQP_EGL_LIBRARIES}")
913c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_SUPPORT_OPENGL     = ${DEQP_SUPPORT_OPENGL}")
923c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymessage(STATUS "DEQP_PLATFORM_LIBRARIES = ${DEQP_PLATFORM_LIBRARIES}")
93573d3236b66a968d1547bc7252adba27ed697fbeJarkko Pöyrymessage(STATUS "DEQP_SUPPORT_WGL        = ${DEQP_SUPPORT_WGL}")
94573d3236b66a968d1547bc7252adba27ed697fbeJarkko Pöyrymessage(STATUS "DEQP_SUPPORT_GLX        = ${DEQP_SUPPORT_GLX}")
953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Defines
973c827367444ee418f129b2c238299f49d3264554Jarkko Poyryadd_definitions(-DDEQP_TARGET_NAME="${DEQP_TARGET_NAME}")
983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
993c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_GLES1)
1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	add_definitions(-DDEQP_SUPPORT_GLES1=1)
1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif ()
1023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1033c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_GLES2)
1043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	add_definitions(-DDEQP_SUPPORT_GLES2=1)
1053c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif ()
1063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1073c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_GLES3)
1083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	add_definitions(-DDEQP_SUPPORT_GLES3=1)
1093c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif ()
1103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1113c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_VG)
1123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	add_definitions(-DDEQP_SUPPORT_VG=1)
1133c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif ()
1143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1153c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_EGL)
1163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	add_definitions(-DDEQP_SUPPORT_EGL=1)
1173c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif ()
1183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1193c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_OPENGL)
1203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	add_definitions(-DDEQP_SUPPORT_OPENGL=1)
1213c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif ()
1223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1233c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_WGL)
1243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	add_definitions(-DDEQP_SUPPORT_WGL=1)
1253c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif ()
1263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1273c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_GLX)
1283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	add_definitions(-DDEQP_SUPPORT_GLX=1)
1293c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif ()
1303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Check runtime linking support
1323c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_GLES1 AND NOT DEFINED DEQP_GLES1_LIBRARIES)
1333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	message(FATAL_ERROR "Run-time loading of GLES1 is not supported (DEQP_GLES1_LIBRARIES is not set)")
1343c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif ()
1353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1363c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_GLES2 AND NOT DEFINED DEQP_GLES2_LIBRARIES)
1373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	add_definitions(-DDEQP_GLES2_RUNTIME_LOAD=1)
1383c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif ()
1393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1403c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_GLES3 AND NOT DEFINED DEQP_GLES3_LIBRARIES)
1413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	add_definitions(-DDEQP_GLES3_RUNTIME_LOAD=1)
1423c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif ()
1433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1443c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_VG AND NOT DEFINED DEQP_VG_LIBRARIES)
1453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	message(FATAL_ERROR "Run-time loading of VG is not supported (DEQP_VG_LIBRARIES is not set)")
1463c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif ()
1473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1483c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_EGL AND NOT DEFINED DEQP_EGL_LIBRARIES)
1493c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos	add_definitions(-DDEQP_EGL_RUNTIME_LOAD=1)
1503c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif ()
1513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# OpenGL is always loaded on run-time
1533c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DEQP_SUPPORT_OPENGL)
1543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	add_definitions(-DDEQP_OPENGL_RUNTIME_LOAD=1)
1553c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif ()
1563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1573c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DE_COMPILER_IS_MSC)
1583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	# Don't nag about std::copy for example
1593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_SCL_SECURE_NO_WARNINGS")
1603c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif ()
1613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# delibs projects
163eccd5bc6a92a307a3e665fb6f4686dc12abf3b65Pyry Haulosadd_subdirectory(framework/delibs/debase)
164eccd5bc6a92a307a3e665fb6f4686dc12abf3b65Pyry Haulosadd_subdirectory(framework/delibs/depool)
165eccd5bc6a92a307a3e665fb6f4686dc12abf3b65Pyry Haulosadd_subdirectory(framework/delibs/dethread)
166eccd5bc6a92a307a3e665fb6f4686dc12abf3b65Pyry Haulosadd_subdirectory(framework/delibs/destream)
167eccd5bc6a92a307a3e665fb6f4686dc12abf3b65Pyry Haulosadd_subdirectory(framework/delibs/deutil)
168eccd5bc6a92a307a3e665fb6f4686dc12abf3b65Pyry Haulosadd_subdirectory(framework/delibs/decpp)
1693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# ExecServer
1713c827367444ee418f129b2c238299f49d3264554Jarkko Poyryadd_subdirectory(execserver)
1723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Executor framework and tools
1743c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/executor)
1753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	add_subdirectory(executor)
1763c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif ()
1773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Test framework include directories
1793c827367444ee418f129b2c238299f49d3264554Jarkko Poyryinclude_directories(
1803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	framework/common
1813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	framework/qphelper
1823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	framework/opengl
1833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	framework/opengl/wrapper
1843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	framework/referencerenderer
1853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	framework/opengl/simplereference
1863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	framework/randomshaders
1873c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos	framework/egl
1883c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos	framework/egl/wrapper
1893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	)
1903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1913c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DE_OS_IS_ANDROID OR DE_OS_IS_IOS)
1923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	# On Android deqp modules are compiled as libraries and linked into final .so
1933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	set(DEQP_MODULE_LIBRARIES )
1943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	set(DEQP_MODULE_ENTRY_POINTS )
1953c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif ()
1963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1973c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DE_OS_IS_WIN32)
1983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	include_directories(framework/platform/win32)
1993c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif ()
2003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Macro for adding targets for copying binaries (usually target libraries) to the target destination dir
2023c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymacro (target_copy_files target dep_name files)
2033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	if (NOT "${files}" STREQUAL "")
2043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		set(COPY_TARGETS )
2053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		foreach (SRCNAME ${files})
2063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			get_filename_component(BASENAME ${SRCNAME} NAME)
2073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			set(DSTNAME "${CMAKE_CURRENT_BINARY_DIR}/${BASENAME}")
2083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			add_custom_command(OUTPUT ${DSTNAME}
2093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							   COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SRCNAME} ${DSTNAME})
2103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			set(COPY_TARGETS ${COPY_TARGETS} ${DSTNAME})
2113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		endforeach ()
2123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		add_custom_target(${dep_name} ALL DEPENDS ${COPY_TARGETS})
2143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		add_dependencies(${target} ${dep_name})
2153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	endif ()
2163c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendmacro (target_copy_files)
2173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Macro for adding dEQP module
2193c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymacro (add_deqp_module MODULE_NAME SRCS LIBS ENTRY)
2203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	if (DE_OS_IS_ANDROID OR DE_OS_IS_IOS)
2213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		# Single-binary targets
2223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		add_library(${MODULE_NAME} STATIC ${SRCS})
2233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		target_link_libraries(${MODULE_NAME} ${LIBS})
2243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		set(DEQP_MODULE_LIBRARIES		${DEQP_MODULE_LIBRARIES} ${MODULE_NAME})
2263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		set(DEQP_MODULE_ENTRY_POINTS	${DEQP_MODULE_ENTRY_POINTS} "${CMAKE_CURRENT_SOURCE_DIR}/${ENTRY}")
2273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		# Forward to parent scope
2293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		set(DEQP_MODULE_LIBRARIES		${DEQP_MODULE_LIBRARIES} PARENT_SCOPE)
2303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		set(DEQP_MODULE_ENTRY_POINTS	${DEQP_MODULE_ENTRY_POINTS} PARENT_SCOPE)
2313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	else ()
2333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		# Separate binary per target
2343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		add_executable(${MODULE_NAME} ${CMAKE_SOURCE_DIR}/framework/platform/tcuMain.cpp ${ENTRY} ${SRCS})
2353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		target_link_libraries(${MODULE_NAME} tcutil-platform ${LIBS})
2363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		target_copy_files(${MODULE_NAME} platform-libs-${MODULE_NAME} "${DEQP_PLATFORM_COPY_LIBRARIES}")
2373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	endif ()
2383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	# Data file target
2403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	add_custom_target(${MODULE_NAME}-data)
2413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	add_dependencies(${MODULE_NAME} ${MODULE_NAME}-data)
2423c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendmacro (add_deqp_module)
2433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Macro for adding data dirs to module
2453c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymacro (add_data_dir MODULE_NAME SRC_DIR DST_DIR)
2463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	if (DE_OS_IS_WIN32 OR DE_OS_IS_UNIX OR DE_OS_IS_OSX)
2473c827367444ee418f129b2c238299f49d3264554Jarkko 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})
2483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	elseif (DE_OS_IS_ANDROID)
2503c827367444ee418f129b2c238299f49d3264554Jarkko 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})
2513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	elseif (DE_OS_IS_IOS)
2533c827367444ee418f129b2c238299f49d3264554Jarkko 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})
2543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	endif ()
2553c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendmacro (add_data_dir)
2563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Macro for adding individual data files to module
2583c827367444ee418f129b2c238299f49d3264554Jarkko Poyrymacro (add_data_file MODULE_NAME SRC_FILE DST_FILE)
2593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	if (DE_OS_IS_WIN32 OR DE_OS_IS_UNIX OR DE_OS_IS_OSX)
2603c827367444ee418f129b2c238299f49d3264554Jarkko 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})
2613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	elseif (DE_OS_IS_ANDROID)
2633c827367444ee418f129b2c238299f49d3264554Jarkko 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})
2643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	elseif (DE_OS_IS_IOS)
2663c827367444ee418f129b2c238299f49d3264554Jarkko 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})
2673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	endif ()
2683c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendmacro (add_data_file)
2693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2703c827367444ee418f129b2c238299f49d3264554Jarkko Poyryadd_subdirectory(framework)
2713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2723c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DE_COMPILER_IS_MSC)
2733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	add_compile_options(/bigobj) # Required by glsBuiltinPrecisionTests.cpp
2743c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif ()
2753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2763c827367444ee418f129b2c238299f49d3264554Jarkko Poyryadd_subdirectory(modules)
2773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry# Single-binary targets
2793c827367444ee418f129b2c238299f49d3264554Jarkko Poyryif (DE_OS_IS_ANDROID)
2803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	include_directories(executor)
2813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
282bf44c5c30440b0c7a8c7c87f2b7c3ff984e77018Jarkko Pöyry	add_library(deqp SHARED framework/platform/android/tcuAndroidMain.cpp framework/platform/android/tcuAndroidJNI.cpp framework/platform/android/tcuAndroidPlatformCapabilityQueryJNI.cpp framework/platform/android/tcuTestLogParserJNI.cpp ${DEQP_MODULE_ENTRY_POINTS})
28303700a8505debaeae47e63e156ec15350398ce83Pyry Haulos	target_link_libraries(deqp tcutil-platform xecore ${DEQP_MODULE_LIBRARIES})
2843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2853c827367444ee418f129b2c238299f49d3264554Jarkko Poyryelseif (DE_OS_IS_IOS)
2863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	# Code sign identity
2873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	set(DEQP_IOS_CODE_SIGN_IDENTITY "drawElements" CACHE STRING "Code sign identity for iOS build")
2883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	set(MACOSX_BUNDLE_PRODUCT_NAME "\${PRODUCT_NAME}")
2903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.drawelements.\${PRODUCT_NAME:identifier}")
2913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	include_directories(framework/platform/ios)
2933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	set(TESTERCORE_SRC_FILES
2943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		framework/platform/ios/tcuEAGLView.h
2953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		framework/platform/ios/tcuEAGLView.m
2963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		framework/platform/ios/tcuIOSAppDelegate.h
2973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		framework/platform/ios/tcuIOSAppDelegate.m
2983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		framework/platform/ios/tcuIOSViewController.h
2993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		framework/platform/ios/tcuIOSViewController.m
3003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		framework/platform/ios/tcuIOSMain.m
3013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		)
3023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	set_source_files_properties(${TESTERCORE_SRC_FILES} COMPILE_FLAGS "-std=c99")
3033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	add_executable(deqp MACOSX_BUNDLE ${TESTERCORE_SRC_FILES} ${DEQP_MODULE_ENTRY_POINTS})
3053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	target_link_libraries(deqp tcutil-platform xscore ${DEQP_MODULE_LIBRARIES})
3063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	set_target_properties(deqp PROPERTIES XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2")
3073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	set_target_properties(deqp PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer: ${DEQP_IOS_CODE_SIGN_IDENTITY}")
3083c827367444ee418f129b2c238299f49d3264554Jarkko Poyryendif ()
309