| # - 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) | |
| if (NOT PICOTOOL_LIBUSB_ALLOW_DLL) | |
| # 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}) | |
| endif() | |
| MARK_AS_ADVANCED(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARIES) | |
| endif (LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) |