blob: ea4ba239b1874b5186e46d8365817ab5221f5d6a [file] [log] [blame]
# Platform port library
# Target file may define TCUTIL_PLATFORM_SRCS
if (NOT DEFINED TCUTIL_PLATFORM_SRCS)
if (DE_OS_IS_WIN32)
set(TCUTIL_PLATFORM_SRCS
win32/tcuWin32Platform.hpp
win32/tcuWin32Platform.cpp
win32/tcuWGLContextFactory.hpp
win32/tcuWGLContextFactory.cpp
win32/tcuWGL.hpp
win32/tcuWGL.cpp
win32/tcuWin32API.h
win32/tcuWin32Window.cpp
win32/tcuWin32Window.hpp
win32/tcuWin32EGLNativeDisplayFactory.hpp
win32/tcuWin32EGLNativeDisplayFactory.cpp
win32/tcuWin32VulkanPlatform.hpp
win32/tcuWin32VulkanPlatform.cpp
)
elseif ((DE_OS_IS_UNIX OR DE_OS_IS_OSX) AND (DEQP_USE_X11 OR DEQP_USE_WAYLAND OR DEQP_USE_HEADLESS))
set(TCUTIL_PLATFORM_SRCS
lnx/tcuLnx.cpp
lnx/tcuLnx.hpp
lnx/tcuLnxPlatform.cpp
lnx/tcuLnxPlatform.hpp
lnx/tcuLnxEglPlatform.hpp
lnx/tcuLnxEglPlatform.cpp
lnx/tcuLnxVulkanPlatform.hpp
lnx/tcuLnxVulkanPlatform.cpp
)
include_directories(lnx)
if (DEQP_USE_X11)
add_definitions(-DDEQP_SUPPORT_X11=1)
include_directories(lnx/X11)
message(STATUS "DEQP_SUPPORT_GLX = ${DEQP_SUPPORT_GLX}")
if (DEQP_SUPPORT_GLX)
add_definitions(-DDEQP_SUPPORT_GLX=1)
endif ()
set(TCUTIL_PLATFORM_SRCS
${TCUTIL_PLATFORM_SRCS}
lnx/X11/tcuLnxX11.cpp
lnx/X11/tcuLnxX11.hpp
lnx/X11/tcuLnxX11EglDisplayFactory.hpp
lnx/X11/tcuLnxX11EglDisplayFactory.cpp
)
if (DEQP_USE_XCB)
set(TCUTIL_PLATFORM_SRCS
${TCUTIL_PLATFORM_SRCS}
lnx/X11/tcuLnxX11Xcb.hpp
lnx/X11/tcuLnxX11Xcb.cpp
)
endif()
if (DEQP_SUPPORT_GLX)
set(TCUTIL_PLATFORM_SRCS
${TCUTIL_PLATFORM_SRCS}
lnx/X11/tcuLnxX11GlxPlatform.hpp
lnx/X11/tcuLnxX11GlxPlatform.cpp
)
endif()
endif()
if (DEQP_USE_WAYLAND)
add_definitions(-DDEQP_SUPPORT_WAYLAND=1)
include_directories(lnx/wayland)
pkg_get_variable(WAYLAND_PROTOCOLS_DIR wayland-protocols pkgdatadir)
pkg_get_variable(WAYLAND_SCANNER wayland-scanner wayland_scanner)
set(DEQP_XDG_SHELL_PROTOCOL ${WAYLAND_PROTOCOLS_DIR}/stable/xdg-shell/xdg-shell.xml)
set(DEQP_XDG_SHELL_GEN_OUTPUTS_DIR ${PROJECT_BINARY_DIR}/framework/platform)
set(DEQP_XDG_SHELL_OUTPUTS
${DEQP_XDG_SHELL_GEN_OUTPUTS_DIR}/xdg-shell.c
${DEQP_XDG_SHELL_GEN_OUTPUTS_DIR}/xdg-shell.h)
add_custom_command(
COMMAND ${WAYLAND_SCANNER} ARGS client-header ${DEQP_XDG_SHELL_PROTOCOL} xdg-shell.h
COMMAND ${WAYLAND_SCANNER} ARGS public-code ${DEQP_XDG_SHELL_PROTOCOL} xdg-shell.c
DEPENDS ${DEQP_XDG_SHELL_PROTOCOL}
OUTPUT ${DEQP_XDG_SHELL_OUTPUTS})
add_custom_target(
deqp-xdg-shell ALL
DEPENDS ${DEQP_XDG_SHELL_OUTPUTS})
set(TCUTIL_PLATFORM_SRCS
${TCUTIL_PLATFORM_SRCS}
lnx/wayland/tcuLnxWayland.hpp
lnx/wayland/tcuLnxWayland.cpp
lnx/wayland/tcuLnxWaylandEglDisplayFactory.cpp
lnx/wayland/tcuLnxWaylandEglDisplayFactory.hpp
${DEQP_XDG_SHELL_GEN_OUTPUTS_DIR}/xdg-shell.c
${DEQP_XDG_SHELL_GEN_OUTPUTS_DIR}/xdg-shell.h
)
include_directories(${DEQP_XDG_SHELL_GEN_OUTPUTS_DIR})
include_directories(wayland)
endif()
if (DEQP_USE_HEADLESS)
add_definitions(-DDEQP_SUPPORT_HEADLESS=1)
endif()
elseif (DE_OS_IS_UNIX AND DEQP_USE_SURFACELESS)
set(TCUTIL_PLATFORM_SRCS
surfaceless/tcuSurfacelessPlatform.hpp
surfaceless/tcuSurfacelessPlatform.cpp
)
elseif (DE_OS_IS_ANDROID)
set(TCUTIL_PLATFORM_SRCS
android/tcuAndroidExecService.cpp
android/tcuAndroidExecService.hpp
)
if (DE_ANDROID_API GREATER 8)
# Add NativeActivity code
set(TCUTIL_PLATFORM_SRCS
${TCUTIL_PLATFORM_SRCS}
android/tcuAndroidAssets.cpp
android/tcuAndroidAssets.hpp
android/tcuAndroidNativeActivity.cpp
android/tcuAndroidNativeActivity.hpp
android/tcuAndroidPlatform.cpp
android/tcuAndroidPlatform.hpp
android/tcuAndroidRenderActivity.cpp
android/tcuAndroidRenderActivity.hpp
android/tcuAndroidTestActivity.cpp
android/tcuAndroidTestActivity.hpp
android/tcuAndroidUtil.cpp
android/tcuAndroidUtil.hpp
android/tcuAndroidWindow.cpp
android/tcuAndroidWindow.hpp
)
endif ()
elseif (DE_OS_IS_IOS)
set(TCUTIL_PLATFORM_SRCS
ios/tcuIOSApp.mm
ios/tcuIOSApp.h
ios/tcuIOSPlatform.mm
ios/tcuIOSPlatform.hh
)
elseif (DE_OS_IS_OSX)
set(TCUTIL_PLATFORM_SRCS
osx/tcuOSXPlatform.cpp
osx/tcuOSXPlatform.hpp
osx/tcuOSXVulkanPlatform.cpp
osx/tcuOSXVulkanPlatform.hpp
osx/tcuOSXMetalView.mm
osx/tcuOSXMetalView.hpp
)
list(APPEND TCUTIL_PLATFORM_LIBS ${QUARTZCORE_LIBRARY} ${COCOA_LIBRARY})
else ()
set(TCUTIL_PLATFORM_SRCS
vanilla/tcuVanillaPlatform.cpp
)
endif ()
endif ()
include_directories(${PROJECT_BINARY_DIR}/external/vulkancts/framework/vulkan)
add_library(tcutil-platform STATIC ${TCUTIL_PLATFORM_SRCS})
if (DEQP_USE_WAYLAND)
add_dependencies(tcutil-platform deqp-xdg-shell)
endif()
# Add vkutil to the deps before tcutil so that it picks up the c++11 dependencies
target_link_libraries(tcutil-platform vkutil)
target_link_libraries(tcutil-platform tcutil ${TCUTIL_PLATFORM_LIBS})
# Always link to glutil as some platforms such as Win32 always support GL
target_link_libraries(tcutil-platform glutil)
# Always link to eglutil
target_link_libraries(tcutil-platform eglutil)
# X11 libraries
if (DEQP_USE_X11)
find_package(X11 REQUIRED)
target_link_libraries(tcutil-platform ${X11_LIBRARIES})
if (DEQP_USE_XCB)
find_package(XCB REQUIRED)
target_link_libraries(tcutil-platform ${XCB_LIBRARIES})
add_definitions(-DDEQP_SUPPORT_XCB=1)
endif ()
if (DEQP_SUPPORT_GLX)
# GLX functions don't currently have wrappers, so link directly to libGL.
target_link_libraries(tcutil-platform GL)
endif ()
if (DEQP_USE_WAYLAND)
find_package(Wayland REQUIRED)
target_link_libraries(tcutil-platform ${WAYLAND_LIBRARIES})
add_definitions(-DDEQP_SUPPORT_WAYLAND=1)
endif ()
endif ()
if (DE_OS_IS_WIN32)
target_link_libraries(tcutil-platform "version")
endif()