The open source OpenXR runtime
at main 234 lines 7.0 kB view raw
1# Copyright 2020-2025, Collabora, Ltd. 2# SPDX-License-Identifier: BSL-1.0 3 4# Catch2 5if(BUILD_TESTING) 6 add_library(xrt-external-catch2 STATIC Catch2/catch_amalgamated.cpp) 7 target_include_directories( 8 xrt-external-catch2 SYSTEM INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/Catch2 9 ) 10 if(MSVC) 11 # Needed for Visual Studio 2019. 12 # https://github.com/catchorg/Catch2/issues/2916#issuecomment-2404082203 13 target_compile_options(xrt-external-catch2 PRIVATE "/Zc:hiddenFriend-") 14 endif() 15endif() 16 17# OpenVR 18add_library(xrt-external-openvr INTERFACE) 19target_include_directories( 20 xrt-external-openvr SYSTEM INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/openvr_includes 21 ) 22 23# cJSON 24add_library(xrt-external-cjson INTERFACE) 25if(XRT_HAVE_SYSTEM_CJSON) 26 target_link_libraries(xrt-external-cjson INTERFACE cJSON::cJSON) 27else() 28 target_include_directories( 29 xrt-external-cjson SYSTEM INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/cjson 30 ) 31 target_compile_definitions(xrt-external-cjson INTERFACE CJSON_HIDE_SYMBOLS) 32endif() 33 34# FlexKalman 35add_library(xrt-external-flexkalman INTERFACE) 36target_include_directories(xrt-external-flexkalman INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/flexkalman) 37 38# FlexKalman 39add_library(xrt-external-util-headers INTERFACE) 40target_include_directories( 41 xrt-external-util-headers INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/util-headers 42 ) 43 44# Glad 45add_library(xrt-external-glad INTERFACE) 46target_include_directories( 47 xrt-external-glad SYSTEM INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/glad/include 48 ) 49 50# Hungarian graph algorithm 51add_library(xrt-external-hungarian INTERFACE) 52target_include_directories( 53 xrt-external-hungarian SYSTEM INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/hungarian 54 ) 55 56# JNIPP and Android JNI wrappers 57if(ANDROID) 58 add_library(xrt-external-jnipp STATIC jnipp/jnipp.cpp) 59 target_include_directories( 60 xrt-external-jnipp SYSTEM PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/jnipp 61 ) 62 63 file(GLOB WRAP_SOURCES android-jni-wrap/wrap/*.cpp) 64 add_library(xrt-external-jni-wrap STATIC ${WRAP_SOURCES}) 65 target_include_directories( 66 xrt-external-jni-wrap PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/android-jni-wrap 67 ) 68 target_link_libraries(xrt-external-jni-wrap PUBLIC xrt-external-jnipp) 69endif() 70 71# Nano Protobuf 72add_library( 73 xrt-external-nanopb STATIC 74 nanopb/monado_metrics.pb.c 75 nanopb/monado_metrics.pb.h 76 nanopb/pb.h 77 nanopb/pb_common.c 78 nanopb/pb_common.h 79 nanopb/pb_decode.c 80 nanopb/pb_decode.h 81 nanopb/pb_encode.c 82 nanopb/pb_encode.h 83 ) 84target_include_directories(xrt-external-nanopb PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/nanopb) 85 86if(ANDROID) 87 add_library( 88 xrt-external-cardboard STATIC cardboard/cardboard_device.pb.h 89 cardboard/cardboard_device.pb.c 90 ) 91 92 target_include_directories( 93 xrt-external-cardboard PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/cardboard/ 94 ) 95 target_link_libraries(xrt-external-cardboard PUBLIC xrt-external-nanopb) 96endif() 97 98# OpenXR 99add_library(xrt-external-openxr INTERFACE) 100target_include_directories( 101 xrt-external-openxr INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/openxr_includes 102 ) 103 104# External VIT interface 105if(XRT_FEATURE_SLAM) 106 add_library(xrt-external-vit INTERFACE) 107 target_include_directories( 108 xrt-external-vit INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/vit_includes 109 ) 110endif() 111 112# SDL 113if(XRT_HAVE_SDL2) 114 add_library(xrt-external-sdl2 INTERFACE) 115 target_link_libraries(xrt-external-sdl2 INTERFACE SDL2::SDL2) 116 117 # Fix SDL2 build include for Alpine Linux 118 find_path(SDL2_DIRECTFB_INCLUDE_DIR directfb.h PATH_SUFFIXES directfb) 119 if(SDL2_DIRECTFB_INCLUDE_DIR) 120 target_include_directories(xrt-external-sdl2 INTERFACE ${SDL2_DIRECTFB_INCLUDE_DIR}) 121 endif() 122endif() 123 124# STB 125add_library(xrt-external-stb INTERFACE) 126target_include_directories(xrt-external-stb SYSTEM INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/stb) 127 128# bcdec 129add_library(xrt-external-bcdec INTERFACE) 130target_include_directories(xrt-external-bcdec SYSTEM INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/bcdec) 131 132# renderdoc 133add_library(xrt-external-renderdoc INTERFACE) 134target_include_directories( 135 xrt-external-renderdoc SYSTEM INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/renderdoc_api 136 ) 137 138# imgui 139if(XRT_HAVE_OPENGL) 140 add_library( 141 xrt-external-imgui STATIC 142 # imgui 1.90.8-docking 143 imgui/imgui/imconfig.h 144 imgui/imgui/imgui.cpp 145 imgui/imgui/imgui_tables.cpp 146 imgui/imgui/imgui.h 147 imgui/imgui/imgui_demo.cpp 148 imgui/imgui/imgui_draw.cpp 149 imgui/imgui/backends/imgui_impl_opengl3.cpp 150 imgui/imgui/backends/imgui_impl_opengl3.h 151 imgui/imgui/imgui_internal.h 152 imgui/imgui/imgui_widgets.cpp 153 imgui/imgui/imstb_rectpack.h 154 imgui/imgui/imstb_textedit.h 155 imgui/imgui/imstb_truetype.h 156 # cimgui 7c16d31cdb9d2db3038b324fe967ffa76b02c8c4 157 imgui/cimgui/cimgui.cpp 158 imgui/cimgui/cimgui.h 159 imgui/cimgui/cimgui_impl.h 160 # implot 0.17 f156599faefe316f7dd20fe6c783bf87c8bb6fd9 161 imgui/implot/implot.cpp 162 imgui/implot/implot.h 163 imgui/implot/implot_internal.h 164 imgui/implot/implot_items.cpp 165 imgui/implot/implot_demo.cpp 166 # cimplot 439f705b1cfae0e9fbe42c13ab5b45becc47d404 167 imgui/cimplot/cimplot.cpp 168 imgui/cimplot/cimplot.h 169 imgui/imgui_monado/imgui_monado.cpp 170 ) 171 172 target_include_directories( 173 xrt-external-imgui SYSTEM 174 PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/imgui 175 PRIVATE 176 ${CMAKE_CURRENT_SOURCE_DIR}/imgui/imgui 177 ${CMAKE_CURRENT_SOURCE_DIR}/imgui/cimgui 178 ${CMAKE_CURRENT_SOURCE_DIR}/imgui/implot 179 ) 180 target_compile_definitions(xrt-external-imgui PUBLIC CIMGUI_NO_EXPORT CIMGUI_USE_OPENGL3) 181 182 if(WIN32) 183 target_compile_definitions( 184 xrt-external-imgui 185 PUBLIC "IMGUI_IMPL_API=extern\ \"C\" __declspec\(dllexport\)" 186 ) 187 else() 188 target_compile_definitions(xrt-external-imgui PUBLIC "IMGUI_IMPL_API=extern\ \"C\"") 189 endif() 190 191 set_target_properties(xrt-external-imgui PROPERTIES INTERPROCEDURAL_OPTIMIZATION OFF) 192 target_link_libraries(xrt-external-imgui PUBLIC xrt-external-glad) 193 194 if(XRT_HAVE_SDL2) 195 add_library( 196 xrt-external-imgui-sdl2 STATIC imgui/imgui/backends/imgui_impl_sdl2.cpp 197 imgui/imgui/backends/imgui_impl_sdl2.h 198 ) 199 target_include_directories( 200 xrt-external-imgui-sdl2 SYSTEM 201 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/imgui/imgui 202 ) 203 target_compile_definitions(xrt-external-imgui-sdl2 PUBLIC CIMGUI_USE_SDL2) 204 target_link_libraries( 205 xrt-external-imgui-sdl2 PUBLIC xrt-external-imgui xrt-external-sdl2 206 ) 207 set_target_properties( 208 xrt-external-imgui-sdl2 PROPERTIES INTERPROCEDURAL_OPTIMIZATION OFF 209 ) 210 endif() 211 212endif() 213 214# tinyceres 215add_library(xrt-external-tinyceres INTERFACE) 216target_include_directories( 217 xrt-external-tinyceres SYSTEM INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/tinyceres/include 218 ) 219 220# Tracy 221if(XRT_HAVE_TRACY) 222 add_library(xrt-external-tracy STATIC tracy/TracyClient.cpp) 223 target_include_directories( 224 xrt-external-tracy SYSTEM PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/tracy 225 ) 226 target_compile_definitions(xrt-external-tracy PRIVATE TRACY_ENABLE) 227 target_link_libraries(xrt-external-tracy PRIVATE ${CMAKE_DL_LIBS}) 228endif() 229 230# Valve VDF parser 231add_library(xrt-external-vdf INTERFACE) 232target_include_directories( 233 xrt-external-vdf SYSTEM INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/valve-file-vdf 234 )