summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Vandaƫle <joshua@vandaele.software>2026-01-02 14:40:24 +0100
committerOatmealDome <julian@oatmealdome.me>2026-03-17 17:29:22 -0400
commitf272382cd1bcd97589e5bd54bf5bb2769a8bc159 (patch)
tree22761fdb14288c93d71193ca09ff232e5e7e28b1
parent6a22e57fe8c0ce6e56b6278852320bfd4014d9e4 (diff)
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.
-rw-r--r--CMakeLists.txt8
-rw-r--r--Externals/SDL/CMakeLists.txt5
-rw-r--r--Externals/libusb/CMakeLists.txt13
3 files changed, 21 insertions, 5 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 48fba719aa..2711a222a6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -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)
diff --git a/Externals/SDL/CMakeLists.txt b/Externals/SDL/CMakeLists.txt
index 0316360241..6bdd630101 100644
--- a/Externals/SDL/CMakeLists.txt
+++ b/Externals/SDL/CMakeLists.txt
@@ -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)
diff --git a/Externals/libusb/CMakeLists.txt b/Externals/libusb/CMakeLists.txt
index dafb563f72..ffd6d42781 100644
--- a/Externals/libusb/CMakeLists.txt
+++ b/Externals/libusb/CMakeLists.txt
@@ -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
+)