summaryrefslogtreecommitdiff
path: root/cmake/modules/Findlibusb.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/modules/Findlibusb.cmake')
-rw-r--r--cmake/modules/Findlibusb.cmake68
1 files changed, 23 insertions, 45 deletions
diff --git a/cmake/modules/Findlibusb.cmake b/cmake/modules/Findlibusb.cmake
index 257c682..8300604 100644
--- a/cmake/modules/Findlibusb.cmake
+++ b/cmake/modules/Findlibusb.cmake
@@ -10,13 +10,12 @@
include(FindPackageHandleStandardArgs)
-if (APPLE) # macOS
+if (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") # FreeBSD; libusb is integrated into the system
FIND_PATH(
LIBUSB_INCLUDE_DIR NAMES libusb.h
- HINTS /usr /usr/local /opt
- PATH_SUFFIXES libusb-1.0
+ HINTS /usr/include
)
- set(LIBUSB_NAME libusb-1.0.a)
+ set(LIBUSB_NAME usb)
find_library(
LIBUSB_LIBRARY NAMES ${LIBUSB_NAME}
HINTS /usr /usr/local /opt
@@ -24,24 +23,25 @@ if (APPLE) # macOS
FIND_PACKAGE_HANDLE_STANDARD_ARGS(libusb DEFAULT_MSG LIBUSB_LIBRARY LIBUSB_INCLUDE_DIR)
mark_as_advanced(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARY)
if (NOT LIBUSB_FOUND)
- message(FATAL_ERROR "No libusb library found on your system! Install libusb-1.0 from Homebrew or MacPorts")
- endif ()
+ message(FATAL_ERROR "Expected libusb library not found on your system! Verify your system integrity.")
+ endif()
-elseif (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") # FreeBSD; libusb is integrated into the system
+elseif (CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") # OpenBSD; libusb-1.0 is available from ports
FIND_PATH(
LIBUSB_INCLUDE_DIR NAMES libusb.h
- HINTS /usr/include
+ HINTS /usr/local/include
+ PATH_SUFFIXES libusb-1.0
)
- set(LIBUSB_NAME usb)
+ set(LIBUSB_NAME usb-1.0)
find_library(
LIBUSB_LIBRARY NAMES ${LIBUSB_NAME}
- HINTS /usr /usr/local /opt
+ HINTS /usr/local
)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(libusb DEFAULT_MSG LIBUSB_LIBRARY LIBUSB_INCLUDE_DIR)
mark_as_advanced(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARY)
if (NOT LIBUSB_FOUND)
- message(FATAL_ERROR "Expected libusb library not found on your system! Verify your system integrity.")
- endif ()
+ message(FATAL_ERROR "No libusb-1.0 library found on your system! Install libusb-1.0 from ports or packages.")
+ endif()
elseif (WIN32 OR (EXISTS "/etc/debian_version" AND MINGW)) # Windows or MinGW-toolchain on Debian
# MinGW/MSYS/MSVC: 64-bit or 32-bit?
@@ -51,41 +51,19 @@ elseif (WIN32 OR (EXISTS "/etc/debian_version" AND MINGW)) # Windows or MinGW-to
else ()
message(STATUS "=== Building for Windows (i686) ===")
set(ARCH 32)
- endif ()
+ endif()
if (WIN32 AND NOT EXISTS "/etc/debian_version") # Skip this for Debian...
- FIND_PATH(
- LIBUSB_INCLUDE_DIR NAMES libusb.h
- HINTS /usr /usr/local /opt
- PATH_SUFFIXES libusb-1.0
- )
-
- if (MINGW OR MSYS)
- set(LIBUSB_NAME usb-1.0)
- find_library(
- LIBUSB_LIBRARY NAMES ${LIBUSB_NAME}
- HINTS ${LIBUSB_WIN_OUTPUT_FOLDER}/MinGW${ARCH}/static
- )
- else (MSVC)
- set(LIBUSB_NAME libusb-1.0.lib)
- find_library(
- LIBUSB_LIBRARY NAMES ${LIBUSB_NAME}
- HINTS ${LIBUSB_WIN_OUTPUT_FOLDER}/MS${ARCH}/dll
- )
- endif ()
- endif ()
-
- if (NOT LIBUSB_FOUND)
# Preparations for installing libusb library
- set(LIBUSB_WIN_VERSION 1.0.23) # set libusb version
+ set(LIBUSB_WIN_VERSION 1.0.25) # set libusb version
set(LIBUSB_WIN_ARCHIVE libusb-${LIBUSB_WIN_VERSION}.7z)
if (WIN32 AND NOT EXISTS "/etc/debian_version") # ... on native Windows systems
set(LIBUSB_WIN_ARCHIVE_PATH ${CMAKE_BINARY_DIR}/${LIBUSB_WIN_ARCHIVE})
set(LIBUSB_WIN_OUTPUT_FOLDER ${CMAKE_BINARY_DIR}/3rdparty/libusb-${LIBUSB_WIN_VERSION})
- else (EXISTS "/etc/debian_version" AND MINGW) # ... only for cross-building on Debian
+ elseif (EXISTS "/etc/debian_version" AND MINGW) # ... only for cross-building on Debian
set(LIBUSB_WIN_ARCHIVE_PATH ${CMAKE_SOURCE_DIR}/build-mingw-${ARCH}/${LIBUSB_WIN_ARCHIVE})
set(LIBUSB_WIN_OUTPUT_FOLDER ${CMAKE_SOURCE_DIR}/build-mingw-${ARCH}/3rdparty/libusb-${LIBUSB_WIN_VERSION})
- endif ()
+ endif()
# Get libusb package
if (EXISTS ${LIBUSB_WIN_ARCHIVE_PATH}) # ... should the package be already there (for whatever reason)
@@ -94,9 +72,9 @@ elseif (WIN32 OR (EXISTS "/etc/debian_version" AND MINGW)) # Windows or MinGW-to
message(STATUS "downloading libusb ${LIBUSB_WIN_VERSION}")
file(DOWNLOAD
https://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-${LIBUSB_WIN_VERSION}/libusb-${LIBUSB_WIN_VERSION}.7z/download
- ${LIBUSB_WIN_ARCHIVE_PATH} EXPECTED_MD5 cf3d38d2ff053ef343d10c0b8b0950c2
+ ${LIBUSB_WIN_ARCHIVE_PATH} EXPECTED_MD5 aabe177bde869bfad34278335eaf8955
)
- endif ()
+ endif()
file(MAKE_DIRECTORY ${LIBUSB_WIN_OUTPUT_FOLDER})
@@ -124,7 +102,7 @@ elseif (WIN32 OR (EXISTS "/etc/debian_version" AND MINGW)) # Windows or MinGW-to
NO_CMAKE_FIND_ROOT_PATH
)
- else (MSVC)
+ elseif (MSVC)
set(LIBUSB_NAME libusb-1.0.lib)
find_library(
LIBUSB_LIBRARY NAMES ${LIBUSB_NAME}
@@ -132,9 +110,9 @@ elseif (WIN32 OR (EXISTS "/etc/debian_version" AND MINGW)) # Windows or MinGW-to
NO_DEFAULT_PATH
NO_CMAKE_FIND_ROOT_PATH
)
- endif ()
+ endif()
message(STATUS "Missing libusb library has been installed")
- endif ()
+ endif()
FIND_PACKAGE_HANDLE_STANDARD_ARGS(libusb DEFAULT_MSG LIBUSB_LIBRARY LIBUSB_INCLUDE_DIR)
mark_as_advanced(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARY)
@@ -154,5 +132,5 @@ else ()
if (NOT LIBUSB_FOUND)
message(FATAL_ERROR "libusb library not found on your system! Install libusb 1.0.x from your package repository.")
- endif ()
-endif ()
+ endif()
+endif()