summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiam <byteslice@airmail.cc>2022-12-28 23:26:46 +0100
committerLiam <byteslice@airmail.cc>2022-12-28 23:26:46 +0100
commitbe43b62d79cc03f9908ce5036f96a94e9053ba65 (patch)
tree0c55f4709eb56914520aa711f5735a96877fda1f
parentcmake: ignore missing package finders for packages with submodule fallbacks (diff)
downloadyuzu-be43b62d79cc03f9908ce5036f96a94e9053ba65.tar
yuzu-be43b62d79cc03f9908ce5036f96a94e9053ba65.tar.gz
yuzu-be43b62d79cc03f9908ce5036f96a94e9053ba65.tar.bz2
yuzu-be43b62d79cc03f9908ce5036f96a94e9053ba65.tar.lz
yuzu-be43b62d79cc03f9908ce5036f96a94e9053ba65.tar.xz
yuzu-be43b62d79cc03f9908ce5036f96a94e9053ba65.tar.zst
yuzu-be43b62d79cc03f9908ce5036f96a94e9053ba65.zip
-rw-r--r--CMakeLists.txt7
-rw-r--r--externals/CMakeLists.txt2
-rw-r--r--src/input_common/CMakeLists.txt15
-rw-r--r--src/input_common/main.cpp24
4 files changed, 39 insertions, 9 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6a124db07..ea7829707 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -22,6 +22,8 @@ CMAKE_DEPENDENT_OPTION(YUZU_USE_BUNDLED_SDL2 "Download bundled SDL2 binaries" ON
# On Linux system SDL2 is likely to be lacking HIDAPI support which have drawbacks but is needed for SDL motion
CMAKE_DEPENDENT_OPTION(YUZU_USE_EXTERNAL_SDL2 "Compile external SDL2" ON "ENABLE_SDL2;NOT MSVC" OFF)
+option(ENABLE_LIBUSB "Enable the use of LibUSB" ON)
+
option(ENABLE_OPENGL "Enable OpenGL" ON)
mark_as_advanced(FORCE ENABLE_OPENGL)
option(ENABLE_QT "Enable the Qt frontend" ON)
@@ -206,7 +208,6 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
find_package(enet 1.3)
find_package(fmt 9 REQUIRED)
find_package(inih)
-find_package(libusb 1.0.24)
find_package(lz4 REQUIRED)
find_package(nlohmann_json 3.8 REQUIRED)
find_package(Opus 1.3)
@@ -214,6 +215,10 @@ find_package(Vulkan 1.3.238)
find_package(ZLIB 1.2 REQUIRED)
find_package(zstd 1.5 REQUIRED)
+if (ENABLE_LIBUSB)
+ find_package(libusb 1.0.24)
+endif()
+
if (ARCHITECTURE_x86 OR ARCHITECTURE_x86_64)
find_package(xbyak 6 QUIET)
endif()
diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt
index 4ffafd18c..a83812ebb 100644
--- a/externals/CMakeLists.txt
+++ b/externals/CMakeLists.txt
@@ -45,7 +45,7 @@ if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "12" AND CMAKE_CXX_COMPILER
endif()
# libusb
-if (NOT TARGET libusb::usb)
+if (ENABLE_LIBUSB AND NOT TARGET libusb::usb)
add_subdirectory(libusb EXCLUDE_FROM_ALL)
endif()
diff --git a/src/input_common/CMakeLists.txt b/src/input_common/CMakeLists.txt
index f24c89b04..cef2c4d52 100644
--- a/src/input_common/CMakeLists.txt
+++ b/src/input_common/CMakeLists.txt
@@ -4,14 +4,10 @@
add_library(input_common STATIC
drivers/camera.cpp
drivers/camera.h
- drivers/gc_adapter.cpp
- drivers/gc_adapter.h
drivers/keyboard.cpp
drivers/keyboard.h
drivers/mouse.cpp
drivers/mouse.h
- drivers/sdl_driver.cpp
- drivers/sdl_driver.h
drivers/tas_input.cpp
drivers/tas_input.h
drivers/touch_screen.cpp
@@ -62,8 +58,17 @@ if (ENABLE_SDL2)
target_compile_definitions(input_common PRIVATE HAVE_SDL2)
endif()
+if (ENABLE_LIBUSB)
+ target_sources(input_common PRIVATE
+ drivers/gc_adapter.cpp
+ drivers/gc_adapter.h
+ )
+ target_link_libraries(input_common PRIVATE libusb::usb)
+ target_compile_definitions(input_common PRIVATE HAVE_LIBUSB)
+endif()
+
create_target_directory_groups(input_common)
-target_link_libraries(input_common PUBLIC core PRIVATE common Boost::boost libusb::usb)
+target_link_libraries(input_common PUBLIC core PRIVATE common Boost::boost)
if (YUZU_USE_PRECOMPILED_HEADERS)
target_precompile_headers(input_common PRIVATE precompiled_headers.h)
diff --git a/src/input_common/main.cpp b/src/input_common/main.cpp
index 86deb4c7c..4dc92f482 100644
--- a/src/input_common/main.cpp
+++ b/src/input_common/main.cpp
@@ -5,7 +5,6 @@
#include "common/input.h"
#include "common/param_package.h"
#include "input_common/drivers/camera.h"
-#include "input_common/drivers/gc_adapter.h"
#include "input_common/drivers/keyboard.h"
#include "input_common/drivers/mouse.h"
#include "input_common/drivers/tas_input.h"
@@ -19,6 +18,10 @@
#include "input_common/input_mapping.h"
#include "input_common/input_poller.h"
#include "input_common/main.h"
+
+#ifdef HAVE_LIBUSB
+#include "input_common/drivers/gc_adapter.h"
+#endif
#ifdef HAVE_SDL2
#include "input_common/drivers/sdl_driver.h"
#endif
@@ -45,7 +48,9 @@ struct InputSubsystem::Impl {
RegisterEngine("keyboard", keyboard);
RegisterEngine("mouse", mouse);
RegisterEngine("touch", touch_screen);
+#ifdef HAVE_LIBUSB
RegisterEngine("gcpad", gcadapter);
+#endif
RegisterEngine("cemuhookudp", udp_client);
RegisterEngine("tas", tas_input);
RegisterEngine("camera", camera);
@@ -72,7 +77,9 @@ struct InputSubsystem::Impl {
UnregisterEngine(keyboard);
UnregisterEngine(mouse);
UnregisterEngine(touch_screen);
+#ifdef HAVE_LIBUSB
UnregisterEngine(gcadapter);
+#endif
UnregisterEngine(udp_client);
UnregisterEngine(tas_input);
UnregisterEngine(camera);
@@ -95,8 +102,10 @@ struct InputSubsystem::Impl {
devices.insert(devices.end(), keyboard_devices.begin(), keyboard_devices.end());
auto mouse_devices = mouse->GetInputDevices();
devices.insert(devices.end(), mouse_devices.begin(), mouse_devices.end());
+#ifdef HAVE_LIBUSB
auto gcadapter_devices = gcadapter->GetInputDevices();
devices.insert(devices.end(), gcadapter_devices.begin(), gcadapter_devices.end());
+#endif
auto udp_devices = udp_client->GetInputDevices();
devices.insert(devices.end(), udp_devices.begin(), udp_devices.end());
#ifdef HAVE_SDL2
@@ -119,9 +128,11 @@ struct InputSubsystem::Impl {
if (engine == mouse->GetEngineName()) {
return mouse;
}
+#ifdef HAVE_LIBUSB
if (engine == gcadapter->GetEngineName()) {
return gcadapter;
}
+#endif
if (engine == udp_client->GetEngineName()) {
return udp_client;
}
@@ -194,9 +205,11 @@ struct InputSubsystem::Impl {
if (engine == mouse->GetEngineName()) {
return true;
}
+#ifdef HAVE_LIBUSB
if (engine == gcadapter->GetEngineName()) {
return true;
}
+#endif
if (engine == udp_client->GetEngineName()) {
return true;
}
@@ -217,7 +230,9 @@ struct InputSubsystem::Impl {
void BeginConfiguration() {
keyboard->BeginConfiguration();
mouse->BeginConfiguration();
+#ifdef HAVE_LIBUSB
gcadapter->BeginConfiguration();
+#endif
udp_client->BeginConfiguration();
#ifdef HAVE_SDL2
sdl->BeginConfiguration();
@@ -227,7 +242,9 @@ struct InputSubsystem::Impl {
void EndConfiguration() {
keyboard->EndConfiguration();
mouse->EndConfiguration();
+#ifdef HAVE_LIBUSB
gcadapter->EndConfiguration();
+#endif
udp_client->EndConfiguration();
#ifdef HAVE_SDL2
sdl->EndConfiguration();
@@ -248,7 +265,6 @@ struct InputSubsystem::Impl {
std::shared_ptr<Keyboard> keyboard;
std::shared_ptr<Mouse> mouse;
- std::shared_ptr<GCAdapter> gcadapter;
std::shared_ptr<TouchScreen> touch_screen;
std::shared_ptr<TasInput::Tas> tas_input;
std::shared_ptr<CemuhookUDP::UDPClient> udp_client;
@@ -256,6 +272,10 @@ struct InputSubsystem::Impl {
std::shared_ptr<VirtualAmiibo> virtual_amiibo;
std::shared_ptr<VirtualGamepad> virtual_gamepad;
+#ifdef HAVE_LIBUSB
+ std::shared_ptr<GCAdapter> gcadapter;
+#endif
+
#ifdef HAVE_SDL2
std::shared_ptr<SDLDriver> sdl;
#endif