74 lines
1.6 KiB
CMake

#.rst:
# Findlibusb
# --------
#
# Try to find libusb library and headers.
#
# IMPORTED Targets
# ^^^^^^^^^^^^^^^^
#
# This module defines the :prop_tgt:`IMPORTED` targets:
#
# ``libusb::libusb``
# Defined if the system has libusb.
#
# Result Variables
# ^^^^^^^^^^^^^^^^
#
# This module sets the following variables:
#
# ::
#
# LIBUSB_FOUND True in case libusb is found, otherwise false
# LIBUSB_ROOT Path to the root of found libusb installation
#
# Example usage
# ^^^^^^^^^^^^^
#
# ::
#
# find_package(libusb REQUIRED)
#
# add_executable(foo foo.cc)
# target_link_libraries(foo libusb::libusb)
#
# Early return if libusb target is already defined. This makes it safe to run
# this script multiple times.
if(TARGET libusb::libusb)
return()
endif()
find_package(PkgConfig QUIET)
if(libusb_FIND_VERSION)
pkg_check_modules(PC_libusb libusb-1.0>=${libusb_FIND_VERSION})
else()
pkg_check_modules(PC_libusb libusb-1.0)
endif()
find_path(libusb_INCLUDE_DIR
NAMES
libusb-1.0/libusb.h
PATHS
${PC_libusb_INCLUDEDIR}
)
find_library(libusb_LIBRARIES
NAMES
usb-1.0
libusb
PATHS
${PC_libusb_LIBRARY_DIRS}
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(libusb DEFAULT_MSG libusb_LIBRARIES libusb_INCLUDE_DIR)
mark_as_advanced(libusb_INCLUDE_DIRS libusb_LIBRARIES)
if(LIBUSB_FOUND)
add_library(libusb::libusb UNKNOWN IMPORTED)
set_target_properties(libusb::libusb PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${libusb_INCLUDE_DIR}")
set_target_properties(libusb::libusb PROPERTIES IMPORTED_LOCATION "${libusb_LIBRARIES}")
endif()