FindLibUSB.cmake 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. include(FindPackageHandleStandardArgs)
  2. set(LibUSB_PKG_CONFIG_SPEC libusb-1.0>=1.0.16)
  3. set(LibUSB_MIN_API_VERSION 0x01000102)
  4. find_package(PkgConfig QUIET)
  5. if(PKG_CONFIG_FOUND)
  6. pkg_check_modules(PC_LibUSB ${LibUSB_PKG_CONFIG_SPEC})
  7. endif()
  8. find_library(LibUSB_LIBRARY
  9. NAMES usb-1.0 libusb-1.0
  10. HINTS ${PC_LibUSB_LIBRARY_DIRS}
  11. )
  12. find_path(LibUSB_INCLUDE_PATH
  13. NAMES libusb.h
  14. PATH_SUFFIXES libusb-1.0
  15. HINTS ${PC_LibUSB_INCLUDE_DIRS}
  16. )
  17. set(LibUSB_API_VERSION "LibUSB_API_VERSION-NOTFOUND")
  18. if(LibUSB_INCLUDE_PATH AND EXISTS "${LibUSB_INCLUDE_PATH}/libusb.h")
  19. file(READ "${LibUSB_INCLUDE_PATH}/libusb.h" LIBUSB_H_TEXT)
  20. if("${LIBUSB_H_TEXT}" MATCHES "#define[ \t]+LIBUSBX?_API_VERSION[ \t]+(0x[0-9a-fA-F]+)" )
  21. set(LibUSB_API_VERSION "${CMAKE_MATCH_1}")
  22. endif()
  23. endif()
  24. if(LibUSB_API_VERSION)
  25. math(EXPR LibUSB_MIN_API_VERSION_decimal "${LibUSB_MIN_API_VERSION}")
  26. math(EXPR LibUSB_API_VERSION_decimal "${LibUSB_API_VERSION}")
  27. if(NOT LibUSB_MIN_API_VERSION_decimal LESS_EQUAL LibUSB_API_VERSION_decimal)
  28. set(LibUSB_LIBRARY "LibUSB_LIBRARY-NOTFOUND")
  29. endif()
  30. else()
  31. set(LibUSB_LIBRARY "LibUSB_LIBRARY-NOTFOUND")
  32. endif()
  33. set(LibUSB_COMPILE_OPTIONS "" CACHE STRING "Extra compile options of LibUSB")
  34. set(LibUSB_LINK_LIBRARIES "" CACHE STRING "Extra link libraries of LibUSB")
  35. set(LibUSB_LINK_FLAGS "" CACHE STRING "Extra link flags of LibUSB")
  36. if(LibUSB_LIBRARY AND LibUSB_INCLUDE_PATH)
  37. if(PC_LibUSB_FOUND)
  38. set(LibUSB_VERSION "${PC_LibUSB_VERSION}")
  39. else()
  40. set(LibUSB_VERSION "1.0.16-or-higher")
  41. endif()
  42. else()
  43. set(LibUSB_VERSION "LibUSB_VERSION-NOTFOUND")
  44. endif()
  45. find_package_handle_standard_args(LibUSB
  46. VERSION_VAR LibUSB_VERSION
  47. REQUIRED_VARS LibUSB_LIBRARY LibUSB_INCLUDE_PATH
  48. )
  49. if(LibUSB_FOUND AND NOT TARGET LibUSB::LibUSB)
  50. add_library(LibUSB::LibUSB IMPORTED UNKNOWN)
  51. set_target_properties(LibUSB::LibUSB
  52. PROPERTIES
  53. IMPORTED_LOCATION "${LibUSB_LIBRARY}"
  54. INTERFACE_INCLUDE_DIRECTORIES "${LibUSB_INCLUDE_PATH}"
  55. INTERFACE_COMPILE_OPTIONS "${LibUSB_COMPILE_OPTIONS}"
  56. INTERFACE_LINK_LIBRARIES "${LibUSB_LINK_LIBRARIES}"
  57. INTERFACE_LINK_OPTIONS "${LibUSB_LINK_OPTIONS}"
  58. )
  59. endif()