Skip to content

Commit 9dac58a

Browse files
committed
cmake: Check USB device driver
Check UsbDk device driver. If not found, fall back to libusbK. If libusbK device driver is not found, bail. Fix #621
1 parent a650bc7 commit 9dac58a

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

cmake_modules/FindLibUSB.cmake

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,23 @@ FIND_PATH(LibUSB_INCLUDE_DIRS
4242
)
4343

4444
SET(LIBUSB_NAME libusb)
45-
IF(LIBUSB_USE_USBDK)
46-
SET(LIBUSB_NAME libusb-usbdk)
45+
IF(WIN32)
46+
INCLUDE(CheckCSourceRuns)
47+
CHECK_C_SOURCE_RUNS("#include <windows.h>\nint main(){return !LoadLibraryA(\"libusbK\");}" LIBUSB_WITH_LIBUSBK)
48+
CHECK_C_SOURCE_RUNS("#include <windows.h>\nint main(){return !LoadLibraryA(\"UsbDkHelper\");}" LIBUSB_WITH_USBDK)
49+
50+
IF(LIBUSB_USE_USBDK)
51+
SET(LIBUSB_NAME libusb-usbdk)
52+
ENDIF()
53+
54+
IF(LIBUSB_NAME MATCHES ^libusb-usbdk$ AND NOT LIBUSB_WITH_USBDK)
55+
MESSAGE(WARNING "UsbDk device driver is not found. Fall back to libusbK.")
56+
SET(LIBUSB_NAME libusb)
57+
ENDIF()
58+
59+
IF(LIBUSB_NAME MATCHES ^libusb$ AND NOT LIBUSB_WITH_LIBUSBK)
60+
MESSAGE(FATAL_ERROR "No USB device driver is installed.")
61+
ENDIF()
4762
ENDIF()
4863

4964
FIND_LIBRARY(LibUSB_LIBRARIES

0 commit comments

Comments
 (0)