Skip to content

Commit 335daa4

Browse files
committed
build: Build loader, api-layers with all available platforms
Signed-off-by: Ryan Pavlik <[email protected]>
1 parent 93e952b commit 335daa4

File tree

4 files changed

+49
-0
lines changed

4 files changed

+49
-0
lines changed

src/CMakeLists.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,19 @@ elseif( PRESENTATION_BACKEND MATCHES "wayland" )
109109
set(BUILD_CONFORMANCE_TESTS OFF)
110110
endif()
111111

112+
add_library(openxr-all-supported INTERFACE)
113+
if(BUILD_WITH_XLIB_HEADERS)
114+
target_compile_definitions(openxr-all-supported INTERFACE XR_USE_PLATFORM_XLIB)
115+
endif()
116+
117+
if(BUILD_WITH_XCB_HEADERS)
118+
target_compile_definitions(openxr-all-supported INTERFACE XR_USE_PLATFORM_XCB)
119+
endif()
120+
121+
if(BUILD_WITH_WAYLAND_HEADERS)
122+
target_compile_definitions(openxr-all-supported INTERFACE XR_USE_PLATFORM_WAYLAND)
123+
endif()
124+
112125
# Find glslc shader compiler.
113126
# On Android, the NDK includes the binary, so no external dependency.
114127
if(ANDROID)

src/api_layers/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ add_library(XrApiLayer_api_dump SHARED
6666
)
6767
set_target_properties(XrApiLayer_api_dump PROPERTIES FOLDER ${API_LAYERS_FOLDER})
6868

69+
target_link_libraries(XrApiLayer_api_dump PRIVATE openxr-all-supported)
6970
add_dependencies(XrApiLayer_api_dump
7071
generate_openxr_header
7172
xr_global_generated_files
@@ -128,6 +129,7 @@ add_library(XrApiLayer_core_validation SHARED
128129
)
129130
set_target_properties(XrApiLayer_core_validation PROPERTIES FOLDER ${API_LAYERS_FOLDER})
130131

132+
target_link_libraries(XrApiLayer_core_validation PRIVATE openxr-all-supported)
131133
add_dependencies(XrApiLayer_core_validation
132134
generate_openxr_header
133135
xr_global_generated_files

src/cmake/presentation.cmake

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,29 @@ if(PKG_CONFIG_FOUND)
2222
pkg_search_module(WAYLAND_CLIENT wayland-client)
2323
endif()
2424

25+
include(CMakeDependentOption)
26+
cmake_dependent_option(
27+
BUILD_WITH_XLIB_HEADERS "Build with support for X11/Xlib-related features." ON "X11_FOUND" OFF
28+
)
29+
cmake_dependent_option(
30+
BUILD_WITH_XCB_HEADERS "Build with support for XCB-related features." ON "X11_FOUND AND XCB_FOUND" OFF
31+
)
32+
cmake_dependent_option(
33+
BUILD_WITH_WAYLAND_HEADERS "Build with support for Wayland-related features." ON "WAYLAND_CLIENT_FOUND"
34+
OFF
35+
)
36+
37+
message(STATUS "BUILD_WITH_XLIB_HEADERS: ${BUILD_WITH_XLIB_HEADERS}")
38+
message(STATUS "BUILD_WITH_XCB_HEADERS: ${BUILD_WITH_XCB_HEADERS}")
39+
message(STATUS "BUILD_WITH_WAYLAND_HEADERS: ${BUILD_WITH_WAYLAND_HEADERS}")
2540

2641
if(PRESENTATION_BACKEND MATCHES "xlib")
42+
if(NOT BUILD_WITH_XLIB_HEADERS)
43+
message(
44+
FATAL_ERROR
45+
"xlib backend selected, but BUILD_WITH_XLIB_HEADERS either disabled or unavailable due to missing dependencies."
46+
)
47+
endif()
2748
if(BUILD_TESTS AND (NOT X11_Xxf86vm_LIB OR NOT X11_Xrandr_LIB))
2849
message(FATAL_ERROR "OpenXR tests using xlib backend requires Xxf86vm and Xrandr")
2950
endif()
@@ -41,6 +62,12 @@ if(PRESENTATION_BACKEND MATCHES "xlib")
4162
endif()
4263
endif()
4364
elseif(PRESENTATION_BACKEND MATCHES "xcb")
65+
if(NOT BUILD_WITH_XCB_HEADERS)
66+
message(
67+
FATAL_ERROR
68+
"xcb backend selected, but BUILD_WITH_XCB_HEADERS either disabled or unavailable due to missing dependencies."
69+
)
70+
endif()
4471
pkg_search_module(XCB_RANDR REQUIRED xcb-randr)
4572
pkg_search_module(XCB_KEYSYMS REQUIRED xcb-keysyms)
4673
pkg_search_module(XCB_GLX REQUIRED xcb-glx)
@@ -56,6 +83,12 @@ elseif(PRESENTATION_BACKEND MATCHES "xcb")
5683
target_link_libraries(openxr-gfxwrapper PRIVATE ${X11_X11_LIB} ${XCB_KEYSYMS_LIBRARIES} ${XCB_RANDR_LIBRARIES})
5784
endif()
5885
elseif(PRESENTATION_BACKEND MATCHES "wayland")
86+
if(NOT BUILD_WITH_WAYLAND_HEADERS)
87+
message(
88+
FATAL_ERROR
89+
"wayland backend selected, but BUILD_WITH_WAYLAND_HEADERS either disabled or unavailable due to missing dependencies."
90+
)
91+
endif()
5992

6093
pkg_search_module(WAYLAND_EGL REQUIRED wayland-egl)
6194
pkg_search_module(WAYLAND_SCANNER REQUIRED wayland-scanner)

src/loader/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ if(NOT BUILD_LOADER_WITH_EXCEPTION_HANDLING)
131131
PRIVATE XRLOADER_DISABLE_EXCEPTION_HANDLING
132132
)
133133
endif()
134+
target_link_libraries(openxr_loader PRIVATE openxr-all-supported)
134135

135136
target_compile_definitions(openxr_loader
136137
PRIVATE API_NAME="OpenXR"

0 commit comments

Comments
 (0)