diff options
| author | 2020-07-07 10:13:15 +0000 | |
|---|---|---|
| committer | 2020-07-07 10:13:18 +0000 | |
| commit | 2af7e40ce698eab25ac44cd492e7546e1010f16a (patch) | |
| tree | 68123a630e1c44f0fb6427d882bade62f2a66d9c | |
| parent | input_common/gcadapter: add missing C++11 header required by libc++ (diff) | |
| download | yuzu-2af7e40ce698eab25ac44cd492e7546e1010f16a.tar.gz yuzu-2af7e40ce698eab25ac44cd492e7546e1010f16a.tar.xz yuzu-2af7e40ce698eab25ac44cd492e7546e1010f16a.zip | |
cmake: unbreak system libusb support
Reference libusb doesn't support DragonFly and FreeBSD because those
ship a different libusb implementation (supports 0.1, 1.0, 2.0 API).
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(usbi_alloc_device) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(usbi_alloc_device) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_has_capability) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_has_capability) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_has_capability) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(usbi_connect_device) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(usbi_disconnect_device) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_get_device_list) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_get_device_list) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_unref_device) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_unref_device) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_write
>>> referenced by core.c
>>> core.c.o:(usbi_signal_event) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_read
>>> referenced by core.c
>>> core.c.o:(usbi_clear_event) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_wrap_sys_device) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_wrap_sys_device) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_wrap_sys_device) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_open) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_open) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_read
>>> referenced by core.c
>>> core.c.o:(libusb_close) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_write
>>> referenced by core.c
>>> core.c.o:(libusb_close) in archive externals/libusb/libusb.a
ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)
c++: error: linker command failed with exit code 1 (use -v to see invocation)
| -rw-r--r-- | CMakeLists.txt | 6 | ||||
| -rw-r--r-- | externals/find-modules/FindLibUSB.cmake | 43 |
2 files changed, 47 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 27383bce8..cd40e5cfe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt | |||
| @@ -331,8 +331,10 @@ endif() | |||
| 331 | 331 | ||
| 332 | # Ensure libusb is properly configured (based on dolphin libusb include) | 332 | # Ensure libusb is properly configured (based on dolphin libusb include) |
| 333 | find_package(LibUSB) | 333 | find_package(LibUSB) |
| 334 | add_subdirectory(externals/libusb) | 334 | if (NOT LIBUSB_FOUND) |
| 335 | set(LIBUSB_LIBRARIES usb) | 335 | add_subdirectory(externals/libusb) |
| 336 | set(LIBUSB_LIBRARIES usb) | ||
| 337 | endif() | ||
| 336 | 338 | ||
| 337 | 339 | ||
| 338 | # Prefer the -pthread flag on Linux. | 340 | # Prefer the -pthread flag on Linux. |
diff --git a/externals/find-modules/FindLibUSB.cmake b/externals/find-modules/FindLibUSB.cmake new file mode 100644 index 000000000..dec0b98b0 --- /dev/null +++ b/externals/find-modules/FindLibUSB.cmake | |||
| @@ -0,0 +1,43 @@ | |||
| 1 | # - Find libusb-1.0 library | ||
| 2 | # This module defines | ||
| 3 | # LIBUSB_INCLUDE_DIR, where to find bluetooth.h | ||
| 4 | # LIBUSB_LIBRARIES, the libraries needed to use libusb-1.0. | ||
| 5 | # LIBUSB_FOUND, If false, do not try to use libusb-1.0. | ||
| 6 | # | ||
| 7 | # Copyright (c) 2009, Michal Cihar, <michal@cihar.com> | ||
| 8 | # | ||
| 9 | # vim: expandtab sw=4 ts=4 sts=4: | ||
| 10 | |||
| 11 | if(ANDROID) | ||
| 12 | set(LIBUSB_FOUND FALSE CACHE INTERNAL "libusb-1.0 found") | ||
| 13 | message(STATUS "libusb-1.0 not found.") | ||
| 14 | elseif (NOT LIBUSB_FOUND) | ||
| 15 | pkg_check_modules (LIBUSB_PKG libusb-1.0) | ||
| 16 | |||
| 17 | find_path(LIBUSB_INCLUDE_DIR NAMES libusb.h | ||
| 18 | PATHS | ||
| 19 | ${LIBUSB_PKG_INCLUDE_DIRS} | ||
| 20 | /usr/include/libusb-1.0 | ||
| 21 | /usr/include | ||
| 22 | /usr/local/include/libusb-1.0 | ||
| 23 | /usr/local/include | ||
| 24 | ) | ||
| 25 | |||
| 26 | find_library(LIBUSB_LIBRARIES NAMES usb-1.0 usb | ||
| 27 | PATHS | ||
| 28 | ${LIBUSB_PKG_LIBRARY_DIRS} | ||
| 29 | /usr/lib | ||
| 30 | /usr/local/lib | ||
| 31 | ) | ||
| 32 | |||
| 33 | if(LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) | ||
| 34 | set(LIBUSB_FOUND TRUE CACHE INTERNAL "libusb-1.0 found") | ||
| 35 | message(STATUS "Found libusb-1.0: ${LIBUSB_INCLUDE_DIR}, ${LIBUSB_LIBRARIES}") | ||
| 36 | else(LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) | ||
| 37 | set(LIBUSB_FOUND FALSE CACHE INTERNAL "libusb-1.0 found") | ||
| 38 | message(STATUS "libusb-1.0 not found.") | ||
| 39 | endif(LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) | ||
| 40 | |||
| 41 | mark_as_advanced(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARIES) | ||
| 42 | endif () | ||
| 43 | |||