build: Refactor CMake build to use static libraries instead of object bundles.

This allows transitive dependencies to work easier and improves compatibility.
It takes a little bit more storage at build time, and possibly a little extra time.
This commit is contained in:
Ryan Pavlik 2020-03-03 17:24:39 -06:00 committed by Jakob Bornecrantz
parent 91ba5d04bc
commit 92205ab5be
16 changed files with 193 additions and 335 deletions

View file

@ -1,4 +1,9 @@
# Copyright 2019-2020, Collabora, Ltd. # Copyright 2019-2020, Collabora, Ltd.
# SPDX-License-Identifier: BSL-1.0 # SPDX-License-Identifier: BSL-1.0
# "Link" against this interface target if your module
# uses the files in "external".
add_library(xrt-external-headers INTERFACE)
target_include_directories(xrt-external-headers SYSTEM INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/external)
add_subdirectory(xrt) add_subdirectory(xrt)

View file

@ -1,8 +1,6 @@
# Copyright 2019, Collabora, Ltd. # Copyright 2019, Collabora, Ltd.
# SPDX-License-Identifier: BSL-1.0 # SPDX-License-Identifier: BSL-1.0
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include)
add_subdirectory(include) add_subdirectory(include)
add_subdirectory(auxiliary) add_subdirectory(auxiliary)
add_subdirectory(drivers) add_subdirectory(drivers)

View file

@ -93,33 +93,32 @@ set(VK_SOURCE_FILES
) )
# Common includes # Common includes
include_directories( add_library(aux-includes INTERFACE)
${CMAKE_CURRENT_SOURCE_DIR}/../include target_include_directories(aux-includes INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
${CMAKE_CURRENT_SOURCE_DIR} target_link_libraries(aux-includes INTERFACE xrt-interfaces)
)
# OpenGL library. # OpenGL library.
# Use OBJECT to not create a archive, since it just gets in the way. add_library(aux_ogl STATIC ${OGL_SOURCE_FILES})
add_library(aux_ogl OBJECT ${OGL_SOURCE_FILES}) target_link_libraries(aux_ogl PUBLIC aux-includes)
target_include_directories(aux_ogl SYSTEM # for GLAD
PRIVATE target_link_libraries(aux_ogl PRIVATE xrt-external-headers)
${CMAKE_CURRENT_SOURCE_DIR}/../../external
)
# Util library. # Util library.
# Use OBJECT to not create a archive, since it just gets in the way. add_library(aux_util STATIC ${UTIL_SOURCE_FILES})
add_library(aux_util OBJECT ${UTIL_SOURCE_FILES}) target_link_libraries(aux_util PUBLIC aux-includes)
target_include_directories(aux_util SYSTEM # for cJSON
PRIVATE target_link_libraries(aux_util PUBLIC xrt-external-headers)
${CMAKE_CURRENT_SOURCE_DIR}/../../external if(BUILD_WITH_JPEG)
) target_link_libraries(aux_util PRIVATE ${JPEG_LIBRARIES})
endif()
# OS library. # OS library.
add_library(aux_os OBJECT ${OS_SOURCE_FILES}) add_library(aux_os STATIC ${OS_SOURCE_FILES})
target_link_libraries(aux_os PUBLIC aux-includes PRIVATE Threads::Threads)
# Math library. # Math library.
# Use OBJECT to not create a archive, since it just gets in the way. add_library(aux_math STATIC ${MATH_SOURCE_FILES})
add_library(aux_math OBJECT ${MATH_SOURCE_FILES}) target_link_libraries(aux_math PUBLIC aux-includes)
# Math files has extra include(s). # Math files has extra include(s).
target_include_directories(aux_math SYSTEM target_include_directories(aux_math SYSTEM
@ -127,26 +126,25 @@ target_include_directories(aux_math SYSTEM
) )
# Tracking library. # Tracking library.
# Use OBJECT to not create a archive, since it just gets in the way. add_library(aux_tracking STATIC ${TRACKING_SOURCE_FILES})
add_library(aux_tracking OBJECT ${TRACKING_SOURCE_FILES}) target_link_libraries(aux_tracking PUBLIC aux-includes PRIVATE aux_math)
# Tracking files have extra includes. # Tracking files have extra includes.
target_include_directories(aux_tracking SYSTEM target_include_directories(aux_tracking SYSTEM
PRIVATE PRIVATE
${EIGEN3_INCLUDE_DIR} ${EIGEN3_INCLUDE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/../../external
) )
# for flexkalman
target_link_libraries(aux_tracking PRIVATE xrt-external-headers)
if(BUILD_TRACKING) if(BUILD_TRACKING)
target_include_directories(aux_tracking SYSTEM target_include_directories(aux_tracking SYSTEM
PRIVATE PRIVATE
${OpenCV_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS}
) )
target_link_libraries(aux_tracking PUBLIC ${OpenCV_LIBRARIES})
endif() endif()
# Vulkan library. # Vulkan library.
# Use OBJECT to not create a archive, since it just gets in the way. add_library(aux_vk STATIC ${VK_SOURCE_FILES})
add_library(aux_vk OBJECT ${VK_SOURCE_FILES}) target_link_libraries(aux_vk PUBLIC aux-includes)
target_include_directories(aux_vk SYSTEM target_link_libraries(aux_vk PUBLIC Vulkan::Vulkan)
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/../../external
)

View file

@ -32,18 +32,7 @@ set(MAIN_SOURCE_FILES
main/comp_window.h main/comp_window.h
) )
include_directories(PRIVATE if (VULKAN_ENABLE_VALIDATION)
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/../include
${CMAKE_CURRENT_SOURCE_DIR}/../auxiliary
)
include_directories(SYSTEM PRIVATE
${VULKAN_INCLUDE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/../../external
)
if (${VULKAN_ENABLE_VALIDATION})
add_definitions(-DXRT_ENABLE_VK_VALIDATION) add_definitions(-DXRT_ENABLE_VK_VALIDATION)
endif() endif()
@ -74,9 +63,9 @@ if(BUILD_WITH_OPENGL AND BUILD_WITH_EGL)
) )
endif() endif()
# Use OBJECT to not create a archive, since it just gets in the way. add_library(comp_client STATIC ${CLIENT_SOURCE_FILES})
add_library(comp_client OBJECT ${CLIENT_SOURCE_FILES}) target_link_libraries(comp_client PUBLIC xrt-interfaces PRIVATE aux_util)
target_include_directories(comp_client PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
## ##
# Main library # Main library
@ -123,8 +112,9 @@ if(BUILD_COMPOSITOR_MAIN)
) )
endif() endif()
# Use OBJECT to not create a archive, since it just gets in the way. add_library(comp_main STATIC ${SHADER_HEADERS} ${MAIN_SOURCE_FILES} ${WL_PROTOS_SRC})
add_library(comp_main OBJECT ${SHADER_HEADERS} ${MAIN_SOURCE_FILES} ${WL_PROTOS_SRC}) target_link_libraries(comp_main PUBLIC xrt-interfaces PRIVATE aux_util aux_os)
target_include_directories(comp_main PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(comp_main SYSTEM PRIVATE target_include_directories(comp_main SYSTEM PRIVATE
# Shaders - marked SYSTEM so we get no warnings # Shaders - marked SYSTEM so we get no warnings
${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}
@ -132,12 +122,19 @@ if(BUILD_COMPOSITOR_MAIN)
if(BUILD_WITH_WAYLAND) if(BUILD_WITH_WAYLAND)
target_include_directories(comp_main SYSTEM PRIVATE ${WL_PROTOS_DIR}) target_include_directories(comp_main SYSTEM PRIVATE ${WL_PROTOS_DIR})
target_link_libraries(comp_main PRIVATE ${WAYLAND_LIBRARIES})
endif() endif()
if(BUILD_WITH_XCB) if(BUILD_WITH_XCB)
target_include_directories(comp_main SYSTEM PRIVATE ${XCB_INCLUDE_DIRS}) target_include_directories(comp_main SYSTEM PRIVATE ${XCB_INCLUDE_DIRS})
target_link_libraries(comp_main PRIVATE ${XCB_LIBRARIES})
endif()
if(BUILD_WITH_XCB AND BUILD_WITH_XLIB)
target_link_libraries(comp_main PRIVATE ${X11_X11_LIB})
endif() endif()
if(BUILD_WITH_EGL) if(BUILD_WITH_EGL)
target_include_directories(comp_main SYSTEM PRIVATE ${EGL_INCLUDE_DIRS}) target_include_directories(comp_main SYSTEM PRIVATE ${EGL_INCLUDE_DIRS})
target_link_libraries(comp_main PRIVATE ${XCB_LIBRARIES})
endif() endif()
add_subdirectory(shaders) add_subdirectory(shaders)

View file

@ -2,12 +2,6 @@
# SPDX-License-Identifier: BSL-1.0 # SPDX-License-Identifier: BSL-1.0
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/../include
${CMAKE_CURRENT_SOURCE_DIR}/../auxiliary
)
set(ENABLED_HEADSET_DRIVERS) set(ENABLED_HEADSET_DRIVERS)
set(ENABLED_DRIVERS) set(ENABLED_DRIVERS)
@ -18,8 +12,8 @@ if(BUILD_DRIVER_DUMMY)
dummy/dummy_prober.c dummy/dummy_prober.c
) )
# Use OBJECT to not create a archive, since it just gets in the way. add_library(drv_dummy STATIC ${DUMMY_SOURCE_FILES})
add_library(drv_dummy OBJECT ${DUMMY_SOURCE_FILES}) target_link_libraries(drv_dummy PRIVATE xrt-interfaces aux_util)
list(APPEND ENABLED_HEADSET_DRIVERS dummy) list(APPEND ENABLED_HEADSET_DRIVERS dummy)
endif() endif()
@ -31,8 +25,8 @@ if(BUILD_DRIVER_HDK)
hdk/hdk_prober.c hdk/hdk_prober.c
) )
# Use OBJECT to not create a archive, since it just gets in the way. add_library(drv_hdk STATIC ${HDK_SOURCE_FILES})
add_library(drv_hdk OBJECT ${HDK_SOURCE_FILES}) target_link_libraries(drv_hdk PRIVATE xrt-interfaces aux_math)
list(APPEND ENABLED_HEADSET_DRIVERS hdk) list(APPEND ENABLED_HEADSET_DRIVERS hdk)
endif() endif()
@ -43,8 +37,8 @@ if(BUILD_DRIVER_HYDRA)
hydra/hydra_interface.h hydra/hydra_interface.h
) )
# Use OBJECT to not create a archive, since it just gets in the way. add_library(drv_hydra STATIC ${HYDRA_SOURCE_FILES})
add_library(drv_hydra OBJECT ${HYDRA_SOURCE_FILES}) target_link_libraries(drv_hydra PRIVATE xrt-interfaces aux_os)
list(APPEND ENABLED_DRIVERS hydra) list(APPEND ENABLED_DRIVERS hydra)
endif() endif()
@ -59,9 +53,8 @@ if(BUILD_DRIVER_NS)
north_star/ns_prober.c north_star/ns_prober.c
) )
# Use OBJECT to not create a archive, since it just gets in the way. add_library(drv_ns STATIC ${NS_SOURCE_FILES})
add_library(drv_ns OBJECT ${NS_SOURCE_FILES}) target_link_libraries(drv_ns PRIVATE xrt-interfaces aux_math xrt-external-headers)
target_include_directories(drv_ns SYSTEM PRIVATE ../../external)
list(APPEND ENABLED_HEADSET_DRIVERS ns) list(APPEND ENABLED_HEADSET_DRIVERS ns)
endif() endif()
@ -73,11 +66,8 @@ if(BUILD_DRIVER_OHMD)
ohmd/oh_prober.c ohmd/oh_prober.c
) )
# Use OBJECT to not create a archive, since it just gets in the way. add_library(drv_ohmd STATIC ${OHMD_SOURCE_FILES})
add_library(drv_ohmd OBJECT ${OHMD_SOURCE_FILES}) target_link_libraries(drv_ohmd PRIVATE xrt-interfaces OpenHMD::OpenHMD aux_util aux_math)
target_include_directories(drv_ohmd SYSTEM
PRIVATE ${OPENHMD_INCLUDE_DIRS}
)
list(APPEND ENABLED_HEADSET_DRIVERS openhmd) list(APPEND ENABLED_HEADSET_DRIVERS openhmd)
endif() endif()
@ -88,8 +78,8 @@ if(BUILD_DRIVER_PSMV)
psmv/psmv_interface.h psmv/psmv_interface.h
) )
# Use OBJECT to not create a archive, since it just gets in the way. add_library(drv_psmv STATIC ${PSMOVE_SOURCE_FILES})
add_library(drv_psmv OBJECT ${PSMOVE_SOURCE_FILES}) target_link_libraries(drv_psmv PRIVATE xrt-interfaces PUBLIC aux_os aux_tracking)
list(APPEND ENABLED_DRIVERS psmv) list(APPEND ENABLED_DRIVERS psmv)
endif() endif()
@ -103,11 +93,8 @@ if(BUILD_DRIVER_PSVR)
psvr/psvr_prober.c psvr/psvr_prober.c
) )
# Use OBJECT to not create a archive, since it just gets in the way. add_library(drv_psvr STATIC ${PSVR_SOURCE_FILES})
add_library(drv_psvr OBJECT ${PSVR_SOURCE_FILES}) target_link_libraries(drv_psvr PRIVATE xrt-interfaces HIDAPI::hidapi aux_util)
target_include_directories(drv_psvr SYSTEM
PRIVATE ${HIDAPI_INCLUDE_DIRS}
)
list(APPEND ENABLED_HEADSET_DRIVERS psvr) list(APPEND ENABLED_HEADSET_DRIVERS psvr)
endif() endif()
@ -116,8 +103,8 @@ if(BUILD_DRIVER_RS)
realsense/rs_6dof.c realsense/rs_6dof.c
) )
# Use OBJECT to not create a archive, since it just gets in the way. add_library(drv_rs STATIC ${RS_SOURCE_FILES})
add_library(drv_rs OBJECT ${RS_SOURCE_FILES}) target_link_libraries(drv_rs PRIVATE xrt-interfaces ${realsense2_LIBRARY} aux_util)
target_include_directories(drv_rs SYSTEM target_include_directories(drv_rs SYSTEM
PRIVATE ${realsense2_INCLUDE_DIR} PRIVATE ${realsense2_INCLUDE_DIR}
) )
@ -133,10 +120,10 @@ if(BUILD_DRIVER_VIVE)
vive/vive_protocol.h vive/vive_protocol.h
) )
# Use OBJECT to not create a archive, since it just gets in the way. add_library(drv_vive STATIC ${VIVE_SOURCE_FILES})
add_library(drv_vive OBJECT ${VIVE_SOURCE_FILES}) target_link_libraries(drv_vive PRIVATE xrt-interfaces aux_os aux_util aux_math)
target_include_directories(drv_vive SYSTEM PRIVATE ../../external) target_link_libraries(drv_vive PRIVATE ${ZLIB_LIBRARIES})
target_link_libraries(drv_vive z) target_include_directories(drv_vive PRIVATE ${ZLIB_INCLUDE_DIRS})
list(APPEND ENABLED_HEADSET_DRIVERS vive) list(APPEND ENABLED_HEADSET_DRIVERS vive)
endif() endif()
@ -145,8 +132,8 @@ if(BUILD_DRIVER_V4L2)
v4l2/v4l2_driver.c v4l2/v4l2_driver.c
) )
# Use OBJECT to not create a archive, since it just gets in the way. add_library(drv_v4l2 STATIC ${V4L2_SOURCE_FILES})
add_library(drv_v4l2 OBJECT ${V4L2_SOURCE_FILES}) target_link_libraries(drv_v4l2 PRIVATE xrt-interfaces aux_os)
list(APPEND ENABLED_DRIVERS v4l2) list(APPEND ENABLED_DRIVERS v4l2)
endif() endif()

View file

@ -15,7 +15,7 @@
#include "xrt/xrt_device.h" #include "xrt/xrt_device.h"
#include "xrt/xrt_prober.h" #include "xrt/xrt_prober.h"
#include <hidapi.h> #include <hidapi/hidapi.h>
#ifdef __cplusplus #ifdef __cplusplus

View file

@ -12,7 +12,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <wchar.h> #include <wchar.h>
#include <hidapi.h> #include <hidapi/hidapi.h>
#include "xrt/xrt_prober.h" #include "xrt/xrt_prober.h"
#include "util/u_misc.h" #include "util/u_misc.h"

View file

@ -2,3 +2,6 @@
# SPDX-License-Identifier: BSL-1.0 # SPDX-License-Identifier: BSL-1.0
add_subdirectory(xrt) add_subdirectory(xrt)
add_library(xrt-interfaces INTERFACE)
target_include_directories(xrt-interfaces INTERFACE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})

View file

@ -1,14 +1,6 @@
# Copyright 2019, Collabora, Ltd. # Copyright 2019-2020, Collabora, Ltd.
# SPDX-License-Identifier: BSL-1.0 # SPDX-License-Identifier: BSL-1.0
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/../../include
${CMAKE_CURRENT_SOURCE_DIR}/../../auxiliary
${CMAKE_CURRENT_SOURCE_DIR}/../../../external
)
set(GUI_INCLUDES)
set(GUI_SOURCE_FILES set(GUI_SOURCE_FILES
gui_common.h gui_common.h
gui_imgui.h gui_imgui.h
@ -35,10 +27,20 @@ set(GUI_SOURCE_FILES
../../../external/imgui/imstb_truetype.h ../../../external/imgui/imstb_truetype.h
) )
# Use OBJECT to not create a archive, since it just gets in the way. add_library(st_gui STATIC ${GUI_SOURCE_FILES})
add_library(st_gui OBJECT ${GUI_SOURCE_FILES})
target_link_libraries(st_gui PRIVATE aux_util xrt-external-headers)
target_include_directories(st_gui target_include_directories(st_gui
PRIVATE PUBLIC
${GUI_INCLUDES} ${CMAKE_CURRENT_SOURCE_DIR}/..
) )
if(BUILD_WITH_SDL2)
add_library(imgui_impl_sdl STATIC
../../../external/imgui/cimgui_sdl.cpp
../../../external/imgui/imgui_impl_sdl.cpp
../../../external/imgui/imgui_impl_sdl.h
)
target_link_libraries(imgui_impl_sdl PRIVATE ${SDL2_LIBRARIES} xrt-external-headers)
target_include_directories(imgui_impl_sdl PRIVATE ${SDL2_INCLUDE_DIRS})
endif()

View file

@ -1,12 +1,6 @@
# Copyright 2019, Collabora, Ltd. # Copyright 2019-2020, Collabora, Ltd.
# SPDX-License-Identifier: BSL-1.0 # SPDX-License-Identifier: BSL-1.0
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/../../include
${CMAKE_CURRENT_SOURCE_DIR}/../../auxiliary
${CMAKE_CURRENT_SOURCE_DIR}/../../../external
)
set(OXR_SOURCE_FILES set(OXR_SOURCE_FILES
oxr_api_action.c oxr_api_action.c
oxr_api_funcs.h oxr_api_funcs.h
@ -57,10 +51,5 @@ if(BUILD_WITH_EGL)
list(APPEND OXR_SOURCE_FILES oxr_session_egl.c) list(APPEND OXR_SOURCE_FILES oxr_session_egl.c)
endif() endif()
# Use OBJECT to not create a archive, since it just gets in the way. add_library(st_oxr STATIC ${OXR_SOURCE_FILES})
add_library(st_oxr OBJECT ${OXR_SOURCE_FILES}) target_link_libraries(st_oxr PRIVATE xrt-interfaces aux_util aux_math Vulkan::Vulkan)
target_include_directories(st_oxr SYSTEM
PRIVATE
${VULKAN_INCLUDE_DIR}
)

View file

@ -1,13 +1,6 @@
# Copyright 2019, Collabora, Ltd. # Copyright 2019-2020, Collabora, Ltd.
# SPDX-License-Identifier: BSL-1.0 # SPDX-License-Identifier: BSL-1.0
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/../../include
${CMAKE_CURRENT_SOURCE_DIR}/../../auxiliary
${CMAKE_CURRENT_SOURCE_DIR}/../../drivers
${CMAKE_CURRENT_SOURCE_DIR}/../../../external
)
set(PROBER_INCLUDES) set(PROBER_INCLUDES)
set(PROBER_SOURCE_FILES set(PROBER_SOURCE_FILES
@ -23,9 +16,6 @@ if(BUILD_WITH_LIBUDEV)
list(APPEND PROBER_SOURCE_FILES list(APPEND PROBER_SOURCE_FILES
p_udev.c p_udev.c
) )
list(APPEND PROBER_INCLUDES
${LIBUDEV_INCLUDES}
)
endif() endif()
# Add libusb # Add libusb
@ -33,9 +23,6 @@ if(BUILD_WITH_LIBUSB)
list(APPEND PROBER_SOURCE_FILES list(APPEND PROBER_SOURCE_FILES
p_libusb.c p_libusb.c
) )
list(APPEND PROBER_INCLUDES
${LIBUSB_INCLUDES}
)
endif() endif()
# Add libuvc # Add libuvc
@ -43,15 +30,32 @@ if(BUILD_WITH_LIBUVC)
list(APPEND PROBER_SOURCE_FILES list(APPEND PROBER_SOURCE_FILES
p_libuvc.c p_libuvc.c
) )
list(APPEND PROBER_INCLUDES
${LIBUVC_INCLUDES}
)
endif() endif()
# Use OBJECT to not create a archive, since it just gets in the way. add_library(st_prober STATIC ${PROBER_SOURCE_FILES})
add_library(st_prober OBJECT ${PROBER_SOURCE_FILES}) target_link_libraries(st_prober PUBLIC xrt-interfaces PRIVATE aux_util aux_os aux_tracking)
target_include_directories(st_prober PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../drivers)
target_include_directories(st_prober if(BUILD_WITH_LIBUDEV)
PRIVATE target_include_directories(st_prober
${PROBER_INCLUDES} PRIVATE
) ${UDEV_INCLUDE_DIRS}
)
target_link_libraries(st_prober PRIVATE ${UDEV_LIBRARIES})
endif()
if(BUILD_WITH_LIBUSB)
target_include_directories(st_prober
PRIVATE
${LIBUSB1_INCLUDE_DIRS}
)
target_link_libraries(st_prober PRIVATE ${LIBUSB1_LIBRARIES})
endif()
if(BUILD_WITH_LIBUVC)
target_include_directories(st_prober
PRIVATE
${LIBUVC_INCLUDES}
)
target_link_libraries(st_prober PRIVATE ${LIBUVC_LIBRARIES})
endif()

View file

@ -6,81 +6,12 @@
# the source tree and build a complete driver or integration part. # the source tree and build a complete driver or integration part.
# Set up these two lists for use across multiple targets.
list(APPEND DRIVER_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
if(BUILD_WITH_LIBUSB)
list(APPEND DRIVER_LIBRARIES ${LIBUSB1_LIBRARIES})
endif()
if(BUILD_WITH_LIBUVC)
list(APPEND DRIVER_LIBRARIES ${LIBUVC_LIBRARIES})
endif()
if(BUILD_WITH_LIBUDEV)
list(APPEND DRIVER_LIBRARIES ${UDEV_LIBRARIES})
endif()
if(BUILD_WITH_JPEG)
list(APPEND DRIVER_LIBRARIES ${JPEG_LIBRARIES})
endif()
if(BUILD_DRIVER_DUMMY)
list(APPEND DRIVER_OBJECTS $<TARGET_OBJECTS:drv_dummy>)
endif()
if(BUILD_DRIVER_HDK)
list(APPEND DRIVER_OBJECTS $<TARGET_OBJECTS:drv_hdk>)
list(APPEND DRIVER_LIBRARIES ${HIDAPI_LIBRARIES})
endif()
if(BUILD_DRIVER_HYDRA)
list(APPEND DRIVER_OBJECTS $<TARGET_OBJECTS:drv_hydra>)
endif()
if(BUILD_DRIVER_NS)
list(APPEND DRIVER_OBJECTS $<TARGET_OBJECTS:drv_ns>)
endif()
if(BUILD_DRIVER_OHMD)
list(APPEND DRIVER_OBJECTS $<TARGET_OBJECTS:drv_ohmd>)
list(APPEND DRIVER_LIBRARIES OpenHMD::OpenHMD)
endif()
if(BUILD_DRIVER_PSMV)
list(APPEND DRIVER_OBJECTS $<TARGET_OBJECTS:drv_psmv>)
endif()
if(BUILD_DRIVER_PSVR)
list(APPEND DRIVER_OBJECTS $<TARGET_OBJECTS:drv_psvr>)
list(APPEND DRIVER_LIBRARIES ${HIDAPI_LIBRARIES})
endif()
if(BUILD_DRIVER_RS)
list(APPEND DRIVER_OBJECTS $<TARGET_OBJECTS:drv_rs>)
list(APPEND DRIVER_LIBRARIES ${realsense2_LIBRARY})
endif()
if(BUILD_DRIVER_V4L2)
list(APPEND DRIVER_OBJECTS $<TARGET_OBJECTS:drv_v4l2>)
endif()
if(BUILD_DRIVER_VIVE)
list(APPEND DRIVER_OBJECTS $<TARGET_OBJECTS:drv_vive>)
list(APPEND DRIVER_LIBRARIES ${ZLIB_LIBRARIES})
endif()
list(APPEND DRIVER_OBJECTS $<TARGET_OBJECTS:aux_tracking>)
if(BUILD_TRACKING)
list(APPEND DRIVER_LIBRARIES ${OpenCV_LIBRARIES})
endif()
add_subdirectory(common) add_subdirectory(common)
if(BUILD_TARGET_OPENXR) if(BUILD_TARGET_OPENXR)
add_subdirectory(openxr) add_subdirectory(openxr)
endif() endif()
add_subdirectory(cli) add_subdirectory(cli)
if(BUILD_TARGET_GUI) if(BUILD_TARGET_GUI)

View file

@ -1,15 +1,9 @@
# Copyright 2019, Collabora, Ltd. # Copyright 2019-2020, Collabora, Ltd.
# SPDX-License-Identifier: BSL-1.0 # SPDX-License-Identifier: BSL-1.0
###### ######
# Create a cli interface for Monado. # Create a cli interface for Monado.
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/../../targets/common
${CMAKE_CURRENT_SOURCE_DIR}/../../auxiliary
${CMAKE_CURRENT_SOURCE_DIR}/../../include
${CMAKE_CURRENT_SOURCE_DIR}/../../drivers
)
set(SOURCE_FILES set(SOURCE_FILES
cli_cmd_calibrate.c cli_cmd_calibrate.c
@ -22,11 +16,6 @@ set(SOURCE_FILES
add_executable(cli add_executable(cli
${SOURCE_FILES} ${SOURCE_FILES}
$<TARGET_OBJECTS:aux_os>
$<TARGET_OBJECTS:aux_util>
$<TARGET_OBJECTS:aux_math>
$<TARGET_OBJECTS:st_prober>
$<TARGET_OBJECTS:target_lists>
) )
set_target_properties(cli PROPERTIES set_target_properties(cli PROPERTIES
@ -35,13 +24,10 @@ set_target_properties(cli PROPERTIES
) )
target_link_libraries(cli PRIVATE target_link_libraries(cli PRIVATE
Threads::Threads aux_os
aux_util
aux_math
st_prober
target_lists
) )
if(DRIVER_OBJECTS)
target_sources(cli PRIVATE ${DRIVER_OBJECTS})
endif()
if(DRIVER_LIBRARIES)
target_link_libraries(cli PRIVATE ${DRIVER_LIBRARIES})
endif()

View file

@ -1,14 +1,51 @@
# Copyright 2019, Collabora, Ltd. # Copyright 2019-2020, Collabora, Ltd.
# SPDX-License-Identifier: BSL-1.0 # SPDX-License-Identifier: BSL-1.0
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/../../auxiliary
${CMAKE_CURRENT_SOURCE_DIR}/../../include
${CMAKE_CURRENT_SOURCE_DIR}/../../drivers
)
set(SOURCE_FILES set(SOURCE_FILES
target_lists.c target_lists.c
) )
add_library(target_lists OBJECT ${SOURCE_FILES}) add_library(target_lists STATIC ${SOURCE_FILES})
target_link_libraries(target_lists PRIVATE xrt-interfaces)
target_include_directories(target_lists PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../drivers)
target_include_directories(target_lists PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
if(BUILD_DRIVER_DUMMY)
target_link_libraries(target_lists PRIVATE drv_dummy)
endif()
if(BUILD_DRIVER_HDK)
target_link_libraries(target_lists PRIVATE drv_hdk)
endif()
if(BUILD_DRIVER_HYDRA)
target_link_libraries(target_lists PRIVATE drv_hydra)
endif()
if(BUILD_DRIVER_NS)
target_link_libraries(target_lists PRIVATE drv_ns)
endif()
if(BUILD_DRIVER_OHMD)
target_link_libraries(target_lists PRIVATE drv_ohmd)
endif()
if(BUILD_DRIVER_PSMV)
target_link_libraries(target_lists PRIVATE drv_psmv)
endif()
if(BUILD_DRIVER_PSVR)
target_link_libraries(target_lists PRIVATE drv_psvr)
endif()
if(BUILD_DRIVER_RS)
target_link_libraries(target_lists PRIVATE drv_rs)
endif()
if(BUILD_DRIVER_V4L2)
target_link_libraries(target_lists PRIVATE drv_v4l2)
endif()
if(BUILD_DRIVER_VIVE)
target_link_libraries(target_lists PRIVATE drv_vive)
endif()

View file

@ -1,38 +1,18 @@
# Copyright 2019, Collabora, Ltd. # Copyright 2019-2020, Collabora, Ltd.
# SPDX-License-Identifier: BSL-1.0 # SPDX-License-Identifier: BSL-1.0
###### ######
# Create a small SDL2 based GUI for Monado. # Create a small SDL2 based GUI for Monado.
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/../../targets/common
${CMAKE_CURRENT_SOURCE_DIR}/../../auxiliary
${CMAKE_CURRENT_SOURCE_DIR}/../../include
${CMAKE_CURRENT_SOURCE_DIR}/../../drivers
${CMAKE_CURRENT_SOURCE_DIR}/../../state_trackers
${CMAKE_CURRENT_SOURCE_DIR}/../../../external
${SDL2_INCLUDE_DIRS}
)
set(SOURCE_FILES set(SOURCE_FILES
gui_sdl2.c gui_sdl2.c
gui_sdl2_imgui.c gui_sdl2_imgui.c
gui_sdl2_main.c gui_sdl2_main.c
gui_sdl2_prober.c gui_sdl2_prober.c
../../../external/imgui/cimgui_sdl.cpp
../../../external/imgui/imgui_impl_sdl.cpp
../../../external/imgui/imgui_impl_sdl.h
) )
add_executable(gui add_executable(gui
${SOURCE_FILES} ${SOURCE_FILES}
$<TARGET_OBJECTS:aux_os>
$<TARGET_OBJECTS:aux_ogl>
$<TARGET_OBJECTS:aux_util>
$<TARGET_OBJECTS:aux_math>
$<TARGET_OBJECTS:st_gui>
$<TARGET_OBJECTS:st_prober>
$<TARGET_OBJECTS:target_lists>
) )
set_target_properties(gui PROPERTIES set_target_properties(gui PROPERTIES
@ -41,20 +21,13 @@ set_target_properties(gui PROPERTIES
) )
target_link_libraries(gui PRIVATE target_link_libraries(gui PRIVATE
${LIBUSB_LIBRARIES} aux_os
${LIBUVC_LIBRARIES} aux_ogl
${UDEV_LIBRARIES} aux_util
${SDL2_LIBRARIES} aux_math
st_gui
st_prober
target_lists
imgui_impl_sdl
) )
target_include_directories(gui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/..)
if(DRIVER_OBJECTS)
target_sources(gui PRIVATE ${DRIVER_OBJECTS})
endif()
if(BUILD_WITH_JPEG)
target_link_libraries(gui PRIVATE ${JPEG_LIBRARIES})
endif()
if(DRIVER_LIBRARIES)
target_link_libraries(gui PRIVATE ${DRIVER_LIBRARIES})
endif()

View file

@ -4,9 +4,6 @@
###### ######
# Create a loadable OpenXR driver. # Create a loadable OpenXR driver.
# set(RUNTIME_BARE_PREFIX xrt)
# set(RUNTIME_PREFIX ${RUNTIME_BARE_PREFIX}_)
set(RUNTIME_BARE_SUFFIX monado) set(RUNTIME_BARE_SUFFIX monado)
set(RUNTIME_SUFFIX _${RUNTIME_BARE_SUFFIX}) set(RUNTIME_SUFFIX _${RUNTIME_BARE_SUFFIX})
@ -15,15 +12,6 @@ set(RUNTIME_TARGET ${RUNTIME_PREFIX}openxr${RUNTIME_SUFFIX} CACHE INTERNAL "" FO
# OpenXR 1.0 # OpenXR 1.0
set(XR_API_MAJOR "1") set(XR_API_MAJOR "1")
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/../../../external
${CMAKE_CURRENT_SOURCE_DIR}/../../targets/common
${CMAKE_CURRENT_SOURCE_DIR}/../../auxiliary
${CMAKE_CURRENT_SOURCE_DIR}/../../include
${CMAKE_CURRENT_SOURCE_DIR}/../../drivers
${CMAKE_CURRENT_SOURCE_DIR}/../../state_trackers
)
set(SOURCE_FILES set(SOURCE_FILES
target.c target.c
oxr_sdl2_hack.c oxr_sdl2_hack.c
@ -34,67 +22,27 @@ add_library(${RUNTIME_TARGET} SHARED
${MANIFEST_DEV_PATH} ${MANIFEST_DEV_PATH}
${MANIFEST_PATH} ${MANIFEST_PATH}
${SOURCE_FILES} ${SOURCE_FILES}
$<TARGET_OBJECTS:aux_vk>
$<TARGET_OBJECTS:aux_os>
$<TARGET_OBJECTS:aux_ogl>
$<TARGET_OBJECTS:aux_util>
$<TARGET_OBJECTS:aux_math>
$<TARGET_OBJECTS:comp_main>
$<TARGET_OBJECTS:comp_client>
$<TARGET_OBJECTS:st_oxr>
$<TARGET_OBJECTS:st_gui>
$<TARGET_OBJECTS:st_prober>
$<TARGET_OBJECTS:target_lists>
) )
target_link_libraries(${RUNTIME_TARGET} PUBLIC target_link_libraries(${RUNTIME_TARGET} PUBLIC
${Vulkan_LIBRARIES} aux_vk
OpenGL::GLX aux_os
aux_ogl
aux_util
aux_math
comp_main
comp_client
st_oxr
st_gui
st_prober
target_lists
) )
if(BUILD_WITH_XCB)
target_link_libraries(${RUNTIME_TARGET} PUBLIC
${XCB_LIBRARIES}
)
endif()
if(BUILD_WITH_WAYLAND)
target_link_libraries(${RUNTIME_TARGET} PUBLIC
${WAYLAND_LIBRARIES}
)
endif()
if(DRIVER_OBJECTS)
target_sources(${RUNTIME_TARGET} PRIVATE
${DRIVER_OBJECTS}
)
endif()
if(DRIVER_LIBRARIES)
target_link_libraries(${RUNTIME_TARGET} PRIVATE
${DRIVER_LIBRARIES}
)
endif()
if(BUILD_WITH_SDL2) if(BUILD_WITH_SDL2)
include_directories(${SDL2_INCLUDE_DIRS}) target_link_libraries(${RUNTIME_TARGET} PUBLIC imgui_impl_sdl)
target_link_libraries(${RUNTIME_TARGET} PUBLIC
${SDL2_LIBRARIES}
)
target_sources(${RUNTIME_TARGET} PRIVATE
../../../external/imgui/cimgui_sdl.cpp
../../../external/imgui/imgui_impl_sdl.cpp
../../../external/imgui/imgui_impl_sdl.h
)
endif()
if(BUILD_WITH_XCB AND BUILD_WITH_XLIB)
target_link_libraries(${RUNTIME_TARGET} PUBLIC
${X11_X11_LIB}
)
endif() endif()
include(GNUInstallDirs) include(GNUInstallDirs)
# Install the runtime itself # Install the runtime itself