From 2005b0365e4fbde37ccc906a79e32673d42fad47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joshua=20Vanda=C3=ABle?= Date: Tue, 6 Jan 2026 21:20:54 +0100 Subject: [PATCH] cpp-ipc: Fix builds on non-FreeBSD BSDs cpp-ipc is explicitely only available on Windows, Linux, QNX, and FreeBSD. Trying to build dolphin on any another BSD such as OpenBSD or Haiku currently leads to failure because of this. --- CMakeLists.txt | 4 +++- Source/Core/Core/CMakeLists.txt | 2 +- Source/Core/Core/HW/EXI/EXI_DeviceEthernet.h | 4 ++-- Source/Core/DolphinQt/Settings/GameCubePane.cpp | 2 +- Source/VSProps/Base.Dolphin.props | 1 + 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5e63c62c66..29ba31ce4a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -786,8 +786,10 @@ endif() add_subdirectory(Externals/watcher) -if(NOT ANDROID AND NOT APPLE) +# Any other platform or BSD is currently unsupported by cpp-ipc +if(WIN32 OR LINUX OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "QNX") add_subdirectory(Externals/cpp-ipc) + add_definitions(-DHAVE_CPPIPC) endif() ######################################## diff --git a/Source/Core/Core/CMakeLists.txt b/Source/Core/Core/CMakeLists.txt index 66236573c1..85e446e2a0 100644 --- a/Source/Core/Core/CMakeLists.txt +++ b/Source/Core/Core/CMakeLists.txt @@ -799,7 +799,7 @@ if(UNIX) ) endif() -if(NOT ANDROID AND NOT APPLE) +if(TARGET cpp-ipc::ipc) target_sources(core PRIVATE HW/EXI/BBA/IPC.cpp) target_link_libraries(core PRIVATE cpp-ipc::ipc) endif() diff --git a/Source/Core/Core/HW/EXI/EXI_DeviceEthernet.h b/Source/Core/Core/HW/EXI/EXI_DeviceEthernet.h index a6b0780886..cb6ac688bf 100644 --- a/Source/Core/Core/HW/EXI/EXI_DeviceEthernet.h +++ b/Source/Core/Core/HW/EXI/EXI_DeviceEthernet.h @@ -15,7 +15,7 @@ #endif #include -#if !defined(__ANDROID__) && !defined(__APPLE__) +#ifdef HAVE_CPPIPC #include #endif @@ -483,7 +483,7 @@ private: public: explicit IPCBBAInterface(CEXIETHERNET* const eth_ref) : NetworkInterface(eth_ref) {} -#if !defined(__ANDROID__) && !defined(__APPLE__) +#ifdef HAVE_CPPIPC bool Activate() override; void Deactivate() override; diff --git a/Source/Core/DolphinQt/Settings/GameCubePane.cpp b/Source/Core/DolphinQt/Settings/GameCubePane.cpp index fd27612dc5..db7fdf5919 100644 --- a/Source/Core/DolphinQt/Settings/GameCubePane.cpp +++ b/Source/Core/DolphinQt/Settings/GameCubePane.cpp @@ -143,7 +143,7 @@ void GameCubePane::CreateWidgets() EXIDeviceType::EthernetXLink, EXIDeviceType::EthernetTapServer, EXIDeviceType::EthernetBuiltIn, -#if !defined(__APPLE__) +#ifdef HAVE_CPPIPC EXIDeviceType::EthernetIPC, #endif EXIDeviceType::ModemTapServer, diff --git a/Source/VSProps/Base.Dolphin.props b/Source/VSProps/Base.Dolphin.props index 9d1a2f4ce9..5b4e1b2fa2 100644 --- a/Source/VSProps/Base.Dolphin.props +++ b/Source/VSProps/Base.Dolphin.props @@ -50,6 +50,7 @@ RC_CLIENT_SUPPORTS_HASH;%(PreprocessorDefinitions) RC_CLIENT_SUPPORTS_RAINTEGRATION;%(PreprocessorDefinitions) HAVE_CUBEB;%(PreprocessorDefinitions) + HAVE_CPPIPC;%(PreprocessorDefinitions)