mirror of
https://gitlab.freedesktop.org/monado/monado.git
synced 2025-01-10 17:05:21 +00:00
413 lines
11 KiB
CMake
413 lines
11 KiB
CMake
# Copyright 2019-2021, Collabora, Ltd.
|
|
#
|
|
# SPDX-License-Identifier: BSL-1.0
|
|
|
|
set(ENABLED_HEADSET_DRIVERS)
|
|
set(ENABLED_DRIVERS)
|
|
|
|
add_library(drv_includes INTERFACE)
|
|
target_include_directories(drv_includes INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
if(XRT_BUILD_DRIVER_ARDUINO)
|
|
add_library(
|
|
drv_arduino STATIC arduino/arduino_device.c arduino/arduino_interface.h
|
|
arduino/arduino_prober.c
|
|
)
|
|
target_link_libraries(drv_arduino PRIVATE xrt-interfaces aux_util aux_os)
|
|
list(APPEND ENABLED_DRIVERS arduino)
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_DAYDREAM)
|
|
add_library(
|
|
drv_daydream STATIC daydream/daydream_device.c daydream/daydream_device.h
|
|
daydream/daydream_interface.h daydream/daydream_prober.c
|
|
)
|
|
target_link_libraries(drv_daydream PRIVATE xrt-interfaces aux_util aux_os)
|
|
list(APPEND ENABLED_DRIVERS daydream)
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_DEPTHAI)
|
|
add_library(
|
|
drv_depthai STATIC depthai/depthai_driver.cpp depthai/depthai_tracked_device.c
|
|
depthai/depthai_interface.h
|
|
)
|
|
target_link_libraries(
|
|
drv_depthai
|
|
PRIVATE
|
|
xrt-interfaces
|
|
aux_os
|
|
aux_tracking
|
|
${OpenCV_LIBRARIES}
|
|
depthai::core
|
|
XLink
|
|
)
|
|
target_include_directories(drv_depthai PRIVATE ${OpenCV_INCLUDE_DIRS})
|
|
list(APPEND ENABLED_DRIVERS depthai)
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_SIMULATED)
|
|
add_library(
|
|
drv_simulated STATIC simulated/simulated_hmd.c simulated/simulated_interface.h
|
|
simulated/simulated_prober.c
|
|
)
|
|
target_link_libraries(drv_simulated PRIVATE xrt-interfaces aux_util)
|
|
list(APPEND ENABLED_HEADSET_DRIVERS simulated)
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_QWERTY)
|
|
add_library(
|
|
drv_qwerty STATIC
|
|
qwerty/qwerty_device.c
|
|
qwerty/qwerty_device.h
|
|
qwerty/qwerty_interface.h
|
|
qwerty/qwerty_prober.c
|
|
qwerty/qwerty_sdl.c
|
|
)
|
|
target_link_libraries(drv_qwerty PRIVATE xrt-interfaces aux_util ${SDL2_LIBRARIES})
|
|
target_include_directories(drv_qwerty PRIVATE ${SDL2_INCLUDE_DIRS})
|
|
list(APPEND ENABLED_DRIVERS qwerty)
|
|
|
|
add_library(drv_qwerty_includes INTERFACE)
|
|
target_include_directories(drv_qwerty_includes INTERFACE qwerty)
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_HDK)
|
|
set(HDK_SOURCE_FILES)
|
|
|
|
add_library(
|
|
drv_hdk STATIC hdk/hdk_device.cpp hdk/hdk_device.h hdk/hdk_interface.h
|
|
hdk/hdk_prober.c
|
|
)
|
|
target_link_libraries(drv_hdk PRIVATE xrt-interfaces aux_math)
|
|
list(APPEND ENABLED_HEADSET_DRIVERS hdk)
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_HYDRA)
|
|
set(HYDRA_SOURCE_FILES)
|
|
|
|
add_library(drv_hydra STATIC hydra/hydra_driver.c hydra/hydra_interface.h)
|
|
target_link_libraries(drv_hydra PRIVATE xrt-interfaces aux_os aux_util)
|
|
list(APPEND ENABLED_DRIVERS hydra)
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_NS)
|
|
add_library(
|
|
drv_ns STATIC
|
|
north_star/distortion_3d/utility_northstar.h
|
|
north_star/distortion_3d/deformation_northstar.h
|
|
north_star/distortion_3d/deformation_northstar.cpp
|
|
north_star/ns_hmd.h
|
|
north_star/ns_hmd.c
|
|
north_star/ns_interface.h
|
|
north_star/ns_prober.c
|
|
)
|
|
target_link_libraries(drv_ns PRIVATE xrt-interfaces aux_math xrt-external-cjson)
|
|
list(APPEND ENABLED_HEADSET_DRIVERS ns)
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_ULV2)
|
|
add_library(drv_ulv2 STATIC ultraleap_v2/ulv2_driver.cpp ultraleap_v2/ulv2_interface.h)
|
|
target_link_libraries(drv_ulv2 PRIVATE xrt-interfaces aux_util aux_math LeapV2::LeapV2)
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_OHMD)
|
|
add_library(
|
|
drv_ohmd STATIC ohmd/oh_device.c ohmd/oh_device.h ohmd/oh_interface.h
|
|
ohmd/oh_prober.c
|
|
)
|
|
target_link_libraries(drv_ohmd PRIVATE xrt-interfaces OpenHMD::OpenHMD aux_util aux_math)
|
|
list(APPEND ENABLED_HEADSET_DRIVERS openhmd)
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_OPENGLOVES)
|
|
add_library(
|
|
drv_opengloves STATIC
|
|
opengloves/opengloves_interface.h
|
|
opengloves/opengloves_device.c
|
|
opengloves/opengloves_prober.c
|
|
opengloves/opengloves_device.h
|
|
opengloves/communication/serial/opengloves_serial.h
|
|
opengloves/communication/serial/opengloves_serial.c
|
|
opengloves/encoding/alpha_encoding.h
|
|
opengloves/encoding/alpha_encoding.cpp
|
|
opengloves/encoding/encoding.h
|
|
opengloves/communication/bluetooth/opengloves_bt_serial.h
|
|
opengloves/communication/bluetooth/opengloves_bt_serial.c
|
|
opengloves/communication/opengloves_communication.h
|
|
opengloves/communication/serial/opengloves_prober_serial.h
|
|
opengloves/communication/serial/opengloves_prober_serial.c
|
|
opengloves/communication/bluetooth/opengloves_prober_bt.h
|
|
opengloves/communication/bluetooth/opengloves_prober_bt.c
|
|
)
|
|
target_link_libraries(drv_opengloves PRIVATE xrt-interfaces aux_util aux_os bluetooth)
|
|
list(APPEND ENABLED_DRIVERS opengloves)
|
|
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_PSMV)
|
|
add_library(drv_psmv STATIC psmv/psmv_driver.c psmv/psmv_interface.h)
|
|
target_link_libraries(
|
|
drv_psmv
|
|
PRIVATE xrt-interfaces
|
|
PUBLIC aux_os aux_tracking
|
|
)
|
|
list(APPEND ENABLED_DRIVERS psmv)
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_PSVR)
|
|
add_library(
|
|
drv_psvr STATIC
|
|
psvr/psvr_device.c
|
|
psvr/psvr_device.h
|
|
psvr/psvr_interface.h
|
|
psvr/psvr_packet.c
|
|
psvr/psvr_prober.c
|
|
)
|
|
target_link_libraries(drv_psvr PRIVATE xrt-interfaces HIDAPI::hidapi aux_util)
|
|
target_include_directories(drv_psvr PRIVATE ${HIDAPI_INCLUDE_DIRS})
|
|
list(APPEND ENABLED_HEADSET_DRIVERS psvr)
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_REALSENSE)
|
|
add_library(
|
|
drv_realsense STATIC
|
|
realsense/rs_ddev.c
|
|
realsense/rs_hdev.c
|
|
realsense/rs_prober.c
|
|
realsense/rs_driver.h
|
|
realsense/rs_interface.h
|
|
)
|
|
target_link_libraries(drv_realsense PRIVATE xrt-interfaces realsense2::realsense2 aux_util)
|
|
list(APPEND ENABLED_HEADSET_DRIVERS rs)
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_REMOTE)
|
|
add_library(
|
|
drv_remote STATIC
|
|
remote/r_device.c
|
|
remote/r_hmd.c
|
|
remote/r_hub.c
|
|
remote/r_interface.h
|
|
remote/r_internal.h
|
|
)
|
|
target_link_libraries(drv_remote PRIVATE xrt-interfaces aux_util aux_vive)
|
|
list(APPEND ENABLED_HEADSET_DRIVERS remote)
|
|
endif()
|
|
|
|
set(VIVE_CONFIG_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/vive")
|
|
if(XRT_BUILD_DRIVER_VIVE)
|
|
add_library(
|
|
drv_vive STATIC
|
|
vive/vive_device.h
|
|
vive/vive_device.c
|
|
vive/vive_prober.h
|
|
vive/vive_prober.c
|
|
vive/vive_protocol.c
|
|
vive/vive_protocol.h
|
|
vive/vive_controller.h
|
|
vive/vive_controller.c
|
|
vive/vive_lighthouse.h
|
|
vive/vive_lighthouse.c
|
|
vive/vive_source.h
|
|
vive/vive_source.c
|
|
)
|
|
target_link_libraries(
|
|
drv_vive
|
|
PRIVATE
|
|
xrt-interfaces
|
|
aux_os
|
|
aux_util
|
|
aux_math
|
|
xrt-external-cjson
|
|
aux_vive
|
|
)
|
|
target_link_libraries(drv_vive PRIVATE ${ZLIB_LIBRARIES})
|
|
target_include_directories(drv_vive PRIVATE ${ZLIB_INCLUDE_DIRS})
|
|
list(APPEND ENABLED_HEADSET_DRIVERS vive)
|
|
|
|
if(XRT_BUILD_DRIVER_HANDTRACKING)
|
|
target_link_libraries(drv_vive PRIVATE drv_ht)
|
|
target_link_libraries(drv_vive PRIVATE drv_cemu)
|
|
endif()
|
|
endif()
|
|
|
|
if(XRT_HAVE_V4L2)
|
|
add_library(drv_v4l2 STATIC v4l2/v4l2_driver.h v4l2/v4l2_driver.c)
|
|
target_link_libraries(drv_v4l2 PRIVATE xrt-interfaces aux_os aux_util)
|
|
list(APPEND ENABLED_DRIVERS v4l2)
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_VF)
|
|
add_library(drv_vf STATIC vf/vf_driver.c)
|
|
target_link_libraries(drv_vf PRIVATE xrt-interfaces aux_os aux_util ${GST_LIBRARIES})
|
|
target_include_directories(drv_vf PRIVATE ${GST_INCLUDE_DIRS})
|
|
list(APPEND ENABLED_DRIVERS vf)
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_HANDTRACKING)
|
|
add_library(drv_ht STATIC ht/ht_driver.c ht/ht_interface.h)
|
|
target_link_libraries(
|
|
drv_ht
|
|
PRIVATE
|
|
xrt-interfaces
|
|
aux_os
|
|
aux_util
|
|
aux_math
|
|
t_ht_mercury
|
|
t_ht_old_rgb
|
|
hand_async
|
|
)
|
|
|
|
if(XRT_BUILD_DRIVER_DEPTHAI)
|
|
target_sources(drv_ht PRIVATE ht/ht_prober.c)
|
|
target_link_libraries(drv_ht PRIVATE drv_depthai)
|
|
endif()
|
|
|
|
target_include_directories(drv_ht PRIVATE ${OpenCV_INCLUDE_DIRS} ${EIGEN3_INCLUDE_DIR})
|
|
list(APPEND ENABLED_DRIVERS ht)
|
|
|
|
add_library(drv_cemu STATIC ht_ctrl_emu/ht_ctrl_emu.cpp ht_ctrl_emu/ht_ctrl_emu_interface.h)
|
|
target_link_libraries(drv_cemu PRIVATE xrt-interfaces aux_generated_bindings aux_util)
|
|
list(APPEND ENABLED_HEADSET_DRIVERS drv_cemu)
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_SURVIVE)
|
|
add_library(drv_survive STATIC survive/survive_driver.c survive/survive_interface.h)
|
|
target_link_libraries(
|
|
drv_survive
|
|
PRIVATE
|
|
xrt-interfaces
|
|
aux_os
|
|
aux_util
|
|
aux_math
|
|
aux_vive
|
|
PkgConfig::SURVIVE
|
|
)
|
|
list(APPEND ENABLED_HEADSET_DRIVERS survive)
|
|
|
|
if(XRT_BUILD_DRIVER_HANDTRACKING)
|
|
target_link_libraries(drv_survive PRIVATE drv_ht)
|
|
target_link_libraries(drv_survive PRIVATE drv_cemu)
|
|
endif()
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_ANDROID)
|
|
add_library(
|
|
drv_android STATIC android/android_prober.c android/android_prober.h
|
|
android/android_sensors.c android/android_sensors.h
|
|
)
|
|
target_link_libraries(
|
|
drv_android
|
|
PRIVATE
|
|
xrt-interfaces
|
|
aux_util
|
|
aux_os
|
|
aux_android
|
|
${ANDROID_LIBRARY}
|
|
)
|
|
list(APPEND ENABLED_DRIVERS android)
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_ILLIXR)
|
|
add_library(
|
|
drv_illixr STATIC
|
|
illixr/illixr_device.cpp
|
|
illixr/illixr_interface.h
|
|
illixr/illixr_prober.c
|
|
illixr/illixr_component.cpp
|
|
illixr/illixr_component.h
|
|
)
|
|
target_link_libraries(drv_illixr PUBLIC ${CMAKE_DL_LIBS} xrt-interfaces aux_util aux_os)
|
|
target_include_directories(drv_illixr PUBLIC ${ILLIXR_PATH})
|
|
list(APPEND ENABLED_HEADSET_DRIVERS illixr)
|
|
endif()
|
|
|
|
add_library(drv_multi STATIC multi_wrapper/multi.c multi_wrapper/multi.h)
|
|
target_link_libraries(drv_multi PUBLIC xrt-interfaces aux_util)
|
|
list(APPEND ENABLED_HEADSET_DRIVERS drv_multi)
|
|
|
|
if(XRT_BUILD_DRIVER_WMR)
|
|
add_library(
|
|
drv_wmr STATIC
|
|
wmr/wmr_camera.h
|
|
wmr/wmr_common.h
|
|
wmr/wmr_config.c
|
|
wmr/wmr_config.h
|
|
wmr/wmr_bt_controller.c
|
|
wmr/wmr_bt_controller.h
|
|
wmr/wmr_hmd.c
|
|
wmr/wmr_hmd.h
|
|
wmr/wmr_interface.h
|
|
wmr/wmr_prober.c
|
|
wmr/wmr_protocol.c
|
|
wmr/wmr_protocol.h
|
|
wmr/wmr_controller_protocol.c
|
|
wmr/wmr_controller_protocol.h
|
|
wmr/wmr_source.c
|
|
wmr/wmr_source.h
|
|
)
|
|
target_link_libraries(
|
|
drv_wmr
|
|
PRIVATE
|
|
xrt-interfaces
|
|
aux_util
|
|
aux_math
|
|
aux_tracking
|
|
xrt-external-cjson
|
|
)
|
|
list(APPEND ENABLED_HEADSET_DRIVERS wmr)
|
|
|
|
# Can only build camera support with libusb
|
|
if(XRT_HAVE_LIBUSB)
|
|
target_sources(drv_wmr PRIVATE wmr/wmr_camera.c)
|
|
target_include_directories(drv_wmr PUBLIC ${LIBUSB1_INCLUDE_DIRS})
|
|
target_link_libraries(drv_wmr PRIVATE ${LIBUSB1_LIBRARIES})
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_HANDTRACKING)
|
|
target_link_libraries(drv_wmr PRIVATE drv_ht)
|
|
target_link_libraries(drv_wmr PRIVATE drv_cemu)
|
|
endif()
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_EUROC)
|
|
add_library(
|
|
drv_euroc STATIC
|
|
euroc/euroc_player.cpp
|
|
euroc/euroc_driver.h
|
|
euroc/euroc_device.c
|
|
euroc/euroc_interface.h
|
|
euroc/euroc_runner.c
|
|
)
|
|
target_link_libraries(
|
|
drv_euroc PRIVATE xrt-interfaces aux_util aux_tracking ${OpenCV_LIBRARIES}
|
|
)
|
|
target_include_directories(drv_euroc PRIVATE ${OpenCV_INCLUDE_DIRS})
|
|
list(APPEND ENABLED_DRIVERS euroc)
|
|
endif()
|
|
|
|
if(XRT_BUILD_DRIVER_SIMULAVR)
|
|
add_library(drv_svr STATIC simula/svr_hmd.c simula/svr_interface.h)
|
|
target_link_libraries(drv_svr PRIVATE xrt-interfaces aux_math xrt-external-cjson)
|
|
list(APPEND ENABLED_HEADSET_DRIVERS svr)
|
|
endif()
|
|
|
|
if(XRT_BUILD_SAMPLES)
|
|
# We build the sample driver to make sure it stays valid,
|
|
# but it never gets linked into a final target.
|
|
add_library(
|
|
drv_sample STATIC sample/sample_hmd.c sample/sample_interface.h
|
|
sample/sample_prober.c
|
|
)
|
|
target_link_libraries(drv_sample PRIVATE xrt-interfaces aux_util)
|
|
endif()
|
|
|
|
if(ENABLED_HEADSET_DRIVERS)
|
|
set(ENABLED_DRIVERS ${ENABLED_HEADSET_DRIVERS} ${ENABLED_DRIVERS})
|
|
list(SORT ENABLED_DRIVERS)
|
|
string(REPLACE ";" " " ENABLED_DRIVERS "${ENABLED_DRIVERS}")
|
|
message(STATUS "Enabled drivers: ${ENABLED_DRIVERS}")
|
|
else()
|
|
message(FATAL_ERROR "You must enable at least one headset driver to build Monado.")
|
|
endif()
|