Here is an update to Dolphin 20240510. I decided to split off the Vulkan bits to deal with that later.
Instead I fixed building on arm64. Index: Makefile =================================================================== RCS file: /cvs/ports/emulators/dolphin/Makefile,v retrieving revision 1.22 diff -u -p -u -p -r1.22 Makefile --- Makefile 3 May 2024 06:50:46 -0000 1.22 +++ Makefile 18 May 2024 12:30:11 -0000 @@ -5,9 +5,9 @@ ONLY_FOR_ARCHS = aarch64 amd64 COMMENT-main = Nintendo GameCube and Wii emulator with GUI COMMENT-nogui = Nintendo GameCube and Wii emulator -PKGNAME = dolphin-5.0.0.20240421 +PKGNAME = dolphin-5.0.0.20240510 DIST_TUPLE += github dolphin-emu dolphin \ - b6f0e8876e40a41941f0fb6cef89cf49c91edb56 . # GPLv2 + 7ba539d7965f6f20ff6557369cebac5bfd82e320 . # GPLv2 # Externals/ DIST_TUPLE += github dolphin-emu ext-win-qt \ @@ -81,12 +81,12 @@ MULTI_PACKAGES = -main -nogui # GPLv2+ PERMIT_PACKAGE = Yes -cWANTLIB = EGL GL GLU ICE SDL2 SM X11 Xext Xi Xrandr avcodec \ - avformat avutil bz2 c curl fmt hidapi-libusb iconv \ - lz4 lzma lzo2 m mbedcrypto mbedtls mbedx509 miniupnpc \ - minizip pthread pugixml sfml-network sfml-system \ - speexdsp spng swscale swresample usb-1.0 xxhash \ - zstd ${COMPILER_LIBCXX} +cWANTLIB = EGL GL GLU SDL2 X11 Xi Xrandr avcodec avformat avutil \ + bz2 c curl fmt hidapi-libusb iconv lz4 lzma lzo2 m \ + mbedcrypto mbedtls mbedx509 miniupnpc minizip pthread \ + pugixml sfml-network sfml-system speexdsp spng swscale \ + swresample usb-1.0 xxhash zstd \ + ${COMPILER_LIBCXX} # sndio library is dlopen'd cWANTLIB += sndio @@ -117,8 +117,8 @@ LIB_DEPENDS-nogui = archivers/lz4 \ LIB_DEPENDS-main = ${LIB_DEPENDS-nogui} \ x11/qt6/qtbase RUN_DEPENDS-main = ${RUN_DEPENDS-nogui} \ + ${BASE_PKGPATH},-nogui \ devel/desktop-file-utils \ - emulators/dolphin,-nogui \ x11/gtk+4,-guic COMPILER = base-clang @@ -134,8 +134,6 @@ CONFIGURE_ARGS += -DENABLE_ALSA=OFF \ -DUSE_SYSTEM_ENET=OFF \ -DUSE_SYSTEM_LIBMGBA=OFF \ -DCMAKE_DISABLE_FIND_PACKAGE_Git=ON - -MODCMAKE_LDFLAGS = -L${X11BASE}/lib -L${LOCALBASE}/lib FIX_CRLF_FILES = Externals/soundtouch/SoundTouch.cpp \ Externals/soundtouch/SoundTouch.h Index: distinfo =================================================================== RCS file: /cvs/ports/emulators/dolphin/distinfo,v retrieving revision 1.6 diff -u -p -u -p -r1.6 distinfo --- distinfo 3 May 2024 06:50:46 -0000 1.6 +++ distinfo 18 May 2024 12:30:11 -0000 @@ -4,7 +4,7 @@ SHA256 (KhronosGroup-SPIRV-Cross-0640756 SHA256 (RetroAchievements-rcheevos-bfa0d3138865ae2a649a0beadfa4206408a14690.tar.gz) = gHG2G+GU7S+Xr6Z0JU7h3uyOR3aQrV5oF/kY2gKUSzc= SHA256 (bylaws-libadrenotools-deec5f75ee1a8ccbe32c8780b1d17284fc87b0f1.tar.gz) = o6augsMi1ZiwdoJ9EIZTT0f5/s7Xs2eDiQFTy6+e2YA= SHA256 (curl-curl-5379dbc248045ba46e89d76ffc4be4380d854728.tar.gz) = bvVz/TmIBJzA60tqxaAkvj76RRP1AxHbvcRvFSPtzGI= -SHA256 (dolphin-emu-dolphin-b6f0e8876e40a41941f0fb6cef89cf49c91edb56.tar.gz) = 205WTI1m1d+HP6Mgau1DZDLWWLiDcEL7ySyrwYqGCec= +SHA256 (dolphin-emu-dolphin-7ba539d7965f6f20ff6557369cebac5bfd82e320.tar.gz) = 3E8wBD+oN3+jkv4NhgV/sxSi/w+QTgIkSI3UKWhKxt4= SHA256 (dolphin-emu-ext-win-ffmpeg-9bc087fbca36ce5a85eb4fd73f0c73813593e5a2.tar.gz) = yYzYdIDrLVja3JYdx5JWlmlN5KIR0wiSEn/h3HwJJ4U= SHA256 (dolphin-emu-ext-win-qt-495517af2b922c10c24f543e0fd6ea3ddf774e50.tar.gz) = 0l6BYA4Uxz8Ikq/C93dfENrESO0KCSSYLMdnc1udUv0= SHA256 (epezent-implot-f156599faefe316f7dd20fe6c783bf87c8bb6fd9.tar.gz) = 13nOMzJjQ3JNHg+iPUlgzJrK9K9YS8ATTlBOdxfMxLs= @@ -26,7 +26,7 @@ SIZE (KhronosGroup-SPIRV-Cross-06407561e SIZE (RetroAchievements-rcheevos-bfa0d3138865ae2a649a0beadfa4206408a14690.tar.gz) = 657051 SIZE (bylaws-libadrenotools-deec5f75ee1a8ccbe32c8780b1d17284fc87b0f1.tar.gz) = 88081 SIZE (curl-curl-5379dbc248045ba46e89d76ffc4be4380d854728.tar.gz) = 3300739 -SIZE (dolphin-emu-dolphin-b6f0e8876e40a41941f0fb6cef89cf49c91edb56.tar.gz) = 20283207 +SIZE (dolphin-emu-dolphin-7ba539d7965f6f20ff6557369cebac5bfd82e320.tar.gz) = 20398707 SIZE (dolphin-emu-ext-win-ffmpeg-9bc087fbca36ce5a85eb4fd73f0c73813593e5a2.tar.gz) = 14871857 SIZE (dolphin-emu-ext-win-qt-495517af2b922c10c24f543e0fd6ea3ddf774e50.tar.gz) = 100540982 SIZE (epezent-implot-f156599faefe316f7dd20fe6c783bf87c8bb6fd9.tar.gz) = 140301 Index: patches/patch-Source_Core_Common_ArmCPUDetect_cpp =================================================================== RCS file: patches/patch-Source_Core_Common_ArmCPUDetect_cpp diff -N patches/patch-Source_Core_Common_ArmCPUDetect_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-Source_Core_Common_ArmCPUDetect_cpp 18 May 2024 12:30:11 -0000 @@ -0,0 +1,77 @@ +Add OpenBSD/arm64 support. + +Index: Source/Core/Common/ArmCPUDetect.cpp +--- Source/Core/Common/ArmCPUDetect.cpp.orig ++++ Source/Core/Common/ArmCPUDetect.cpp +@@ -15,11 +15,16 @@ + #include <Windows.h> + #include <arm64intr.h> + #include "Common/WindowsRegistry.h" +-#else +-#ifndef __FreeBSD__ ++#elif defined(__linux__) + #include <asm/hwcap.h> +-#endif + #include <sys/auxv.h> ++#elif defined(__FreeBSD__) ++#include <sys/auxv.h> ++#elif defined(__OpenBSD__) ++#include <machine/armreg.h> ++#include <machine/cpu.h> ++#include <sys/sysctl.h> ++#include <sys/types.h> + #endif + + #include <fmt/format.h> +@@ -183,7 +188,7 @@ static bool Read_MIDR_EL1(u64* value) + + #endif + +-#ifndef __APPLE__ ++#if defined(_WIN32) || defined(__linux__) || defined(__FreeBSD__) + + static std::string MIDRToString(u64 midr) + { +@@ -248,7 +253,7 @@ void CPUInfo::Detect() + { + cpu_id = MIDRToString(reg); + } +-#else ++#elif defined(__linux__) || defined(__FreeBSD__) + // Linux, Android, and FreeBSD + + #if defined(__FreeBSD__) +@@ -276,6 +281,33 @@ void CPUInfo::Detect() + if (Read_MIDR_EL1(&midr)) + { + cpu_id = MIDRToString(midr); ++ } ++#elif defined(__OpenBSD__) ++ // OpenBSD ++ int mib[2]; ++ size_t len; ++ char hwmodel[256]; ++ uint64_t isar0; ++ ++ mib[0] = CTL_HW; ++ mib[1] = HW_MODEL; ++ len = std::size(hwmodel); ++ if (sysctl(mib, 2, &hwmodel, &len, nullptr, 0) != -1) ++ model_name = std::string(hwmodel, len - 1); ++ ++ mib[0] = CTL_MACHDEP; ++ mib[1] = CPU_ID_AA64ISAR0; ++ len = sizeof(isar0); ++ if (sysctl(mib, 2, &isar0, &len, nullptr, 0) != -1) ++ { ++ if (ID_AA64ISAR0_AES(isar0) >= ID_AA64ISAR0_AES_PMULL) ++ bAES = true; ++ if (ID_AA64ISAR0_AES(isar0) >= ID_AA64ISAR0_SHA1_BASE) ++ bSHA1 = true; ++ if (ID_AA64ISAR0_AES(isar0) >= ID_AA64ISAR0_SHA2_BASE) ++ bSHA2 = true; ++ if (ID_AA64ISAR0_AES(isar0) >= ID_AA64ISAR0_CRC32_BASE) ++ bCRC32 = true; + } + #endif + Index: patches/patch-Source_Core_Core_HW_WiimoteReal_IOhidapi_cpp =================================================================== RCS file: patches/patch-Source_Core_Core_HW_WiimoteReal_IOhidapi_cpp diff -N patches/patch-Source_Core_Core_HW_WiimoteReal_IOhidapi_cpp --- patches/patch-Source_Core_Core_HW_WiimoteReal_IOhidapi_cpp 16 Apr 2024 17:21:57 -0000 1.4 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,15 +0,0 @@ -Change hid_init() to hidapi_hid_init() which is renamed locally to avoid -conflict with usbhid. - -Index: Source/Core/Core/HW/WiimoteReal/IOhidapi.cpp ---- Source/Core/Core/HW/WiimoteReal/IOhidapi.cpp.orig -+++ Source/Core/Core/HW/WiimoteReal/IOhidapi.cpp -@@ -41,7 +41,7 @@ namespace WiimoteReal - { - WiimoteScannerHidapi::WiimoteScannerHidapi() - { -- int ret = hid_init(); -+ int ret = hidapi_hid_init(); - ASSERT_MSG(WIIMOTE, ret == 0, "Couldn't initialise hidapi."); - } - Index: patches/patch-Source_Core_Core_MachineContext_h =================================================================== RCS file: patches/patch-Source_Core_Core_MachineContext_h diff -N patches/patch-Source_Core_Core_MachineContext_h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-Source_Core_Core_MachineContext_h 18 May 2024 12:30:11 -0000 @@ -0,0 +1,17 @@ +Add OpenBSD/arm64 support. + +Index: Source/Core/Core/MachineContext.h +--- Source/Core/Core/MachineContext.h.orig ++++ Source/Core/Core/MachineContext.h +@@ -157,6 +157,11 @@ typedef ucontext_t SContext; + #define CTX_R14 sc_r14 + #define CTX_R15 sc_r15 + #define CTX_RIP sc_rip ++#elif _M_ARM_64 ++#define CTX_REG(x) sc_x[x] ++#define CTX_LR sc_lr ++#define CTX_SP sc_sp ++#define CTX_PC sc_elr + #else + #error No context definition for architecture + #endif