File: FindLIBUSB.cmake

package info (click to toggle)
hackrf 2024.02.1-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 36,692 kB
  • sloc: ansic: 56,310; xml: 3,424; perl: 2,730; python: 1,427; makefile: 598; asm: 514; vhdl: 319; sh: 179; awk: 20
file content (57 lines) | stat: -rw-r--r-- 2,093 bytes parent folder | download
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
# Try to find the libusb library
# Once done this defines
#
# LIBUSB_FOUND - system has libusb
# LIBUSB_INCLUDE_DIR - the libusb include directory
# LIBUSB_LIBRARIES - Link these to use libusb
# LIBUSB::LIBUSB - CMake imported library target

# Copyright (c) 2006, 2008  Laurent Montel, <montel@kde.org>
# Copyright (c) 2023 Jamie Smith <jsmith@crackofdawn.onmicrosoft.com>
# Copyright (c) 2025 A.  Maitland Bottoms <bottoms@debian.org>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.

if(LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES)

  # in cache already
  set(LIBUSB_FOUND TRUE)

else(LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES)
  # use pkg-config to get the directories and then use these values in the
  # FIND_PATH() and FIND_LIBRARY() calls
  find_package(PkgConfig)
  pkg_check_modules(PC_LIBUSB libusb-1.0)

  set(LIBUSB_LIBRARY_NAMES usb-1.0)
  if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
    set(LIBUSB_LIBRARY_NAMES usb)
  elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
    # vcpkg's libusb-1.0 has a "lib" prefix, but on Windows MVSC, CMake doesn't
    # search for static libraries with lib prefixes automatically.
    list(APPEND LIBUSB_LIBRARY_NAMES libusb-1.0)
  endif()

  find_path(LIBUSB_INCLUDE_DIR libusb.h PATHS ${PC_LIBUSB_INCLUDEDIR}
                                              ${PC_LIBUSB_INCLUDE_DIRS})

  find_library(
    LIBUSB_LIBRARIES
    NAMES ${LIBUSB_LIBRARY_NAMES}
    PATHS ${PC_LIBUSB_LIBDIR} ${PC_LIBUSB_LIBRARY_DIRS})

endif(LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LIBUSB DEFAULT_MSG LIBUSB_LIBRARIES
                                  LIBUSB_INCLUDE_DIR)
mark_as_advanced(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARIES)

if(LIBUSB_FOUND AND NOT TARGET LIBUSB::LIBUSB)
  add_library(LIBUSB::LIBUSB INTERFACE IMPORTED)
  set_target_properties(
    LIBUSB::LIBUSB
    PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${LIBUSB_INCLUDE_DIR}"
               INTERFACE_LINK_LIBRARIES "${LIBUSB_LIBRARIES}")
endif()