From bec05851d5beb7efe96278804c87f2fbe7bd0cb2 Mon Sep 17 00:00:00 2001 From: lizzie Date: Thu, 2 Oct 2025 01:02:30 +0000 Subject: [PATCH] [compat] fix libusb when disabled error (solaris, fbsd, etc) This fixes an issue in builds where libusb is disabled, it also uses and prioritizes system dependencies over vendored ones (so ports is easier) Signed-off-by: lizzie --- CMakeLists.txt | 8 +++++--- docs/Deps.md | 28 ++-------------------------- src/input_common/CMakeLists.txt | 2 +- src/input_common/main.cpp | 18 +++++++++--------- 4 files changed, 17 insertions(+), 39 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a9ff2e9458..fbe2002045 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -155,7 +155,8 @@ option(YUZU_USE_QT_MULTIMEDIA "Use QtMultimedia for Camera" OFF) option(YUZU_USE_QT_WEB_ENGINE "Use QtWebEngine for web applet implementation" OFF) set(YUZU_QT_MIRROR "" CACHE STRING "What mirror to use for downloading the bundled Qt libraries") -option(ENABLE_CUBEB "Enables the cubeb audio backend" ON) +# FreeBSD doesn't have a cubeb port yet, vendoring it isn't required (it's optional anyways) +cmake_dependent_option(ENABLE_CUBEB "Enables the cubeb audio backend" ON "NOT PLATFORM_FREEBSD" OFF) set(EXT_DEFAULT OFF) if (MSVC OR ANDROID) @@ -166,12 +167,13 @@ option(YUZU_USE_CPM "Use CPM to fetch system dependencies (fmt, boost, etc) if n option(YUZU_USE_BUNDLED_FFMPEG "Download bundled FFmpeg" ${EXT_DEFAULT}) cmake_dependent_option(YUZU_USE_EXTERNAL_FFMPEG "Build FFmpeg from source" OFF "NOT WIN32 AND NOT ANDROID" OFF) -cmake_dependent_option(ENABLE_LIBUSB "Enable the use of LibUSB" ON "NOT ANDROID" OFF) +# Re-allow on FreeBSD once its on mainline ports +cmake_dependent_option(ENABLE_LIBUSB "Enable the use of LibUSB" ON "WIN32 OR PLATFORM_LINUX OR APPLE" OFF) cmake_dependent_option(ENABLE_OPENGL "Enable OpenGL" ON "NOT WIN32 OR NOT ARCHITECTURE_arm64" OFF) mark_as_advanced(FORCE ENABLE_OPENGL) -option(ENABLE_WEB_SERVICE "Enable web services (telemetry, etc.)" ON) +cmake_dependent_option(ENABLE_WEB_SERVICE "Enable web services (telemetry, etc.)" ON "WIN32 OR ANDROID OR PLATFORM_LINUX OR APPLE" OFF) option(ENABLE_WIFI_SCAN "Enable WiFi scanning" OFF) cmake_dependent_option(USE_DISCORD_PRESENCE "Enables Discord Rich Presence" OFF "ENABLE_QT" OFF) diff --git a/docs/Deps.md b/docs/Deps.md index 573d1fe14a..0f7f655631 100644 --- a/docs/Deps.md +++ b/docs/Deps.md @@ -144,32 +144,8 @@ brew install molten-vk vulkan-loader
FreeBSD -``` -devel/cmake -devel/sdl20 -devel/boost-libs -devel/catch2 -devel/libfmt -devel/nlohmann-json -devel/ninja -devel/nasm -devel/autoconf -devel/pkgconf -devel/qt6-base - -net/enet - -multimedia/ffnvcodec-headers -multimedia/ffmpeg - -audio/opus - -archivers/liblz4 - -lang/gcc12 - -graphics/glslang -graphics/vulkan-utility-libraries +```sh +sudo pkg install devel/cmake devel/sdl20 devel/boost-libs devel/catch2 devel/libfmt devel/nlohmann-json devel/ninja devel/nasm devel/autoconf devel/pkgconf devel/qt6-base devel/simpleini net/enet multimedia/ffnvcodec-headers multimedia/ffmpeg audio/opus archivers/liblz4 lang/gcc12 graphics/glslang graphics/vulkan-utility-libraries graphics/spirv-tools www/cpp-httplib devel/jwt-cpp devel/unordered-dense devel/zydis ``` If using FreeBSD 12 or prior, use `devel/pkg-config` instead. diff --git a/src/input_common/CMakeLists.txt b/src/input_common/CMakeLists.txt index d455323e05..3c6c618ad0 100644 --- a/src/input_common/CMakeLists.txt +++ b/src/input_common/CMakeLists.txt @@ -83,7 +83,7 @@ if (ENABLE_LIBUSB) drivers/gc_adapter.h ) target_link_libraries(input_common PRIVATE libusb::usb) - target_compile_definitions(input_common PRIVATE HAVE_LIBUSB) + target_compile_definitions(input_common PRIVATE ENABLE_LIBUSB) endif() create_target_directory_groups(input_common) diff --git a/src/input_common/main.cpp b/src/input_common/main.cpp index 62a7ae40f8..b41c36438c 100644 --- a/src/input_common/main.cpp +++ b/src/input_common/main.cpp @@ -19,7 +19,7 @@ #include "input_common/input_poller.h" #include "input_common/main.h" -#ifdef HAVE_LIBUSB +#ifdef ENABLE_LIBUSB #include "input_common/drivers/gc_adapter.h" #endif #ifdef HAVE_SDL2 @@ -76,7 +76,7 @@ struct InputSubsystem::Impl { RegisterEngine("keyboard", keyboard); RegisterEngine("mouse", mouse); RegisterEngine("touch", touch_screen); -#ifdef HAVE_LIBUSB +#ifdef ENABLE_LIBUSB RegisterEngine("gcpad", gcadapter); #endif RegisterEngine("cemuhookudp", udp_client); @@ -110,7 +110,7 @@ struct InputSubsystem::Impl { UnregisterEngine(keyboard); UnregisterEngine(mouse); UnregisterEngine(touch_screen); -#ifdef HAVE_LIBUSB +#ifdef ENABLE_LIBUSB UnregisterEngine(gcadapter); #endif UnregisterEngine(udp_client); @@ -145,7 +145,7 @@ struct InputSubsystem::Impl { auto android_devices = android->GetInputDevices(); devices.insert(devices.end(), android_devices.begin(), android_devices.end()); #endif -#ifdef HAVE_LIBUSB +#ifdef ENABLE_LIBUSB auto gcadapter_devices = gcadapter->GetInputDevices(); devices.insert(devices.end(), gcadapter_devices.begin(), gcadapter_devices.end()); #endif @@ -178,7 +178,7 @@ struct InputSubsystem::Impl { return android; } #endif -#ifdef HAVE_LIBUSB +#ifdef ENABLE_LIBUSB if (engine == gcadapter->GetEngineName()) { return gcadapter; } @@ -263,7 +263,7 @@ struct InputSubsystem::Impl { return true; } #endif -#ifdef HAVE_LIBUSB +#ifdef ENABLE_LIBUSB if (engine == gcadapter->GetEngineName()) { return true; } @@ -294,7 +294,7 @@ struct InputSubsystem::Impl { #ifdef ANDROID android->BeginConfiguration(); #endif -#ifdef HAVE_LIBUSB +#ifdef ENABLE_LIBUSB gcadapter->BeginConfiguration(); #endif udp_client->BeginConfiguration(); @@ -310,7 +310,7 @@ struct InputSubsystem::Impl { #ifdef ANDROID android->EndConfiguration(); #endif -#ifdef HAVE_LIBUSB +#ifdef ENABLE_LIBUSB gcadapter->EndConfiguration(); #endif udp_client->EndConfiguration(); @@ -343,7 +343,7 @@ struct InputSubsystem::Impl { std::shared_ptr virtual_amiibo; std::shared_ptr virtual_gamepad; -#ifdef HAVE_LIBUSB +#ifdef ENABLE_LIBUSB std::shared_ptr gcadapter; #endif