File: FindLIBUSB.cmake

package info (click to toggle)
picotool 2.1.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 4,448 kB
  • sloc: cpp: 59,935; ansic: 2,513; python: 97; sh: 48; makefile: 27; xml: 18
file content (67 lines) | stat: -rw-r--r-- 2,495 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
58
59
60
61
62
63
64
65
66
67
# - 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
# Copyright (c) 2006, 2008  Laurent Montel, <montel@kde.org>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.

# Set LIBUSB_ROOT if specified
if (LIBUSB_ROOT)
    set(ENV{LIBUSB_ROOT} ${LIBUSB_ROOT})
endif()

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. Might fail, pkg-config
    # might not be installed, e.g. for Windows systems
    find_package(PkgConfig)

    if (PKG_CONFIG_FOUND)
        pkg_check_modules(PC_LIBUSB libusb-1.0)
    endif()

    if (NOT PC_LIBUSB_FOUND)
        # As the pkg-config was not found we are probably building under windows.
        # Determine the architecture of the host, to choose right library
        if (NOT DEFINED ARCHITECTURE)
            if (CMAKE_SIZEOF_VOID_P GREATER 4)
                set(ARCHITECTURE 64)
            else()
                set(ARCHITECTURE 32)
            endif()
        endif()

        set(PC_LIBUSB_INCLUDEDIR_HINT $ENV{LIBUSB_ROOT}/include)

        if (MINGW OR CYGWIN)
            set(PC_LIBUSB_LIBDIR_HINT $ENV{LIBUSB_ROOT}/MinGW${ARCHITECTURE}/static)
        elseif(MSVC)
            set(PC_LIBUSB_LIBDIR_HINT $ENV{LIBUSB_ROOT}/VS2019/MS${ARCHITECTURE}/static)
        endif ()
    endif ()

    find_path(LIBUSB_INCLUDE_DIR libusb.h
        HINTS ${PC_LIBUSB_INCLUDEDIR_HINT}
        PATHS ${PC_LIBUSB_INCLUDEDIR} ${PC_LIBUSB_INCLUDE_DIRS}
        PATH_SUFFIXES libusb-1.0)
        
    find_library(LIBUSB_LIBRARIES NAMES libusb-1.0 usb-1.0 usb
        HINTS ${PC_LIBUSB_LIBDIR_HINT}
        PATHS ${PC_LIBUSB_LIBDIR} ${PC_LIBUSB_LIBRARY_DIRS})

    include(FindPackageHandleStandardArgs)
    FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBUSB DEFAULT_MSG LIBUSB_LIBRARIES LIBUSB_INCLUDE_DIR)

    # Don't use .dll.a libraries, as they require the .dll file to be in the correct location
    # Replace with .a for static linking instead
    string(REPLACE ".dll.a" ".a" LIBUSB_LIBRARIES ${LIBUSB_LIBRARIES})

    MARK_AS_ADVANCED(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARIES)
endif (LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES)