aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Beich <jbeich@FreeBSD.org>2021-03-01 23:07:40 +0000
committerJan Beich <jbeich@FreeBSD.org>2021-03-01 23:07:40 +0000
commit377c792850e5cdce7c7cf233cec2c7d5f58654d6 (patch)
treef38b64eb77338c9eeaf03f21633e2d8c29f05e69
parent72f2119489af8bb6a38db25dc2ee5694759f411f (diff)
downloadports-377c792850e5cdce7c7cf233cec2c7d5f58654d6.tar.gz
ports-377c792850e5cdce7c7cf233cec2c7d5f58654d6.zip
MFH: r566353 r566919
emulators/yuzu: update to s20210301 - Switch to GCC/libstdc++ until Clang/libc++ supports more C++20 features Changes: https://github.com/yuzu-emu/yuzu/compare/0b47f7a46...ac8b1445f
Notes
Notes: svn path=/branches/2021Q1/; revision=566923
-rw-r--r--emulators/yuzu-qt5/Makefile2
-rw-r--r--emulators/yuzu/Makefile32
-rw-r--r--emulators/yuzu/distinfo38
-rw-r--r--emulators/yuzu/files/patch-fmt72
-rw-r--r--emulators/yuzu/files/patch-zstd13
5 files changed, 140 insertions, 17 deletions
diff --git a/emulators/yuzu-qt5/Makefile b/emulators/yuzu-qt5/Makefile
index 4bf1dce65d16..456d42c3f25d 100644
--- a/emulators/yuzu-qt5/Makefile
+++ b/emulators/yuzu-qt5/Makefile
@@ -1,6 +1,6 @@
# $FreeBSD$
-PORTREVISION= 2
+PORTREVISION= 0
PKGNAMESUFFIX= -qt5
MASTERDIR= ${.CURDIR}/../yuzu
diff --git a/emulators/yuzu/Makefile b/emulators/yuzu/Makefile
index 06caf51c37f1..0a269031fa72 100644
--- a/emulators/yuzu/Makefile
+++ b/emulators/yuzu/Makefile
@@ -1,12 +1,23 @@
# $FreeBSD$
PORTNAME= yuzu
-PORTVERSION= s20201218
-PORTREVISION?= 2
+PORTVERSION= s20210301
+PORTREVISION?= 0
CATEGORIES= emulators
PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
-PATCHFILES+= 905e8016a04e.patch:-p1 # https://github.com/yuzu-emu/yuzu/pull/1340
+PATCHFILES+= 09efade03619.patch:-p1 # https://github.com/yuzu-emu/yuzu/pull/1340
+PATCHFILES+= 91076a814ff2.patch:-p1 # https://github.com/yuzu-emu/yuzu/pull/4836
+PATCHFILES+= ec7337d1da05.patch:-p1 # https://github.com/yuzu-emu/yuzu/pull/5896
+PATCHFILES+= 4c1e00b7780f.patch:-p1 # https://github.com/yuzu-emu/yuzu/pull/5896
+PATCHFILES+= 1d703019d37a.patch:-p1 # https://github.com/yuzu-emu/yuzu/pull/5896
+PATCHFILES+= 96dc85f79b0b.patch:-p1 # https://github.com/yuzu-emu/yuzu/pull/5896
+PATCHFILES+= 8ab3e2366b32.patch:-p1 # https://github.com/yuzu-emu/yuzu/pull/5896
+PATCHFILES+= c279e3ad6104.patch:-p1 # https://github.com/yuzu-emu/yuzu/pull/5896
+PATCHFILES+= 9b429b84617c.patch:-p1 # https://github.com/yuzu-emu/yuzu/pull/5896
+PATCHFILES+= cc4650cc8a84.patch:-p1 # https://github.com/yuzu-emu/yuzu/pull/5896
+PATCHFILES+= 4233c859a602.patch:-p1 # https://github.com/yuzu-emu/yuzu/pull/5896
+PATCHFILES+= c8880a62d365.patch:-p1 # https://github.com/yuzu-emu/yuzu/pull/5896
MAINTAINER= jbeich@FreeBSD.org
COMMENT= Nintendo Switch emulator/debugger
@@ -24,32 +35,35 @@ ONLY_FOR_ARCHS= aarch64 amd64 powerpc64
ONLY_FOR_ARCHS_REASON= requires int128
BUILD_DEPENDS= catch>0:devel/catch \
- nlohmann-json>0:devel/nlohmann-json
+ nlohmann-json>0:devel/nlohmann-json \
+ glslangValidator:graphics/glslang
LIB_DEPENDS= liblz4.so:archivers/liblz4 \
libzip.so:archivers/libzip \
libzstd.so:archivers/zstd \
libopus.so:audio/opus \
libboost_context.so:devel/boost-libs \
- libfmt.so:devel/libfmt \
libavcodec.so:multimedia/ffmpeg
USE_GITHUB= yes
GH_ACCOUNT= yuzu-emu
-GH_TAGNAME= 0b47f7a46
+GH_TAGNAME= ac8b1445f
GH_TUPLE= DarkLordZach:mbedtls:a280e60:mbedtls/externals/mbedtls \
KhronosGroup:SPIRV-Headers:2c51218:SPIRV_Headers/externals/sirit/externals/SPIRV-Headers \
KhronosGroup:Vulkan-Headers:v1.2.145:Vulkan_Headers/externals/Vulkan-Headers \
- MerryMage:dynarmic:r3-242-g0e1112b7:dynarmic/externals/dynarmic \
+ MerryMage:dynarmic:r4-106-gcafa6876:dynarmic/externals/dynarmic \
ReinUsesLisp:sirit:eefca56:sirit/externals/sirit \
arsenm:sanitizers-cmake:aab6948:sanitizers_cmake/externals/cubeb/cmake/sanitizers-cmake \
citra-emu:ext-soundtouch:060181e:soundtouch/externals/soundtouch \
+ fmtlib:fmt:7.1.2:fmt/externals/fmt \
herumi:xbyak:v5.96:xbyak/externals/xbyak \
kinetiknz:cubeb:cubeb-0.2-1298-g8d53747:cubeb/externals/cubeb \
benhoyt:inih:r52:inih/externals/inih/inih
USES= cmake compiler:c++17-lang localbase:ldflags sdl ssl
+USE_GCC= 10+ # libc++ lacks std::atomic_ref, std::ranges
USE_SDL= sdl2
CMAKE_OFF= ENABLE_GNUTLS ENABLE_MBEDTLS
+LDFLAGS+= -static-libstdc++ # avoid libc++ conflict, requires files/patch-fmt
LDFLAGS+= -Wl,--as-needed # Qt5Network
TEST_TARGET= test
@@ -73,8 +87,7 @@ SNDIO_BUILD_DEPENDS= sndio>0:audio/sndio
SNDIO_CMAKE_BOOL= USE_SNDIO
SDL_CMAKE_BOOL= ENABLE_SDL2
-SDL_PLIST_FILES=bin/${PORTNAME}-cmd \
- bin/${PORTNAME}-tester
+SDL_PLIST_FILES=bin/${PORTNAME}-cmd
QT5_USES= desktop-file-utils qt:5 shared-mime-info
QT5_USE= QT=qmake_build,buildtools_build,linguisttools_build,concurrent_build,core,gui,webengine,widgets
@@ -116,3 +129,4 @@ LLVM_VER= 10.0.1
.endif
.include <bsd.port.post.mk>
+RUN_DEPENDS:= ${RUN_DEPENDS:Ngcc*}
diff --git a/emulators/yuzu/distinfo b/emulators/yuzu/distinfo
index 92d6a8a223d4..845f7c632fc6 100644
--- a/emulators/yuzu/distinfo
+++ b/emulators/yuzu/distinfo
@@ -1,27 +1,51 @@
-TIMESTAMP = 1608278232
+TIMESTAMP = 1614590566
SHA256 (libcxx-10.0.1.src.tar.xz) = def674535f22f83131353b3c382ccebfef4ba6a35c488bdb76f10b68b25be86c
SIZE (libcxx-10.0.1.src.tar.xz) = 1839172
-SHA256 (yuzu-emu-yuzu-s20201218-0b47f7a46_GH0.tar.gz) = be57025587658949cfc5a7584014c7eea2785012fc82b1ff23a64395d1383bb9
-SIZE (yuzu-emu-yuzu-s20201218-0b47f7a46_GH0.tar.gz) = 4062898
+SHA256 (yuzu-emu-yuzu-s20210301-ac8b1445f_GH0.tar.gz) = 08fb73c1f88f6800c664809596080482a96897b80744180df014786e0e1fc32f
+SIZE (yuzu-emu-yuzu-s20210301-ac8b1445f_GH0.tar.gz) = 3581234
SHA256 (DarkLordZach-mbedtls-a280e60_GH0.tar.gz) = 4fc6ddc256bc75b975fd5ad8bb7d31ff79c62d49daafb0108585c9ef80c6c5a7
SIZE (DarkLordZach-mbedtls-a280e60_GH0.tar.gz) = 2283313
SHA256 (KhronosGroup-SPIRV-Headers-2c51218_GH0.tar.gz) = 08f70947b69e17c7e322156adcd471cf02b4b3f63e7baf8ee0f02d32603ac5ff
SIZE (KhronosGroup-SPIRV-Headers-2c51218_GH0.tar.gz) = 280829
SHA256 (KhronosGroup-Vulkan-Headers-v1.2.145_GH0.tar.gz) = c8656969f0dc33f5f544b9449f02d66b7c9de67e6e58376c1cd4999694ab8517
SIZE (KhronosGroup-Vulkan-Headers-v1.2.145_GH0.tar.gz) = 766896
-SHA256 (MerryMage-dynarmic-r3-242-g0e1112b7_GH0.tar.gz) = f552cb543bd8937dc145a780e6a11925f510b90b6fe281db44de93e74db07654
-SIZE (MerryMage-dynarmic-r3-242-g0e1112b7_GH0.tar.gz) = 1646910
+SHA256 (MerryMage-dynarmic-r4-106-gcafa6876_GH0.tar.gz) = 80ac3c503a56e4b66f5482ee579114e3b859c2d57dd6cf16c78bd25635571f82
+SIZE (MerryMage-dynarmic-r4-106-gcafa6876_GH0.tar.gz) = 1677235
SHA256 (ReinUsesLisp-sirit-eefca56_GH0.tar.gz) = cc95e8155e14e596526c378d0a3cc2bb4bfe7da68773a79f224d48f89b20685a
SIZE (ReinUsesLisp-sirit-eefca56_GH0.tar.gz) = 22035
SHA256 (arsenm-sanitizers-cmake-aab6948_GH0.tar.gz) = d9009e17948aff769a6f6e16b52d4d8752c5cc2cab1e9c381d3a31fd1a680b58
SIZE (arsenm-sanitizers-cmake-aab6948_GH0.tar.gz) = 7240
SHA256 (citra-emu-ext-soundtouch-060181e_GH0.tar.gz) = a593ab188e4feaeef8376c27b554cc413986efc777c195e44c6d3d223de9a63c
SIZE (citra-emu-ext-soundtouch-060181e_GH0.tar.gz) = 59514
+SHA256 (fmtlib-fmt-7.1.2_GH0.tar.gz) = 4119a1c34dff91631e1d0a3707428f764f1ea22fe3cd5e70af5b4ccd5513831c
+SIZE (fmtlib-fmt-7.1.2_GH0.tar.gz) = 769401
SHA256 (herumi-xbyak-v5.96_GH0.tar.gz) = 727f15d3ed786cae255ebfed1829a84a357c0e4856c6304456d77f1b56c3d2c6
SIZE (herumi-xbyak-v5.96_GH0.tar.gz) = 226999
SHA256 (kinetiknz-cubeb-cubeb-0.2-1298-g8d53747_GH0.tar.gz) = b5cd93de1ca5c9810594a8ec9ac4a3f7c0014cb5d90827034839405a82553fba
SIZE (kinetiknz-cubeb-cubeb-0.2-1298-g8d53747_GH0.tar.gz) = 218055
SHA256 (benhoyt-inih-r52_GH0.tar.gz) = 439cff9ce9a8afc52d08772ac3e93b3cecd79c7707f871fb4534fb3a48201880
SIZE (benhoyt-inih-r52_GH0.tar.gz) = 16808
-SHA256 (905e8016a04e.patch) = cecc02f098917ee236ace0a350f37a9ffbb4aae92232f6c105a520476f7b23b5
-SIZE (905e8016a04e.patch) = 2545
+SHA256 (09efade03619.patch) = 096e4ed92b58e788be04766774b8eedc958d490fd5df35e51a239253ca1f8180
+SIZE (09efade03619.patch) = 2551
+SHA256 (91076a814ff2.patch) = 6060de2a8ae4fb5f3f244daccc42d3bce7d6ee42918234f1f2720ac36f12cb6b
+SIZE (91076a814ff2.patch) = 10992
+SHA256 (ec7337d1da05.patch) = fc6f8cc5fe86ed588d9d4115da88cc16c04a2a7fbcea851486f33c334cae3a24
+SIZE (ec7337d1da05.patch) = 5944
+SHA256 (4c1e00b7780f.patch) = 5520cdfc27951b72661ab7777e9cc6b551d8f30e6f9ec22e4544b25eab367c83
+SIZE (4c1e00b7780f.patch) = 11749
+SHA256 (1d703019d37a.patch) = 2b578d68cd96416c13f073238628691f63abecf6d2e6ab906d293062799075ca
+SIZE (1d703019d37a.patch) = 6472
+SHA256 (96dc85f79b0b.patch) = bdd39790b87ae771d94e03be730ac17db69427fa538d84724e555f4149b77e29
+SIZE (96dc85f79b0b.patch) = 21980
+SHA256 (8ab3e2366b32.patch) = d4cb57b295840b0a6553dec300acbaa40c212bd235481bfefac78e5ca855645a
+SIZE (8ab3e2366b32.patch) = 11925
+SHA256 (c279e3ad6104.patch) = 528ae5a9f06f06116863dae30918ea471a98522515ba43248ff53cbbf33d766e
+SIZE (c279e3ad6104.patch) = 6679
+SHA256 (9b429b84617c.patch) = 69b45a549a7b584276a6592c19f8434bde8b06173d93435c5c467995141678d4
+SIZE (9b429b84617c.patch) = 3670
+SHA256 (cc4650cc8a84.patch) = 48b09c977205f7107c4f26aae0a76797dc4702ab4a6af7db961d7cbad025d81f
+SIZE (cc4650cc8a84.patch) = 4700
+SHA256 (4233c859a602.patch) = 1ceafe906bc4a70f54450c3c80eafb0f443fe3165a232770c94a0a0f961352ac
+SIZE (4233c859a602.patch) = 6093
+SHA256 (c8880a62d365.patch) = f0873e838ac50206850d3673712a7d25d187003ff280f02379d5e23ead90221c
+SIZE (c8880a62d365.patch) = 4616
diff --git a/emulators/yuzu/files/patch-fmt b/emulators/yuzu/files/patch-fmt
new file mode 100644
index 000000000000..d57b3cdc7856
--- /dev/null
+++ b/emulators/yuzu/files/patch-fmt
@@ -0,0 +1,72 @@
+Partially revert https://github.com/yuzu-emu/yuzu/commit/bc30a591ba72
+
+/usr/local/bin/ld: src/yuzu/CMakeFiles/yuzu.dir/about_dialog.cpp.o: in function `AboutDialog::AboutDialog(QWidget*)':
+about_dialog.cpp:(.text+0x3d3): undefined reference to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)'
+/usr/local/bin/ld: src/yuzu/CMakeFiles/yuzu.dir/applets/web_browser.cpp.o: in function `QtNXWebEngineView::LoadExtractedFonts()':
+web_browser.cpp:(.text+0x14e7): undefined reference to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)'
+/usr/local/bin/ld: src/yuzu/CMakeFiles/yuzu.dir/configuration/config.cpp.o: in function `Config::Initialize(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
+config.cpp:(.text+0x11064): undefined reference to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)'
+/usr/local/bin/ld: config.cpp:(.text+0x111cc): undefined reference to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)'
+/usr/local/bin/ld: config.cpp:(.text+0x1136c): undefined reference to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)'
+/usr/local/bin/ld: src/yuzu/CMakeFiles/yuzu.dir/configuration/configure_per_game.cpp.o:configure_per_game.cpp:(.text+0x1348): more undefined references to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)' follow
+/usr/local/bin/ld: src/core/libcore.a(core.cpp.o): in function `void fmt::v7::detail::format_value<char, Loader::ResultStatus>(fmt::v7::detail::buffer<char>&, Loader::ResultStatus const&, fmt::v7::detail::locale_ref)':
+core.cpp:(.text._ZN3fmt2v76detail12format_valueIcN6Loader12ResultStatusEEEvRNS1_6bufferIT_EERKT0_NS1_10locale_refE[_ZN3fmt2v76detail12format_valueIcN6Loader12ResultStatusEEEvRNS1_6bufferIT_EERKT0_NS1_10locale_refE]+0x10f): undefined reference to `std::locale fmt::v7::detail::locale_ref::get<std::locale>() const'
+/usr/local/bin/ld: src/core/libcore.a(key_manager.cpp.o): in function `Core::Crypto::KeyManager::SetKey(Core::Crypto::S128KeyType, std::array<unsigned char, 16ul>, unsigned long, unsigned long)':
+key_manager.cpp:(.text+0x6d22): undefined reference to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)'
+/usr/local/bin/ld: key_manager.cpp:(.text+0x6e8f): undefined reference to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)'
+/usr/local/bin/ld: key_manager.cpp:(.text+0x6fc1): undefined reference to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)'
+/usr/local/bin/ld: key_manager.cpp:(.text+0x7057): undefined reference to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)'
+/usr/local/bin/ld: key_manager.cpp:(.text+0x709d): undefined reference to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)'
+/usr/local/bin/ld: src/core/libcore.a(key_manager.cpp.o):key_manager.cpp:(.text+0x70e3): more undefined references to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)' follow
+/usr/local/bin/ld: src/core/libcore.a(boxcat.cpp.o): in function `void fmt::v7::detail::value<fmt::v7::basic_format_context<fmt::v7::detail::buffer_appender<char>, char> >::format_custom_arg<Service::BCAT::(anonymous namespace)::DownloadResult, fmt::v7::detail::fallback_formatter<Service::BCAT::(anonymous namespace)::DownloadResult, char, void> >(void const*, fmt::v7::basic_format_parse_context<char, fmt::v7::detail::error_handler>&, fmt::v7::basic_format_context<fmt::v7::detail::buffer_appender<char>, char>&)':
+boxcat.cpp:(.text+0x4492): undefined reference to `std::locale fmt::v7::detail::locale_ref::get<std::locale>() const'
+/usr/local/bin/ld: src/core/libcore.a(boxcat.cpp.o): in function `Service::BCAT::Boxcat::Client::DownloadInternal(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
+boxcat.cpp:(.text+0x4fc4): undefined reference to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)'
+/usr/local/bin/ld: src/core/libcore.a(boxcat.cpp.o): in function `Service::BCAT::SynchronizeInternal(Service::AM::Applets::AppletManager&, std::function<std::shared_ptr<FileSys::VfsDirectory> (unsigned long)>, Service::BCAT::TitleIDVersion, Service::BCAT::ProgressServiceBackend&, std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)':
+boxcat.cpp:(.text+0x5c80): undefined reference to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)'
+/usr/local/bin/ld: boxcat.cpp:(.text+0x5d4b): undefined reference to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)'
+/usr/local/bin/ld: src/core/libcore.a(boxcat.cpp.o): in function `Service::BCAT::Boxcat::GetLaunchParameter(Service::BCAT::TitleIDVersion)':
+boxcat.cpp:(.text+0x6e98): undefined reference to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)'
+/usr/local/bin/ld: boxcat.cpp:(.text+0x70ac): undefined reference to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)'
+/usr/local/bin/ld: src/core/libcore.a(bis_factory.cpp.o):bis_factory.cpp:(.text+0xacf): more undefined references to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)' follow
+/usr/local/bin/ld: externals/dynarmic/src/libdynarmic.a(basic_block.cpp.o): in function `void fmt::v7::detail::format_value<char, Dynarmic::IR::LocationDescriptor>(fmt::v7::detail::buffer<char>&, Dynarmic::IR::LocationDescriptor const&, fmt::v7::detail::locale_ref)':
+basic_block.cpp:(.text._ZN3fmt2v76detail12format_valueIcN8Dynarmic2IR18LocationDescriptorEEEvRNS1_6bufferIT_EERKT0_NS1_10locale_refE[_ZN3fmt2v76detail12format_valueIcN8Dynarmic2IR18LocationDescriptorEEEvRNS1_6bufferIT_EERKT0_NS1_10locale_refE]+0x10f): undefined reference to `std::locale fmt::v7::detail::locale_ref::get<std::locale>() const'
+/usr/local/bin/ld: externals/dynarmic/src/libdynarmic.a(location_descriptor.cpp.o): in function `Dynarmic::IR::operator<<(std::ostream&, Dynarmic::IR::LocationDescriptor const&)':
+location_descriptor.cpp:(.text+0x37): undefined reference to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)'
+/usr/local/bin/ld: externals/dynarmic/src/libdynarmic.a(a32_emit_x64.cpp.o): in function `Dynarmic::Backend::X64::A32EmitX64::LocationDescriptorToFriendlyName[abi:cxx11](Dynarmic::IR::LocationDescriptor const&) const':
+a32_emit_x64.cpp:(.text+0x69c): undefined reference to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)'
+/usr/local/bin/ld: externals/dynarmic/src/libdynarmic.a(a32_emit_x64.cpp.o): in function `Dynarmic::Backend::X64::A32EmitX64::GenFastmemFallbacks()':
+a32_emit_x64.cpp:(.text+0x4f76): undefined reference to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)'
+/usr/local/bin/ld: a32_emit_x64.cpp:(.text+0x5366): undefined reference to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)'
+/usr/local/bin/ld: externals/dynarmic/src/libdynarmic.a(a64_emit_x64.cpp.o): in function `Dynarmic::Backend::X64::A64EmitX64::LocationDescriptorToFriendlyName[abi:cxx11](Dynarmic::IR::LocationDescriptor const&) const':
+a64_emit_x64.cpp:(.text+0x65): undefined reference to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)'
+/usr/local/bin/ld: externals/dynarmic/src/libdynarmic.a(a64_emit_x64.cpp.o):a64_emit_x64.cpp:(.text+0x533d): more undefined references to `fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_view<char>, fmt::v7::format_args)' follow
+/usr/local/bin/ld: externals/dynarmic/src/libdynarmic.a(microinstruction.cpp.o): in function `void fmt::v7::detail::format_value<char, Dynarmic::IR::Opcode>(fmt::v7::detail::buffer<char>&, Dynarmic::IR::Opcode const&, fmt::v7::detail::locale_ref)':
+microinstruction.cpp:(.text._ZN3fmt2v76detail12format_valueIcN8Dynarmic2IR6OpcodeEEEvRNS1_6bufferIT_EERKT0_NS1_10locale_refE[_ZN3fmt2v76detail12format_valueIcN8Dynarmic2IR6OpcodeEEEvRNS1_6bufferIT_EERKT0_NS1_10locale_refE]+0x10f): undefined reference to `std::locale fmt::v7::detail::locale_ref::get<std::locale>() const'
+/usr/local/bin/ld: externals/dynarmic/src/libdynarmic.a(microinstruction.cpp.o): in function `void fmt::v7::detail::format_value<char, Dynarmic::IR::Type>(fmt::v7::detail::buffer<char>&, Dynarmic::IR::Type const&, fmt::v7::detail::locale_ref)':
+microinstruction.cpp:(.text._ZN3fmt2v76detail12format_valueIcN8Dynarmic2IR4TypeEEEvRNS1_6bufferIT_EERKT0_NS1_10locale_refE[_ZN3fmt2v76detail12format_valueIcN8Dynarmic2IR4TypeEEEvRNS1_6bufferIT_EERKT0_NS1_10locale_refE]+0x10f): undefined reference to `std::locale fmt::v7::detail::locale_ref::get<std::locale>() const'
+collect2: error: ld returned 1 exit status
+
+--- CMakeLists.txt.orig 2021-02-22 04:23:45 UTC
++++ CMakeLists.txt
+@@ -165,7 +165,6 @@ macro(yuzu_find_packages)
+ set(REQUIRED_LIBS
+ # Cmake Pkg Prefix Version Conan Pkg
+ "Catch2 2.13 catch2/2.13.0"
+- "fmt 7.1 fmt/7.1.2"
+ # can't use until https://github.com/bincrafters/community/issues/1173
+ #"libzip 1.5 libzip/1.5.2@bincrafters/stable"
+ "lz4 1.8 lz4/1.9.2"
+--- externals/CMakeLists.txt.orig 2021-02-22 04:23:45 UTC
++++ externals/CMakeLists.txt
+@@ -15,6 +15,10 @@ endif()
+ add_library(catch-single-include INTERFACE)
+ target_include_directories(catch-single-include INTERFACE catch/single_include)
+
++# libfmt
++add_subdirectory(fmt)
++add_library(fmt::fmt ALIAS fmt)
++
+ # Dynarmic
+ if (ARCHITECTURE_x86_64)
+ set(DYNARMIC_TESTS OFF)
diff --git a/emulators/yuzu/files/patch-zstd b/emulators/yuzu/files/patch-zstd
new file mode 100644
index 000000000000..064dfc4d3f96
--- /dev/null
+++ b/emulators/yuzu/files/patch-zstd
@@ -0,0 +1,13 @@
+https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=251957
+
+--- CMakeLists.txt.orig
++++ CMakeLists.txt
+@@ -166,7 +166,7 @@ macro(yuzu_find_packages)
+ # we need to be careful as the version check might be broken https://github.com/xiph/opus/issues/110
+ "opus 1.3 opus/1.3.1"
+ "ZLIB 1.2 zlib/1.2.11"
+- "zstd 1.4 zstd/1.4.8"
++ "zstd 1.4 zstd/1.4.5"
+ )
+
+ foreach(PACKAGE ${REQUIRED_LIBS})