From 7461c57043b51ae7de688d524b1d46fa2408d931 Mon Sep 17 00:00:00 2001 From: Moses Turner Date: Tue, 22 Jun 2021 10:06:58 -0500 Subject: [PATCH] cmake: make ulv2 build a little better --- CMakeLists.txt | 16 ++------- cmake/FindLeapV2.cmake | 62 ++++++++++++++++++++++++++++++++++ src/xrt/drivers/CMakeLists.txt | 2 +- 3 files changed, 65 insertions(+), 15 deletions(-) create mode 100644 cmake/FindLeapV2.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 74a893632..02bc55d58 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,19 +60,7 @@ find_package(ZLIB) find_package(cJSON) find_package(Systemd) find_package(OpenGLES COMPONENTS V3) - -#find_package(Leap) - -find_library(Leap - NAMES libLeap.so - PATHS /usr/local/lib - ) -if (Leap) - include_directories(include /usr/local/include/) - message(STATUS "Found libLeap: ${Leap}") -else() - message(STATUS "Could NOT find libLeap: (missing: /usr/local/lib/libLeap.so)") -endif() +find_package(LeapV2) add_library(xrt-pthreads INTERFACE) @@ -206,7 +194,7 @@ cmake_dependent_option(XRT_BUILD_DRIVER_DAYDREAM "Enable the Google Daydream Vie cmake_dependent_option(XRT_BUILD_DRIVER_ARDUINO "Enable Arduino input device with BLE via via D-Bus" ON "XRT_HAVE_DBUS" OFF) cmake_dependent_option(XRT_BUILD_DRIVER_ILLIXR "Enable ILLIXR driver" ON "ILLIXR_PATH" OFF) option(XRT_BUILD_DRIVER_DUMMY "Enable dummy driver" ON) -cmake_dependent_option(XRT_BUILD_DRIVER_ULV2 "Enable Ultraleap v2 driver" ON "Leap" OFF) +cmake_dependent_option(XRT_BUILD_DRIVER_ULV2 "Enable Ultraleap v2 driver" ON "LeapV2_FOUND" OFF) cmake_dependent_option(XRT_BUILD_DRIVER_REMOTE "Enable remote debugging driver" ON "XRT_HAVE_LINUX OR ANDROID" OFF) option(XRT_BUILD_DRIVER_WMR "Enable Windows Mixed Reality driver" ON) diff --git a/cmake/FindLeapV2.cmake b/cmake/FindLeapV2.cmake new file mode 100644 index 000000000..aa517bb38 --- /dev/null +++ b/cmake/FindLeapV2.cmake @@ -0,0 +1,62 @@ +# Copyright 2019-2021, Collabora, Ltd. +# SPDX-License-Identifier: BSL-1.0 +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) +# +# Original Author: +# 2021 Moses Turner + +#.rst: +# FindLeapV2 +# --------------- +# +# Find the Ultraleap v2 drivers +# +# Targets +# ^^^^^^^ +# +# If successful, the following import target is created. +# +# ``LeapV2::LeapV2`` +# +# Cache variables +# ^^^^^^^^^^^^^^^ +# +# The following cache variable may also be set to assist/control the operation of this module: +# +# ``LeapV2_ROOT_DIR`` +# The root to search for Leap v2. +# + +set(LeapV2_ROOT_DIR + "${LeapV2_ROOT_DIR}" + CACHE PATH "Root to search for LeapV2") + +find_path( + LeapV2_INCLUDE_DIR + NAMES Leap.h LeapMath.h + PATHS ${LeapV2_ROOT_DIR} + PATH_SUFFIXES include) +find_library( + LeapV2_LIBRARY + NAMES Leap + PATHS ${LeapV2_ROOT_DIR} + PATH_SUFFIXES lib) +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LeapV2 REQUIRED_VARS LeapV2_INCLUDE_DIR + LeapV2_LIBRARY) +if(LeapV2_FOUND) + set(LeapV2_INCLUDE_DIRS "${LeapV2_INCLUDE_DIR}") + set(LeapV2_LIBRARIES "${LeapV2_LIBRARY}") + if(NOT TARGET LeapV2::LeapV2) + add_library(LeapV2::LeapV2 UNKNOWN IMPORTED) + endif() + set_target_properties( + LeapV2::LeapV2 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES + "${LeapV2_INCLUDE_DIR}") + set_target_properties(LeapV2::LeapV2 PROPERTIES IMPORTED_LOCATION + "${LeapV2_LIBRARY}") + mark_as_advanced(LeapV2_INCLUDE_DIR LeapV2_LIBRARY) +endif() +mark_as_advanced(LeapV2_ROOT_DIR) diff --git a/src/xrt/drivers/CMakeLists.txt b/src/xrt/drivers/CMakeLists.txt index 212f84317..6b80b0936 100644 --- a/src/xrt/drivers/CMakeLists.txt +++ b/src/xrt/drivers/CMakeLists.txt @@ -133,7 +133,7 @@ if(XRT_BUILD_DRIVER_ULV2) ultraleap_v2/ulv2_interface.h ) add_library(drv_ulv2 STATIC ${ULV2_SOURCE_FILES}) - target_link_libraries(drv_ulv2 PRIVATE xrt-interfaces aux_util aux_math Leap) + target_link_libraries(drv_ulv2 PRIVATE xrt-interfaces aux_util aux_math LeapV2::LeapV2) endif() if(XRT_BUILD_DRIVER_OHMD)