diff --git a/3rdparty/hidapi/CMakeLists.txt b/3rdparty/hidapi/CMakeLists.txt index e1e36ac13e..2d043d6936 100644 --- a/3rdparty/hidapi/CMakeLists.txt +++ b/3rdparty/hidapi/CMakeLists.txt @@ -1,22 +1,30 @@ # hidapi -set(BUILD_SHARED_LIBS FALSE CACHE BOOL "Don't build shared libs") -set(HIDAPI_INSTALL_TARGETS FALSE CACHE BOOL "Don't install anything") - -if(CMAKE_SYSTEM MATCHES "Linux") - set(HIDAPI_WITH_LIBUSB FALSE CACHE BOOL "Don't build with libusb for linux") -endif() - -add_library(3rdparty_hidapi INTERFACE) -add_subdirectory(hidapi EXCLUDE_FROM_ALL) - -if(APPLE) - target_link_libraries(3rdparty_hidapi INTERFACE hidapi_darwin "-framework CoreFoundation" "-framework IOKit") -elseif(CMAKE_SYSTEM MATCHES "Linux") - target_link_libraries(3rdparty_hidapi INTERFACE hidapi-hidraw udev) -elseif(WIN32) - target_link_libraries(3rdparty_hidapi INTERFACE hidapi::hidapi hidapi::include Shlwapi.lib) -elseif(ANDROID) - target_link_libraries(3rdparty_hidapi INTERFACE hidapi::libusb) +if(USE_SYSTEM_HIDAPI) + message(STATUS "RPCS3: using shared hidapi") + pkg_check_modules(hidapi-hidraw REQUIRED IMPORTED_TARGET hidapi-hidraw) + add_library(3rdparty_hidapi INTERFACE) + target_link_libraries(3rdparty_hidapi INTERFACE PkgConfig::hidapi-hidraw) + target_include_directories(3rdparty_hidapi INTERFACE PkgConfig::hidapi-hidraw) else() - target_link_libraries(3rdparty_hidapi INTERFACE hidapi-libusb usb) + set(BUILD_SHARED_LIBS FALSE CACHE BOOL "Don't build shared libs") + set(HIDAPI_INSTALL_TARGETS FALSE CACHE BOOL "Don't install anything") + + if(CMAKE_SYSTEM MATCHES "Linux") + set(HIDAPI_WITH_LIBUSB FALSE CACHE BOOL "Don't build with libusb for linux") + endif() + + add_library(3rdparty_hidapi INTERFACE) + add_subdirectory(hidapi EXCLUDE_FROM_ALL) + + if(APPLE) + target_link_libraries(3rdparty_hidapi INTERFACE hidapi_darwin "-framework CoreFoundation" "-framework IOKit") + elseif(CMAKE_SYSTEM MATCHES "Linux") + target_link_libraries(3rdparty_hidapi INTERFACE hidapi-hidraw udev) + elseif(WIN32) + target_link_libraries(3rdparty_hidapi INTERFACE hidapi::hidapi hidapi::include Shlwapi.lib) + elseif(ANDROID) + target_link_libraries(3rdparty_hidapi INTERFACE hidapi::libusb) + else() + target_link_libraries(3rdparty_hidapi INTERFACE hidapi-libusb usb) + endif() endif() diff --git a/CMakeLists.txt b/CMakeLists.txt index 1b132da0b1..04e95a3ee4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,6 +44,7 @@ option(USE_SYSTEM_FAUDIO "Prefer system FAudio instead of the builtin one" OFF) option(USE_SYSTEM_FFMPEG "Prefer system ffmpeg instead of the prebuild one" OFF) option(USE_SYSTEM_FLATBUFFERS "Prefer system flatbuffers instead of the builtin one" OFF) option(USE_SYSTEM_GLSLANG "Prefer system glslang instead of the builtin one" OFF) +option(USE_SYSTEM_HIDAPI "Prefer system hidapi instead of the builtin one" OFF) option(USE_SYSTEM_LIBPNG "Prefer system libpng instead of the builtin one" OFF) option(USE_SYSTEM_LIBUSB "Prefer system libusb instead of the builtin one" OFF) option(USE_SYSTEM_MINIUPNPC "Prefer system MiniUPnPc instead of the builtin one" OFF)