CMakeLists.txt revision 03700a8505debaeae47e63e156ec15350398ce83
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
32303700a8505debaeae47e63e156ec15350398ce83Pyry Haulos	add_library(deqp SHARED framework/platform/android/tcuAndroidMain.cpp framework/platform/android/tcuAndroidJNI.cpp framework/platform/android/tcuTestLogParserJNI.cpp ${DEQP_MODULE_ENTRY_POINTS})
32403700a8505debaeae47e63e156ec15350398ce83Pyry Haulos	target_link_libraries(deqp 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