From c2f388fd88c11fb6daf199b9b4bba6b201e18613 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Mon, 14 Aug 2023 15:48:14 +0200
Subject: [PATCH] cmake: add SDL_HIDAPI_LIBUSB_SHARED option + test on ci
---
.github/workflows/main.yml | 2 +-
CMakeLists.txt | 1 +
cmake/sdlchecks.cmake | 19 +++++++------------
3 files changed, 9 insertions(+), 13 deletions(-)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 7f4fbab0c0c4..0327e3063c98 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -52,7 +52,7 @@ jobs:
sudo apt-get update
sudo apt-get install build-essential git \
pkg-config cmake ninja-build gnome-desktop-testing libasound2-dev libpulse-dev \
- libaudio-dev libjack-dev libsndio-dev libsamplerate0-dev libx11-dev libxext-dev \
+ libaudio-dev libjack-dev libsndio-dev libusb-1.0-0-dev libx11-dev libxext-dev \
libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libwayland-dev \
libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev \
libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev fcitx-libs-dev
diff --git a/CMakeLists.txt b/CMakeLists.txt
index dc17ef8723f6..8f7ed0b95307 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -342,6 +342,7 @@ option_string(SDL_BACKGROUNDING_SIGNAL "number to use for magic backgrounding si
option_string(SDL_FOREGROUNDING_SIGNAL "number to use for magic foregrounding signal or 'OFF'" OFF)
dep_option(SDL_HIDAPI "Enable the HIDAPI subsystem" ON "NOT VISIONOS" OFF)
dep_option(SDL_HIDAPI_LIBUSB "Use libusb for low level joystick drivers" ON SDL_HIDAPI_LIBUSB_AVAILABLE OFF)
+dep_option(SDL_HIDAPI_LIBUSB_SHARED "Dynamically load libusb support" ON SDL_HIDAPI_LIBUSB OFF)
dep_option(SDL_HIDAPI_JOYSTICK "Use HIDAPI for low level joystick drivers" ON SDL_HIDAPI OFF)
dep_option(SDL_VIRTUAL_JOYSTICK "Enable the virtual-joystick driver" ON SDL_HIDAPI OFF)
set_option(SDL_LIBUDEV "Enable libudev support" ON)
diff --git a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake
index f12b7e3ed139..bf656cc491ee 100644
--- a/cmake/sdlchecks.cmake
+++ b/cmake/sdlchecks.cmake
@@ -1019,8 +1019,8 @@ endmacro()
# Check for HIDAPI support
macro(CheckHIDAPI)
- set(HAVE_HIDAPI TRUE)
if(SDL_HIDAPI)
+ set(HAVE_HIDAPI ON)
if(SDL_HIDAPI_LIBUSB)
set(HAVE_LIBUSB FALSE)
@@ -1033,21 +1033,16 @@ macro(CheckHIDAPI)
cmake_pop_check_state()
if(HAVE_LIBUSB_H)
set(HAVE_LIBUSB TRUE)
- if(HIDAPI_ONLY_LIBUSB)
- sdl_link_dependency(hidapi LIBS PkgConfig::PC_LIBUSB PKG_CONFIG_PREFIX PC_LIBUSB PKG_CONFIG_SPECS ${LibUSB_PKG_CONFIG_SPEC})
- else()
- # libusb is loaded dynamically, so don't add link to it
- FindLibraryAndSONAME("usb-1.0" LIBDIRS ${PC_LIBUSB_LIBRARY_DIRS})
- if(USB_1.0_LIB)
- set(SDL_LIBUSB_DYNAMIC "\"${USB_1.0_LIB_SONAME}\"")
- endif()
+ FindLibraryAndSONAME("usb-1.0" LIBDIRS ${PC_LIBUSB_LIBRARY_DIRS})
+ if(SDL_HIDAPI_LIBUSB_SHARED AND USB_1.0_LIB_SONAME)
+ set(HAVE_HIDAPI_LIBUSB_SHARED ON)
+ set(SDL_LIBUSB_DYNAMIC "\"${USB_1.0_LIB_SONAME}\"")
sdl_link_dependency(hidapi INCLUDES $<TARGET_PROPERTY:PkgConfig::PC_LIBUSB,INTERFACE_INCLUDE_DIRECTORIES>)
+ else()
+ sdl_link_dependency(hidapi LIBS PkgConfig::PC_LIBUSB PKG_CONFIG_PREFIX PC_LIBUSB PKG_CONFIG_SPECS ${LibUSB_PKG_CONFIG_SPEC})
endif()
endif()
endif()
- if(HIDAPI_ONLY_LIBUSB AND NOT HAVE_LIBUSB)
- set(HAVE_HIDAPI FALSE)
- endif()
set(HAVE_HIDAPI_LIBUSB ${HAVE_LIBUSB})
endif()