diff options
author | lat9nq <[email protected]> | 2021-06-03 04:38:29 -0400 |
---|---|---|
committer | lat9nq <[email protected]> | 2021-06-03 04:38:29 -0400 |
commit | 890acfa2c001a034e0a837404118b3670305e0df (patch) | |
tree | c560bbea1f37efefcf52f381fadac010ea4a5f01 | |
parent | ddc47e6df8cd9e06d799933f67e75ba6f8952acd (diff) | |
download | yuzu-android-890acfa2c001a034e0a837404118b3670305e0df.tar.gz yuzu-android-890acfa2c001a034e0a837404118b3670305e0df.zip |
externals: libusb: Link libusb statically on Linux
Turns out that this is possible. Also addresses my own review comment.
-rw-r--r-- | CMakeLists.txt | 8 | ||||
-rw-r--r-- | externals/libusb/CMakeLists.txt | 24 |
2 files changed, 17 insertions, 15 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 68d9e5f9d..97afaf1a9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -430,13 +430,13 @@ if(NOT APPLE AND NOT YUZU_USE_BUNDLED_LIBUSB) find_package(LibUSB) endif() - if (NOT LIBUSB_FOUND) - message(WARNING "libusb not found, falling back to externals") - set(YUZU_USE_BUNDLED_LIBUSB ON) - else() + if (LIBUSB_FOUND) add_library(usb INTERFACE) target_include_directories(usb INTERFACE "${LIBUSB_INCLUDE_DIRS}") target_link_libraries(usb INTERFACE "${LIBUSB_LIBRARIES}") + else() + message(WARNING "libusb not found, falling back to externals") + set(YUZU_USE_BUNDLED_LIBUSB ON) endif() endif() diff --git a/externals/libusb/CMakeLists.txt b/externals/libusb/CMakeLists.txt index b2b36261c..20a105087 100644 --- a/externals/libusb/CMakeLists.txt +++ b/externals/libusb/CMakeLists.txt @@ -30,15 +30,15 @@ if (MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux")) set(LIBUSB_CONFIGURE_ARGS --host=x86_64-w64-mingw32 --build=x86_64-windows) else() - set(LIBUSB_LIBRARIES "${LIBUSB_PREFIX}/libusb/.libs/libusb-1.0.so" CACHE PATH "libusb library path" FORCE) - set(LIBUSB_SHARED_LIBRARY "${LIBUSB_LIBRARIES}") - set(LIBUSB_SHARED_LIBRARY_DEST "${CMAKE_BINARY_DIR}/bin/libusb-1.0.so") + set(LIBUSB_LIBRARIES "${LIBUSB_PREFIX}/libusb/.libs/libusb-1.0.a" CACHE PATH "libusb library path" FORCE) endif() set(LIBUSB_INCLUDE_DIRS "${LIBUSB_SRC_DIR}/libusb" CACHE PATH "libusb headers path" FORCE) - # Causes "externals/libusb/libusb/libusb/os/windows_winusb.c:1427:2: error: conversion to non-scalar type requested", so cannot statically link it for now. - # set(LIBUSB_CFLAGS "-DGUID_DEVINTERFACE_USB_DEVICE=\\(GUID\\){0xA5DCBF10,0x6530,0x11D2,{0x90,0x1F,0x00,0xC0,0x4F,0xB9,0x51,0xED}}") + # MINGW: causes "externals/libusb/libusb/libusb/os/windows_winusb.c:1427:2: error: conversion to non-scalar type requested", so cannot statically link it for now. + if (NOT MINGW) + set(LIBUSB_CFLAGS "-DGUID_DEVINTERFACE_USB_DEVICE=\\(GUID\\){0xA5DCBF10,0x6530,0x11D2,{0x90,0x1F,0x00,0xC0,0x4F,0xB9,0x51,0xED}}") + endif() make_directory("${LIBUSB_PREFIX}") @@ -55,8 +55,8 @@ if (MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux")) OUTPUT "${LIBUSB_MAKEFILE}" COMMAND - # /bin/env - # CFLAGS="${LIBUSB_CFLAGS}" + /bin/env + CFLAGS="${LIBUSB_CFLAGS}" /bin/sh "${LIBUSB_CONFIGURE}" ${LIBUSB_CONFIGURE_ARGS} --srcdir="${LIBUSB_SRC_DIR}" @@ -92,10 +92,12 @@ if (MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux")) target_include_directories(usb INTERFACE "${LIBUSB_INCLUDE_DIRS}") if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") - find_package(Libudev QUIET) - if(LIBUDEV_FOUND) - target_link_libraries(usb INTERFACE "${LIBUDEV_LIBRARIES}") - target_include_directories(usb INTERFACE "${LIBUDEV_INCLUDE_DIR}") + Include(FindPkgConfig) + pkg_check_modules(LIBUDEV REQUIRED libudev) + + if (LIBUDEV_FOUND) + target_include_directories(usb INTERFACE "${LIBUDEV_INCLUDE_DIRS}") + target_link_libraries(usb INTERFACE "${LIBUDEV_STATIC_LIBRARIES}") endif() endif() else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") |