File: FindOpenHMD.cmake

package info (click to toggle)
freespace2 25.0.0%2Brepack-1
  • links: PTS, VCS
  • area: non-free
  • in suites: forky, sid
  • size: 47,232 kB
  • sloc: cpp: 657,500; ansic: 22,305; sh: 293; python: 200; makefile: 198; xml: 181
file content (134 lines) | stat: -rw-r--r-- 4,377 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# 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:
# 2019-2021 Rylie Pavlik <rylie.pavlik@collabora.com> <rylie@ryliepavlik.com>

#.rst:
# FindOpenHMD
# ---------------
#
# Find the OpenHMD immersive computing interface library.
#
# See http://www.openhmd.net/
#
# Targets
# ^^^^^^^
#
# If successful, the following import target is created.
#
# ``openhmd::openhmd``
#
# Cache variables
# ^^^^^^^^^^^^^^^
#
# The following cache variable may also be set to assist/control the operation of this module:
#
# ``OPENHMD_ROOT_DIR``
#  The root to search for OpenHMD.

set(OPENHMD_ROOT_DIR
    "${OPENHMD_ROOT_DIR}"
    CACHE PATH "Root to search for OpenHMD")

if(NOT ANDROID)
	find_package(PkgConfig QUIET)
    if(PKG_CONFIG_FOUND)
        set(_old_prefix_path "${CMAKE_PREFIX_PATH}")
        # So pkg-config uses OPENHMD_ROOT_DIR too.
        if(OPENHMD_ROOT_DIR)
            list(APPEND CMAKE_PREFIX_PATH ${OPENHMD_ROOT_DIR})
        endif()
        pkg_check_modules(PC_OPENHMD QUIET openhmd)
        # Restore
        set(CMAKE_PREFIX_PATH "${_old_prefix_path}")
    endif()
endif()

find_path(
    OPENHMD_INCLUDE_DIR
    NAMES openhmd.h
    PATHS ${OPENHMD_ROOT_DIR}
    HINTS ${PC_OPENHMD_INCLUDE_DIRS}
    PATH_SUFFIXES include openhmd include/openhmd)
find_library(
    OPENHMD_LIBRARY
    NAMES openhmd
    PATHS ${OPENHMD_ROOT_DIR} ${OPENHMD_ROOT_DIR}/build
    HINTS ${PC_OPENHMD_LIBRARY_DIRS}
    PATH_SUFFIXES lib)
find_library(OPENHMD_LIBRT rt)
find_library(OPENHMD_LIBM m)

find_package(Threads QUIET)

set(_ohmd_extra_deps)

set(OPENHMD_HIDAPI_TYPE)
if(OPENHMD_LIBRARY AND "${OPENHMD_LIBRARY}" MATCHES
                       "${CMAKE_STATIC_LIBRARY_SUFFIX}")
    # Looks like a static library
    if(PC_OPENHMD_FOUND)
        # See if we need a particular hidapi.
        list(REMOVE_ITEM PC_OPENHMD_LIBRARIES openhmd)
        if("${PC_OPENHMD_LIBRARIES}" MATCHES hidapi-libusb)
            set(OPENHMD_HIDAPI_TYPE libusb)
            find_package(HIDAPI QUIET COMPONENTS libusb)
            list(APPEND _ohmd_extra_deps HIDAPI_libusb_FOUND)
        elseif("${PC_OPENHMD_LIBRARIES}" MATCHES hidapi-hidraw)
            set(OPENHMD_HIDAPI_TYPE hidraw)
            find_package(HIDAPI QUIET COMPONENTS hidraw)
            list(APPEND _ohmd_extra_deps HIDAPI_hidraw_FOUND)
        endif()
    endif()
    if(NOT PC_OPENHMD_FOUND OR NOT OPENHMD_HIDAPI_TYPE)
        # Undifferentiated
        set(OPENHMD_HIDAPI_TYPE undifferentiated)
        find_package(HIDAPI QUIET)
        list(APPEND _ohmd_extra_deps HIDAPI_FOUND)
    endif()
endif()

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
    OpenHMD REQUIRED_VARS OPENHMD_INCLUDE_DIR OPENHMD_LIBRARY THREADS_FOUND)
if(OPENHMD_FOUND)
    set(OPENHMD_INCLUDE_DIRS "${OPENHMD_INCLUDE_DIR}")
    set(OPENHMD_LIBRARIES "${OPENHMD_LIBRARY}")
    if(NOT TARGET OpenHMD::OpenHMD)
        add_library(OpenHMD::OpenHMD UNKNOWN IMPORTED)
    endif()
    set_target_properties(
        OpenHMD::OpenHMD
        PROPERTIES IMPORTED_LOCATION "${OPENHMD_LIBRARY}"
                   INTERFACE_INCLUDE_DIRECTORIES "${OPENHMD_INCLUDE_DIR}"
                   IMPORTED_LINK_INTERFACE_LANGUAGES "C"
                   IMPORTED_LINK_INTERFACE_LIBRARIES Threads::Threads)

    if("${OPENHMD_HIDAPI_TYPE}" STREQUAL libusb)
        set_property(
            TARGET OpenHMD::OpenHMD
            APPEND
            PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES HIDAPI::hidapi-libusb)
        list(APPEND OPENHMD_LIBRARIES HIDAPI::hidapi-libusb)
    elseif("${OPENHMD_HIDAPI_TYPE}" STREQUAL hidraw)
        set_property(
            TARGET OpenHMD::OpenHMD
            APPEND
            PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES HIDAPI::hidapi-hidraw)
        list(APPEND OPENHMD_LIBRARIES HIDAPI::hidapi-hidraw)
    elseif("${OPENHMD_HIDAPI_TYPE}" STREQUAL undifferentiated)
        set_property(
            TARGET OpenHMD::OpenHMD
            APPEND
            PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES HIDAPI::hidapi)
        list(APPEND OPENHMD_LIBRARIES HIDAPI::hidapi)
    endif()
    mark_as_advanced(OPENHMD_INCLUDE_DIR OPENHMD_LIBRARY)
endif()
mark_as_advanced(OPENHMD_ROOT_DIR OPENHMD_LIBRT OPENHMD_LIBM)