1# Platform port library
2
3# Target file may define TCUTIL_PLATFORM_SRCS
4if (NOT DEFINED TCUTIL_PLATFORM_SRCS)
5	if (DE_OS_IS_WIN32)
6			set(TCUTIL_PLATFORM_SRCS
7				win32/tcuWin32Platform.hpp
8				win32/tcuWin32Platform.cpp
9				win32/tcuWGLContextFactory.hpp
10				win32/tcuWGLContextFactory.cpp
11				win32/tcuWGL.hpp
12				win32/tcuWGL.cpp
13				win32/tcuWin32API.h
14				win32/tcuWin32Window.cpp
15				win32/tcuWin32Window.hpp
16			)
17
18		if (DEQP_SUPPORT_EGL)
19			set(TCUTIL_PLATFORM_SRCS
20				${TCUTIL_PLATFORM_SRCS}
21				win32/tcuWin32EGLNativeDisplayFactory.hpp
22				win32/tcuWin32EGLNativeDisplayFactory.cpp
23				)
24		endif()
25	elseif ((DE_OS_IS_UNIX OR DE_OS_IS_OSX) AND DEQP_USE_X11)
26		set(TCUTIL_PLATFORM_SRCS
27			X11/tcuX11.cpp
28			X11/tcuX11.hpp
29			X11/tcuX11Platform.hpp
30			X11/tcuX11Platform.cpp
31			)
32		if (DEQP_SUPPORT_EGL)
33			set(TCUTIL_PLATFORM_SRCS
34				${TCUTIL_PLATFORM_SRCS}
35				X11/tcuX11EglPlatform.hpp
36				X11/tcuX11EglPlatform.cpp
37				)
38		endif()
39		if (DEQP_SUPPORT_GLX)
40			set(TCUTIL_PLATFORM_SRCS
41				${TCUTIL_PLATFORM_SRCS}
42				X11/tcuX11GlxPlatform.hpp
43				X11/tcuX11GlxPlatform.cpp
44				)
45		endif()
46		if (NOT (DEQP_SUPPORT_EGL OR DEQP_SUPPORT_GLX))
47		  message(FATAL_ERROR "At least one of EGL and GLX must be enabled for X11")
48		endif ()
49	elseif (DE_OS_IS_ANDROID)
50		set(TCUTIL_PLATFORM_SRCS
51			android/tcuAndroidExecService.cpp
52			android/tcuAndroidExecService.hpp
53			)
54
55		if (DE_ANDROID_API GREATER 8)
56			# Add NativeActivity code
57			set(TCUTIL_PLATFORM_SRCS
58				${TCUTIL_PLATFORM_SRCS}
59				android/tcuAndroidAssets.cpp
60				android/tcuAndroidAssets.hpp
61				android/tcuAndroidNativeActivity.cpp
62				android/tcuAndroidNativeActivity.hpp
63				android/tcuAndroidPlatform.cpp
64				android/tcuAndroidPlatform.hpp
65				android/tcuAndroidRenderActivity.cpp
66				android/tcuAndroidRenderActivity.hpp
67				android/tcuAndroidTestActivity.cpp
68				android/tcuAndroidTestActivity.hpp
69				android/tcuAndroidUtil.cpp
70				android/tcuAndroidUtil.hpp
71				android/tcuAndroidWindow.cpp
72				android/tcuAndroidWindow.hpp
73				)
74		endif ()
75
76	elseif (DE_OS_IS_IOS)
77		set(TCUTIL_PLATFORM_SRCS
78			ios/tcuIOSApp.mm
79			ios/tcuIOSApp.h
80			ios/tcuIOSPlatform.mm
81			ios/tcuIOSPlatform.hh
82			)
83
84	elseif (DE_OS_IS_OSX)
85		set(TCUTIL_PLATFORM_SRCS
86			osx/tcuOSXPlatform.cpp
87			osx/tcuOSXPlatform.hpp
88			)
89
90	else ()
91		set(TCUTIL_PLATFORM_SRCS
92			vanilla/tcuVanillaPlatform.cpp
93			)
94
95	endif ()
96endif ()
97
98add_library(tcutil-platform STATIC ${TCUTIL_PLATFORM_SRCS})
99target_link_libraries(tcutil-platform tcutil ${TCUTIL_PLATFORM_LIBS})
100
101# Always link to glutil as some platforms such as Win32 always support GL
102target_link_libraries(tcutil-platform glutil)
103
104# Link to eglutil if platform supports EGL
105if (DEQP_SUPPORT_EGL)
106	target_link_libraries(tcutil-platform eglutil)
107endif ()
108
109# X11 libraries
110if (DEQP_USE_X11)
111	find_package(X11 REQUIRED)
112	target_link_libraries(tcutil-platform ${X11_LIBRARIES})
113	if (DEQP_SUPPORT_GLX)
114	  # GLX functions don't currently have wrappers, so link directly to libGL.
115	  target_link_libraries(tcutil-platform GL)
116	endif ()
117endif ()
118