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 win32/tcuWin32EGLNativeDisplayFactory.hpp 17 win32/tcuWin32EGLNativeDisplayFactory.cpp 18 win32/tcuWin32VulkanPlatform.hpp 19 win32/tcuWin32VulkanPlatform.cpp 20 ) 21 22 elseif ((DE_OS_IS_UNIX OR DE_OS_IS_OSX) AND (DEQP_USE_X11 OR DEQP_USE_WAYLAND OR DEQP_USE_HEADLESS)) 23 24 set(TCUTIL_PLATFORM_SRCS 25 lnx/tcuLnx.cpp 26 lnx/tcuLnx.hpp 27 lnx/tcuLnxPlatform.cpp 28 lnx/tcuLnxPlatform.hpp 29 lnx/tcuLnxEglPlatform.hpp 30 lnx/tcuLnxEglPlatform.cpp 31 lnx/tcuLnxVulkanPlatform.hpp 32 lnx/tcuLnxVulkanPlatform.cpp 33 ) 34 35 include_directories(lnx) 36 37 if (DEQP_USE_X11) 38 add_definitions(-DDEQP_SUPPORT_X11=1) 39 include_directories(lnx/X11) 40 41 message(STATUS "DEQP_SUPPORT_GLX = ${DEQP_SUPPORT_GLX}") 42 43 if (DEQP_SUPPORT_GLX) 44 add_definitions(-DDEQP_SUPPORT_GLX=1) 45 endif () 46 47 set(TCUTIL_PLATFORM_SRCS 48 ${TCUTIL_PLATFORM_SRCS} 49 lnx/X11/tcuLnxX11.cpp 50 lnx/X11/tcuLnxX11.hpp 51 lnx/X11/tcuLnxX11EglDisplayFactory.hpp 52 lnx/X11/tcuLnxX11EglDisplayFactory.cpp 53 ) 54 55 if (DEQP_USE_XCB) 56 set(TCUTIL_PLATFORM_SRCS 57 ${TCUTIL_PLATFORM_SRCS} 58 lnx/X11/tcuLnxX11Xcb.hpp 59 lnx/X11/tcuLnxX11Xcb.cpp 60 ) 61 endif() 62 63 if (DEQP_SUPPORT_GLX) 64 set(TCUTIL_PLATFORM_SRCS 65 ${TCUTIL_PLATFORM_SRCS} 66 lnx/X11/tcuLnxX11GlxPlatform.hpp 67 lnx/X11/tcuLnxX11GlxPlatform.cpp 68 ) 69 endif() 70 endif() 71 72 if (DEQP_USE_WAYLAND) 73 add_definitions(-DDEQP_SUPPORT_WAYLAND=1) 74 include_directories(lnx/wayland) 75 76 set(DEQP_XDG_SHELL_GEN_OUTPUTS_DIR ${PROJECT_BINARY_DIR}/framework/platform) 77 set(DEQP_XDG_SHELL_OUTPUTS 78 ${DEQP_XDG_SHELL_GEN_OUTPUTS_DIR}/xdg-shell.c 79 ${DEQP_XDG_SHELL_GEN_OUTPUTS_DIR}/xdg-shell.h) 80 81 if (WAYLAND_XDG_SHELL_SRC_DIR) 82 # Allow xdg-shell.c and xdg-shell.h to be source files specified in an external directory 83 configure_file(${WAYLAND_XDG_SHELL_SRC_DIR}/xdg-shell.c ${DEQP_XDG_SHELL_GEN_OUTPUTS_DIR}/xdg-shell.c COPYONLY) 84 configure_file(${WAYLAND_XDG_SHELL_SRC_DIR}/xdg-shell.h ${DEQP_XDG_SHELL_GEN_OUTPUTS_DIR}/xdg-shell.h COPYONLY) 85 else () 86 pkg_get_variable(WAYLAND_PROTOCOLS_DIR wayland-protocols pkgdatadir) 87 88 if (NOT WAYLAND_SCANNER) 89 pkg_get_variable(WAYLAND_SCANNER wayland-scanner wayland_scanner) 90 endif() 91 92 set(DEQP_XDG_SHELL_PROTOCOL ${WAYLAND_PROTOCOLS_DIR}/stable/xdg-shell/xdg-shell.xml) 93 add_custom_command( 94 COMMAND ${WAYLAND_SCANNER} ARGS client-header ${DEQP_XDG_SHELL_PROTOCOL} xdg-shell.h 95 COMMAND ${WAYLAND_SCANNER} ARGS public-code ${DEQP_XDG_SHELL_PROTOCOL} xdg-shell.c 96 DEPENDS ${DEQP_XDG_SHELL_PROTOCOL} 97 OUTPUT ${DEQP_XDG_SHELL_OUTPUTS}) 98 endif() 99 100 add_custom_target( 101 deqp-xdg-shell ALL 102 DEPENDS ${DEQP_XDG_SHELL_OUTPUTS}) 103 104 set(TCUTIL_PLATFORM_SRCS 105 ${TCUTIL_PLATFORM_SRCS} 106 lnx/wayland/tcuLnxWayland.hpp 107 lnx/wayland/tcuLnxWayland.cpp 108 lnx/wayland/tcuLnxWaylandEglDisplayFactory.cpp 109 lnx/wayland/tcuLnxWaylandEglDisplayFactory.hpp 110 ${DEQP_XDG_SHELL_GEN_OUTPUTS_DIR}/xdg-shell.c 111 ${DEQP_XDG_SHELL_GEN_OUTPUTS_DIR}/xdg-shell.h 112 ) 113 include_directories(${DEQP_XDG_SHELL_GEN_OUTPUTS_DIR}) 114 include_directories(wayland) 115 endif() 116 117 if (DEQP_USE_HEADLESS) 118 add_definitions(-DDEQP_SUPPORT_HEADLESS=1) 119 endif() 120 121 elseif (DE_OS_IS_UNIX AND DEQP_USE_SURFACELESS) 122 add_definitions(-DDEQP_SURFACELESS=1) 123 set(TCUTIL_PLATFORM_SRCS 124 surfaceless/tcuSurfacelessPlatform.hpp 125 surfaceless/tcuSurfacelessPlatform.cpp 126 ) 127 128 elseif (DE_OS_IS_ANDROID) 129 set(TCUTIL_PLATFORM_SRCS 130 android/tcuAndroidExecService.cpp 131 android/tcuAndroidExecService.hpp 132 ) 133 134 if (DE_ANDROID_API GREATER 8) 135 # Add NativeActivity code 136 set(TCUTIL_PLATFORM_SRCS 137 ${TCUTIL_PLATFORM_SRCS} 138 android/tcuAndroidAssets.cpp 139 android/tcuAndroidAssets.hpp 140 android/tcuAndroidNativeActivity.cpp 141 android/tcuAndroidNativeActivity.hpp 142 android/tcuAndroidPlatform.cpp 143 android/tcuAndroidPlatform.hpp 144 android/tcuAndroidRenderActivity.cpp 145 android/tcuAndroidRenderActivity.hpp 146 android/tcuAndroidTestActivity.cpp 147 android/tcuAndroidTestActivity.hpp 148 android/tcuAndroidUtil.cpp 149 android/tcuAndroidUtil.hpp 150 android/tcuAndroidWindow.cpp 151 android/tcuAndroidWindow.hpp 152 ) 153 endif () 154 155 elseif (DE_OS_IS_IOS) 156 set(TCUTIL_PLATFORM_SRCS 157 ios/tcuIOSApp.mm 158 ios/tcuIOSApp.h 159 ios/tcuIOSPlatform.mm 160 ios/tcuIOSPlatform.hh 161 ) 162 163 elseif (DE_OS_IS_OSX) 164 set(TCUTIL_PLATFORM_SRCS 165 osx/tcuOSXPlatform.cpp 166 osx/tcuOSXPlatform.hpp 167 osx/tcuOSXVulkanPlatform.cpp 168 osx/tcuOSXVulkanPlatform.hpp 169 osx/tcuOSXMetalView.mm 170 osx/tcuOSXMetalView.hpp 171 ) 172 list(APPEND TCUTIL_PLATFORM_LIBS ${QUARTZCORE_LIBRARY} ${COCOA_LIBRARY}) 173 174 elseif (DE_OS_IS_FUCHSIA) 175 set(TCUTIL_PLATFORM_SRCS 176 fuchsia/tcuFuchsiaPlatform.cpp 177 ) 178 179 else () 180 set(TCUTIL_PLATFORM_SRCS 181 vanilla/tcuVanillaPlatform.cpp 182 ) 183 184 endif () 185endif () 186 187include_directories(${PROJECT_BINARY_DIR}/external/vulkancts/framework/vulkan) 188 189add_library(tcutil-platform STATIC ${TCUTIL_PLATFORM_SRCS}) 190if (DEQP_USE_WAYLAND) 191 add_dependencies(tcutil-platform deqp-xdg-shell) 192endif() 193 194# Add vkutil to the deps before tcutil so that it picks up the c++11 dependencies 195target_link_libraries(tcutil-platform vkutil) 196 197target_link_libraries(tcutil-platform tcutil ${TCUTIL_PLATFORM_LIBS}) 198 199# Always link to glutil as some platforms such as Win32 always support GL 200target_link_libraries(tcutil-platform glutil) 201 202# Always link to eglutil 203target_link_libraries(tcutil-platform eglutil) 204 205# X11 libraries 206if (DEQP_USE_X11) 207 find_package(X11 REQUIRED) 208 target_link_libraries(tcutil-platform ${X11_LIBRARIES}) 209 if (DEQP_USE_XCB) 210 find_package(XCB REQUIRED) 211 target_link_libraries(tcutil-platform ${XCB_LIBRARIES}) 212 target_compile_definitions(tcutil-platform PUBLIC DEQP_SUPPORT_XCB=1) 213 endif () 214 if (DEQP_SUPPORT_GLX) 215 # GLX functions don't currently have wrappers, so link directly to libGL. 216 target_link_libraries(tcutil-platform GL) 217 endif () 218 if (DEQP_USE_WAYLAND) 219 find_package(Wayland REQUIRED) 220 target_link_libraries(tcutil-platform ${WAYLAND_LIBRARIES}) 221 target_compile_definitions(tcutil-platform PUBLIC DEQP_SUPPORT_WAYLAND=1) 222 endif () 223endif () 224 225if (DE_OS_IS_WIN32) 226 target_link_libraries(tcutil-platform "version") 227endif() 228 229# Add similar library for Vulkan SC ( uses same code as vkutil, but with different INL files. These 230# are picked up via the version of vkutil that is linked against ) 231add_library(tcutil-sc-platform STATIC ${TCUTIL_PLATFORM_SRCS}) 232 233# Add vkscutil to the deps before tcutil so that it picks up the c++11 dependencies 234target_link_libraries(tcutil-sc-platform vkscutil) 235 236target_link_libraries(tcutil-sc-platform tcutil ${TCUTIL_PLATFORM_LIBS}) 237 238# Always link to glutil as some platforms such as Win32 always support GL 239target_link_libraries(tcutil-sc-platform glutil) 240 241# Always link to eglutil 242target_link_libraries(tcutil-sc-platform eglutil) 243 244# X11 libraries 245if (DEQP_USE_X11) 246 find_package(X11 REQUIRED) 247 target_link_libraries(tcutil-sc-platform ${X11_LIBRARIES}) 248 if (DEQP_USE_XCB) 249 find_package(XCB REQUIRED) 250 target_link_libraries(tcutil-sc-platform ${XCB_LIBRARIES}) 251 target_compile_definitions(tcutil-sc-platform PUBLIC DEQP_SUPPORT_XCB=1) 252 endif () 253 if (DEQP_SUPPORT_GLX) 254 # GLX functions don't currently have wrappers, so link directly to libGL. 255 target_link_libraries(tcutil-sc-platform GL) 256 endif () 257 if (DEQP_USE_WAYLAND) 258 find_package(Wayland REQUIRED) 259 target_link_libraries(tcutil-sc-platform ${WAYLAND_LIBRARIES}) 260 target_compile_definitions(tcutil-sc-platform PUBLIC DEQP_SUPPORT_WAYLAND=1) 261 endif () 262endif () 263 264if (DE_OS_IS_WIN32) 265 target_link_libraries(tcutil-sc-platform "version") 266endif() 267