From 2de0f4eef7e763241a7e88bbeb048410d388b662 Mon Sep 17 00:00:00 2001 From: swurl Date: Wed, 21 May 2025 21:37:32 -0400 Subject: [PATCH] experimental aarch64 builds Signed-off-by: swurl --- .ci/windows/build-aarch64.bat | 34 +++ .ci/windows/package-aarch64.sh | 29 +++ CMakeLists.txt | 6 +- externals/ffmpeg/CMakeLists.txt | 285 ++++++++++++------------ src/core/arm/dynarmic/dynarmic_cp15.cpp | 4 + src/yuzu/CMakeLists.txt | 7 +- 6 files changed, 219 insertions(+), 146 deletions(-) create mode 100644 .ci/windows/build-aarch64.bat create mode 100644 .ci/windows/package-aarch64.sh diff --git a/.ci/windows/build-aarch64.bat b/.ci/windows/build-aarch64.bat new file mode 100644 index 0000000000..fd9096f996 --- /dev/null +++ b/.ci/windows/build-aarch64.bat @@ -0,0 +1,34 @@ +@echo off + +set chain=%1 +set qt_dir=%2 +set qt_host=%3 +set ffmpeg_dir=%4 + +if not defined DevEnvDir ( + CALL "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" %chain% +) + +CALL mkdir build + +@REM TODO: enable QtWebEngine and translations, awaiting Qt builds +CALL cmake -S . -B build\%chain% ^ +-DCMAKE_BUILD_TYPE=Release ^ +-DENABLE_QT_TRANSLATION=OFF ^ +-DUSE_DISCORD_PRESENCE=ON ^ +-DYUZU_USE_BUNDLED_QT=OFF ^ +-DYUZU_USE_QT_MULTIMEDIA=ON ^ +-DYUZU_USE_QT_WEB_ENGINE=OFF ^ +-DYUZU_USE_BUNDLED_VCPKG=ON ^ +-DYUZU_USE_BUNDLED_SDL2=OFF ^ +-DYUZU_USE_EXTERNAL_SDL2=ON ^ +-DFFmpeg_PATH=%ffmpeg_dir% ^ +-DYUZU_ENABLE_LTO=ON ^ +-G "Ninja" ^ +-DYUZU_TESTS=OFF ^ +-DQt6_DIR=%qt_dir% ^ +-DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON ^ +-DQT_TARGET_PATH=%qt_dir% ^ +-DQT_HOST_PATH=%qt_host% + +CALL cmake --build build\%chain% diff --git a/.ci/windows/package-aarch64.sh b/.ci/windows/package-aarch64.sh new file mode 100644 index 0000000000..44d98c89bc --- /dev/null +++ b/.ci/windows/package-aarch64.sh @@ -0,0 +1,29 @@ +HOST_DIR=$1 +QT_DIR=$2 + +cd eden-windows-msvc +cp "/c/Program Files (x86)/Windows Kits/10/bin/10.0.22621.0/arm64/dxcompiler.dll" . +for i in `$HOST_DIR/bin/windeployqt.exe ./eden.exe --no-plugins --no-compiler-runtime --no-opengl-sw --no-system-d3d-compiler --no-translations --verbose 1 --dry-run | grep "Updating .*dll" | cut -d" " -f2 | cut -d"." -f1-2` +do + cp $QT_DIR/bin/$i . +done + +PLUGIN_DIRS=`$HOST_DIR/bin/windeployqt.exe ./eden.exe --no-libraries --plugindir plugins --no-compiler-runtime --no-opengl-sw --no-system-d3d-compiler --no-translations --verbose 1 --dry-run | grep "Creating directory" | cut -d" " -f3 | cut -d"." -f1` +for i in $PLUGIN_DIRS +do + mkdir -p $i +done + +for i in `$HOST_DIR/bin/windeployqt.exe ./eden.exe --no-libraries --no-compiler-runtime --no-opengl-sw --no-system-d3d-compiler --no-translations --list source --dry-run` +do + PLUGIN=$(cut -d "\\" -f5- <<< $i) + cp $QT_DIR/$PLUGIN ./$PLUGIN +done + +## Zip +cd .. +GITDATE=$(git show -s --date=short --format='%ad' | tr -d "-") +GITREV=$(git show -s --format='%h') + +BUILD_ZIP="eden-windows-msvc-$GITDATE-$GITREV-aarch64.zip" +7z a -tzip artifacts/$BUILD_ZIP eden-windows-msvc/* diff --git a/CMakeLists.txt b/CMakeLists.txt index f8e8516dbc..bc6e4d4355 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,9 +33,9 @@ endif() option(ENABLE_SDL2 "Enable the SDL2 frontend" ON) CMAKE_DEPENDENT_OPTION(YUZU_USE_BUNDLED_SDL2 "Download bundled SDL2 binaries" ON "ENABLE_SDL2;MSVC" OFF) if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") - CMAKE_DEPENDENT_OPTION(YUZU_USE_EXTERNAL_SDL2 "Compile external SDL2" OFF "ENABLE_SDL2;NOT MSVC" OFF) + CMAKE_DEPENDENT_OPTION(YUZU_USE_EXTERNAL_SDL2 "Compile external SDL2" OFF "ENABLE_SDL2" OFF) else() - CMAKE_DEPENDENT_OPTION(YUZU_USE_EXTERNAL_SDL2 "Compile external SDL2" ON "ENABLE_SDL2;NOT MSVC" OFF) + CMAKE_DEPENDENT_OPTION(YUZU_USE_EXTERNAL_SDL2 "Compile external SDL2" ON "ENABLE_SDL2;NOT YUZU_USE_BUNDLED_SDL2" OFF) endif() cmake_dependent_option(ENABLE_LIBUSB "Enable the use of LibUSB" ON "NOT ANDROID" OFF) @@ -462,7 +462,7 @@ if (ENABLE_QT) if (NOT Qt6_DIR) set(Qt6_DIR "" CACHE PATH "Additional path to search for Qt6 libraries like C:/Qt/6.8.3/msvc2022_64/lib/cmake/Qt6") endif() - list(APPEND CMAKE_PREFIX_PATH "${Qt6_DIR}") + list(PREPEND CMAKE_PREFIX_PATH "${Qt6_DIR}") endif() # QT6 Multimedia pulls in unneeded audio systems (ALSA, Pulseaudio) for FreeBSD diff --git a/externals/ffmpeg/CMakeLists.txt b/externals/ffmpeg/CMakeLists.txt index 9eb71418a0..46380f217d 100644 --- a/externals/ffmpeg/CMakeLists.txt +++ b/externals/ffmpeg/CMakeLists.txt @@ -80,148 +80,148 @@ if (NOT WIN32 AND NOT ANDROID) ${LIBVA-X11_INCLUDE_DIRS} ${LIBVA_INCLUDE_DIRS} ) - message(STATUS "VA-API found") - else() - set(FFmpeg_HWACCEL_FLAGS --disable-vaapi) - endif() + message(STATUS "VA-API found") +else() + set(FFmpeg_HWACCEL_FLAGS --disable-vaapi) +endif() - if (FFNVCODEC_FOUND) - list(APPEND FFmpeg_HWACCEL_FLAGS - --enable-cuvid - --enable-ffnvcodec - --enable-nvdec - --enable-hwaccel=h264_nvdec - --enable-hwaccel=vp8_nvdec - --enable-hwaccel=vp9_nvdec - ) - list(APPEND FFmpeg_HWACCEL_LIBRARIES ${FFNVCODEC_LIBRARIES}) - list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${FFNVCODEC_INCLUDE_DIRS}) - list(APPEND FFmpeg_HWACCEL_LDFLAGS ${FFNVCODEC_LDFLAGS}) - message(STATUS "ffnvcodec libraries version ${FFNVCODEC_VERSION} found") - # ffnvenc could load CUDA libraries at the runtime using dlopen/dlsym or LoadLibrary/GetProcAddress - # here we handle the hard-linking senario where CUDA is linked during compilation - if (CUDA_FOUND) - # This line causes build error if CUDA_INCLUDE_DIRS is anything but a single non-empty value - #list(APPEND FFmpeg_HWACCEL_FLAGS --extra-cflags=-I${CUDA_INCLUDE_DIRS}) - list(APPEND FFmpeg_HWACCEL_LIBRARIES ${CUDA_LIBRARIES}) - list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${CUDA_INCLUDE_DIRS}) - list(APPEND FFmpeg_HWACCEL_LDFLAGS ${CUDA_LDFLAGS}) - message(STATUS "CUDA libraries found, hard-linking will be performed") - endif(CUDA_FOUND) - endif() - - if (VDPAU_FOUND) - list(APPEND FFmpeg_HWACCEL_FLAGS - --enable-vdpau - --enable-hwaccel=h264_vdpau - --enable-hwaccel=vp9_vdpau - ) - list(APPEND FFmpeg_HWACCEL_LIBRARIES ${VDPAU_LIBRARIES}) - list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${VDPAU_INCLUDE_DIRS}) - list(APPEND FFmpeg_HWACCEL_LDFLAGS ${VDPAU_LDFLAGS}) - message(STATUS "vdpau libraries version ${VDPAU_VERSION} found") - else() - list(APPEND FFmpeg_HWACCEL_FLAGS --disable-vdpau) - endif() - - find_program(BASH_PROGRAM bash REQUIRED) - - set(FFmpeg_CROSS_COMPILE_FLAGS "") - if (ANDROID) - string(TOLOWER "${CMAKE_HOST_SYSTEM_NAME}" FFmpeg_HOST_SYSTEM_NAME) - set(TOOLCHAIN "${ANDROID_NDK}/toolchains/llvm/prebuilt/${FFmpeg_HOST_SYSTEM_NAME}-${CMAKE_HOST_SYSTEM_PROCESSOR}") - set(SYSROOT "${TOOLCHAIN}/sysroot") - set(FFmpeg_CPU "armv8-a") - list(APPEND FFmpeg_CROSS_COMPILE_FLAGS - --arch=arm64 - #--cpu=${FFmpeg_CPU} - --enable-cross-compile - --cross-prefix=${TOOLCHAIN}/bin/aarch64-linux-android- - --sysroot=${SYSROOT} - --target-os=android - --extra-ldflags="--ld-path=${TOOLCHAIN}/bin/ld.lld" - --extra-ldflags="-nostdlib" - ) - endif() - - # `configure` parameters builds only exactly what yuzu needs from FFmpeg - # `--disable-vdpau` is needed to avoid linking issues - set(FFmpeg_CC ${CMAKE_C_COMPILER_LAUNCHER} ${CMAKE_C_COMPILER}) - set(FFmpeg_CXX ${CMAKE_CXX_COMPILER_LAUNCHER} ${CMAKE_CXX_COMPILER}) - add_custom_command( - OUTPUT - ${FFmpeg_MAKEFILE} - COMMAND - ${BASH_PROGRAM} ${FFmpeg_PREFIX}/configure - --disable-avdevice - --disable-avformat - --disable-doc - --disable-everything - --disable-ffmpeg - --disable-ffprobe - --disable-network - --disable-postproc - --disable-swresample - --enable-decoder=h264 - --enable-decoder=vp8 - --enable-decoder=vp9 - --enable-filter=yadif,scale - --cc="${FFmpeg_CC}" - --cxx="${FFmpeg_CXX}" - ${FFmpeg_HWACCEL_FLAGS} - ${FFmpeg_CROSS_COMPILE_FLAGS} - WORKING_DIRECTORY - ${FFmpeg_BUILD_DIR} +if (FFNVCODEC_FOUND) + list(APPEND FFmpeg_HWACCEL_FLAGS + --enable-cuvid + --enable-ffnvcodec + --enable-nvdec + --enable-hwaccel=h264_nvdec + --enable-hwaccel=vp8_nvdec + --enable-hwaccel=vp9_nvdec ) - unset(FFmpeg_CC) - unset(FFmpeg_CXX) - unset(FFmpeg_HWACCEL_FLAGS) - unset(FFmpeg_CROSS_COMPILE_FLAGS) +list(APPEND FFmpeg_HWACCEL_LIBRARIES ${FFNVCODEC_LIBRARIES}) +list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${FFNVCODEC_INCLUDE_DIRS}) +list(APPEND FFmpeg_HWACCEL_LDFLAGS ${FFNVCODEC_LDFLAGS}) +message(STATUS "ffnvcodec libraries version ${FFNVCODEC_VERSION} found") +# ffnvenc could load CUDA libraries at the runtime using dlopen/dlsym or LoadLibrary/GetProcAddress +# here we handle the hard-linking senario where CUDA is linked during compilation +if (CUDA_FOUND) + # This line causes build error if CUDA_INCLUDE_DIRS is anything but a single non-empty value + #list(APPEND FFmpeg_HWACCEL_FLAGS --extra-cflags=-I${CUDA_INCLUDE_DIRS}) + list(APPEND FFmpeg_HWACCEL_LIBRARIES ${CUDA_LIBRARIES}) + list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${CUDA_INCLUDE_DIRS}) + list(APPEND FFmpeg_HWACCEL_LDFLAGS ${CUDA_LDFLAGS}) + message(STATUS "CUDA libraries found, hard-linking will be performed") +endif(CUDA_FOUND) +endif() - # Workaround for Ubuntu 18.04's older version of make not being able to call make as a child - # with context of the jobserver. Also helps ninja users. - execute_process( - COMMAND - nproc - OUTPUT_VARIABLE - SYSTEM_THREADS) - - set(FFmpeg_BUILD_LIBRARIES ${FFmpeg_LIBRARIES}) - add_custom_command( - OUTPUT - ${FFmpeg_BUILD_LIBRARIES} - COMMAND - make -j${SYSTEM_THREADS} - WORKING_DIRECTORY - ${FFmpeg_BUILD_DIR} +if (VDPAU_FOUND) + list(APPEND FFmpeg_HWACCEL_FLAGS + --enable-vdpau + --enable-hwaccel=h264_vdpau + --enable-hwaccel=vp9_vdpau ) +list(APPEND FFmpeg_HWACCEL_LIBRARIES ${VDPAU_LIBRARIES}) +list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${VDPAU_INCLUDE_DIRS}) +list(APPEND FFmpeg_HWACCEL_LDFLAGS ${VDPAU_LDFLAGS}) +message(STATUS "vdpau libraries version ${VDPAU_VERSION} found") +else() + list(APPEND FFmpeg_HWACCEL_FLAGS --disable-vdpau) +endif() - set(FFmpeg_INCLUDE_DIR - "${FFmpeg_PREFIX};${FFmpeg_BUILD_DIR};${FFmpeg_HWACCEL_INCLUDE_DIRS}" - CACHE PATH "Path to FFmpeg headers" FORCE) +find_program(BASH_PROGRAM bash REQUIRED) - set(FFmpeg_LDFLAGS - "${FFmpeg_HWACCEL_LDFLAGS}" - CACHE STRING "FFmpeg linker flags" FORCE) +set(FFmpeg_CROSS_COMPILE_FLAGS "") +if (ANDROID) + string(TOLOWER "${CMAKE_HOST_SYSTEM_NAME}" FFmpeg_HOST_SYSTEM_NAME) + set(TOOLCHAIN "${ANDROID_NDK}/toolchains/llvm/prebuilt/${FFmpeg_HOST_SYSTEM_NAME}-${CMAKE_HOST_SYSTEM_PROCESSOR}") + set(SYSROOT "${TOOLCHAIN}/sysroot") + set(FFmpeg_CPU "armv8-a") + list(APPEND FFmpeg_CROSS_COMPILE_FLAGS + --arch=arm64 + #--cpu=${FFmpeg_CPU} + --enable-cross-compile + --cross-prefix=${TOOLCHAIN}/bin/aarch64-linux-android- + --sysroot=${SYSROOT} + --target-os=android + --extra-ldflags="--ld-path=${TOOLCHAIN}/bin/ld.lld" + --extra-ldflags="-nostdlib" + ) +endif() - # ALL makes this custom target build every time - # but it won't actually build if the DEPENDS parameter is up to date - add_custom_target(ffmpeg-configure ALL DEPENDS ${FFmpeg_MAKEFILE}) - add_custom_target(ffmpeg-build ALL DEPENDS ${FFmpeg_BUILD_LIBRARIES} ffmpeg-configure) - link_libraries(${FFmpeg_LIBVA_LIBRARIES}) - set(FFmpeg_LIBRARIES ${FFmpeg_BUILD_LIBRARIES} ${FFmpeg_HWACCEL_LIBRARIES} - CACHE PATH "Paths to FFmpeg libraries" FORCE) - unset(FFmpeg_BUILD_LIBRARIES) - unset(FFmpeg_HWACCEL_FLAGS) - unset(FFmpeg_HWACCEL_INCLUDE_DIRS) - unset(FFmpeg_HWACCEL_LDFLAGS) - unset(FFmpeg_HWACCEL_LIBRARIES) +# `configure` parameters builds only exactly what yuzu needs from FFmpeg +# `--disable-vdpau` is needed to avoid linking issues +set(FFmpeg_CC ${CMAKE_C_COMPILER_LAUNCHER} ${CMAKE_C_COMPILER}) +set(FFmpeg_CXX ${CMAKE_CXX_COMPILER_LAUNCHER} ${CMAKE_CXX_COMPILER}) +add_custom_command( + OUTPUT + ${FFmpeg_MAKEFILE} + COMMAND + ${BASH_PROGRAM} ${FFmpeg_PREFIX}/configure + --disable-avdevice + --disable-avformat + --disable-doc + --disable-everything + --disable-ffmpeg + --disable-ffprobe + --disable-network + --disable-postproc + --disable-swresample + --enable-decoder=h264 + --enable-decoder=vp8 + --enable-decoder=vp9 + --enable-filter=yadif,scale + --cc="${FFmpeg_CC}" + --cxx="${FFmpeg_CXX}" + ${FFmpeg_HWACCEL_FLAGS} + ${FFmpeg_CROSS_COMPILE_FLAGS} + WORKING_DIRECTORY + ${FFmpeg_BUILD_DIR} +) +unset(FFmpeg_CC) +unset(FFmpeg_CXX) +unset(FFmpeg_HWACCEL_FLAGS) +unset(FFmpeg_CROSS_COMPILE_FLAGS) - if (FFmpeg_FOUND) - message(STATUS "Found FFmpeg version ${FFmpeg_VERSION}") - else() - message(FATAL_ERROR "FFmpeg not found") - endif() +# Workaround for Ubuntu 18.04's older version of make not being able to call make as a child +# with context of the jobserver. Also helps ninja users. +execute_process( + COMMAND + nproc + OUTPUT_VARIABLE + SYSTEM_THREADS) + +set(FFmpeg_BUILD_LIBRARIES ${FFmpeg_LIBRARIES}) +add_custom_command( + OUTPUT + ${FFmpeg_BUILD_LIBRARIES} + COMMAND + make -j${SYSTEM_THREADS} + WORKING_DIRECTORY + ${FFmpeg_BUILD_DIR} +) + +set(FFmpeg_INCLUDE_DIR + "${FFmpeg_PREFIX};${FFmpeg_BUILD_DIR};${FFmpeg_HWACCEL_INCLUDE_DIRS}" + CACHE PATH "Path to FFmpeg headers" FORCE) + +set(FFmpeg_LDFLAGS + "${FFmpeg_HWACCEL_LDFLAGS}" + CACHE STRING "FFmpeg linker flags" FORCE) + +# ALL makes this custom target build every time +# but it won't actually build if the DEPENDS parameter is up to date +add_custom_target(ffmpeg-configure ALL DEPENDS ${FFmpeg_MAKEFILE}) +add_custom_target(ffmpeg-build ALL DEPENDS ${FFmpeg_BUILD_LIBRARIES} ffmpeg-configure) +link_libraries(${FFmpeg_LIBVA_LIBRARIES}) +set(FFmpeg_LIBRARIES ${FFmpeg_BUILD_LIBRARIES} ${FFmpeg_HWACCEL_LIBRARIES} + CACHE PATH "Paths to FFmpeg libraries" FORCE) +unset(FFmpeg_BUILD_LIBRARIES) +unset(FFmpeg_HWACCEL_FLAGS) +unset(FFmpeg_HWACCEL_INCLUDE_DIRS) +unset(FFmpeg_HWACCEL_LDFLAGS) +unset(FFmpeg_HWACCEL_LIBRARIES) + +if (FFmpeg_FOUND) + message(STATUS "Found FFmpeg version ${FFmpeg_VERSION}") +else() + message(FATAL_ERROR "FFmpeg not found") +endif() elseif(ANDROID) # Use yuzu FFmpeg binaries if (ARCHITECTURE_arm64) @@ -256,18 +256,21 @@ elseif(ANDROID) elseif(WIN32) # Use yuzu FFmpeg binaries set(FFmpeg_EXT_NAME "ffmpeg-7.1.1") - set(FFmpeg_PATH "${CMAKE_BINARY_DIR}/externals/${FFmpeg_EXT_NAME}") - download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "") + if (ARCHITECTURE_x86_64) + download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "") + set(FFmpeg_PATH "${CMAKE_BINARY_DIR}/externals/${FFmpeg_EXT_NAME}") + endif() + set(FFmpeg_FOUND YES) set(FFmpeg_INCLUDE_DIR "${FFmpeg_PATH}/include" CACHE PATH "Path to FFmpeg headers" FORCE) set(FFmpeg_LIBRARY_DIR "${FFmpeg_PATH}/bin" CACHE PATH "Path to FFmpeg library directory" FORCE) set(FFmpeg_LDFLAGS "" CACHE STRING "FFmpeg linker flags" FORCE) set(FFmpeg_LIBRARIES - ${FFmpeg_LIBRARY_DIR}/swscale.lib - ${FFmpeg_LIBRARY_DIR}/avcodec.lib - ${FFmpeg_LIBRARY_DIR}/avfilter.lib - ${FFmpeg_LIBRARY_DIR}/avutil.lib - CACHE PATH "Paths to FFmpeg libraries" FORCE) + ${FFmpeg_LIBRARY_DIR}/swscale.lib + ${FFmpeg_LIBRARY_DIR}/avcodec.lib + ${FFmpeg_LIBRARY_DIR}/avfilter.lib + ${FFmpeg_LIBRARY_DIR}/avutil.lib + CACHE PATH "Paths to FFmpeg libraries" FORCE) # exported variables set(FFmpeg_PATH "${FFmpeg_PATH}" PARENT_SCOPE) set(FFmpeg_LDFLAGS "${FFmpeg_LDFLAGS}" PARENT_SCOPE) diff --git a/src/core/arm/dynarmic/dynarmic_cp15.cpp b/src/core/arm/dynarmic/dynarmic_cp15.cpp index c663adda19..0d5e5912ae 100644 --- a/src/core/arm/dynarmic/dynarmic_cp15.cpp +++ b/src/core/arm/dynarmic/dynarmic_cp15.cpp @@ -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 diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt index bab6a6c4f5..05a24e7c04 100644 --- a/src/yuzu/CMakeLists.txt +++ b/src/yuzu/CMakeLists.txt @@ -458,6 +458,7 @@ endif() if (WIN32 AND NOT YUZU_USE_BUNDLED_QT AND QT_VERSION VERSION_GREATER_EQUAL 6) set(YUZU_EXE_DIR "$") + message(STATUS "WINDEPLOYQT EXECUTABLE: ${WINDEPLOYQT_EXECUTABLE}") add_custom_command(TARGET yuzu POST_BUILD COMMAND ${WINDEPLOYQT_EXECUTABLE} "${YUZU_EXE_DIR}/eden.exe" --dir "${YUZU_EXE_DIR}" --libdir "${YUZU_EXE_DIR}" --plugindir "${YUZU_EXE_DIR}/plugins" --no-compiler-runtime --no-opengl-sw --no-system-d3d-compiler --no-translations --verbose 0) endif() @@ -473,9 +474,11 @@ endif() if (MSVC) include(CopyYuzuSDLDeps) - include(CopyYuzuFFmpegDeps) copy_yuzu_SDL_deps(yuzu) - copy_yuzu_FFmpeg_deps(yuzu) + if (ARCHITECTURE_x86_64) + include(CopyYuzuFFmpegDeps) + copy_yuzu_FFmpeg_deps(yuzu) + endif() endif() if (NOT APPLE AND ENABLE_OPENGL)