mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-12-06 07:12:28 +01:00
Windows ARM build
This commit is contained in:
parent
e09be04df6
commit
a5cb5376e0
|
|
@ -6,7 +6,7 @@ export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
|
||||||
export HOMEBREW_NO_ENV_HINTS=1
|
export HOMEBREW_NO_ENV_HINTS=1
|
||||||
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
||||||
|
|
||||||
brew install -f --overwrite --quiet pipenv googletest ffmpeg@5 "llvm@$LLVM_COMPILER_VER" glew sdl3 vulkan-headers
|
brew install -f --overwrite --quiet pipenv ffmpeg@5 "llvm@$LLVM_COMPILER_VER" glew sdl3 vulkan-headers
|
||||||
brew link -f --quiet "llvm@$LLVM_COMPILER_VER" ffmpeg@5
|
brew link -f --quiet "llvm@$LLVM_COMPILER_VER" ffmpeg@5
|
||||||
|
|
||||||
# moltenvk based on commit for 1.4.0 release
|
# moltenvk based on commit for 1.4.0 release
|
||||||
|
|
@ -83,8 +83,8 @@ mkdir build && cd build || exit 1
|
||||||
export MACOSX_DEPLOYMENT_TARGET=14.0
|
export MACOSX_DEPLOYMENT_TARGET=14.0
|
||||||
|
|
||||||
"$BREW_PATH/bin/cmake" .. \
|
"$BREW_PATH/bin/cmake" .. \
|
||||||
-DBUILD_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
|
-DBUILD_RPCS3_TESTS=OFF \
|
||||||
-DRUN_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
|
-DRUN_RPCS3_TESTS=OFF \
|
||||||
-DUSE_SDL=ON \
|
-DUSE_SDL=ON \
|
||||||
-DUSE_DISCORD_RPC=ON \
|
-DUSE_DISCORD_RPC=ON \
|
||||||
-DUSE_VULKAN=ON \
|
-DUSE_VULKAN=ON \
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
git config --global --add safe.directory '*'
|
git config --global --add safe.directory '*'
|
||||||
|
|
||||||
|
CPU_ARCH="${1:-x86_64}"
|
||||||
|
MSYS2="${2:-clang64}"
|
||||||
|
|
||||||
# Pull all the submodules except some
|
# Pull all the submodules except some
|
||||||
# Note: Tried to use git submodule status, but it takes over 20 seconds
|
# Note: Tried to use git submodule status, but it takes over 20 seconds
|
||||||
# shellcheck disable=SC2046
|
# shellcheck disable=SC2046
|
||||||
|
|
@ -23,7 +26,7 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cmake .. \
|
cmake .. \
|
||||||
-DCMAKE_PREFIX_PATH=/clang64 \
|
-DCMAKE_PREFIX_PATH=/"${MSYS2}" \
|
||||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||||
-DUSE_NATIVE_INSTRUCTIONS=OFF \
|
-DUSE_NATIVE_INSTRUCTIONS=OFF \
|
||||||
-DUSE_PRECOMPILED_HEADERS=OFF \
|
-DUSE_PRECOMPILED_HEADERS=OFF \
|
||||||
|
|
@ -44,8 +47,8 @@ cmake .. \
|
||||||
-DUSE_DISCORD_RPC=ON \
|
-DUSE_DISCORD_RPC=ON \
|
||||||
-DOpenGL_GL_PREFERENCE=LEGACY \
|
-DOpenGL_GL_PREFERENCE=LEGACY \
|
||||||
-DWITH_LLVM=ON \
|
-DWITH_LLVM=ON \
|
||||||
-DLLVM_DIR=/clang64/lib/cmake/llvm \
|
-DLLVM_DIR=/"${MSYS2}"/lib/cmake/llvm \
|
||||||
-DVulkan_LIBRARY=/clang64/lib/libvulkan-1.dll.a \
|
-DVulkan_LIBRARY=/"${MSYS2}"/lib/libvulkan-1.dll.a \
|
||||||
-DSTATIC_LINK_LLVM=ON \
|
-DSTATIC_LINK_LLVM=ON \
|
||||||
-DBUILD_RPCS3_TESTS=OFF \
|
-DBUILD_RPCS3_TESTS=OFF \
|
||||||
-DRUN_RPCS3_TESTS=OFF \
|
-DRUN_RPCS3_TESTS=OFF \
|
||||||
|
|
@ -57,5 +60,5 @@ cd ..
|
||||||
|
|
||||||
# If it compiled succesfully let's deploy.
|
# If it compiled succesfully let's deploy.
|
||||||
if [ "$build_status" -eq 0 ]; then
|
if [ "$build_status" -eq 0 ]; then
|
||||||
.ci/deploy-windows-clang.sh "x86_64"
|
.ci/deploy-windows-clang.sh "${CPU_ARCH}" "${MSYS2}"
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,13 @@
|
||||||
cd build || exit 1
|
cd build || exit 1
|
||||||
|
|
||||||
CPU_ARCH="${1:-x86_64}"
|
CPU_ARCH="${1:-x86_64}"
|
||||||
|
MSYS2="${2:-clang64}"
|
||||||
|
|
||||||
echo "Deploying rpcs3 windows clang $CPU_ARCH"
|
echo "Deploying rpcs3 windows clang $CPU_ARCH"
|
||||||
|
|
||||||
# BUILD_blablabla is CI specific, so we wrap it for portability
|
# BUILD_blablabla is CI specific, so we wrap it for portability
|
||||||
ARTIFACT_DIR=$(cygpath -u "$BUILD_ARTIFACTSTAGINGDIRECTORY")
|
ARTIFACT_DIR=$(cygpath -u "$BUILD_ARTIFACTSTAGINGDIRECTORY")
|
||||||
MSYS2_CLANG_BIN=$(cygpath -w /clang64/bin)
|
MSYS2_CLANG_BIN=$(cygpath -w /"${MSYS2}"/bin)
|
||||||
MSYS2_USR_BIN=$(cygpath -w /usr/bin)
|
MSYS2_USR_BIN=$(cygpath -w /usr/bin)
|
||||||
|
|
||||||
echo "Installing dependencies of: ./bin/rpcs3.exe (MSYS2 dir is '$MSYS2_CLANG_BIN', usr dir is '$MSYS2_USR_BIN')"
|
echo "Installing dependencies of: ./bin/rpcs3.exe (MSYS2 dir is '$MSYS2_CLANG_BIN', usr dir is '$MSYS2_USR_BIN')"
|
||||||
|
|
|
||||||
56
.github/workflows/rpcs3.yml
vendored
56
.github/workflows/rpcs3.yml
vendored
|
|
@ -328,16 +328,24 @@ jobs:
|
||||||
Windows_Build_Clang:
|
Windows_Build_Clang:
|
||||||
# Only run push event on master branch of main repo, but run all PRs
|
# Only run push event on master branch of main repo, but run all PRs
|
||||||
if: github.event_name != 'push' || (github.repository == 'RPCS3/rpcs3' && github.ref_name == 'master')
|
if: github.event_name != 'push' || (github.repository == 'RPCS3/rpcs3' && github.ref_name == 'master')
|
||||||
name: RPCS3 Windows Clang
|
|
||||||
runs-on: windows-2025
|
|
||||||
strategy:
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- msys2: clang64
|
- msys2: clang64
|
||||||
compiler: clang
|
compiler: clang
|
||||||
arch: win64
|
arch: x86_64
|
||||||
|
os: windows-2025
|
||||||
|
name: X64
|
||||||
|
- msys2: clangarm64
|
||||||
|
compiler: clang
|
||||||
|
arch: aarch64
|
||||||
|
os: windows-11-arm
|
||||||
|
name: ARM64
|
||||||
env:
|
env:
|
||||||
CCACHE_DIR: 'C:\ccache'
|
CCACHE_DIR: 'C:\ccache'
|
||||||
|
name: RPCS3 Windows Clang ${{ matrix.arch }}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@main
|
uses: actions/checkout@main
|
||||||
|
|
@ -351,23 +359,23 @@ jobs:
|
||||||
update: true
|
update: true
|
||||||
cache: true
|
cache: true
|
||||||
install: |
|
install: |
|
||||||
mingw-w64-clang-x86_64-clang
|
mingw-w64-clang-${{ matrix.arch }}-clang
|
||||||
mingw-w64-clang-x86_64-ccache
|
mingw-w64-clang-${{ matrix.arch }}-ccache
|
||||||
mingw-w64-clang-x86_64-cmake
|
mingw-w64-clang-${{ matrix.arch }}-cmake
|
||||||
mingw-w64-clang-x86_64-lld
|
mingw-w64-clang-${{ matrix.arch }}-lld
|
||||||
mingw-w64-clang-x86_64-ninja
|
mingw-w64-clang-${{ matrix.arch }}-ninja
|
||||||
mingw-w64-clang-x86_64-llvm
|
mingw-w64-clang-${{ matrix.arch }}-llvm
|
||||||
mingw-w64-clang-x86_64-ffmpeg
|
mingw-w64-clang-${{ matrix.arch }}-ffmpeg
|
||||||
mingw-w64-clang-x86_64-opencv
|
mingw-w64-clang-${{ matrix.arch }}-opencv
|
||||||
mingw-w64-clang-x86_64-glew
|
mingw-w64-clang-${{ matrix.arch }}-glew
|
||||||
mingw-w64-clang-x86_64-vulkan
|
mingw-w64-clang-${{ matrix.arch }}-vulkan
|
||||||
mingw-w64-clang-x86_64-vulkan-headers
|
mingw-w64-clang-${{ matrix.arch }}-vulkan-headers
|
||||||
mingw-w64-clang-x86_64-vulkan-loader
|
mingw-w64-clang-${{ matrix.arch }}-vulkan-loader
|
||||||
mingw-w64-clang-x86_64-gtest
|
mingw-w64-clang-${{ matrix.arch }}-gtest
|
||||||
mingw-w64-clang-x86_64-qt6-base
|
mingw-w64-clang-${{ matrix.arch }}-qt6-base
|
||||||
mingw-w64-clang-x86_64-qt6-declarative
|
mingw-w64-clang-${{ matrix.arch }}-qt6-declarative
|
||||||
mingw-w64-clang-x86_64-qt6-multimedia
|
mingw-w64-clang-${{ matrix.arch }}-qt6-multimedia
|
||||||
mingw-w64-clang-x86_64-qt6-svg
|
mingw-w64-clang-${{ matrix.arch }}-qt6-svg
|
||||||
base-devel
|
base-devel
|
||||||
curl
|
curl
|
||||||
git
|
git
|
||||||
|
|
@ -378,8 +386,8 @@ jobs:
|
||||||
id: restore-build-ccache
|
id: restore-build-ccache
|
||||||
with:
|
with:
|
||||||
path: ${{ env.CCACHE_DIR }}
|
path: ${{ env.CCACHE_DIR }}
|
||||||
key: ${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ runner.arch }}-${{ github.run_id }}
|
key: ${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ matrix.arch }}-${{ github.run_id }}
|
||||||
restore-keys: ${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ runner.arch }}-
|
restore-keys: ${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ matrix.arch }}-
|
||||||
|
|
||||||
- name: Build RPCS3
|
- name: Build RPCS3
|
||||||
shell: msys2 {0}
|
shell: msys2 {0}
|
||||||
|
|
@ -387,7 +395,7 @@ jobs:
|
||||||
export CCACHE_DIR=$(cygpath -u "$CCACHE_DIR")
|
export CCACHE_DIR=$(cygpath -u "$CCACHE_DIR")
|
||||||
echo "CCACHE_DIR=$CCACHE_DIR"
|
echo "CCACHE_DIR=$CCACHE_DIR"
|
||||||
.ci/setup-windows-ci-vars.sh ${{ matrix.arch }} ${{ matrix.compiler }}
|
.ci/setup-windows-ci-vars.sh ${{ matrix.arch }} ${{ matrix.compiler }}
|
||||||
.ci/build-windows-clang.sh
|
.ci/build-windows-clang.sh ${{ matrix.arch }} ${{ matrix.msys2 }}
|
||||||
|
|
||||||
- name: Save build Ccache
|
- name: Save build Ccache
|
||||||
if: github.ref == 'refs/heads/master'
|
if: github.ref == 'refs/heads/master'
|
||||||
|
|
@ -399,7 +407,7 @@ jobs:
|
||||||
- name: Upload artifacts
|
- name: Upload artifacts
|
||||||
uses: actions/upload-artifact@main
|
uses: actions/upload-artifact@main
|
||||||
with:
|
with:
|
||||||
name: RPCS3 for Windows (${{ runner.arch }}, ${{ matrix.compiler }})
|
name: RPCS3 for Windows (${{ matrix.name }}, clang)
|
||||||
path: ${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }}
|
path: ${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }}
|
||||||
compression-level: 0
|
compression-level: 0
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
|
|
|
||||||
|
|
@ -393,8 +393,8 @@ namespace fmt
|
||||||
raw_throw_exception(src_loc, reinterpret_cast<const char*>(fmt), type_info_v<Args...>, fmt_args_t<Args...>{fmt_unveil<Args>::get(args)...});
|
raw_throw_exception(src_loc, reinterpret_cast<const char*>(fmt), type_info_v<Args...>, fmt_args_t<Args...>{fmt_unveil<Args>::get(args)...});
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(_MSC_VER) || defined(__clang__)
|
#if defined(__FreeBSD__)
|
||||||
[[noreturn]] ~throw_exception() = default;
|
[[noreturn]] ~throw_exception();
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2254,7 +2254,7 @@ namespace vm
|
||||||
std::memset(g_range_lock_set, 0, sizeof(g_range_lock_set));
|
std::memset(g_range_lock_set, 0, sizeof(g_range_lock_set));
|
||||||
std::memset(g_range_lock_bits, 0, sizeof(g_range_lock_bits));
|
std::memset(g_range_lock_bits, 0, sizeof(g_range_lock_bits));
|
||||||
|
|
||||||
#ifdef _WIN32
|
#if defined(_WIN32) && !defined(__arm64__)
|
||||||
utils::memory_release(g_hook_addr, 0x800000000);
|
utils::memory_release(g_hook_addr, 0x800000000);
|
||||||
#endif
|
#endif
|
||||||
ensure(s_hook.map(g_hook_addr, utils::protection::rw, true));
|
ensure(s_hook.map(g_hook_addr, utils::protection::rw, true));
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue