diff --git a/CMakeLists.txt b/CMakeLists.txt index 144b3c8ee545354671df2b9ec0e26237b7757ac6..e0402412454dd4ab72359c324af8e62a451a52e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,26 +26,15 @@ find_package(HIDAPI) find_package(OpenHMD) find_package(OpenCV) -# Export OpenCV definition if found -if(OpenCV_FOUND) - add_definitions(-DXRT_HAVE_OPENCV) -endif() - # @TODO Turn into a find_package LIBUSB-1.0 file. pkg_check_modules(LIBUSB REQUIRED libusb-1.0) -add_definitions(-DXRT_HAVE_LIBUSB) # @TODO Turn into a find_package LIBUVC file. pkg_check_modules(LIBUVC libuvc) -if(LIBUVC_FOUND) - add_definitions(-DXRT_HAVE_LIBUVC) -endif() # @TODO Turn into a find_package FFMPEG file. pkg_check_modules(FFMPEG libavcodec) -if(FFMPEG_FOUND) - add_definitions(-DXRT_HAVE_FFMPEG) -endif() + if(CMAKE_SYSTEM_NAME STREQUAL "Linux") find_package(X11) @@ -53,11 +42,21 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux") pkg_check_modules(XCB xcb xcb-randr) endif() -cmake_dependent_option(BUILD_WITH_OPENHMD "Enable OpenHMD driver" ON "OPENHMD_FOUND" OFF) -cmake_dependent_option(BUILD_WITH_HIDAPI "Enable HIDAPI-based OSVR HDK driver" ON "HIDAPI_FOUND" OFF) cmake_dependent_option(BUILD_WITH_WAYLAND "Enable Wayland support" ON "WAYLAND_FOUND" OFF) cmake_dependent_option(BUILD_WITH_XLIB "Enable xlib support" ON "X11_FOUND" OFF) -cmake_dependent_option(BUILD_WITH_OPENGL "Enable OpenGL Graphics API support?" ON "OPENGL_FOUND" OFF) +cmake_dependent_option(BUILD_WITH_OPENGL "Enable OpenGL Graphics API support" ON "OPENGL_FOUND" OFF) + +set(BUILD_WITH_LIBUSB TRUE) +cmake_dependent_option(BUILD_WITH_OPENCV "Enable OpenCV backend" ON "OpenCV_FOUND" OFF) +cmake_dependent_option(BUILD_WITH_LIBUVC "Enable libuvc video driver" ON "LIBUVC_FOUND" OFF) +cmake_dependent_option(BUILD_WITH_FFMPEG "Enable ffmpeg testing video driver" ON "FFMPEG_FOUND" OFF) +cmake_dependent_option(BUILD_WITH_HIDAPI "Enable HIDAPI-based driver(s) (OSVR HDK)" ON "HIDAPI_FOUND" OFF) +cmake_dependent_option(BUILD_WITH_OPENHMD "Enable OpenHMD driver" ON "OPENHMD_FOUND" OFF) + + +### +# Error checking +### if(NOT BUILD_WITH_OPENHMD AND NOT BUILD_WITH_HIDAPI) message(FATAL_ERROR "You must enable at least one driver: either provide OpenHMD and enable BUILD_WITH_OPENHMD (for a variety of devices via OpenHMD), or provide HIDAPI and enable BUILD_WITH_HIDAPI (for the HDK driver)") @@ -68,6 +67,38 @@ endif() # Flags ### +if(BUILD_WITH_LIBUSB) + add_definitions(-DXRT_HAVE_LIBUSB) +endif() + +if(BUILD_WITH_OPENCV) + add_definitions(-DXRT_HAVE_OPENCV) +endif() + +if(BUILD_WITH_LIBUVC) + add_definitions(-DXRT_HAVE_LIBUVC) +endif() + +if(BUILD_WITH_FFMPEG) + add_definitions(-DXRT_HAVE_FFMPEG) +endif() + +if(BUILD_WITH_OPENHMD) + add_definitions(-DXRT_HAVE_OPENHMD) + + # Drivers enabled with OpenHMD. + add_definitions(-DXRT_BUILD_OHMD) + set(BUILD_DRIVER_OHMD TRUE) +endif() + +if(BUILD_WITH_HIDAPI) + add_definitions(-DXRT_HAVE_HIDAPI) + + # Drivers enabled with hidapi. + add_definitions(-DXRT_BUILD_HDK) + set(BUILD_DRIVER_HDK TRUE) +endif() + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic -Wall -Wextra -Wno-unused-parameter") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-unused-parameter") diff --git a/src/xrt/auxiliary/util/u_meta_prober.h b/src/xrt/auxiliary/util/u_meta_prober.h index d028ffb3fcc9c5b68f665d7e65b32206bb885e3f..da8c89293aa8948c9e3f5a1fb33e34c88a502407 100644 --- a/src/xrt/auxiliary/util/u_meta_prober.h +++ b/src/xrt/auxiliary/util/u_meta_prober.h @@ -12,11 +12,11 @@ #include <stdlib.h> #include "xrt/xrt_prober.h" -#ifdef XRT_HAVE_OHMD +#ifdef XRT_BUILD_OHMD #include "ohmd/oh_interface.h" #endif -#ifdef XRT_HAVE_HDK +#ifdef XRT_BUILD_HDK #include "hdk/hdk_interface.h" #endif @@ -29,12 +29,12 @@ extern "C" { typedef struct xrt_prober *(*prober_creator)(); static const prober_creator DRIVERS[] = { -#ifdef XRT_HAVE_HDK +#ifdef XRT_BUILD_HDK // Returns NULL if none found, so OK to go first. hdk_create_prober, #endif -#ifdef XRT_HAVE_OHMD +#ifdef XRT_BUILD_OHMD oh_create_prober, #endif diff --git a/src/xrt/drivers/CMakeLists.txt b/src/xrt/drivers/CMakeLists.txt index e8f42fe2fc5ba21a99d73a2f5a1cb1a58efdf587..eed187fef6549bcc2532716a1c6992615bf8068c 100644 --- a/src/xrt/drivers/CMakeLists.txt +++ b/src/xrt/drivers/CMakeLists.txt @@ -1,26 +1,14 @@ # Copyright 2019, Collabora, Ltd. # SPDX-License-Identifier: BSL-1.0 + include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/../include ${CMAKE_CURRENT_SOURCE_DIR}/../auxiliary ) -set(OHMD_SOURCE_FILES - ohmd/oh_device.c - ohmd/oh_device.h - ohmd/oh_interface.h - ohmd/oh_prober.c - ) - -# Use OBJECT to not create a archive, since it just gets in the way. -add_library(drv_ohmd OBJECT ${OHMD_SOURCE_FILES}) -set_property(TARGET drv_ohmd PROPERTY POSITION_INDEPENDENT_CODE ON) -target_include_directories(drv_ohmd SYSTEM - PRIVATE ${OPENHMD_INCLUDE_DIRS} - ) -if(BUILD_WITH_HIDAPI) +if(BUILD_DRIVER_HDK) set(HDK_SOURCE_FILES hdk/hdk_device.cpp hdk/hdk_device.h @@ -35,3 +23,20 @@ if(BUILD_WITH_HIDAPI) PRIVATE ${HIDAPI_INCLUDE_DIRS} ) endif() + + +if(BUILD_DRIVER_OHMD) + set(OHMD_SOURCE_FILES + ohmd/oh_device.c + ohmd/oh_device.h + ohmd/oh_interface.h + ohmd/oh_prober.c + ) + + # Use OBJECT to not create a archive, since it just gets in the way. + add_library(drv_ohmd OBJECT ${OHMD_SOURCE_FILES}) + set_property(TARGET drv_ohmd PROPERTY POSITION_INDEPENDENT_CODE ON) + target_include_directories(drv_ohmd SYSTEM + PRIVATE ${OPENHMD_INCLUDE_DIRS} + ) +endif() diff --git a/src/xrt/targets/openxr/CMakeLists.txt b/src/xrt/targets/openxr/CMakeLists.txt index 1b68b23a392dbf661873df4a638e9325982beae8..64bf5c85cec5474f3813daf6a6c6f76f587a36a1 100644 --- a/src/xrt/targets/openxr/CMakeLists.txt +++ b/src/xrt/targets/openxr/CMakeLists.txt @@ -76,16 +76,14 @@ target_link_libraries(${RUNTIME_TARGET} ) -if(BUILD_WITH_OPENHMD) +if(BUILD_DRIVER_OHMD) target_sources(${RUNTIME_TARGET} PRIVATE $<TARGET_OBJECTS:drv_ohmd>) - target_compile_definitions(${RUNTIME_TARGET} PRIVATE XRT_HAVE_OHMD) target_link_libraries(${RUNTIME_TARGET} PRIVATE OpenHMD::OpenHMD) endif() -if(BUILD_WITH_HIDAPI) +if(BUILD_DRIVER_HDK) target_sources(${RUNTIME_TARGET} PRIVATE $<TARGET_OBJECTS:drv_hdk>) target_link_libraries(${RUNTIME_TARGET} PUBLIC ${HIDAPI_LIBRARIES}) - target_compile_definitions(${RUNTIME_TARGET} PRIVATE XRT_HAVE_HDK) endif() if(CMAKE_SYSTEM_NAME STREQUAL "Linux")