SDL: Use bundled LibUSB when desirable

Previously, SDL would `find_package(libusb)` which would actually overwrite the user preference in the case where both USE_SYSTEM_LIBUSB and USE_SYSTEM_SDL were OFF. This coincidentally also allows SDL to use libusb on Windows.
This commit is contained in:
Joshua Vandaële 2026-01-02 14:40:24 +01:00 committed by OatmealDome
parent 6a22e57fe8
commit f272382cd1
No known key found for this signature in database
GPG Key ID: A4BFAB0C67513B91
3 changed files with 21 additions and 5 deletions

View File

@ -582,10 +582,6 @@ if(UNIX)
add_definitions(-DUSE_MEMORYWATCHER=1)
endif()
if(ENABLE_SDL)
dolphin_find_optional_system_library(SDL3 Externals/SDL 3.2.0)
endif()
if(ENABLE_ANALYTICS)
message(STATUS "Enabling analytics collection (subject to end-user opt-in)")
add_definitions(-DUSE_ANALYTICS=1)
@ -712,6 +708,10 @@ if(NOT ANDROID)
add_definitions(-D__LIBUSB__)
endif()
if(ENABLE_SDL)
dolphin_find_optional_system_library(SDL3 Externals/SDL 3.2.0)
endif()
dolphin_find_optional_system_library(SFML Externals/SFML 3.0 COMPONENTS Network System)
if(USE_UPNP)

View File

@ -20,6 +20,11 @@ if(CCACHE_BIN)
set(CCACHE_BINARY ${CCACHE_BIN})
endif()
if(LibUSB_TYPE STREQUAL Bundled)
set(LibUSB_FOUND TRUE)
set(SDL_HIDAPI_LIBUSB_SHARED OFF)
endif()
add_subdirectory(SDL)
if (TARGET SDL3)

View File

@ -125,4 +125,15 @@ check_include_files(sys/timerfd.h HAVE_TIMERFD)
check_include_files(unistd.h HAVE_UNISTD_H)
configure_file(config.h.in config.h)
add_library(LibUSB::LibUSB ALIAS usb)
# We don't create an ALIAS here so that dependencies (SDL) that try_compile libusb
# don't fail due to LibUSB::LibUSB being an alias target
add_library(LibUSB::LibUSB INTERFACE IMPORTED GLOBAL)
target_link_libraries(LibUSB::LibUSB
INTERFACE
usb
)
target_include_directories(LibUSB::LibUSB
INTERFACE
${CMAKE_CURRENT_SOURCE_DIR}/libusb/libusb
)