[cmake, arm] fix windows/arm64 build

Signed-off-by: crueter <crueter@crueter.xyz>
This commit is contained in:
crueter 2025-09-07 22:46:44 -04:00 committed by crueter
parent 58b4ace06e
commit 575fc4e26c
Signed by: crueter
GPG key ID: 425ACD2D4830EBC6
3 changed files with 20 additions and 3 deletions

View file

@ -366,6 +366,12 @@ if (YUZU_USE_CPM)
# boost
set(BOOST_INCLUDE_LIBRARIES algorithm icl pool container heap asio headers process filesystem crc variant)
if (MSVC AND ARCHITECURE_arm64)
set(BOOST_USE_PREBUILT OFF)
set(BOOST_CONTEXT_ASM OFF)
set(BOOST_B2_OPTIONS=address-model=64 architecture=arm target-os=windows toolset=msvc)
endif()
AddJsonPackage(boost)
# really annoying thing where boost::headers doesn't work with cpm

View file

@ -11,10 +11,17 @@ function(download_bundled_external remote_path lib_name cpm_key prefix_var versi
set(package_repo "no_platform")
set(package_extension "no_platform")
# TODO(crueter): Need to convert ffmpeg to a CI.
if (WIN32 OR FORCE_WIN_ARCHIVES)
set(CACHE_KEY "windows")
set(package_repo "ext-windows-bin/raw/master/")
set(package_extension ".7z")
if (ARCHITECTURE_arm64)
set(CACHE_KEY "windows")
set(package_repo "ext-windows-arm64-bin/raw/master/")
set(package_extension ".zip")
elseif(ARCHITECTURE_x86_64)
set(CACHE_KEY "windows")
set(package_repo "ext-windows-bin/raw/master/")
set(package_extension ".7z")
endif()
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
set(CACHE_KEY "linux")
set(package_repo "ext-linux-bin/raw/master/")

View file

@ -58,6 +58,8 @@ CallbackOrAccessOneWord DynarmicCP15::CompileSendOneWord(bool two, unsigned opc1
_mm_lfence();
#elif defined(ARCHITECTURE_x86_64)
asm volatile("mfence\n\tlfence\n\t" : : : "memory");
#elif defined(_MSC_VER) && defined(ARCHITECTURE_arm64)
_Memory_barrier();
#elif defined(ARCHITECTURE_arm64)
asm volatile("dsb sy\n\t" : : : "memory");
#else
@ -75,6 +77,8 @@ CallbackOrAccessOneWord DynarmicCP15::CompileSendOneWord(bool two, unsigned opc1
_mm_mfence();
#elif defined(ARCHITECTURE_x86_64)
asm volatile("mfence\n\t" : : : "memory");
#elif defined(_MSC_VER) && defined(ARCHITECTURE_arm64)
_Memory_barrier();
#elif defined(ARCHITECTURE_arm64)
asm volatile("dmb sy\n\t" : : : "memory");
#else