Simple Directmedia Layer

cmake: find libusb through LibUSB cmake module

authored by

Anonymous Maarten and committed by
Sam Lantinga
0e6fcf94 2a775cad

+78 -8
+73
cmake/FindLibUSB.cmake
··· 1 + include(FindPackageHandleStandardArgs) 2 + 3 + set(LibUSB_PKG_CONFIG_SPEC libusb-1.0>=1.0.16) 4 + set(LibUSB_MIN_API_VERSION 0x01000102) 5 + 6 + find_package(PkgConfig QUIET) 7 + 8 + if(PKG_CONFIG_FOUND) 9 + pkg_check_modules(PC_LibUSB ${LibUSB_PKG_CONFIG_SPEC}) 10 + endif() 11 + 12 + find_library(LibUSB_LIBRARY 13 + NAMES usb-1.0 libusb-1.0 14 + HINTS ${PC_LibUSB_LIBRARY_DIRS} 15 + ) 16 + 17 + find_path(LibUSB_INCLUDE_PATH 18 + NAMES libusb.h 19 + PATH_SUFFIXES libusb-1.0 20 + HINTS ${PC_LibUSB_INCLUDE_DIRS} 21 + ) 22 + 23 + set(LibUSB_API_VERSION "LibUSB_API_VERSION-NOTFOUND") 24 + if(LibUSB_INCLUDE_PATH AND EXISTS "${LibUSB_INCLUDE_PATH}/libusb.h") 25 + file(READ "${LibUSB_INCLUDE_PATH}/libusb.h" LIBUSB_H_TEXT) 26 + if("${LIBUSB_H_TEXT}" MATCHES "#define[ \t]+LIBUSBX?_API_VERSION[ \t]+(0x[0-9a-fA-F]+)" ) 27 + set(LibUSB_API_VERSION "${CMAKE_MATCH_1}") 28 + endif() 29 + endif() 30 + 31 + if(LibUSB_API_VERSION) 32 + math(EXPR LibUSB_MIN_API_VERSION_decimal "${LibUSB_MIN_API_VERSION}") 33 + math(EXPR LibUSB_API_VERSION_decimal "${LibUSB_API_VERSION}") 34 + if(NOT LibUSB_MIN_API_VERSION_decimal LESS_EQUAL LibUSB_API_VERSION_decimal) 35 + set(LibUSB_LIBRARY "LibUSB_LIBRARY-NOTFOUND") 36 + endif() 37 + else() 38 + set(LibUSB_LIBRARY "LibUSB_LIBRARY-NOTFOUND") 39 + endif() 40 + 41 + set(LibUSB_COMPILE_OPTIONS "" CACHE STRING "Extra compile options of LibUSB") 42 + 43 + set(LibUSB_LINK_LIBRARIES "" CACHE STRING "Extra link libraries of LibUSB") 44 + 45 + set(LibUSB_LINK_FLAGS "" CACHE STRING "Extra link flags of LibUSB") 46 + 47 + if(LibUSB_LIBRARY AND LibUSB_INCLUDE_PATH) 48 + if(PC_LibUSB_FOUND) 49 + set(LibUSB_VERSION "${PC_LibUSB_VERSION}") 50 + else() 51 + set(LibUSB_VERSION "1.0.16-or-higher") 52 + endif() 53 + else() 54 + set(LibUSB_VERSION "LibUSB_VERSION-NOTFOUND") 55 + endif() 56 + 57 + find_package_handle_standard_args(LibUSB 58 + VERSION_VAR LibUSB_VERSION 59 + REQUIRED_VARS LibUSB_LIBRARY LibUSB_INCLUDE_PATH 60 + ) 61 + 62 + if(LibUSB_FOUND AND NOT TARGET LibUSB::LibUSB) 63 + add_library(LibUSB::LibUSB IMPORTED UNKNOWN) 64 + set_target_properties(LibUSB::LibUSB 65 + PROPERTIES 66 + IMPORTED_LOCATION "${LibUSB_LIBRARY}" 67 + INTERFACE_INCLUDE_DIRECTORIES "${LibUSB_INCLUDE_PATH}" 68 + INTERFACE_COMPILE_OPTIONS "${LibUSB_COMPILE_OPTIONS}" 69 + INTERFACE_LINK_LIBRARIES "${LibUSB_LINK_LIBRARIES}" 70 + INTERFACE_LINK_OPTIONS "${LibUSB_LINK_OPTIONS}" 71 + ) 72 + endif() 73 +
+5 -8
cmake/sdlchecks.cmake
··· 1039 1039 set(HAVE_HIDAPI ON) 1040 1040 if(SDL_HIDAPI_LIBUSB) 1041 1041 set(HAVE_LIBUSB FALSE) 1042 - 1043 - set(LibUSB_PKG_CONFIG_SPEC libusb-1.0>=1.0.16) 1044 - pkg_check_modules(PC_LIBUSB IMPORTED_TARGET ${LibUSB_PKG_CONFIG_SPEC}) 1045 - if(PC_LIBUSB_FOUND) 1042 + find_package(LibUSB) 1043 + if(LibUSB_FOUND) 1046 1044 cmake_push_check_state() 1047 - list(APPEND CMAKE_REQUIRED_INCLUDES ${PC_LIBUSB_INCLUDE_DIRS}) 1048 - list(APPEND CMAKE_REQUIRED_LIBRARIES PkgConfig::PC_LIBUSB) 1045 + list(APPEND CMAKE_REQUIRED_LIBRARIES LibUSB::LibUSB) 1049 1046 check_c_source_compiles(" 1050 1047 #include <stddef.h> 1051 1048 #include <libusb.h> ··· 1060 1057 if(SDL_HIDAPI_LIBUSB_SHARED AND USB_1.0_LIB_SONAME) 1061 1058 set(HAVE_HIDAPI_LIBUSB_SHARED ON) 1062 1059 set(SDL_LIBUSB_DYNAMIC "\"${USB_1.0_LIB_SONAME}\"") 1063 - sdl_link_dependency(hidapi INCLUDES $<TARGET_PROPERTY:PkgConfig::PC_LIBUSB,INTERFACE_INCLUDE_DIRECTORIES>) 1060 + sdl_link_dependency(hidapi INCLUDES $<TARGET_PROPERTY:LibUSB::LibUSB,INTERFACE_INCLUDE_DIRECTORIES>) 1064 1061 else() 1065 - sdl_link_dependency(hidapi LIBS PkgConfig::PC_LIBUSB PKG_CONFIG_PREFIX PC_LIBUSB PKG_CONFIG_SPECS ${LibUSB_PKG_CONFIG_SPEC}) 1062 + sdl_link_dependency(hidapi LIBS LibUSB::LibUSB PKG_CONFIG_SPECS "${LibUSB_PKG_CONFIG_SPEC}" CMAKE_MODULE LibUSB) 1066 1063 endif() 1067 1064 endif() 1068 1065 endif()