Compare commits

..

No commits in common. "master" and "v0.0.37" have entirely different histories.

567 changed files with 7883 additions and 16201 deletions

View file

@ -1,10 +1,9 @@
#!/bin/sh -ex #!/bin/sh -ex
# Pull all the submodules except some # Pull all the submodules except llvm, opencv, libpng, sdl and curl
# 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
git config --global --add safe.directory . git submodule -q update --init --depth 1 $(awk '/path/ && !/llvm/ && !/opencv/ && !/libpng/ && !/libsdl-org/ && !/curl/ { print $3 }' .gitmodules)
git submodule -q update --init --depth 1 $(awk '/path/ && !/llvm/ && !/opencv/ && !/libpng/ && !/libsdl-org/ && !/curl/ && !/zlib/ && !/libusb/ && !/feralinteractive/ { print $3 }' .gitmodules)
CONFIGURE_ARGS=" CONFIGURE_ARGS="
-DWITH_LLVM=ON -DWITH_LLVM=ON
@ -14,7 +13,6 @@ CONFIGURE_ARGS="
-DUSE_SYSTEM_FFMPEG=ON -DUSE_SYSTEM_FFMPEG=ON
-DUSE_SYSTEM_CURL=ON -DUSE_SYSTEM_CURL=ON
-DUSE_SYSTEM_LIBPNG=ON -DUSE_SYSTEM_LIBPNG=ON
-DUSE_SYSTEM_LIBUSB=ON
-DUSE_SYSTEM_OPENCV=ON -DUSE_SYSTEM_OPENCV=ON
" "

View file

@ -1,14 +1,16 @@
#!/bin/sh -ex #!/bin/sh -ex
cd rpcs3 || exit 1 if [ -z "$CIRRUS_CI" ]; then
cd rpcs3 || exit 1
fi
shellcheck .ci/*.sh shellcheck .ci/*.sh
git config --global --add safe.directory '*' git config --global --add safe.directory '*'
# Pull all the submodules except some # Pull all the submodules except llvm, opencv, sdl and curl
# shellcheck disable=SC2046 # shellcheck disable=SC2046
git submodule -q update --init $(awk '/path/ && !/llvm/ && !/opencv/ && !/libsdl-org/ && !/curl/ && !/zlib/ { print $3 }' .gitmodules) git submodule -q update --init $(awk '/path/ && !/llvm/ && !/opencv/ && !/libsdl-org/ && !/curl/ { print $3 }' .gitmodules)
mkdir build && cd build || exit 1 mkdir build && cd build || exit 1
@ -50,6 +52,10 @@ ninja; build_status=$?;
cd .. cd ..
# If it compiled succesfully let's deploy. # If it compiled succesfully let's deploy.
if [ "$build_status" -eq 0 ]; then # Azure and Cirrus publish PRs as artifacts only.
{ [ "$CI_HAS_ARTIFACTS" = "true" ];
} && SHOULD_DEPLOY="true" || SHOULD_DEPLOY="false"
if [ "$build_status" -eq 0 ] && [ "$SHOULD_DEPLOY" = "true" ]; then
.ci/deploy-linux.sh "aarch64" .ci/deploy-linux.sh "aarch64"
fi fi

View file

@ -1,15 +1,17 @@
#!/bin/sh -ex #!/bin/sh -ex
cd rpcs3 || exit 1 if [ -z "$CIRRUS_CI" ]; then
cd rpcs3 || exit 1
fi
shellcheck .ci/*.sh shellcheck .ci/*.sh
git config --global --add safe.directory '*' git config --global --add safe.directory '*'
# Pull all the submodules except some # Pull all the submodules except llvm, opencv, sdl and curl
# 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
git submodule -q update --init $(awk '/path/ && !/llvm/ && !/opencv/ && !/libsdl-org/ && !/curl/ && !/zlib/ { print $3 }' .gitmodules) git submodule -q update --init $(awk '/path/ && !/llvm/ && !/opencv/ && !/libsdl-org/ && !/curl/ { print $3 }' .gitmodules)
mkdir build && cd build || exit 1 mkdir build && cd build || exit 1
@ -61,6 +63,10 @@ ninja; build_status=$?;
cd .. cd ..
# If it compiled succesfully let's deploy. # If it compiled succesfully let's deploy.
if [ "$build_status" -eq 0 ]; then # Azure and Cirrus publish PRs as artifacts only.
{ [ "$CI_HAS_ARTIFACTS" = "true" ];
} && SHOULD_DEPLOY="true" || SHOULD_DEPLOY="false"
if [ "$build_status" -eq 0 ] && [ "$SHOULD_DEPLOY" = "true" ]; then
.ci/deploy-linux.sh "x86_64" .ci/deploy-linux.sh "x86_64"
fi fi

View file

@ -6,16 +6,14 @@ 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 opencv@4 ffmpeg@5 "llvm@$LLVM_COMPILER_VER" glew sdl3 vulkan-headers /opt/homebrew/bin/brew install -f --overwrite --quiet nasm ninja p7zip ccache pipenv gnutls freetype #create-dmg
brew unlink --quiet ffmpeg qtbase qtsvg qtdeclarative /opt/homebrew/bin/brew install -f --quiet ffmpeg@5
brew link -f --quiet "llvm@$LLVM_COMPILER_VER" ffmpeg@5 /opt/homebrew/bin/brew install --quiet "llvm@$LLVM_COMPILER_VER" glew cmake sdl3 vulkan-headers coreutils
/opt/homebrew/bin/brew link -f --quiet "llvm@$LLVM_COMPILER_VER" ffmpeg@5
# moltenvk based on commit for 1.4.0 release
export HOMEBREW_DEVELOPER=1 # Prevents blocking of local formulae
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/ea2bec5f1f4384e188d7fc0702ab21a20a2ced08/Formula/m/molten-vk.rb
/opt/homebrew/bin/brew install -f --overwrite --formula --quiet ./molten-vk.rb
export HOMEBREW_DEVELOPER=0
# moltenvk based on commit for 1.3.0 release
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/7255441cbcafabaa8950f67c7ec55ff499dbb2d3/Formula/m/molten-vk.rb
/opt/homebrew/bin/brew install -f --overwrite --formula --quiet ./molten-vk.rb
export CXX=clang++ export CXX=clang++
export CC=clang export CC=clang
@ -28,25 +26,23 @@ export CMAKE_EXTRA_OPTS='-DLLVM_TARGETS_TO_BUILD=arm64'
export WORKDIR; export WORKDIR;
WORKDIR="$(pwd)" WORKDIR="$(pwd)"
# Setup ccache
if [ ! -d "$CCACHE_DIR" ]; then
mkdir -p "$CCACHE_DIR"
fi
# Get Qt # Get Qt
if [ ! -d "/tmp/Qt/$QT_VER" ]; then if [ ! -d "/tmp/Qt/$QT_VER" ]; then
mkdir -p "/tmp/Qt" mkdir -p "/tmp/Qt"
git clone https://github.com/engnr/qt-downloader.git git clone https://github.com/engnr/qt-downloader.git
cd qt-downloader cd qt-downloader
git checkout f52efee0f18668c6d6de2dec0234b8c4bc54c597 git checkout f52efee0f18668c6d6de2dec0234b8c4bc54c597
sed -i '' "s/'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/'qt{0}_{0}{1}{2}'.format(major, minor, patch), 'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/g" qt-downloader # nested Qt 6.9.0 URL workaround
sed -i '' "s/'{}\/{}\/qt{}_{}\/'/'{0}\/{1}\/qt{2}_{3}\/qt{2}_{3}\/'/g" qt-downloader # sed -i '' "s/'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/'qt{0}_{0}{1}{2}'.format(major, minor, patch), 'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/g" qt-downloader
# sed -i '' "s/'{}\/{}\/qt{}_{}\/'/'{0}\/{1}\/qt{2}_{3}\/qt{2}_{3}\/'/g" qt-downloader
# archived Qt 6.7.3 URL workaround
sed -i '' "s/official_releases/archive/g" qt-downloader
cd "/tmp/Qt" cd "/tmp/Qt"
"$BREW_PATH/bin/pipenv" run pip3 uninstall py7zr requests semantic_version lxml arch -arm64 "$BREW_PATH/bin/pipenv" run pip3 uninstall py7zr requests semantic_version lxml
"$BREW_PATH/bin/pipenv" run pip3 install py7zr requests semantic_version lxml --no-cache arch -arm64 "$BREW_PATH/bin/pipenv" run pip3 install py7zr requests semantic_version lxml --no-cache
mkdir -p "$QT_VER/macos" ; ln -s "macos" "$QT_VER/clang_64" mkdir -p "$QT_VER/macos" ; ln -s "macos" "$QT_VER/clang_64"
sed -i '' 's/args\.version \/ derive_toolchain_dir(args) \/ //g' "$WORKDIR/qt-downloader/qt-downloader" # sed -i '' 's/args\.version \/ derive_toolchain_dir(args) \/ //g' "$WORKDIR/qt-downloader/qt-downloader" # Qt 6.9.0 workaround
"$BREW_PATH/bin/pipenv" run "$WORKDIR/qt-downloader/qt-downloader" macos desktop "$QT_VER" clang_64 --opensource --addons qtmultimedia qtimageformats -o "$QT_VER/clang_64" arch -arm64 "$BREW_PATH/bin/pipenv" run "$WORKDIR/qt-downloader/qt-downloader" macos desktop "$QT_VER" clang_64 --opensource --addons qtmultimedia qtimageformats # -o "$QT_VER/clang_64"
fi fi
cd "$WORKDIR" cd "$WORKDIR"
@ -71,7 +67,7 @@ export LLVM_DIR
LLVM_DIR="$BREW_PATH/opt/llvm@$LLVM_COMPILER_VER" LLVM_DIR="$BREW_PATH/opt/llvm@$LLVM_COMPILER_VER"
# exclude ffmpeg, LLVM, opencv, and sdl from submodule update # exclude ffmpeg, LLVM, opencv, and sdl from submodule update
# shellcheck disable=SC2046 # shellcheck disable=SC2046
git submodule -q update --init --depth=1 --jobs=8 $(awk '/path/ && !/ffmpeg/ && !/llvm/ && !/opencv/ && !/SDL/ && !/feralinteractive/ { print $3 }' .gitmodules) git submodule -q update --init --depth=1 --jobs=8 $(awk '/path/ && !/ffmpeg/ && !/llvm/ && !/opencv/ && !/SDL/ { print $3 }' .gitmodules)
# 3rdparty fixes # 3rdparty fixes
sed -i '' "s/extern const double NSAppKitVersionNumber;/const double NSAppKitVersionNumber = 1343;/g" 3rdparty/hidapi/hidapi/mac/hid.c sed -i '' "s/extern const double NSAppKitVersionNumber;/const double NSAppKitVersionNumber = 1343;/g" 3rdparty/hidapi/hidapi/mac/hid.c
@ -81,8 +77,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 \
@ -119,7 +115,9 @@ export MACOSX_DEPLOYMENT_TARGET=14.0
cd .. cd ..
# If it compiled succesfully let's deploy. { [ "$CI_HAS_ARTIFACTS" = "true" ];
if [ "$build_status" -eq 0 ]; then } && SHOULD_DEPLOY="true" || SHOULD_DEPLOY="false"
if [ "$build_status" -eq 0 ] && [ "$SHOULD_DEPLOY" = "true" ]; then
.ci/deploy-mac-arm64.sh .ci/deploy-mac-arm64.sh
fi fi

View file

@ -6,21 +6,18 @@ 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 ccache pipenv "llvm@$LLVM_COMPILER_VER" #/usr/sbin/softwareupdate --install-rosetta --agree-to-license
brew link -f --overwrite --quiet "llvm@$LLVM_COMPILER_VER"
# shellcheck disable=SC3009
rm /usr/local/bin/{idle3.14,pip3.14,pydoc3.14,python3.14,python3.14-config} && \
rm /usr/local/bin/{idle3,pip3,pydoc3,python3,python3-config}
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
arch -x86_64 /usr/local/bin/brew install -f --overwrite --quiet opencv@4 ffmpeg@5 "llvm@$LLVM_COMPILER_VER" glew sdl3 vulkan-headers arch -x86_64 /usr/local/bin/brew update
arch -x86_64 /usr/local/bin/brew unlink --quiet ffmpeg qtbase qtsvg qtdeclarative arch -x86_64 /usr/local/bin/brew install -f --overwrite --quiet python || arch -x86_64 /usr/local/bin/brew link --overwrite python
arch -x86_64 /usr/local/bin/brew link -f --overwrite --quiet "llvm@$LLVM_COMPILER_VER" ffmpeg@5 arch -x86_64 /usr/local/bin/brew install -f --overwrite --quiet nasm ninja p7zip ccache pipenv gnutls freetype #create-dmg
arch -x86_64 /usr/local/bin/brew install -f --quiet ffmpeg@5
arch -x86_64 /usr/local/bin/brew install --quiet "llvm@$LLVM_COMPILER_VER" glew cmake sdl3 vulkan-headers coreutils
arch -x86_64 /usr/local/bin/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.3.0 release
export HOMEBREW_DEVELOPER=1 # Prevents blocking of local formulae wget https://raw.githubusercontent.com/Homebrew/homebrew-core/7255441cbcafabaa8950f67c7ec55ff499dbb2d3/Formula/m/molten-vk.rb
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/ea2bec5f1f4384e188d7fc0702ab21a20a2ced08/Formula/m/molten-vk.rb
arch -x86_64 /usr/local/bin/brew install -f --overwrite --formula --quiet ./molten-vk.rb arch -x86_64 /usr/local/bin/brew install -f --overwrite --formula --quiet ./molten-vk.rb
export HOMEBREW_DEVELOPER=0
export CXX=clang++ export CXX=clang++
export CC=clang export CC=clang
@ -39,13 +36,16 @@ if [ ! -d "/tmp/Qt/$QT_VER" ]; then
git clone https://github.com/engnr/qt-downloader.git git clone https://github.com/engnr/qt-downloader.git
cd qt-downloader cd qt-downloader
git checkout f52efee0f18668c6d6de2dec0234b8c4bc54c597 git checkout f52efee0f18668c6d6de2dec0234b8c4bc54c597
sed -i '' "s/'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/'qt{0}_{0}{1}{2}'.format(major, minor, patch), 'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/g" qt-downloader # nested Qt 6.9.0 URL workaround
sed -i '' "s/'{}\/{}\/qt{}_{}\/'/'{0}\/{1}\/qt{2}_{3}\/qt{2}_{3}\/'/g" qt-downloader # sed -i '' "s/'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/'qt{0}_{0}{1}{2}'.format(major, minor, patch), 'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/g" qt-downloader
# sed -i '' "s/'{}\/{}\/qt{}_{}\/'/'{0}\/{1}\/qt{2}_{3}\/qt{2}_{3}\/'/g" qt-downloader
# archived Qt 6.7.3 URL workaround
sed -i '' "s/official_releases/archive/g" qt-downloader
cd "/tmp/Qt" cd "/tmp/Qt"
"/opt/homebrew/bin/pipenv" --python "/opt/homebrew/bin/python3" run pip3 install py7zr requests semantic_version lxml arch -x86_64 "$BREW_X64_PATH/bin/pipenv" --python "$BREW_X64_PATH/bin/python3" run pip3 install py7zr requests semantic_version lxml
mkdir -p "$QT_VER/macos" ; ln -s "macos" "$QT_VER/clang_64" mkdir -p "$QT_VER/macos" ; ln -s "macos" "$QT_VER/clang_64"
sed -i '' 's/args\.version \/ derive_toolchain_dir(args) \/ //g' "$WORKDIR/qt-downloader/qt-downloader" # sed -i '' 's/args\.version \/ derive_toolchain_dir(args) \/ //g' "$WORKDIR/qt-downloader/qt-downloader" # Qt 6.9.0 workaround
"/opt/homebrew/bin/pipenv" --python "/opt/homebrew/bin/python3" run "$WORKDIR/qt-downloader/qt-downloader" macos desktop "$QT_VER" clang_64 --opensource --addons qtmultimedia qtimageformats -o "$QT_VER/clang_64" arch -x86_64 "$BREW_X64_PATH/bin/pipenv" --python "$BREW_X64_PATH/bin/python3" run "$WORKDIR/qt-downloader/qt-downloader" macos desktop "$QT_VER" clang_64 --opensource --addons qtmultimedia qtimageformats # -o "$QT_VER/clang_64"
fi fi
cd "$WORKDIR" cd "$WORKDIR"
@ -54,13 +54,12 @@ ditto "/tmp/Qt/$QT_VER" "qt-downloader/$QT_VER"
export Qt6_DIR="$WORKDIR/qt-downloader/$QT_VER/clang_64/lib/cmake/Qt$QT_VER_MAIN" export Qt6_DIR="$WORKDIR/qt-downloader/$QT_VER/clang_64/lib/cmake/Qt$QT_VER_MAIN"
export SDL3_DIR="$BREW_X64_PATH/opt/sdl3/lib/cmake/SDL3" export SDL3_DIR="$BREW_X64_PATH/opt/sdl3/lib/cmake/SDL3"
export PATH="/opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/bin:$WORKDIR/qt-downloader/$QT_VER/clang_64/bin:$BREW_BIN:$BREW_SBIN:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Apple/usr/bin:$PATH" export PATH="$BREW_X64_PATH/opt/llvm@$LLVM_COMPILER_VER/bin:$WORKDIR/qt-downloader/$QT_VER/clang_64/bin:$BREW_BIN:$BREW_SBIN:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Apple/usr/bin:$PATH"
# shellcheck disable=SC2155 export LDFLAGS="-L$BREW_X64_PATH/lib -Wl,-rpath,$BREW_X64_PATH/lib"
export LDFLAGS="-L$BREW_X64_PATH/lib -Wl,-rpath,$BREW_X64_PATH/lib,-L$(brew --prefix llvm)/lib/c++"
export CPPFLAGS="-I$BREW_X64_PATH/include -msse -msse2 -mcx16 -no-pie -D__MAC_OS_X_VERSION_MIN_REQUIRED=140000" export CPPFLAGS="-I$BREW_X64_PATH/include -msse -msse2 -mcx16 -no-pie -D__MAC_OS_X_VERSION_MIN_REQUIRED=140000"
export CFLAGS="-D__MAC_OS_X_VERSION_MIN_REQUIRED=140000" export CFLAGS="-D__MAC_OS_X_VERSION_MIN_REQUIRED=140000"
export LIBRARY_PATH="$BREW_X64_PATH/opt/llvm@$LLVM_COMPILER_VER/lib:$BREW_X64_PATH/lib" export LIBRARY_PATH="$BREW_X64_PATH/lib"
export LD_LIBRARY_PATH="$BREW_X64_PATH/opt/llvm@$LLVM_COMPILER_VER/lib:$BREW_X64_PATH/lib" export LD_LIBRARY_PATH="$BREW_X64_PATH/lib"
export VULKAN_SDK export VULKAN_SDK
VULKAN_SDK="$BREW_X64_PATH/opt/molten-vk" VULKAN_SDK="$BREW_X64_PATH/opt/molten-vk"
@ -68,10 +67,10 @@ ln -s "$VULKAN_SDK/lib/libMoltenVK.dylib" "$VULKAN_SDK/lib/libvulkan.dylib"
export VK_ICD_FILENAMES="$VULKAN_SDK/share/vulkan/icd.d/MoltenVK_icd.json" export VK_ICD_FILENAMES="$VULKAN_SDK/share/vulkan/icd.d/MoltenVK_icd.json"
export LLVM_DIR export LLVM_DIR
LLVM_DIR="$BREW_X64_PATH/opt/llvm@$LLVM_COMPILER_VER" LLVM_DIR="BREW_X64_PATH/opt/llvm@$LLVM_COMPILER_VER"
# exclude ffmpeg, LLVM, opencv, and sdl from submodule update # exclude ffmpeg, LLVM, opencv, and sdl from submodule update
# shellcheck disable=SC2046 # shellcheck disable=SC2046
git submodule -q update --init --depth=1 --jobs=8 $(awk '/path/ && !/ffmpeg/ && !/llvm/ && !/opencv/ && !/SDL/ && !/feralinteractive/ { print $3 }' .gitmodules) git submodule -q update --init --depth=1 --jobs=8 $(awk '/path/ && !/ffmpeg/ && !/llvm/ && !/opencv/ && !/SDL/ { print $3 }' .gitmodules)
# 3rdparty fixes # 3rdparty fixes
sed -i '' "s/extern const double NSAppKitVersionNumber;/const double NSAppKitVersionNumber = 1343;/g" 3rdparty/hidapi/hidapi/mac/hid.c sed -i '' "s/extern const double NSAppKitVersionNumber;/const double NSAppKitVersionNumber = 1343;/g" 3rdparty/hidapi/hidapi/mac/hid.c
@ -80,7 +79,7 @@ mkdir build && cd build || exit 1
export MACOSX_DEPLOYMENT_TARGET=14.0 export MACOSX_DEPLOYMENT_TARGET=14.0
"/opt/homebrew/bin/cmake" .. \ "$BREW_X64_PATH/bin/cmake" .. \
-DBUILD_RPCS3_TESTS=OFF \ -DBUILD_RPCS3_TESTS=OFF \
-DRUN_RPCS3_TESTS=OFF \ -DRUN_RPCS3_TESTS=OFF \
-DUSE_SDL=ON \ -DUSE_SDL=ON \
@ -108,8 +107,6 @@ export MACOSX_DEPLOYMENT_TARGET=14.0
"$CMAKE_EXTRA_OPTS" \ "$CMAKE_EXTRA_OPTS" \
-DLLVM_TARGET_ARCH=X86_64 \ -DLLVM_TARGET_ARCH=X86_64 \
-DCMAKE_OSX_ARCHITECTURES=x86_64 \ -DCMAKE_OSX_ARCHITECTURES=x86_64 \
-DCMAKE_SYSTEM_PROCESSOR=x86_64 \
-DCMAKE_TOOLCHAIN_FILE=buildfiles/cmake/TCDarwinX86_64.cmake \
-DCMAKE_IGNORE_PATH="$BREW_X64_PATH/lib" \ -DCMAKE_IGNORE_PATH="$BREW_X64_PATH/lib" \
-DCMAKE_IGNORE_PREFIX_PATH=/usr/local/opt \ -DCMAKE_IGNORE_PREFIX_PATH=/usr/local/opt \
-DCMAKE_CXX_FLAGS="-D__MAC_OS_X_VERSION_MIN_REQUIRED=140000" \ -DCMAKE_CXX_FLAGS="-D__MAC_OS_X_VERSION_MIN_REQUIRED=140000" \
@ -117,11 +114,13 @@ export MACOSX_DEPLOYMENT_TARGET=14.0
-DCMAKE_OSX_SYSROOT="$(xcrun --sdk macosx --show-sdk-path)" \ -DCMAKE_OSX_SYSROOT="$(xcrun --sdk macosx --show-sdk-path)" \
-G Ninja -G Ninja
"/opt/homebrew/bin/ninja"; build_status=$?; "$BREW_X64_PATH/bin/ninja"; build_status=$?;
cd .. cd ..
# If it compiled succesfully let's deploy. { [ "$CI_HAS_ARTIFACTS" = "true" ];
if [ "$build_status" -eq 0 ]; then } && SHOULD_DEPLOY="true" || SHOULD_DEPLOY="false"
if [ "$build_status" -eq 0 ] && [ "$SHOULD_DEPLOY" = "true" ]; then
.ci/deploy-mac.sh .ci/deploy-mac.sh
fi fi

View file

@ -1,61 +0,0 @@
#!/bin/sh -ex
git config --global --add safe.directory '*'
# Pull all the submodules except some
# Note: Tried to use git submodule status, but it takes over 20 seconds
# shellcheck disable=SC2046
git submodule -q update --init $(awk '/path/ && !/llvm/ && !/opencv/ && !/ffmpeg/ && !/curl/ && !/FAudio/ && !/zlib/ { print $3 }' .gitmodules)
mkdir build && cd build || exit 1
export CC="clang"
export CXX="clang++"
export LINKER=lld
export LINKER_FLAG="-fuse-ld=${LINKER}"
if [ -n "$LLVMVER" ]; then
export AR="llvm-ar-$LLVMVER"
export RANLIB="llvm-ranlib-$LLVMVER"
else
export AR="llvm-ar"
export RANLIB="llvm-ranlib"
fi
cmake .. \
-DCMAKE_PREFIX_PATH=/clang64 \
-DCMAKE_INSTALL_PREFIX=/usr \
-DUSE_NATIVE_INSTRUCTIONS=OFF \
-DUSE_PRECOMPILED_HEADERS=OFF \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DCMAKE_CXX_FLAGS="$CFLAGS" \
-DCMAKE_EXE_LINKER_FLAGS="${LINKER_FLAG}" \
-DCMAKE_MODULE_LINKER_FLAGS="${LINKER_FLAG}" \
-DCMAKE_SHARED_LINKER_FLAGS="${LINKER_FLAG}" \
-DCMAKE_AR="$AR" \
-DCMAKE_RANLIB="$RANLIB" \
-DUSE_SYSTEM_CURL=ON \
-DUSE_FAUDIO=OFF \
-DUSE_SDL=ON \
-DUSE_SYSTEM_SDL=OFF \
-DUSE_SYSTEM_FFMPEG=ON \
-DUSE_SYSTEM_OPENCV=ON \
-DUSE_SYSTEM_OPENAL=OFF \
-DUSE_DISCORD_RPC=ON \
-DOpenGL_GL_PREFERENCE=LEGACY \
-DWITH_LLVM=ON \
-DLLVM_DIR=/clang64/lib/cmake/llvm \
-DVulkan_LIBRARY=/clang64/lib/libvulkan-1.dll.a \
-DSTATIC_LINK_LLVM=ON \
-DBUILD_RPCS3_TESTS=OFF \
-DRUN_RPCS3_TESTS=OFF \
-G Ninja
ninja; build_status=$?;
cd ..
# If it compiled succesfully let's deploy.
if [ "$build_status" -eq 0 ]; then
.ci/deploy-windows-clang.sh "x86_64"
fi

View file

@ -14,7 +14,7 @@ if [ "$DEPLOY_APPIMAGE" = "true" ]; then
curl -fsSLo linuxdeploy-plugin-checkrt.sh https://github.com/darealshinji/linuxdeploy-plugin-checkrt/releases/download/continuous/linuxdeploy-plugin-checkrt.sh curl -fsSLo linuxdeploy-plugin-checkrt.sh https://github.com/darealshinji/linuxdeploy-plugin-checkrt/releases/download/continuous/linuxdeploy-plugin-checkrt.sh
chmod +x ./linuxdeploy-plugin-checkrt.sh chmod +x ./linuxdeploy-plugin-checkrt.sh
export EXTRA_PLATFORM_PLUGINS="libqwayland.so" export EXTRA_PLATFORM_PLUGINS="libqwayland-egl.so;libqwayland-generic.so"
export EXTRA_QT_PLUGINS="svg;wayland-decoration-client;wayland-graphics-integration-client;wayland-shell-integration;waylandcompositor" export EXTRA_QT_PLUGINS="svg;wayland-decoration-client;wayland-graphics-integration-client;wayland-shell-integration;waylandcompositor"
APPIMAGE_EXTRACT_AND_RUN=1 linuxdeploy --appdir AppDir --plugin qt --plugin checkrt APPIMAGE_EXTRACT_AND_RUN=1 linuxdeploy --appdir AppDir --plugin qt --plugin checkrt
@ -26,31 +26,15 @@ if [ "$DEPLOY_APPIMAGE" = "true" ]; then
rm -f ./AppDir/usr/lib/libvulkan.so* rm -f ./AppDir/usr/lib/libvulkan.so*
# Remove unused Qt6 libraries # Remove unused Qt6 libraries
rm -f ./AppDir/usr/lib/libQt6OpenGL.so*
rm -f ./AppDir/usr/lib/libQt6Qml*.so*
rm -f ./AppDir/usr/lib/libQt6Quick.so*
rm -f ./AppDir/usr/lib/libQt6VirtualKeyboard.so* rm -f ./AppDir/usr/lib/libQt6VirtualKeyboard.so*
rm -f ./AppDir/usr/plugins/platforminputcontexts/libqtvirtualkeyboardplugin.so* rm -f ./AppDir/usr/plugins/platforminputcontexts/libqtvirtualkeyboardplugin.so*
# Remove git directory containing local commit history file # Remove git directory containing local commit history file
rm -rf ./AppDir/usr/share/rpcs3/git rm -rf ./AppDir/usr/share/rpcs3/git
# Download translations
mkdir -p "./AppDir/usr/translations"
ZIP_URL=$(curl -fsSL "https://api.github.com/repos/RPCS3/rpcs3_translations/releases/latest" \
| grep "browser_download_url" \
| grep "RPCS3-languages.zip" \
| cut -d '"' -f 4)
if [ -z "$ZIP_URL" ]; then
echo "Failed to find RPCS3-languages.zip in the latest release. Continuing without translations."
else
echo "Downloading translations from: $ZIP_URL"
curl -L -o translations.zip "$ZIP_URL" || {
echo "Failed to download translations.zip. Continuing without translations."
exit 0
}
unzip -o translations.zip -d "./AppDir/usr/translations" >/dev/null 2>&1 || \
echo "Failed to extract translations.zip. Continuing without translations."
rm -f translations.zip
fi
curl -fsSLo /uruntime "https://github.com/VHSgunzo/uruntime/releases/download/v0.3.4/uruntime-appimage-dwarfs-$CPU_ARCH" curl -fsSLo /uruntime "https://github.com/VHSgunzo/uruntime/releases/download/v0.3.4/uruntime-appimage-dwarfs-$CPU_ARCH"
chmod +x /uruntime chmod +x /uruntime
/uruntime --appimage-mkdwarfs -f --set-owner 0 --set-group 0 --no-history --no-create-timestamp \ /uruntime --appimage-mkdwarfs -f --set-owner 0 --set-group 0 --no-history --no-create-timestamp \

View file

@ -1,20 +0,0 @@
#!/bin/sh -ex
# First let's print some info about our caches
"$(cygpath -u "$CCACHE_BIN_DIR")"/ccache.exe --show-stats -v
# BUILD_blablabla is Azure specific, so we wrap it for portability
ARTIFACT_DIR="$BUILD_ARTIFACTSTAGINGDIRECTORY"
BUILD="llvmlibs_mt.7z"
# Package artifacts
7z a -m0=LZMA2 -mx9 "$BUILD" ./build/lib/Release-x64/llvm_build
# Generate sha256 hashes
# Write to file for GitHub releases
sha256sum "$BUILD" | awk '{ print $1 }' | tee "$BUILD.sha256"
echo "$(cat "$BUILD.sha256");$(stat -c %s "$BUILD")B" > GitHubReleaseMessage.txt
# Move files to publishing directory
cp -- "$BUILD" "$ARTIFACT_DIR"
cp -- "$BUILD.sha256" "$ARTIFACT_DIR"

View file

@ -17,7 +17,6 @@ cd bin
mkdir "rpcs3.app/Contents/lib/" || true mkdir "rpcs3.app/Contents/lib/" || true
cp "$(realpath /opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/lib/c++/libc++abi.1.0.dylib)" "rpcs3.app/Contents/Frameworks/libc++abi.1.dylib" cp "$(realpath /opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/lib/c++/libc++abi.1.0.dylib)" "rpcs3.app/Contents/Frameworks/libc++abi.1.dylib"
cp "$(realpath /opt/homebrew/opt/gcc/lib/gcc/current/libgcc_s.1.1.dylib)" "rpcs3.app/Contents/Frameworks/libgcc_s.1.1.dylib"
cp "$(realpath /opt/homebrew/lib/libsharpyuv.0.dylib)" "rpcs3.app/Contents/lib/libsharpyuv.0.dylib" cp "$(realpath /opt/homebrew/lib/libsharpyuv.0.dylib)" "rpcs3.app/Contents/lib/libsharpyuv.0.dylib"
cp "$(realpath /opt/homebrew/lib/libintl.8.dylib)" "rpcs3.app/Contents/lib/libintl.8.dylib" cp "$(realpath /opt/homebrew/lib/libintl.8.dylib)" "rpcs3.app/Contents/lib/libintl.8.dylib"
@ -32,28 +31,11 @@ rm -rf "rpcs3.app/Contents/Frameworks/QtPdf.framework" \
../../.ci/optimize-mac.sh rpcs3.app ../../.ci/optimize-mac.sh rpcs3.app
# Download translations
mkdir -p "rpcs3.app/Contents/translations"
ZIP_URL=$(curl -fsSL "https://api.github.com/repos/RPCS3/rpcs3_translations/releases/latest" \
| grep "browser_download_url" \
| grep "RPCS3-languages.zip" \
| cut -d '"' -f 4)
if [ -z "$ZIP_URL" ]; then
echo "Failed to find RPCS3-languages.zip in the latest release. Continuing without translations."
else
echo "Downloading translations from: $ZIP_URL"
curl -L -o translations.zip "$ZIP_URL" || {
echo "Failed to download translations.zip. Continuing without translations."
exit 0
}
unzip -o translations.zip -d "rpcs3.app/Contents/translations" >/dev/null 2>&1 || \
echo "Failed to extract translations.zip. Continuing without translations."
rm -f translations.zip
fi
# Hack # Hack
install_name_tool -delete_rpath /opt/homebrew/lib RPCS3.app/Contents/MacOS/rpcs3 || echo "Hack for deleting rpath /opt/homebrew/lib not needed" install_name_tool \
install_name_tool -delete_rpath /opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/lib RPCS3.app/Contents/MacOS/rpcs3 || echo "Hack for deleting rpath /opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/lib not needed" -delete_rpath /opt/homebrew/lib \
-delete_rpath /opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/lib RPCS3.app/Contents/MacOS/rpcs3
#-delete_rpath /opt/homebrew1/Cellar/sdl3/3.2.8/lib
# Need to do this rename hack due to case insensitive filesystem # Need to do this rename hack due to case insensitive filesystem
mv rpcs3.app RPCS3_.app mv rpcs3.app RPCS3_.app
@ -66,8 +48,24 @@ echo "[InternetShortcut]" > Quickstart.url
echo "URL=https://rpcs3.net/quickstart" >> Quickstart.url echo "URL=https://rpcs3.net/quickstart" >> Quickstart.url
echo "IconIndex=0" >> Quickstart.url echo "IconIndex=0" >> Quickstart.url
#DMG_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${COMM_TAG}-${COMM_COUNT}-${COMM_HASH}_macos_arm64.dmg"
#"$BREW_X64_PATH/bin/create-dmg" --volname RPCS3 \
#--window-size 800 400 \
#--icon-size 100 \
#--icon rpcs3.app 200 190 \
#--add-file Quickstart.url Quickstart.url 400 20 \
#--hide-extension rpcs3.app \
#--hide-extension Quickstart.url \
#--app-drop-link 600 185 \
#--skip-jenkins \
#--format ULMO \
#"$DMG_FILEPATH" \
#RPCS3.app
#FILESIZE=$(stat -f %z "$DMG_FILEPATH")
#SHA256SUM=$(shasum -a 256 "$DMG_FILEPATH" | awk '{ print $1 }')
ARCHIVE_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${COMM_TAG}-${COMM_COUNT}-${COMM_HASH}_macos_arm64.7z" ARCHIVE_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${COMM_TAG}-${COMM_COUNT}-${COMM_HASH}_macos_arm64.7z"
"/opt/homebrew/bin/7z" a -mx9 "$ARCHIVE_FILEPATH" RPCS3.app Quickstart.url "$BREW_PATH/bin/7z" a -mx9 "$ARCHIVE_FILEPATH" RPCS3.app Quickstart.url
FILESIZE=$(stat -f %z "$ARCHIVE_FILEPATH") FILESIZE=$(stat -f %z "$ARCHIVE_FILEPATH")
SHA256SUM=$(shasum -a 256 "$ARCHIVE_FILEPATH" | awk '{ print $1 }') SHA256SUM=$(shasum -a 256 "$ARCHIVE_FILEPATH" | awk '{ print $1 }')

View file

@ -16,9 +16,7 @@ echo "AVVER=$AVVER" >> ../.ci/ci-vars.env
cd bin cd bin
mkdir "rpcs3.app/Contents/lib/" mkdir "rpcs3.app/Contents/lib/"
cp "$(realpath /usr/local/opt/llvm@$LLVM_COMPILER_VER/lib/c++/libc++abi.1.0.dylib)" "rpcs3.app/Contents/Frameworks/libc++abi.1.dylib" cp "/usr/local/opt/llvm@$LLVM_COMPILER_VER/lib/c++/libc++abi.1.0.dylib" "rpcs3.app/Contents/lib/libc++abi.1.dylib"
cp "$(realpath /usr/local/opt/llvm@$LLVM_COMPILER_VER/lib/unwind/libunwind.1.dylib)" "rpcs3.app/Contents/Frameworks/libunwind.1.dylib"
cp "$(realpath /usr/local/opt/gcc/lib/gcc/current/libgcc_s.1.1.dylib)" "rpcs3.app/Contents/Frameworks/libgcc_s.1.1.dylib"
cp "$(realpath /usr/local/lib/libsharpyuv.0.dylib)" "rpcs3.app/Contents/lib/libsharpyuv.0.dylib" cp "$(realpath /usr/local/lib/libsharpyuv.0.dylib)" "rpcs3.app/Contents/lib/libsharpyuv.0.dylib"
cp "$(realpath /usr/local/lib/libintl.8.dylib)" "rpcs3.app/Contents/lib/libintl.8.dylib" cp "$(realpath /usr/local/lib/libintl.8.dylib)" "rpcs3.app/Contents/lib/libintl.8.dylib"
@ -33,31 +31,14 @@ rm -rf "rpcs3.app/Contents/Frameworks/QtPdf.framework" \
../../.ci/optimize-mac.sh rpcs3.app ../../.ci/optimize-mac.sh rpcs3.app
# Download translations
mkdir -p "rpcs3.app/Contents/translations"
ZIP_URL=$(curl -fsSL "https://api.github.com/repos/RPCS3/rpcs3_translations/releases/latest" \
| grep "browser_download_url" \
| grep "RPCS3-languages.zip" \
| cut -d '"' -f 4)
if [ -z "$ZIP_URL" ]; then
echo "Failed to find RPCS3-languages.zip in the latest release. Continuing without translations."
else
echo "Downloading translations from: $ZIP_URL"
curl -L -o translations.zip "$ZIP_URL" || {
echo "Failed to download translations.zip. Continuing without translations."
exit 0
}
unzip -o translations.zip -d "rpcs3.app/Contents/translations" >/dev/null 2>&1 || \
echo "Failed to extract translations.zip. Continuing without translations."
rm -f translations.zip
fi
# Need to do this rename hack due to case insensitive filesystem # Need to do this rename hack due to case insensitive filesystem
mv rpcs3.app RPCS3_.app mv rpcs3.app RPCS3_.app
mv RPCS3_.app RPCS3.app mv RPCS3_.app RPCS3.app
# Hack # Hack
install_name_tool -delete_rpath /usr/local/lib RPCS3.app/Contents/MacOS/rpcs3 install_name_tool \
-delete_rpath /usr/local/lib \
-delete_rpath /usr/local/opt/llvm@$LLVM_COMPILER_VER/lib RPCS3.app/Contents/MacOS/rpcs3
#-delete_rpath /usr/local/Cellar/sdl3/3.2.8/lib #-delete_rpath /usr/local/Cellar/sdl3/3.2.8/lib
# NOTE: "--deep" is deprecated # NOTE: "--deep" is deprecated
@ -67,8 +48,24 @@ echo "[InternetShortcut]" > Quickstart.url
echo "URL=https://rpcs3.net/quickstart" >> Quickstart.url echo "URL=https://rpcs3.net/quickstart" >> Quickstart.url
echo "IconIndex=0" >> Quickstart.url echo "IconIndex=0" >> Quickstart.url
#DMG_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${COMM_TAG}-${COMM_COUNT}-${COMM_HASH}_macos.dmg"
#"$BREW_X64_PATH/bin/create-dmg" --volname RPCS3 \
#--window-size 800 400 \
#--icon-size 100 \
#--icon rpcs3.app 200 190 \
#--add-file Quickstart.url Quickstart.url 400 20 \
#--hide-extension rpcs3.app \
#--hide-extension Quickstart.url \
#--app-drop-link 600 185 \
#--skip-jenkins \
#--format ULMO \
#"$DMG_FILEPATH" \
#RPCS3.app
#FILESIZE=$(stat -f %z "$DMG_FILEPATH")
#SHA256SUM=$(shasum -a 256 "$DMG_FILEPATH" | awk '{ print $1 }')
ARCHIVE_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${COMM_TAG}-${COMM_COUNT}-${COMM_HASH}_macos.7z" ARCHIVE_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${COMM_TAG}-${COMM_COUNT}-${COMM_HASH}_macos.7z"
"/opt/homebrew/bin/7z" a -mx9 "$ARCHIVE_FILEPATH" RPCS3.app Quickstart.url "$BREW_X64_PATH/bin/7z" a -mx9 "$ARCHIVE_FILEPATH" RPCS3.app Quickstart.url
FILESIZE=$(stat -f %z "$ARCHIVE_FILEPATH") FILESIZE=$(stat -f %z "$ARCHIVE_FILEPATH")
SHA256SUM=$(shasum -a 256 "$ARCHIVE_FILEPATH" | awk '{ print $1 }') SHA256SUM=$(shasum -a 256 "$ARCHIVE_FILEPATH" | awk '{ print $1 }')

View file

@ -1,57 +0,0 @@
#!/bin/sh -ex
# source ci-vars.env
# shellcheck disable=SC1091
. .ci/ci-vars.env
cd build || exit 1
CPU_ARCH="${1:-x86_64}"
echo "Deploying rpcs3 windows clang $CPU_ARCH"
# BUILD_blablabla is CI specific, so we wrap it for portability
ARTIFACT_DIR=$(cygpath -u "$BUILD_ARTIFACTSTAGINGDIRECTORY")
MSYS2_CLANG_BIN=$(cygpath -w /clang64/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')"
cmake -DMSYS2_CLANG_BIN="$MSYS2_CLANG_BIN" -DMSYS2_USR_BIN="$MSYS2_USR_BIN" -Dexe=./bin/rpcs3.exe -P ../buildfiles/cmake/CopyRuntimeDependencies.cmake
# Prepare compatibility and SDL database for packaging
mkdir ./bin/config
mkdir ./bin/config/input_configs
curl -fsSL 'https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt' 1> ./bin/config/input_configs/gamecontrollerdb.txt
curl -fsSL 'https://rpcs3.net/compatibility?api=v1&export' | iconv -t UTF-8 1> ./bin/GuiConfigs/compat_database.dat
# Download translations
mkdir -p ./bin/share/qt6/translations
ZIP_URL=$(curl -fsSL "https://api.github.com/repos/RPCS3/rpcs3_translations/releases/latest" \
| grep "browser_download_url" \
| grep "RPCS3-languages.zip" \
| cut -d '"' -f 4)
if [ -z "$ZIP_URL" ]; then
echo "Failed to find RPCS3-languages.zip in the latest release. Continuing without translations."
else
echo "Downloading translations from: $ZIP_URL"
curl -L -o translations.zip "$ZIP_URL" || {
echo "Failed to download translations.zip. Continuing without translations."
exit 0
}
unzip -o translations.zip -d "./bin/share/qt6/translations" >/dev/null 2>&1 || \
echo "Failed to extract translations.zip. Continuing without translations."
rm -f translations.zip
fi
# Package artifacts
7z a -m0=LZMA2 -mx9 "$BUILD" ./bin/*
# Generate sha256 hashes
# Write to file for GitHub releases
sha256sum "$BUILD" | awk '{ print $1 }' | tee "$BUILD.sha256"
echo "$(cat "$BUILD.sha256");$(stat -c %s "$BUILD")B" > GitHubReleaseMessage.txt
# Move files to publishing directory
mkdir -p "$ARTIFACT_DIR"
cp -- "$BUILD" "$ARTIFACT_DIR"
cp -- "$BUILD.sha256" "$ARTIFACT_DIR"

View file

@ -1,9 +1,9 @@
#!/bin/sh -ex #!/bin/sh -ex
# First let's print some info about our caches # First let's see print some info about our caches
"$(cygpath -u "$CCACHE_BIN_DIR")"/ccache.exe --show-stats -v "$(cygpath -u "$CCACHE_BIN_DIR")"/ccache.exe --show-stats -v
# BUILD_blablabla is CI specific, so we wrap it for portability # BUILD_blablabla is Azure specific, so we wrap it for portability
ARTIFACT_DIR="$BUILD_ARTIFACTSTAGINGDIRECTORY" ARTIFACT_DIR="$BUILD_ARTIFACTSTAGINGDIRECTORY"
# Remove unecessary files # Remove unecessary files
@ -15,25 +15,6 @@ mkdir ./bin/config/input_configs
curl -fsSL 'https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt' 1> ./bin/config/input_configs/gamecontrollerdb.txt curl -fsSL 'https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt' 1> ./bin/config/input_configs/gamecontrollerdb.txt
curl -fsSL 'https://rpcs3.net/compatibility?api=v1&export' | iconv -t UTF-8 1> ./bin/GuiConfigs/compat_database.dat curl -fsSL 'https://rpcs3.net/compatibility?api=v1&export' | iconv -t UTF-8 1> ./bin/GuiConfigs/compat_database.dat
# Download translations
mkdir -p ./bin/qt6/translations
ZIP_URL=$(curl -fsSL "https://api.github.com/repos/RPCS3/rpcs3_translations/releases/latest" \
| grep "browser_download_url" \
| grep "RPCS3-languages.zip" \
| cut -d '"' -f 4)
if [ -z "$ZIP_URL" ]; then
echo "Failed to find RPCS3-languages.zip in the latest release. Continuing without translations."
else
echo "Downloading translations from: $ZIP_URL"
curl -L -o translations.zip "$ZIP_URL" || {
echo "Failed to download translations.zip. Continuing without translations."
exit 0
}
unzip -o translations.zip -d "./bin/qt6/translations" >/dev/null 2>&1 || \
echo "Failed to extract translations.zip. Continuing without translations."
rm -f translations.zip
fi
# Download SSL certificate (not needed with CURLSSLOPT_NATIVE_CA) # Download SSL certificate (not needed with CURLSSLOPT_NATIVE_CA)
#curl -fsSL 'https://curl.haxx.se/ca/cacert.pem' 1> ./bin/cacert.pem #curl -fsSL 'https://curl.haxx.se/ca/cacert.pem' 1> ./bin/cacert.pem

View file

@ -1,4 +1,5 @@
# Variables set by CI # Variables set by Azure Pipelines
CI_HAS_ARTIFACTS
BUILD_REASON BUILD_REASON
BUILD_SOURCEVERSION BUILD_SOURCEVERSION
BUILD_ARTIFACTSTAGINGDIRECTORY BUILD_ARTIFACTSTAGINGDIRECTORY

13
.ci/export-azure-vars.sh Executable file
View file

@ -0,0 +1,13 @@
#!/bin/sh -e
# Export variables for later stages of the Azure pipeline
# Values done in this manner will appear as environment variables
# in later stages.
# From pure-sh-bible
# Setting 'IFS' tells 'read' where to split the string.
while IFS='=' read -r key val; do
# Skip over lines containing comments.
[ "${key##\#*}" ] || continue
echo "##vso[task.setvariable variable=$key]$val"
done < ".ci/ci-vars.env"

13
.ci/export-cirrus-vars.sh Executable file
View file

@ -0,0 +1,13 @@
#!/bin/sh -e
# Export variables for later stages of the Cirrus pipeline
# Values done in this manner will appear as environment variables
# in later stages.
# From pure-sh-bible
# Setting 'IFS' tells 'read' where to split the string.
while IFS='=' read -r key val; do
# Skip over lines containing comments.
[ "${key##\#*}" ] || continue
export "$key"="$val"
done < ".ci/ci-vars.env"

View file

@ -12,7 +12,7 @@ pkg info # debug
pkg install "llvm$LLVM_COMPILER_VER" pkg install "llvm$LLVM_COMPILER_VER"
# Mandatory dependencies (qtX-base is pulled via qtX-multimedia) # Mandatory dependencies (qtX-base is pulled via qtX-multimedia)
pkg install git ccache cmake ninja "qt$QT_VER_MAIN-multimedia" "qt$QT_VER_MAIN-svg" glew openal-soft ffmpeg pcre2 pkg install git ccache cmake ninja "qt$QT_VER_MAIN-multimedia" "qt$QT_VER_MAIN-svg" glew openal-soft ffmpeg
# Optional dependencies (libevdev is pulled by qtX-base) # Optional dependencies (libevdev is pulled by qtX-base)
pkg install pkgconf alsa-lib pulseaudio sdl3 evdev-proto vulkan-headers vulkan-loader opencv pkg install pkgconf alsa-lib pulseaudio sdl3 evdev-proto vulkan-headers vulkan-loader

View file

@ -1,63 +0,0 @@
#!/bin/sh -ex
# Resource/dependency URLs
CCACHE_URL="https://github.com/ccache/ccache/releases/download/v4.11.2/ccache-4.11.2-windows-x86_64.zip"
DEP_URLS=" \
$CCACHE_URL"
# CI doesn't make a cache dir if it doesn't exist, so we do it manually
[ -d "$DEPS_CACHE_DIR" ] || mkdir "$DEPS_CACHE_DIR"
# Pull the llvm submodule
# shellcheck disable=SC2046
git submodule -q update --init --depth=1 -- 3rdparty/llvm
# Git bash doesn't have rev, so here it is
rev()
{
echo "$1" | awk '{ for(i = length($0); i != 0; --i) { a = a substr($0, i, 1); } } END { print a }'
}
# Usage: download_and_verify url checksum algo file
# Check to see if a file is already cached, and the checksum matches. If not, download it.
# Tries up to 3 times
download_and_verify()
{
url="$1"
correctChecksum="$2"
algo="$3"
fileName="$4"
for _ in 1 2 3; do
[ -e "$DEPS_CACHE_DIR/$fileName" ] || curl -fLo "$DEPS_CACHE_DIR/$fileName" "$url"
fileChecksum=$("${algo}sum" "$DEPS_CACHE_DIR/$fileName" | awk '{ print $1 }')
[ "$fileChecksum" = "$correctChecksum" ] && return 0
done
return 1;
}
# Some dependencies install here
[ -d "./build/lib_ext/Release-x64" ] || mkdir -p "./build/lib_ext/Release-x64"
for url in $DEP_URLS; do
# Get the filename from the URL and remove query strings (?arg=something).
fileName="$(rev "$(rev "$url" | cut -d'/' -f1)" | cut -d'?' -f1)"
[ -z "$fileName" ] && echo "Unable to parse url: $url" && exit 1
# shellcheck disable=SC1003
case "$url" in
*ccache*) checksum=$CCACHE_SHA; algo="sha256"; outDir="$CCACHE_BIN_DIR" ;;
*) echo "Unknown url resource: $url"; exit 1 ;;
esac
download_and_verify "$url" "$checksum" "$algo" "$fileName"
7z x -y "$DEPS_CACHE_DIR/$fileName" -aos -o"$outDir"
done
# Setup ccache tool
[ -d "$CCACHE_DIR" ] || mkdir -p "$(cygpath -u "$CCACHE_DIR")"
CCACHE_SH_DIR=$(cygpath -u "$CCACHE_BIN_DIR")
mv "$CCACHE_SH_DIR"/ccache-*/* "$CCACHE_SH_DIR"
cp "$CCACHE_SH_DIR"/ccache.exe "$CCACHE_SH_DIR"/cl.exe

View file

@ -1,39 +0,0 @@
#!/bin/sh -ex
CPU_ARCH="${1:-win64}"
COMPILER="${2:-msvc}"
# These are CI specific, so we wrap them for portability
REPO_NAME="$BUILD_REPOSITORY_NAME"
REPO_BRANCH="$BUILD_SOURCEBRANCHNAME"
PR_NUMBER="$BUILD_PR_NUMBER"
# Gather explicit version number and number of commits
COMM_TAG=$(awk '/version{.*}/ { printf("%d.%d.%d", $5, $6, $7) }' ./rpcs3/rpcs3_version.cpp)
COMM_COUNT=$(git rev-list --count HEAD)
COMM_HASH=$(git rev-parse --short=8 HEAD)
# Format the above into filenames
if [ -n "$PR_NUMBER" ]; then
AVVER="${COMM_TAG}-${COMM_HASH}"
BUILD_RAW="rpcs3-v${AVVER}_${CPU_ARCH}_${COMPILER}"
BUILD="${BUILD_RAW}.7z"
else
AVVER="${COMM_TAG}-${COMM_COUNT}"
BUILD_RAW="rpcs3-v${AVVER}-${COMM_HASH}_${CPU_ARCH}_${COMPILER}"
BUILD="${BUILD_RAW}.7z"
fi
# BRANCH is used for experimental build warnings for pr builds, used in main_window.cpp.
# BUILD is the name of the release artifact
# BUILD_RAW is just filename
# AVVER is used for GitHub releases, it is the version number.
BRANCH="${REPO_NAME}/${REPO_BRANCH}"
# SC2129
{
echo "BRANCH=$BRANCH"
echo "BUILD=$BUILD"
echo "BUILD_RAW=$BUILD_RAW"
echo "AVVER=$AVVER"
} >> .ci/ci-vars.env

View file

@ -1,5 +1,10 @@
#!/bin/sh -ex #!/bin/sh -ex
# These are Azure specific, so we wrap them for portability
REPO_NAME="$BUILD_REPOSITORY_NAME"
REPO_BRANCH="$SYSTEM_PULLREQUEST_SOURCEBRANCH"
PR_NUMBER="$SYSTEM_PULLREQUEST_PULLREQUESTID"
# Resource/dependency URLs # Resource/dependency URLs
# Qt mirrors can be volatile and slow, so we list 2 # Qt mirrors can be volatile and slow, so we list 2
#QT_HOST="http://mirrors.ocf.berkeley.edu/qt/" #QT_HOST="http://mirrors.ocf.berkeley.edu/qt/"
@ -8,7 +13,7 @@ QT_URL_VER=$(echo "$QT_VER" | sed "s/\.//g")
QT_VER_MSVC_UP=$(echo "${QT_VER_MSVC}" | tr '[:lower:]' '[:upper:]') QT_VER_MSVC_UP=$(echo "${QT_VER_MSVC}" | tr '[:lower:]' '[:upper:]')
QT_PREFIX="online/qtsdkrepository/windows_x86/desktop/qt${QT_VER_MAIN}_${QT_URL_VER}/qt${QT_VER_MAIN}_${QT_URL_VER}/qt.qt${QT_VER_MAIN}.${QT_URL_VER}." QT_PREFIX="online/qtsdkrepository/windows_x86/desktop/qt${QT_VER_MAIN}_${QT_URL_VER}/qt${QT_VER_MAIN}_${QT_URL_VER}/qt.qt${QT_VER_MAIN}.${QT_URL_VER}."
QT_PREFIX_2="win64_${QT_VER_MSVC}_64/${QT_VER}-0-${QT_DATE}" QT_PREFIX_2="win64_${QT_VER_MSVC}_64/${QT_VER}-0-${QT_DATE}"
QT_SUFFIX="-Windows-Windows_11_24H2-${QT_VER_MSVC_UP}-Windows-Windows_11_24H2-X86_64.7z" QT_SUFFIX="-Windows-Windows_11_23H2-${QT_VER_MSVC_UP}-Windows-Windows_11_23H2-X86_64.7z"
QT_BASE_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qtbase${QT_SUFFIX}" QT_BASE_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qtbase${QT_SUFFIX}"
QT_DECL_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qtdeclarative${QT_SUFFIX}" QT_DECL_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qtdeclarative${QT_SUFFIX}"
QT_TOOL_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qttools${QT_SUFFIX}" QT_TOOL_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qttools${QT_SUFFIX}"
@ -28,13 +33,13 @@ DEP_URLS=" \
$VULKAN_SDK_URL\ $VULKAN_SDK_URL\
$CCACHE_URL" $CCACHE_URL"
# CI doesn't make a cache dir if it doesn't exist, so we do it manually # Azure pipelines doesn't make a cache dir if it doesn't exist, so we do it manually
[ -d "$DEPS_CACHE_DIR" ] || mkdir "$DEPS_CACHE_DIR" [ -d "$DEPS_CACHE_DIR" ] || mkdir "$DEPS_CACHE_DIR"
# Pull all the submodules except llvm, since it is built separately and we just download that build # Pull all the submodules except llvm, since it is built separately and we just download that build
# 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
git submodule -q update --init --depth=1 --jobs=8 $(awk '/path/ && !/FAudio/ && !/llvm/ && !/feralinteractive/ { print $3 }' .gitmodules) git submodule -q update --init --depth=1 --jobs=8 $(awk '/path/ && !/FAudio/ && !/llvm/ { print $3 }' .gitmodules)
# Git bash doesn't have rev, so here it is # Git bash doesn't have rev, so here it is
rev() rev()
@ -94,3 +99,33 @@ done
CCACHE_SH_DIR=$(cygpath -u "$CCACHE_BIN_DIR") CCACHE_SH_DIR=$(cygpath -u "$CCACHE_BIN_DIR")
mv "$CCACHE_SH_DIR"/ccache-*/* "$CCACHE_SH_DIR" mv "$CCACHE_SH_DIR"/ccache-*/* "$CCACHE_SH_DIR"
cp "$CCACHE_SH_DIR"/ccache.exe "$CCACHE_SH_DIR"/cl.exe cp "$CCACHE_SH_DIR"/ccache.exe "$CCACHE_SH_DIR"/cl.exe
# Gather explicit version number and number of commits
COMM_TAG=$(awk '/version{.*}/ { printf("%d.%d.%d", $5, $6, $7) }' ./rpcs3/rpcs3_version.cpp)
COMM_COUNT=$(git rev-list --count HEAD)
COMM_HASH=$(git rev-parse --short=8 HEAD)
# Format the above into filenames
if [ -n "$PR_NUMBER" ]; then
AVVER="${COMM_TAG}-${COMM_HASH}"
BUILD_RAW="rpcs3-v${AVVER}_win64"
BUILD="${BUILD_RAW}.7z"
else
AVVER="${COMM_TAG}-${COMM_COUNT}"
BUILD_RAW="rpcs3-v${AVVER}-${COMM_HASH}_win64"
BUILD="${BUILD_RAW}.7z"
fi
# BRANCH is used for experimental build warnings for pr builds, used in main_window.cpp.
# BUILD is the name of the release artifact
# BUILD_RAW is just filename
# AVVER is used for GitHub releases, it is the version number.
BRANCH="${REPO_NAME}/${REPO_BRANCH}"
# SC2129
{
echo "BRANCH=$BRANCH"
echo "BUILD=$BUILD"
echo "BUILD_RAW=$BUILD_RAW"
echo "AVVER=$AVVER"
} >> .ci/ci-vars.env

153
.cirrus.yml Normal file
View file

@ -0,0 +1,153 @@
env:
CIRRUS_CLONE_DEPTH: 0 # Unshallow clone to obtain proper GIT_VERSION
BUILD_REPOSITORY_NAME: $CIRRUS_REPO_FULL_NAME
SYSTEM_PULLREQUEST_SOURCEBRANCH: $CIRRUS_BRANCH
SYSTEM_PULLREQUEST_PULLREQUESTID: $CIRRUS_PR
BUILD_SOURCEVERSION: $CIRRUS_CHANGE_IN_REPO
BUILD_SOURCEBRANCHNAME: $CIRRUS_BRANCH
RPCS3_TOKEN: ENCRYPTED[100ebb8e3552bf2021d0ef55dccda3e58d27be5b6cab0b0b92843ef490195d3c4edaefa087e4a3b425caa6392300b9b1]
QT_VER_MAIN: '6'
QT_VER: '6.9.0'
LLVM_COMPILER_VER: '19'
LLVM_VER: '19.1.7'
# windows_task:
# matrix:
# - name: Cirrus Windows
# windows_container:
# image: cirrusci/windowsservercore:visualstudio2019
# cpu: 8
# memory: 16G
# env:
# CIRRUS_SHELL: "bash"
# COMPILER: msvc
# BUILD_ARTIFACTSTAGINGDIRECTORY: ${CIRRUS_WORKING_DIR}\artifacts\
# QT_VER_MSVC: 'msvc2022'
# QT_DATE: '202503301022'
# QTDIR: C:\Qt\${QT_VER}\${QT_VER_MSVC}_64
# VULKAN_VER: '1.3.268.0'
# VULKAN_SDK_SHA: '8459ef49bd06b697115ddd3d97c9aec729e849cd775f5be70897718a9b3b9db5'
# VULKAN_SDK: C:\VulkanSDK\${VULKAN_VER}
# CACHE_DIR: "./cache"
# UPLOAD_COMMIT_HASH: 7d09e3be30805911226241afbb14f8cdc2eb054e
# UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-win"
# deps_cache:
# folder: "./cache"
# #obj_cache:
# # folder: "./tmp"
# #obj2_cache:
# # folder: "./rpcs3/x64"
# setup_script:
# - './.ci/get_keys-windows.sh'
# - './.ci/setup-windows.sh'
# rpcs3_script:
# - export PATH=${PATH}:"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin"
# - msbuild.exe rpcs3.sln //p:Configuration=Release //m
# deploy_script:
# - mkdir artifacts
# - source './.ci/export-cirrus-vars.sh'
# - './.ci/deploy-windows.sh'
# artifacts:
# name: Artifact
# path: "*.7z*"
# push_script: |
# if [ "$CIRRUS_REPO_OWNER" = "RPCS3" ] && [ -z "$CIRRUS_PR" ] && [ "$CIRRUS_BRANCH" = "master" ]; then
# source './.ci/export-cirrus-vars.sh'
# './.ci/github-upload.sh'
# fi;
# linux_task:
# container:
# image: rpcs3/rpcs3-ci-jammy:1.6
# cpu: 4
# memory: 16G
# env:
# BUILD_ARTIFACTSTAGINGDIRECTORY: ${CIRRUS_WORKING_DIR}/artifacts
# ARTDIR: ${CIRRUS_WORKING_DIR}/artifacts/
# CCACHE_DIR: "/tmp/ccache_dir"
# CCACHE_MAXSIZE: 300M
# CI_HAS_ARTIFACTS: true
# UPLOAD_COMMIT_HASH: d812f1254a1157c80fd402f94446310560f54e5f
# UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-linux"
# DEPLOY_APPIMAGE: true
# APPDIR: "./appdir"
# RELEASE_MESSAGE: "../GitHubReleaseMessage.txt"
# ccache_cache:
# folder: "/tmp/ccache_dir"
# matrix:
# - name: Cirrus Linux GCC
# env:
# COMPILER: gcc
# gcc_script:
# - mkdir artifacts
# - ".ci/build-linux.sh"
# - name: Cirrus Linux Clang
# env:
# COMPILER: clang
# clang_script:
# - mkdir artifacts
# - ".ci/build-linux.sh"
# artifacts:
# name: Artifact
# path: "artifacts/*"
# push_script: |
# if [ "$CIRRUS_REPO_OWNER" = "RPCS3" ] && [ -z "$CIRRUS_PR" ] && [ "$CIRRUS_BRANCH" = "master" ] && [ "$COMPILER" = "gcc" ]; then
# COMM_TAG=$(awk '/version{.*}/ { printf("%d.%d.%d", $5, $6, $7) }' ./rpcs3/rpcs3_version.cpp)
# COMM_COUNT=$(git rev-list --count HEAD)
# COMM_HASH=$(git rev-parse --short=8 HEAD)
# export AVVER="${COMM_TAG}-${COMM_COUNT}"
# .ci/github-upload.sh
# fi;
freebsd_task:
matrix:
- name: Cirrus FreeBSD
freebsd_instance:
image_family: freebsd-13-5
cpu: 8
memory: 8G
env:
CCACHE_MAXSIZE: 300M # 3x clean build, rounded
CCACHE_DIR: /tmp/ccache_dir
ccache_cache:
folder: /tmp/ccache_dir
install_script: "sh -ex ./.ci/install-freebsd.sh"
script: "./.ci/build-freebsd.sh"
# linux_aarch64_task:
# env:
# BUILD_ARTIFACTSTAGINGDIRECTORY: ${CIRRUS_WORKING_DIR}/artifacts
# ARTDIR: ${CIRRUS_WORKING_DIR}/artifacts/
# CCACHE_DIR: "/tmp/ccache_dir"
# CCACHE_MAXSIZE: 300M
# CI_HAS_ARTIFACTS: true
# UPLOAD_COMMIT_HASH: a1d35836e8d45bfc6f63c26f0a3e5d46ef622fe1
# UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-linux-arm64"
# DEPLOY_APPIMAGE: true
# APPDIR: "./appdir"
# RELEASE_MESSAGE: "../GitHubReleaseMessage.txt"
# COMPILER: clang
# ccache_cache:
# folder: "/tmp/ccache_dir"
# matrix:
# - name: Cirrus Linux AArch64 Clang
# arm_container:
# image: 'docker.io/rpcs3/rpcs3-ci-jammy-aarch64:1.6'
# cpu: 8
# memory: 8G
# clang_script:
# - mkdir artifacts
# - "sh -ex ./.ci/build-linux-aarch64.sh"
# artifacts:
# name: Artifact
# path: "artifacts/*"
# push_script: |
# if [ "$CIRRUS_REPO_OWNER" = "RPCS3" ] && [ -z "$CIRRUS_PR" ] && [ "$CIRRUS_BRANCH" = "master" ]; then
# COMM_TAG=$(awk '/version{.*}/ { printf("%d.%d.%d", $5, $6, $7) }' ./rpcs3/rpcs3_version.cpp)
# COMM_COUNT=$(git rev-list --count HEAD)
# COMM_HASH=$(git rev-parse --short=8 HEAD)
# export AVVER="${COMM_TAG}-${COMM_COUNT}"
# .ci/github-upload.sh
# fi;

View file

@ -1,72 +0,0 @@
name: Build LLVM
defaults:
run:
shell: bash
on:
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-${{ github.event_name }}
cancel-in-progress: true
env:
BUILD_ARTIFACTSTAGINGDIRECTORY: ${{ github.workspace }}/artifacts/
jobs:
Windows_Build:
if: github.event_name == 'workflow_dispatch'
name: LLVM Windows (MSVC)
runs-on: windows-2025
env:
COMPILER: msvc
CCACHE_SHA: '1f39f3ad5aae3fe915e99ad1302633bc8f6718e58fa7c0de2b0ba7e080f0f08c'
CCACHE_BIN_DIR: 'C:\ccache_bin'
CCACHE_DIR: 'C:\ccache'
CCACHE_INODECACHE: 'true'
CCACHE_SLOPPINESS: 'time_macros'
DEPS_CACHE_DIR: ./dependency_cache
steps:
- name: Checkout repository
uses: actions/checkout@main
with:
fetch-depth: 0
- name: Restore Dependencies Cache
uses: actions/cache/restore@main
id: restore-dependencies-cache
with:
path: ${{ env.DEPS_CACHE_DIR }}
key: "${{ runner.os }}-${{ env.COMPILER }}-llvm-${{ env.CCACHE_SHA }}"
restore-keys: ${{ runner.os }}-${{ env.COMPILER }}-llvm
- name: Download and unpack dependencies
run: .ci/setup-llvm.sh
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@main
- name: Compile LLVM
shell: pwsh
run: msbuild 3rdparty\llvm\llvm_build.vcxproj /p:SolutionDir="$(pwd)/" /p:Configuration=Release /v:minimal /p:Platform=x64 /p:PreferredToolArchitecture=x64 /p:CLToolPath=${{ env.CCACHE_BIN_DIR }} /p:UseMultiToolTask=true /p:CustomAfterMicrosoftCommonTargets="${{ github.workspace }}\buildfiles\msvc\ci_only.targets"
- name: Pack up build artifacts
run: |
mkdir -p "${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }}"
.ci/deploy-llvm.sh
- name: Upload artifacts (7z)
uses: actions/upload-artifact@main
with:
name: LLVM for Windows (MSVC)
path: ${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }}
compression-level: 0
if-no-files-found: error
- name: Save Dependencies Cache
if: github.ref == 'refs/heads/master'
uses: actions/cache/save@main
with:
path: ${{ env.DEPS_CACHE_DIR }}
key: ${{ steps.restore-dependencies-cache.outputs.cache-primary-key }}

View file

@ -17,7 +17,6 @@ concurrency:
env: env:
BUILD_REPOSITORY_NAME: ${{ github.repository }} BUILD_REPOSITORY_NAME: ${{ github.repository }}
BUILD_SOURCEBRANCHNAME: ${{ github.ref_name }} BUILD_SOURCEBRANCHNAME: ${{ github.ref_name }}
BUILD_PR_NUMBER: ${{ github.event.pull_request.number }}
BUILD_SOURCEVERSION: ${{ github.sha }} BUILD_SOURCEVERSION: ${{ github.sha }}
BUILD_ARTIFACTSTAGINGDIRECTORY: ${{ github.workspace }}/artifacts/ BUILD_ARTIFACTSTAGINGDIRECTORY: ${{ github.workspace }}/artifacts/
@ -30,29 +29,26 @@ jobs:
matrix: matrix:
include: include:
- os: ubuntu-24.04 - os: ubuntu-24.04
docker_img: "rpcs3/rpcs3-ci-jammy:1.7" docker_img: "rpcs3/rpcs3-ci-jammy:1.6"
build_sh: "/rpcs3/.ci/build-linux.sh" build_sh: "/rpcs3/.ci/build-linux.sh"
compiler: clang compiler: clang
UPLOAD_COMMIT_HASH: d812f1254a1157c80fd402f94446310560f54e5f UPLOAD_COMMIT_HASH: d812f1254a1157c80fd402f94446310560f54e5f
UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-linux" UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-linux"
- os: ubuntu-24.04 - os: ubuntu-24.04
docker_img: "rpcs3/rpcs3-ci-jammy:1.7" docker_img: "rpcs3/rpcs3-ci-jammy:1.6"
build_sh: "/rpcs3/.ci/build-linux.sh" build_sh: "/rpcs3/.ci/build-linux.sh"
compiler: gcc compiler: gcc
- os: ubuntu-24.04-arm - os: ubuntu-24.04-arm
docker_img: "rpcs3/rpcs3-ci-jammy-aarch64:1.7" docker_img: "rpcs3/rpcs3-ci-jammy-aarch64:1.6"
build_sh: "/rpcs3/.ci/build-linux-aarch64.sh" build_sh: "/rpcs3/.ci/build-linux-aarch64.sh"
compiler: clang compiler: clang
UPLOAD_COMMIT_HASH: a1d35836e8d45bfc6f63c26f0a3e5d46ef622fe1 UPLOAD_COMMIT_HASH: a1d35836e8d45bfc6f63c26f0a3e5d46ef622fe1
UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-linux-arm64" UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-linux-arm64"
- os: ubuntu-24.04-arm
docker_img: "rpcs3/rpcs3-ci-jammy-aarch64:1.7"
build_sh: "/rpcs3/.ci/build-linux-aarch64.sh"
compiler: gcc
name: RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} name: RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
env: env:
CCACHE_DIR: ${{ github.workspace }}/ccache CCACHE_DIR: ${{ github.workspace }}/ccache
CI_HAS_ARTIFACTS: true
DEPLOY_APPIMAGE: true DEPLOY_APPIMAGE: true
APPDIR: "/rpcs3/build/appdir" APPDIR: "/rpcs3/build/appdir"
ARTDIR: "/root/artifacts" ARTDIR: "/root/artifacts"
@ -67,19 +63,19 @@ jobs:
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Restore build Ccache - name: Setup Cache
uses: actions/cache/restore@main uses: actions/cache@main
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 }}-${{ runner.arch }}-${{github.run_id}}
restore-keys: ${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ runner.arch }}- restore-keys: |
${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ runner.arch }}-
- name: Docker setup and build - name: Docker setup and build
run: | run: |
docker pull --quiet ${{ matrix.docker_img }} docker pull --quiet ${{ matrix.docker_img }}
docker run \ docker run \
-v $PWD:/rpcs3 \ -v $PWD:/rpcs3 \
--env-file .ci/docker.env \ --env-file .ci/docker.env \
-v ${{ env.CCACHE_DIR }}:/root/.ccache \ -v ${{ env.CCACHE_DIR }}:/root/.ccache \
-v ${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }}:${{ env.ARTDIR }} \ -v ${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }}:${{ env.ARTDIR }} \
@ -108,13 +104,6 @@ jobs:
export AVVER="${COMM_TAG}-${COMM_COUNT}" export AVVER="${COMM_TAG}-${COMM_COUNT}"
.ci/github-upload.sh .ci/github-upload.sh
- name: Save build Ccache
if: github.ref == 'refs/heads/master'
uses: actions/cache/save@main
with:
path: ${{ env.CCACHE_DIR }}
key: ${{ steps.restore-build-ccache.outputs.cache-primary-key }}
Mac_Build: Mac_Build:
# 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')
@ -123,7 +112,7 @@ jobs:
matrix: matrix:
include: include:
- name: Intel - name: Intel
build_sh: .ci/build-mac.sh build_sh: "arch -X86_64 .ci/build-mac.sh"
UPLOAD_COMMIT_HASH: 51ae32f468089a8169aaf1567de355ff4a3e0842 UPLOAD_COMMIT_HASH: 51ae32f468089a8169aaf1567de355ff4a3e0842
UPLOAD_REPO_FULL_NAME: rpcs3/rpcs3-binaries-mac UPLOAD_REPO_FULL_NAME: rpcs3/rpcs3-binaries-mac
- name: Apple Silicon - name: Apple Silicon
@ -134,37 +123,37 @@ jobs:
runs-on: macos-14 runs-on: macos-14
env: env:
CCACHE_DIR: /tmp/ccache_dir CCACHE_DIR: /tmp/ccache_dir
QT_VER: '6.10.1' CI_HAS_ARTIFACTS: true
QT_VER: '6.7.3'
QT_VER_MAIN: '6' QT_VER_MAIN: '6'
LLVM_COMPILER_VER: '21' LLVM_COMPILER_VER: '19'
RELEASE_MESSAGE: ../GitHubReleaseMessage.txt RELEASE_MESSAGE: ../GitHubReleaseMessage.txt
UPLOAD_COMMIT_HASH: ${{ matrix.UPLOAD_COMMIT_HASH }} UPLOAD_COMMIT_HASH: ${{ matrix.UPLOAD_COMMIT_HASH }}
UPLOAD_REPO_FULL_NAME: ${{ matrix.UPLOAD_REPO_FULL_NAME }} UPLOAD_REPO_FULL_NAME: ${{ matrix.UPLOAD_REPO_FULL_NAME }}
RUN_UNIT_TESTS: github.event_name == 'pull_request' && 'ON' || 'OFF'
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@main uses: actions/checkout@main
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Restore Build Ccache - name: Setup Cache
uses: actions/cache/restore@main uses: actions/cache@main
id: restore-build-ccache
with: with:
path: ${{ env.CCACHE_DIR }} path: ${{ env.CCACHE_DIR }}
key: ${{ runner.os }}-ccache-${{ matrix.name }}-${{github.run_id}} key: ${{ runner.os }}-ccache-${{ matrix.name }}-${{github.run_id}}
restore-keys: ${{ runner.os }}-ccache-${{ matrix.name }}- restore-keys: |
${{ runner.os }}-ccache-${{ matrix.name }}-
- name: Restore Qt Cache - name: Setup Qt Cache
uses: actions/cache/restore@main uses: actions/cache@main
id: restore-qt-cache
with: with:
path: /tmp/Qt path: /tmp/Qt
key: ${{ runner.os }}-qt-${{ matrix.name }}-${{ env.QT_VER }} key: ${{ runner.os }}-qt-${{ matrix.name }}-${{ env.QT_VER }}
restore-keys: ${{ runner.os }}-qt-${{ matrix.name }}-${{ env.QT_VER }} restore-keys: |
${{ runner.os }}-qt-${{ matrix.name }}-${{ env.QT_VER }}
- name: Build - name: Build
run: ${{ matrix.build_sh }} run: ${{ matrix.build_sh }}
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@main uses: actions/upload-artifact@main
@ -190,20 +179,6 @@ jobs:
RPCS3_TOKEN: ${{ secrets.RPCS3_TOKEN }} RPCS3_TOKEN: ${{ secrets.RPCS3_TOKEN }}
run: .ci/github-upload.sh run: .ci/github-upload.sh
- name: Save Build Ccache
if: github.ref == 'refs/heads/master'
uses: actions/cache/save@main
with:
path: ${{ env.CCACHE_DIR }}
key: ${{ steps.restore-build-ccache.outputs.cache-primary-key }}
- name: Save Qt Cache
if: github.ref == 'refs/heads/master'
uses: actions/cache/save@main
with:
path: /tmp/Qt
key: ${{ steps.restore-qt-cache.outputs.cache-primary-key }}
Windows_Build: Windows_Build:
# 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')
@ -212,9 +187,9 @@ jobs:
env: env:
COMPILER: msvc COMPILER: msvc
QT_VER_MAIN: '6' QT_VER_MAIN: '6'
QT_VER: '6.10.1' QT_VER: '6.9.0'
QT_VER_MSVC: 'msvc2022' QT_VER_MSVC: 'msvc2022'
QT_DATE: '202511161843' QT_DATE: '202503301022'
LLVM_VER: '19.1.7' LLVM_VER: '19.1.7'
VULKAN_VER: '1.3.268.0' VULKAN_VER: '1.3.268.0'
VULKAN_SDK_SHA: '8459ef49bd06b697115ddd3d97c9aec729e849cd775f5be70897718a9b3b9db5' VULKAN_SDK_SHA: '8459ef49bd06b697115ddd3d97c9aec729e849cd775f5be70897718a9b3b9db5'
@ -248,26 +223,22 @@ jobs:
- name: Get Cache Keys - name: Get Cache Keys
run: .ci/get_keys-windows.sh run: .ci/get_keys-windows.sh
- name: Restore Build Ccache - name: Setup Build Ccache
uses: actions/cache/restore@main uses: actions/cache@main
id: restore-build-ccache
with: with:
path: ${{ env.CCACHE_DIR }} path: ${{ env.CCACHE_DIR }}
key: "${{ runner.os }}-ccache-${{ env.COMPILER }}-${{github.run_id}}" key: "${{ runner.os }}-ccache-${{ env.COMPILER }}-${{github.run_id}}"
restore-keys: ${{ runner.os }}-ccache-${{ env.COMPILER }}- restore-keys: ${{ runner.os }}-ccache-${{ env.COMPILER }}-
- name: Restore Dependencies Cache - name: Setup Dependencies Cache
uses: actions/cache/restore@main uses: actions/cache@main
id: restore-dependencies-cache
with: with:
path: ${{ env.DEPS_CACHE_DIR }} path: ${{ env.DEPS_CACHE_DIR }}
key: "${{ runner.os }}-${{ env.COMPILER }}-${{ env.QT_VER }}-${{ env.VULKAN_SDK_SHA }}-${{ env.CCACHE_SHA }}-${{ hashFiles('llvm.lock') }}" key: "${{ runner.os }}-${{ env.COMPILER }}-${{ env.QT_VER }}-${{ env.VULKAN_SDK_SHA }}-${{ env.CCACHE_SHA }}-${{ hashFiles('llvm.lock') }}"
restore-keys: ${{ runner.os }}-${{ env.COMPILER }}- restore-keys: ${{ runner.os }}-${{ env.COMPILER }}-
- name: Download and unpack dependencies - name: Download and unpack dependencies
run: | run: .ci/setup-windows.sh
.ci/setup-windows.sh
.ci/setup-windows-ci-vars.sh win64 msvc
- name: Export Variables - name: Export Variables
run: | run: |
@ -310,135 +281,3 @@ jobs:
env: env:
RPCS3_TOKEN: ${{ secrets.RPCS3_TOKEN }} RPCS3_TOKEN: ${{ secrets.RPCS3_TOKEN }}
run: .ci/github-upload.sh run: .ci/github-upload.sh
- name: Save Build Ccache
if: github.ref == 'refs/heads/master'
uses: actions/cache/save@main
with:
path: ${{ env.CCACHE_DIR }}
key: ${{ steps.restore-build-ccache.outputs.cache-primary-key }}
- name: Save Dependencies Cache
if: github.ref == 'refs/heads/master'
uses: actions/cache/save@main
with:
path: ${{ env.DEPS_CACHE_DIR }}
key: ${{ steps.restore-dependencies-cache.outputs.cache-primary-key }}
Windows_Build_Clang:
# 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')
name: RPCS3 Windows Clang
runs-on: windows-2025
strategy:
matrix:
include:
- msys2: clang64
compiler: clang
arch: win64
env:
CCACHE_DIR: 'C:\ccache'
steps:
- name: Checkout repository
uses: actions/checkout@main
with:
fetch-depth: 0
- name: Setup msys2
uses: msys2/setup-msys2@v2
with:
msystem: ${{ matrix.msys2 }}
update: true
cache: true
install: |
mingw-w64-clang-x86_64-clang
mingw-w64-clang-x86_64-ccache
mingw-w64-clang-x86_64-cmake
mingw-w64-clang-x86_64-lld
mingw-w64-clang-x86_64-ninja
mingw-w64-clang-x86_64-llvm
mingw-w64-clang-x86_64-ffmpeg
mingw-w64-clang-x86_64-opencv
mingw-w64-clang-x86_64-glew
mingw-w64-clang-x86_64-vulkan
mingw-w64-clang-x86_64-vulkan-headers
mingw-w64-clang-x86_64-vulkan-loader
mingw-w64-clang-x86_64-gtest
mingw-w64-clang-x86_64-qt6-base
mingw-w64-clang-x86_64-qt6-declarative
mingw-w64-clang-x86_64-qt6-multimedia
mingw-w64-clang-x86_64-qt6-svg
base-devel
curl
git
p7zip
- name: Restore build Ccache
uses: actions/cache/restore@main
id: restore-build-ccache
with:
path: ${{ env.CCACHE_DIR }}
key: ${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ runner.arch }}-${{ github.run_id }}
restore-keys: ${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ runner.arch }}-
- name: Build RPCS3
shell: msys2 {0}
run: |
export CCACHE_DIR=$(cygpath -u "$CCACHE_DIR")
echo "CCACHE_DIR=$CCACHE_DIR"
.ci/setup-windows-ci-vars.sh ${{ matrix.arch }} ${{ matrix.compiler }}
.ci/build-windows-clang.sh
- name: Save build Ccache
if: github.ref == 'refs/heads/master'
uses: actions/cache/save@main
with:
path: ${{ env.CCACHE_DIR }}
key: ${{ steps.restore-build-ccache.outputs.cache-primary-key }}
- name: Upload artifacts
uses: actions/upload-artifact@main
with:
name: RPCS3 for Windows (${{ runner.arch }}, ${{ matrix.compiler }})
path: ${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }}
compression-level: 0
if-no-files-found: error
FreeBSD_Build:
# 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')
name: RPCS3 FreeBSD
runs-on: ubuntu-latest
timeout-minutes: 60
env:
CCACHE_DIR: ${{ github.workspace }}/ccache
QT_VER_MAIN: '6'
LLVM_COMPILER_VER: '19'
steps:
- name: Checkout repository
uses: actions/checkout@main
with:
fetch-depth: 0
- name: Restore Build Ccache
uses: actions/cache/restore@main
id: restore-build-ccache
with:
path: ${{ env.CCACHE_DIR }}
key: FreeBSD-ccache-${{github.run_id}}
restore-keys: FreeBSD-ccache-
- name: FreeBSD build
id: root
uses: vmactions/freebsd-vm@v1
with:
envs: 'QT_VER_MAIN LLVM_COMPILER_VER CCACHE_DIR'
usesh: true
run: .ci/install-freebsd.sh && .ci/build-freebsd.sh
- name: Save Build Ccache
if: github.ref == 'refs/heads/master'
uses: actions/cache/save@main
with:
path: ${{ env.CCACHE_DIR }}
key: ${{ steps.restore-build-ccache.outputs.cache-primary-key }}

6
.gitmodules vendored
View file

@ -21,7 +21,7 @@
ignore = dirty ignore = dirty
[submodule "3rdparty/hidapi"] [submodule "3rdparty/hidapi"]
path = 3rdparty/hidapi/hidapi path = 3rdparty/hidapi/hidapi
url = ../../libusb/hidapi.git url = ../../RPCS3/hidapi.git
branch = master branch = master
ignore = dirty ignore = dirty
[submodule "3rdparty/pugixml"] [submodule "3rdparty/pugixml"]
@ -108,7 +108,3 @@
path = 3rdparty/GPUOpen/VulkanMemoryAllocator path = 3rdparty/GPUOpen/VulkanMemoryAllocator
url = ../../GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git url = ../../GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git
ignore = dirty ignore = dirty
[submodule "3rdparty/feralinteractive/feralinteractive"]
path = 3rdparty/feralinteractive/feralinteractive
url = ../../FeralInteractive/gamemode.git
ignore = dirty

2
3rdparty/7zip/7zip vendored

@ -1 +1 @@
Subproject commit 5e96a8279489832924056b1fa82f29d5837c9469 Subproject commit e5431fa6f5505e385c6f9367260717e9c47dc2ee

View file

@ -51,14 +51,6 @@ else()
add_subdirectory(pugixml EXCLUDE_FROM_ALL) add_subdirectory(pugixml EXCLUDE_FROM_ALL)
endif() endif()
if (USE_SYSTEM_VULKAN_MEMORY_ALLOCATOR)
find_package(VulkanMemoryAllocator REQUIRED GLOBAL)
add_library(3rdparty::vulkanmemoryallocator ALIAS GPUOpen::VulkanMemoryAllocator)
else()
add_library(3rdparty_vulkanmemoryallocator INTERFACE)
target_include_directories(3rdparty_vulkanmemoryallocator INTERFACE GPUOpen/VulkanMemoryAllocator/include)
add_library(3rdparty::vulkanmemoryallocator ALIAS 3rdparty_vulkanmemoryallocator)
endif()
# libusb # libusb
if(CMAKE_SYSTEM_NAME MATCHES "DragonFly|FreeBSD") if(CMAKE_SYSTEM_NAME MATCHES "DragonFly|FreeBSD")
@ -100,6 +92,9 @@ add_subdirectory(hidapi)
# glslang # glslang
add_subdirectory(glslang EXCLUDE_FROM_ALL) add_subdirectory(glslang EXCLUDE_FROM_ALL)
add_library(3rdparty_glslang INTERFACE)
target_link_libraries(3rdparty_glslang INTERFACE SPIRV)
# yaml-cpp # yaml-cpp
add_subdirectory(yaml-cpp) add_subdirectory(yaml-cpp)
@ -278,7 +273,7 @@ if(USE_FAUDIO)
target_compile_definitions(FAudio-static INTERFACE -DHAVE_FAUDIO) target_compile_definitions(FAudio-static INTERFACE -DHAVE_FAUDIO)
set(FAUDIO_TARGET FAudio-static) set(FAUDIO_TARGET FAudio-static)
else() else()
message(WARNING message(FATAL_ERROR
"-- RPCS3: 3rdparty FAudio requires SDL 3.2.0 or newer. Since a valid SDL3" "-- RPCS3: 3rdparty FAudio requires SDL 3.2.0 or newer. Since a valid SDL3"
">=3.2.0 version cannot be found, building with FAudio will be skipped.") ">=3.2.0 version cannot be found, building with FAudio will be skipped.")
set(USE_FAUDIO OFF CACHE BOOL "Disabled FAudio with SDL < 3.2.0" FORCE) set(USE_FAUDIO OFF CACHE BOOL "Disabled FAudio with SDL < 3.2.0" FORCE)
@ -362,9 +357,6 @@ add_subdirectory(opencv EXCLUDE_FROM_ALL)
# FUSION # FUSION
add_subdirectory(fusion EXCLUDE_FROM_ALL) add_subdirectory(fusion EXCLUDE_FROM_ALL)
# FERAL INTERACTIVE
add_subdirectory(feralinteractive EXCLUDE_FROM_ALL)
# add nice ALIAS targets for ease of use # add nice ALIAS targets for ease of use
if(USE_SYSTEM_LIBUSB) if(USE_SYSTEM_LIBUSB)
add_library(3rdparty::libusb ALIAS usb-1.0-shared) add_library(3rdparty::libusb ALIAS usb-1.0-shared)
@ -393,8 +385,7 @@ add_library(3rdparty::wolfssl ALIAS wolfssl)
add_library(3rdparty::libcurl ALIAS 3rdparty_libcurl) add_library(3rdparty::libcurl ALIAS 3rdparty_libcurl)
add_library(3rdparty::soundtouch ALIAS soundtouch) add_library(3rdparty::soundtouch ALIAS soundtouch)
add_library(3rdparty::sdl3 ALIAS ${SDL3_TARGET}) add_library(3rdparty::sdl3 ALIAS ${SDL3_TARGET})
add_library(3rdparty::miniupnpc ALIAS 3rdparty_miniupnpc) add_library(3rdparty::miniupnpc ALIAS libminiupnpc-static)
add_library(3rdparty::rtmidi ALIAS rtmidi) add_library(3rdparty::rtmidi ALIAS rtmidi)
add_library(3rdparty::opencv ALIAS ${OPENCV_TARGET}) add_library(3rdparty::opencv ALIAS ${OPENCV_TARGET})
add_library(3rdparty::fusion ALIAS Fusion) add_library(3rdparty::fusion ALIAS Fusion)
add_library(3rdparty::feralinteractive ALIAS 3rdparty_feralinteractive)

2
3rdparty/FAudio vendored

@ -1 +1 @@
Subproject commit 4ea8afea6ba857c24e40877f487d000d559b196d Subproject commit 6077ea740a7114a54f76ed9b7abe08cffc0034b6

View file

@ -3,7 +3,7 @@ include(ExternalProject)
ExternalProject_Add(moltenvk ExternalProject_Add(moltenvk
GIT_REPOSITORY https://github.com/KhronosGroup/MoltenVK.git GIT_REPOSITORY https://github.com/KhronosGroup/MoltenVK.git
GIT_TAG 4588705 GIT_TAG 49b97f2
BUILD_IN_SOURCE 1 BUILD_IN_SOURCE 1
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK
CONFIGURE_COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/fetchDependencies" --macos CONFIGURE_COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/fetchDependencies" --macos

View file

@ -11,7 +11,6 @@ if(USE_SYSTEM_OPENAL)
else() else()
option(ALSOFT_UTILS "Build utility programs" OFF) option(ALSOFT_UTILS "Build utility programs" OFF)
option(ALSOFT_EXAMPLES "Build example programs" OFF) option(ALSOFT_EXAMPLES "Build example programs" OFF)
set(LIBTYPE "STATIC")
add_subdirectory(openal-soft EXCLUDE_FROM_ALL) add_subdirectory(openal-soft EXCLUDE_FROM_ALL)
add_library(3rdparty_openal INTERFACE) add_library(3rdparty_openal INTERFACE)
target_link_libraries(3rdparty_openal INTERFACE OpenAL::OpenAL) target_link_libraries(3rdparty_openal INTERFACE OpenAL::OpenAL)

@ -1 +1 @@
Subproject commit 0e5e98e4ac8adae92e4f7653dd6eee17aa9c8791 Subproject commit dc7d7054a5b4f3bec1dc23a42fd616a0847af948

View file

@ -49,11 +49,11 @@
<PropertyGroup Label="UserMacros"> <PropertyGroup Label="UserMacros">
<CmakeReleaseCLI>call vsdevcmd.bat -arch=amd64 <CmakeReleaseCLI>call vsdevcmd.bat -arch=amd64
cd "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)" cd "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)"
cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE="Release" -DCMAKE_INSTALL_PREFIX="./Release" -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DCMAKE_SYSTEM_VERSION=10.0 -DLIBTYPE=STATIC -DFORCE_STATIC_VCRT=true -DALSOFT_UTILS=false -DALSOFT_EXAMPLES=false -DALSOFT_INSTALL=false -DALSOFT_INSTALL_CONFIG=false -DALSOFT_INSTALL_HRTF_DATA=false -DALSOFT_INSTALL_AMBDEC_PRESETS=false -DALSOFT_INSTALL_EXAMPLES=false -DALSOFT_INSTALL_UTILS=false "$(SolutionDir)3rdparty\OpenAL\openal-soft" cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE="Release" -DCMAKE_INSTALL_PREFIX="./Release" -DCMAKE_SYSTEM_VERSION=10.0 -DLIBTYPE=STATIC -DFORCE_STATIC_VCRT=true -DALSOFT_UTILS=false -DALSOFT_EXAMPLES=false -DALSOFT_INSTALL=false -DALSOFT_INSTALL_CONFIG=false -DALSOFT_INSTALL_HRTF_DATA=false -DALSOFT_INSTALL_AMBDEC_PRESETS=false -DALSOFT_INSTALL_EXAMPLES=false -DALSOFT_INSTALL_UTILS=false "$(SolutionDir)3rdparty\OpenAL\openal-soft"
</CmakeReleaseCLI> </CmakeReleaseCLI>
<CmakeDebugCLI>call vsdevcmd.bat -arch=amd64 <CmakeDebugCLI>call vsdevcmd.bat -arch=amd64
cd "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)" cd "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)"
cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE="Debug" -DCMAKE_INSTALL_PREFIX="./Debug" -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebug -DCMAKE_SYSTEM_VERSION=10.0 -DLIBTYPE=STATIC -DALSOFT_UTILS=false -DALSOFT_EXAMPLES=false -DALSOFT_INSTALL=false -DALSOFT_INSTALL_CONFIG=false -DALSOFT_INSTALL_HRTF_DATA=false -DALSOFT_INSTALL_AMBDEC_PRESETS=false -DALSOFT_INSTALL_EXAMPLES=false -DALSOFT_INSTALL_UTILS=false "$(SolutionDir)3rdparty\OpenAL\openal-soft" cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE="Debug" -DCMAKE_INSTALL_PREFIX="./Debug" -DCMAKE_SYSTEM_VERSION=10.0 -DLIBTYPE=STATIC -DALSOFT_UTILS=false -DALSOFT_EXAMPLES=false -DALSOFT_INSTALL=false -DALSOFT_INSTALL_CONFIG=false -DALSOFT_INSTALL_HRTF_DATA=false -DALSOFT_INSTALL_AMBDEC_PRESETS=false -DALSOFT_INSTALL_EXAMPLES=false -DALSOFT_INSTALL_UTILS=false "$(SolutionDir)3rdparty\OpenAL\openal-soft"
</CmakeDebugCLI> </CmakeDebugCLI>
<CmakeCopyCLI> <CmakeCopyCLI>
echo Copying.. echo Copying..
@ -106,4 +106,4 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>
</Project> </Project>

@ -1 +1 @@
Subproject commit e495bee4cd630c9f99907a764e16edba37a4b564 Subproject commit 70b4e3db7822de4d534959885cda109d6edbee36

2
3rdparty/curl/curl vendored

@ -1 +1 @@
Subproject commit 400fffa90f30c7a2dc762fa33009d24851bd2016 Subproject commit 4dacb79fcdd9364c1083e06f6a011d797a344f47

View file

@ -70,7 +70,6 @@
<ClCompile Include="curl\lib\cf-h2-proxy.c" /> <ClCompile Include="curl\lib\cf-h2-proxy.c" />
<ClCompile Include="curl\lib\cf-haproxy.c" /> <ClCompile Include="curl\lib\cf-haproxy.c" />
<ClCompile Include="curl\lib\cf-https-connect.c" /> <ClCompile Include="curl\lib\cf-https-connect.c" />
<ClCompile Include="curl\lib\cf-ip-happy.c" />
<ClCompile Include="curl\lib\cf-socket.c" /> <ClCompile Include="curl\lib\cf-socket.c" />
<ClCompile Include="curl\lib\cfilters.c" /> <ClCompile Include="curl\lib\cfilters.c" />
<ClCompile Include="curl\lib\conncache.c" /> <ClCompile Include="curl\lib\conncache.c" />
@ -80,23 +79,19 @@
<ClCompile Include="curl\lib\cshutdn.c" /> <ClCompile Include="curl\lib\cshutdn.c" />
<ClCompile Include="curl\lib\curlx\base64.c" /> <ClCompile Include="curl\lib\curlx\base64.c" />
<ClCompile Include="curl\lib\curlx\dynbuf.c" /> <ClCompile Include="curl\lib\curlx\dynbuf.c" />
<ClCompile Include="curl\lib\curlx\fopen.c" />
<ClCompile Include="curl\lib\curlx\inet_ntop.c" />
<ClCompile Include="curl\lib\curlx\inet_pton.c" /> <ClCompile Include="curl\lib\curlx\inet_pton.c" />
<ClCompile Include="curl\lib\curlx\multibyte.c" /> <ClCompile Include="curl\lib\curlx\multibyte.c" />
<ClCompile Include="curl\lib\curlx\nonblock.c" /> <ClCompile Include="curl\lib\curlx\nonblock.c" />
<ClCompile Include="curl\lib\curlx\strerr.c" />
<ClCompile Include="curl\lib\curlx\strparse.c" /> <ClCompile Include="curl\lib\curlx\strparse.c" />
<ClCompile Include="curl\lib\curlx\timediff.c" /> <ClCompile Include="curl\lib\curlx\timediff.c" />
<ClCompile Include="curl\lib\curlx\timeval.c" /> <ClCompile Include="curl\lib\curlx\timeval.c" />
<ClCompile Include="curl\lib\curlx\version_win32.c" /> <ClCompile Include="curl\lib\curlx\version_win32.c" />
<ClCompile Include="curl\lib\curlx\wait.c" />
<ClCompile Include="curl\lib\curlx\warnless.c" /> <ClCompile Include="curl\lib\curlx\warnless.c" />
<ClCompile Include="curl\lib\curlx\winapi.c" /> <ClCompile Include="curl\lib\curlx\winapi.c" />
<ClCompile Include="curl\lib\curl_addrinfo.c" /> <ClCompile Include="curl\lib\curl_addrinfo.c" />
<ClCompile Include="curl\lib\curl_des.c" />
<ClCompile Include="curl\lib\curl_endian.c" /> <ClCompile Include="curl\lib\curl_endian.c" />
<ClCompile Include="curl\lib\curl_fnmatch.c" /> <ClCompile Include="curl\lib\curl_fnmatch.c" />
<ClCompile Include="curl\lib\curl_fopen.c" />
<ClCompile Include="curl\lib\curl_gethostname.c" /> <ClCompile Include="curl\lib\curl_gethostname.c" />
<ClCompile Include="curl\lib\curl_get_line.c" /> <ClCompile Include="curl\lib\curl_get_line.c" />
<ClCompile Include="curl\lib\curl_gssapi.c" /> <ClCompile Include="curl\lib\curl_gssapi.c" />
@ -122,6 +117,7 @@
<ClCompile Include="curl\lib\fake_addrinfo.c" /> <ClCompile Include="curl\lib\fake_addrinfo.c" />
<ClCompile Include="curl\lib\file.c" /> <ClCompile Include="curl\lib\file.c" />
<ClCompile Include="curl\lib\fileinfo.c" /> <ClCompile Include="curl\lib\fileinfo.c" />
<ClCompile Include="curl\lib\fopen.c" />
<ClCompile Include="curl\lib\formdata.c" /> <ClCompile Include="curl\lib\formdata.c" />
<ClCompile Include="curl\lib\ftp.c" /> <ClCompile Include="curl\lib\ftp.c" />
<ClCompile Include="curl\lib\ftplistparser.c" /> <ClCompile Include="curl\lib\ftplistparser.c" />
@ -148,6 +144,8 @@
<ClCompile Include="curl\lib\idn.c" /> <ClCompile Include="curl\lib\idn.c" />
<ClCompile Include="curl\lib\if2ip.c" /> <ClCompile Include="curl\lib\if2ip.c" />
<ClCompile Include="curl\lib\imap.c" /> <ClCompile Include="curl\lib\imap.c" />
<ClCompile Include="curl\lib\inet_ntop.c" />
<ClCompile Include="curl\lib\krb5.c" />
<ClCompile Include="curl\lib\ldap.c" /> <ClCompile Include="curl\lib\ldap.c" />
<ClCompile Include="curl\lib\llist.c" /> <ClCompile Include="curl\lib\llist.c" />
<ClCompile Include="curl\lib\macos.c" /> <ClCompile Include="curl\lib\macos.c" />
@ -159,7 +157,6 @@
<ClCompile Include="curl\lib\mqtt.c" /> <ClCompile Include="curl\lib\mqtt.c" />
<ClCompile Include="curl\lib\multi.c" /> <ClCompile Include="curl\lib\multi.c" />
<ClCompile Include="curl\lib\multi_ev.c" /> <ClCompile Include="curl\lib\multi_ev.c" />
<ClCompile Include="curl\lib\multi_ntfy.c" />
<ClCompile Include="curl\lib\netrc.c" /> <ClCompile Include="curl\lib\netrc.c" />
<ClCompile Include="curl\lib\noproxy.c" /> <ClCompile Include="curl\lib\noproxy.c" />
<ClCompile Include="curl\lib\openldap.c" /> <ClCompile Include="curl\lib\openldap.c" />
@ -202,9 +199,9 @@
<ClCompile Include="curl\lib\urlapi.c" /> <ClCompile Include="curl\lib\urlapi.c" />
<ClCompile Include="curl\lib\vauth\gsasl.c" /> <ClCompile Include="curl\lib\vauth\gsasl.c" />
<ClCompile Include="curl\lib\version.c" /> <ClCompile Include="curl\lib\version.c" />
<ClCompile Include="curl\lib\vquic\curl_msh3.c" />
<ClCompile Include="curl\lib\vquic\curl_ngtcp2.c" /> <ClCompile Include="curl\lib\vquic\curl_ngtcp2.c" />
<ClCompile Include="curl\lib\vquic\curl_quiche.c" /> <ClCompile Include="curl\lib\vquic\curl_quiche.c" />
<ClCompile Include="curl\lib\vtls\apple.c" />
<ClCompile Include="curl\lib\vtls\cipher_suite.c" /> <ClCompile Include="curl\lib\vtls\cipher_suite.c" />
<ClCompile Include="curl\lib\vtls\hostcheck.c" /> <ClCompile Include="curl\lib\vtls\hostcheck.c" />
<ClCompile Include="curl\lib\vtls\rustls.c" /> <ClCompile Include="curl\lib\vtls\rustls.c" />
@ -227,6 +224,8 @@
<ClCompile Include="curl\lib\vssh\curl_path.c" /> <ClCompile Include="curl\lib\vssh\curl_path.c" />
<ClCompile Include="curl\lib\vssh\libssh.c" /> <ClCompile Include="curl\lib\vssh\libssh.c" />
<ClCompile Include="curl\lib\vssh\libssh2.c" /> <ClCompile Include="curl\lib\vssh\libssh2.c" />
<ClCompile Include="curl\lib\vssh\wolfssh.c" />
<ClCompile Include="curl\lib\vtls\bearssl.c" />
<ClCompile Include="curl\lib\vtls\gtls.c" /> <ClCompile Include="curl\lib\vtls\gtls.c" />
<ClCompile Include="curl\lib\vtls\keylog.c" /> <ClCompile Include="curl\lib\vtls\keylog.c" />
<ClCompile Include="curl\lib\vtls\mbedtls.c" /> <ClCompile Include="curl\lib\vtls\mbedtls.c" />
@ -234,6 +233,7 @@
<ClCompile Include="curl\lib\vtls\openssl.c" /> <ClCompile Include="curl\lib\vtls\openssl.c" />
<ClCompile Include="curl\lib\vtls\schannel.c" /> <ClCompile Include="curl\lib\vtls\schannel.c" />
<ClCompile Include="curl\lib\vtls\schannel_verify.c" /> <ClCompile Include="curl\lib\vtls\schannel_verify.c" />
<ClCompile Include="curl\lib\vtls\sectransp.c" />
<ClCompile Include="curl\lib\vtls\vtls.c" /> <ClCompile Include="curl\lib\vtls\vtls.c" />
<ClCompile Include="curl\lib\vtls\wolfssl.c" /> <ClCompile Include="curl\lib\vtls\wolfssl.c" />
<ClCompile Include="curl\lib\ws.c" /> <ClCompile Include="curl\lib\ws.c" />
@ -258,7 +258,6 @@
<ClInclude Include="curl\lib\cf-h2-proxy.h" /> <ClInclude Include="curl\lib\cf-h2-proxy.h" />
<ClInclude Include="curl\lib\cf-haproxy.h" /> <ClInclude Include="curl\lib\cf-haproxy.h" />
<ClInclude Include="curl\lib\cf-https-connect.h" /> <ClInclude Include="curl\lib\cf-https-connect.h" />
<ClInclude Include="curl\lib\cf-ip-happy.h" />
<ClInclude Include="curl\lib\cf-socket.h" /> <ClInclude Include="curl\lib\cf-socket.h" />
<ClInclude Include="curl\lib\cfilters.h" /> <ClInclude Include="curl\lib\cfilters.h" />
<ClInclude Include="curl\lib\config-mac.h" /> <ClInclude Include="curl\lib\config-mac.h" />
@ -272,37 +271,32 @@
<ClInclude Include="curl\lib\cookie.h" /> <ClInclude Include="curl\lib\cookie.h" />
<ClInclude Include="curl\lib\cshutdn.h" /> <ClInclude Include="curl\lib\cshutdn.h" />
<ClInclude Include="curl\lib\curlx\base64.h" /> <ClInclude Include="curl\lib\curlx\base64.h" />
<ClInclude Include="curl\lib\curlx\binmode.h" />
<ClInclude Include="curl\lib\curlx\curlx.h" /> <ClInclude Include="curl\lib\curlx\curlx.h" />
<ClInclude Include="curl\lib\curlx\dynbuf.h" /> <ClInclude Include="curl\lib\curlx\dynbuf.h" />
<ClInclude Include="curl\lib\curlx\fopen.h" />
<ClInclude Include="curl\lib\curlx\inet_ntop.h" />
<ClInclude Include="curl\lib\curlx\inet_pton.h" /> <ClInclude Include="curl\lib\curlx\inet_pton.h" />
<ClInclude Include="curl\lib\curlx\multibyte.h" /> <ClInclude Include="curl\lib\curlx\multibyte.h" />
<ClInclude Include="curl\lib\curlx\nonblock.h" /> <ClInclude Include="curl\lib\curlx\nonblock.h" />
<ClInclude Include="curl\lib\curlx\strerr.h" />
<ClInclude Include="curl\lib\curlx\strparse.h" /> <ClInclude Include="curl\lib\curlx\strparse.h" />
<ClInclude Include="curl\lib\curlx\timediff.h" /> <ClInclude Include="curl\lib\curlx\timediff.h" />
<ClInclude Include="curl\lib\curlx\timeval.h" /> <ClInclude Include="curl\lib\curlx\timeval.h" />
<ClInclude Include="curl\lib\curlx\version_win32.h" /> <ClInclude Include="curl\lib\curlx\version_win32.h" />
<ClInclude Include="curl\lib\curlx\wait.h" />
<ClInclude Include="curl\lib\curlx\warnless.h" /> <ClInclude Include="curl\lib\curlx\warnless.h" />
<ClInclude Include="curl\lib\curlx\winapi.h" /> <ClInclude Include="curl\lib\curlx\winapi.h" />
<ClInclude Include="curl\lib\curl_addrinfo.h" /> <ClInclude Include="curl\lib\curl_addrinfo.h" />
<ClInclude Include="curl\lib\curl_ctype.h" /> <ClInclude Include="curl\lib\curl_ctype.h" />
<ClInclude Include="curl\lib\curl_des.h" />
<ClInclude Include="curl\lib\curl_endian.h" /> <ClInclude Include="curl\lib\curl_endian.h" />
<ClInclude Include="curl\lib\curl_fnmatch.h" /> <ClInclude Include="curl\lib\curl_fnmatch.h" />
<ClInclude Include="curl\lib\curl_fopen.h" />
<ClInclude Include="curl\lib\curl_gethostname.h" /> <ClInclude Include="curl\lib\curl_gethostname.h" />
<ClInclude Include="curl\lib\curl_get_line.h" /> <ClInclude Include="curl\lib\curl_get_line.h" />
<ClInclude Include="curl\lib\curl_gssapi.h" /> <ClInclude Include="curl\lib\curl_gssapi.h" />
<ClInclude Include="curl\lib\curl_hmac.h" /> <ClInclude Include="curl\lib\curl_hmac.h" />
<ClInclude Include="curl\lib\curl_krb5.h" />
<ClInclude Include="curl\lib\curl_ldap.h" /> <ClInclude Include="curl\lib\curl_ldap.h" />
<ClInclude Include="curl\lib\curl_md4.h" /> <ClInclude Include="curl\lib\curl_md4.h" />
<ClInclude Include="curl\lib\curl_md5.h" /> <ClInclude Include="curl\lib\curl_md5.h" />
<ClInclude Include="curl\lib\curl_memory.h" /> <ClInclude Include="curl\lib\curl_memory.h" />
<ClInclude Include="curl\lib\curl_memrchr.h" /> <ClInclude Include="curl\lib\curl_memrchr.h" />
<ClInclude Include="curl\lib\curl_mem_undef.h" />
<ClInclude Include="curl\lib\curl_ntlm_core.h" /> <ClInclude Include="curl\lib\curl_ntlm_core.h" />
<ClInclude Include="curl\lib\curl_printf.h" /> <ClInclude Include="curl\lib\curl_printf.h" />
<ClInclude Include="curl\lib\curl_range.h" /> <ClInclude Include="curl\lib\curl_range.h" />
@ -327,6 +321,7 @@
<ClInclude Include="curl\lib\fake_addrinfo.h" /> <ClInclude Include="curl\lib\fake_addrinfo.h" />
<ClInclude Include="curl\lib\file.h" /> <ClInclude Include="curl\lib\file.h" />
<ClInclude Include="curl\lib\fileinfo.h" /> <ClInclude Include="curl\lib\fileinfo.h" />
<ClInclude Include="curl\lib\fopen.h" />
<ClInclude Include="curl\lib\formdata.h" /> <ClInclude Include="curl\lib\formdata.h" />
<ClInclude Include="curl\lib\ftp.h" /> <ClInclude Include="curl\lib\ftp.h" />
<ClInclude Include="curl\lib\ftplistparser.h" /> <ClInclude Include="curl\lib\ftplistparser.h" />
@ -350,6 +345,7 @@
<ClInclude Include="curl\lib\idn.h" /> <ClInclude Include="curl\lib\idn.h" />
<ClInclude Include="curl\lib\if2ip.h" /> <ClInclude Include="curl\lib\if2ip.h" />
<ClInclude Include="curl\lib\imap.h" /> <ClInclude Include="curl\lib\imap.h" />
<ClInclude Include="curl\lib\inet_ntop.h" />
<ClInclude Include="curl\lib\llist.h" /> <ClInclude Include="curl\lib\llist.h" />
<ClInclude Include="curl\lib\macos.h" /> <ClInclude Include="curl\lib\macos.h" />
<ClInclude Include="curl\lib\memdebug.h" /> <ClInclude Include="curl\lib\memdebug.h" />
@ -358,7 +354,6 @@
<ClInclude Include="curl\lib\multihandle.h" /> <ClInclude Include="curl\lib\multihandle.h" />
<ClInclude Include="curl\lib\multiif.h" /> <ClInclude Include="curl\lib\multiif.h" />
<ClInclude Include="curl\lib\multi_ev.h" /> <ClInclude Include="curl\lib\multi_ev.h" />
<ClInclude Include="curl\lib\multi_ntfy.h" />
<ClInclude Include="curl\lib\netrc.h" /> <ClInclude Include="curl\lib\netrc.h" />
<ClInclude Include="curl\lib\noproxy.h" /> <ClInclude Include="curl\lib\noproxy.h" />
<ClInclude Include="curl\lib\parsedate.h" /> <ClInclude Include="curl\lib\parsedate.h" />
@ -402,10 +397,10 @@
<ClInclude Include="curl\lib\url.h" /> <ClInclude Include="curl\lib\url.h" />
<ClInclude Include="curl\lib\urlapi-int.h" /> <ClInclude Include="curl\lib\urlapi-int.h" />
<ClInclude Include="curl\lib\urldata.h" /> <ClInclude Include="curl\lib\urldata.h" />
<ClInclude Include="curl\lib\vquic\curl_msh3.h" />
<ClInclude Include="curl\lib\vquic\curl_ngtcp2.h" /> <ClInclude Include="curl\lib\vquic\curl_ngtcp2.h" />
<ClInclude Include="curl\lib\vquic\curl_quiche.h" /> <ClInclude Include="curl\lib\vquic\curl_quiche.h" />
<ClInclude Include="curl\lib\vquic\vquic_int.h" /> <ClInclude Include="curl\lib\vquic\vquic_int.h" />
<ClInclude Include="curl\lib\vtls\apple.h" />
<ClInclude Include="curl\lib\vtls\cipher_suite.h" /> <ClInclude Include="curl\lib\vtls\cipher_suite.h" />
<ClInclude Include="curl\lib\vtls\hostcheck.h" /> <ClInclude Include="curl\lib\vtls\hostcheck.h" />
<ClInclude Include="curl\lib\vtls\rustls.h" /> <ClInclude Include="curl\lib\vtls\rustls.h" />
@ -420,12 +415,14 @@
<ClInclude Include="curl\lib\vquic\vquic.h" /> <ClInclude Include="curl\lib\vquic\vquic.h" />
<ClInclude Include="curl\lib\vssh\curl_path.h" /> <ClInclude Include="curl\lib\vssh\curl_path.h" />
<ClInclude Include="curl\lib\vssh\ssh.h" /> <ClInclude Include="curl\lib\vssh\ssh.h" />
<ClInclude Include="curl\lib\vtls\bearssl.h" />
<ClInclude Include="curl\lib\vtls\gtls.h" /> <ClInclude Include="curl\lib\vtls\gtls.h" />
<ClInclude Include="curl\lib\vtls\keylog.h" /> <ClInclude Include="curl\lib\vtls\keylog.h" />
<ClInclude Include="curl\lib\vtls\mbedtls.h" /> <ClInclude Include="curl\lib\vtls\mbedtls.h" />
<ClInclude Include="curl\lib\vtls\mbedtls_threadlock.h" /> <ClInclude Include="curl\lib\vtls\mbedtls_threadlock.h" />
<ClInclude Include="curl\lib\vtls\openssl.h" /> <ClInclude Include="curl\lib\vtls\openssl.h" />
<ClInclude Include="curl\lib\vtls\schannel.h" /> <ClInclude Include="curl\lib\vtls\schannel.h" />
<ClInclude Include="curl\lib\vtls\sectransp.h" />
<ClInclude Include="curl\lib\vtls\vtls.h" /> <ClInclude Include="curl\lib\vtls\vtls.h" />
<ClInclude Include="curl\lib\vtls\wolfssl.h" /> <ClInclude Include="curl\lib\vtls\wolfssl.h" />
<ClInclude Include="curl\lib\ws.h" /> <ClInclude Include="curl\lib\ws.h" />

View file

@ -42,6 +42,9 @@
<ClCompile Include="curl\lib\curl_addrinfo.c"> <ClCompile Include="curl\lib\curl_addrinfo.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="curl\lib\curl_des.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\curl_endian.c"> <ClCompile Include="curl\lib\curl_endian.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
@ -156,6 +159,12 @@
<ClCompile Include="curl\lib\imap.c"> <ClCompile Include="curl\lib\imap.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="curl\lib\inet_ntop.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\krb5.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\ldap.c"> <ClCompile Include="curl\lib\ldap.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
@ -327,6 +336,12 @@
<ClCompile Include="curl\lib\vssh\libssh2.c"> <ClCompile Include="curl\lib\vssh\libssh2.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="curl\lib\vssh\wolfssh.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\vtls\bearssl.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\vtls\gtls.c"> <ClCompile Include="curl\lib\vtls\gtls.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
@ -345,6 +360,9 @@
<ClCompile Include="curl\lib\vtls\schannel_verify.c"> <ClCompile Include="curl\lib\vtls\schannel_verify.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="curl\lib\vtls\sectransp.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\vtls\vtls.c"> <ClCompile Include="curl\lib\vtls\vtls.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
@ -387,6 +405,9 @@
<ClCompile Include="curl\lib\headers.c"> <ClCompile Include="curl\lib\headers.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="curl\lib\fopen.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\noproxy.c"> <ClCompile Include="curl\lib\noproxy.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
@ -405,6 +426,9 @@
<ClCompile Include="curl\lib\cf-socket.c"> <ClCompile Include="curl\lib\cf-socket.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="curl\lib\vquic\curl_msh3.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\vquic\curl_ngtcp2.c"> <ClCompile Include="curl\lib\vquic\curl_ngtcp2.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
@ -525,30 +549,6 @@
<ClCompile Include="curl\lib\curlx\winapi.c"> <ClCompile Include="curl\lib\curlx\winapi.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="curl\lib\curlx\inet_ntop.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\curlx\wait.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\cf-ip-happy.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\curl_fopen.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\multi_ntfy.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\vtls\apple.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\curlx\fopen.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\curlx\strerr.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="curl\include\curl\curl.h"> <ClInclude Include="curl\include\curl\curl.h">
@ -626,6 +626,9 @@
<ClInclude Include="curl\lib\curl_ctype.h"> <ClInclude Include="curl\lib\curl_ctype.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="curl\lib\curl_des.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curl_endian.h"> <ClInclude Include="curl\lib\curl_endian.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@ -755,6 +758,9 @@
<ClInclude Include="curl\lib\imap.h"> <ClInclude Include="curl\lib\imap.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="curl\lib\inet_ntop.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\llist.h"> <ClInclude Include="curl\lib\llist.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@ -893,6 +899,9 @@
<ClInclude Include="curl\lib\vssh\ssh.h"> <ClInclude Include="curl\lib\vssh\ssh.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="curl\lib\vtls\bearssl.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\vtls\gtls.h"> <ClInclude Include="curl\lib\vtls\gtls.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@ -908,6 +917,9 @@
<ClInclude Include="curl\lib\vtls\schannel.h"> <ClInclude Include="curl\lib\vtls\schannel.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="curl\lib\vtls\sectransp.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\vtls\vtls.h"> <ClInclude Include="curl\lib\vtls\vtls.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@ -926,6 +938,9 @@
<ClInclude Include="curl\lib\vtls\keylog.h"> <ClInclude Include="curl\lib\vtls\keylog.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="curl\lib\curl_krb5.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\easyoptions.h"> <ClInclude Include="curl\lib\easyoptions.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@ -950,6 +965,9 @@
<ClInclude Include="curl\lib\easy_lock.h"> <ClInclude Include="curl\lib\easy_lock.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="curl\lib\fopen.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\functypes.h"> <ClInclude Include="curl\lib\functypes.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@ -971,6 +989,9 @@
<ClInclude Include="curl\lib\cf-socket.h"> <ClInclude Include="curl\lib\cf-socket.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="curl\lib\vquic\curl_msh3.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\vquic\curl_ngtcp2.h"> <ClInclude Include="curl\lib\vquic\curl_ngtcp2.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@ -1091,36 +1112,6 @@
<ClInclude Include="curl\lib\curlx\winapi.h"> <ClInclude Include="curl\lib\curlx\winapi.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="curl\lib\curlx\binmode.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curlx\inet_ntop.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curlx\wait.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\cf-ip-happy.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curl_mem_undef.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curl_fopen.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\multi_ntfy.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\vtls\apple.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curlx\fopen.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curlx\strerr.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="curl\lib\libcurl.rc"> <ResourceCompile Include="curl\lib\libcurl.rc">

View file

@ -1,9 +0,0 @@
# Feral Interactive
add_library(3rdparty_feralinteractive INTERFACE)
if (CMAKE_SYSTEM MATCHES "Linux")
target_include_directories(3rdparty_feralinteractive INTERFACE feralinteractive/lib)
target_compile_definitions(3rdparty_feralinteractive INTERFACE -DGAMEMODE_AVAILABLE)
target_link_libraries(3rdparty_feralinteractive INTERFACE feralinteractive)
endif()

@ -1 +0,0 @@
Subproject commit c54d6d4243b0dd0afcb49f2c9836d432da171a2b

@ -1 +1 @@
Subproject commit 759ac5d698baefca53f1975a0bb1d2dcbdb9f836 Subproject commit 066d4a63b2c714b20b0a8073a01fda7c5c6763f6

View file

@ -1,23 +1,11 @@
#glslang #glslang
if(USE_SYSTEM_GLSLANG) set(ENABLE_PCH OFF CACHE BOOL "Enables Precompiled header" FORCE)
message(STATUS "RPCS3: using shared glslang") set(BUILD_EXTERNAL OFF CACHE BOOL "Build external dependencies in /External" FORCE)
find_package(glslang REQUIRED GLOBAL) set(SKIP_GLSLANG_INSTALL ON CACHE BOOL "Skip installation" FORCE)
add_library(3rdparty_glslang INTERFACE) set(ENABLE_SPVREMAPPER OFF CACHE BOOL "Enables building of SPVRemapper" FORCE)
target_link_libraries(3rdparty_glslang INTERFACE glslang::SPIRV) set(ENABLE_GLSLANG_BINARIES OFF CACHE BOOL "Builds glslangValidator and spirv-remap" FORCE)
get_target_property(SPIRV_INCLUDE_DIRS glslang::SPIRV INTERFACE_INCLUDE_DIRECTORIES) set(ENABLE_HLSL OFF CACHE BOOL "Enables HLSL input support" FORCE)
list(TRANSFORM SPIRV_INCLUDE_DIRS APPEND "/glslang") set(ENABLE_OPT OFF CACHE BOOL "Enables spirv-opt capability if present" FORCE)
target_include_directories(3rdparty_glslang INTERFACE ${SPIRV_INCLUDE_DIRS}) set(ENABLE_CTEST OFF CACHE BOOL "Enables testing" FORCE)
else() add_subdirectory(glslang)
set(ENABLE_PCH OFF CACHE BOOL "Enables Precompiled header" FORCE)
set(BUILD_EXTERNAL OFF CACHE BOOL "Build external dependencies in /External" FORCE)
set(SKIP_GLSLANG_INSTALL ON CACHE BOOL "Skip installation" FORCE)
set(ENABLE_SPVREMAPPER OFF CACHE BOOL "Enables building of SPVRemapper" FORCE)
set(ENABLE_GLSLANG_BINARIES OFF CACHE BOOL "Builds glslangValidator and spirv-remap" FORCE)
set(ENABLE_HLSL OFF CACHE BOOL "Enables HLSL input support" FORCE)
set(ENABLE_OPT OFF CACHE BOOL "Enables spirv-opt capability if present" FORCE)
set(ENABLE_CTEST OFF CACHE BOOL "Enables testing" FORCE)
add_subdirectory(glslang)
add_library(3rdparty_glslang INTERFACE)
target_link_libraries(3rdparty_glslang INTERFACE SPIRV)
endif()

View file

@ -1,30 +1,22 @@
# hidapi # hidapi
if(USE_SYSTEM_HIDAPI) set(BUILD_SHARED_LIBS FALSE CACHE BOOL "Don't build shared libs")
message(STATUS "RPCS3: using shared hidapi") set(HIDAPI_INSTALL_TARGETS FALSE CACHE BOOL "Don't install anything")
pkg_check_modules(hidapi-hidraw REQUIRED IMPORTED_TARGET hidapi-hidraw)
add_library(3rdparty_hidapi INTERFACE)
target_link_libraries(3rdparty_hidapi INTERFACE PkgConfig::hidapi-hidraw)
target_include_directories(3rdparty_hidapi INTERFACE PkgConfig::hidapi-hidraw)
else()
set(BUILD_SHARED_LIBS FALSE CACHE BOOL "Don't build shared libs")
set(HIDAPI_INSTALL_TARGETS FALSE CACHE BOOL "Don't install anything")
if(CMAKE_SYSTEM MATCHES "Linux") if(CMAKE_SYSTEM MATCHES "Linux")
set(HIDAPI_WITH_LIBUSB FALSE CACHE BOOL "Don't build with libusb for linux") set(HIDAPI_WITH_LIBUSB FALSE CACHE BOOL "Don't build with libusb for linux")
endif() endif()
add_library(3rdparty_hidapi INTERFACE) add_library(3rdparty_hidapi INTERFACE)
add_subdirectory(hidapi EXCLUDE_FROM_ALL) add_subdirectory(hidapi EXCLUDE_FROM_ALL)
if(APPLE) if(APPLE)
target_link_libraries(3rdparty_hidapi INTERFACE hidapi_darwin "-framework CoreFoundation" "-framework IOKit") target_link_libraries(3rdparty_hidapi INTERFACE hidapi_darwin "-framework CoreFoundation" "-framework IOKit")
elseif(CMAKE_SYSTEM MATCHES "Linux") elseif(CMAKE_SYSTEM MATCHES "Linux")
target_link_libraries(3rdparty_hidapi INTERFACE hidapi-hidraw udev) target_link_libraries(3rdparty_hidapi INTERFACE hidapi-hidraw udev)
elseif(WIN32) elseif(WIN32)
target_link_libraries(3rdparty_hidapi INTERFACE hidapi::hidapi hidapi::include Shlwapi.lib) target_link_libraries(3rdparty_hidapi INTERFACE hidapi::hidapi hidapi::include Shlwapi.lib)
elseif(ANDROID) elseif(ANDROID)
target_link_libraries(3rdparty_hidapi INTERFACE hidapi::libusb) target_link_libraries(3rdparty_hidapi INTERFACE hidapi::libusb)
else() else()
target_link_libraries(3rdparty_hidapi INTERFACE hidapi-libusb usb) target_link_libraries(3rdparty_hidapi INTERFACE hidapi-libusb usb)
endif()
endif() endif()

@ -1 +1 @@
Subproject commit d6b2a974608dec3b76fb1e36c189f22b9cf3650c Subproject commit f42423643ec9011c98cccc0bb790722bbbd3f30b

@ -1 +1 @@
Subproject commit 49363adcfaf098748d7a4c8c624ad8c45a8c3a86 Subproject commit ea127968204cc5d10f3fc9250c306b9e8cbd9b80

@ -1 +1 @@
Subproject commit 7f3ae3d57459e59943a4ecfefc8f6277ec6bf540 Subproject commit 8d604353a53853fa56d1bdce0363535605ca868f

View file

@ -384,6 +384,7 @@
<ClCompile Include="SDL\src\render\opengl\SDL_shaders_gl.c" /> <ClCompile Include="SDL\src\render\opengl\SDL_shaders_gl.c" />
<ClCompile Include="SDL\src\render\opengles2\SDL_render_gles2.c" /> <ClCompile Include="SDL\src\render\opengles2\SDL_render_gles2.c" />
<ClCompile Include="SDL\src\render\opengles2\SDL_shaders_gles2.c" /> <ClCompile Include="SDL\src\render\opengles2\SDL_shaders_gles2.c" />
<ClCompile Include="SDL\src\render\SDL_d3dmath.c" />
<ClCompile Include="SDL\src\render\SDL_render.c" /> <ClCompile Include="SDL\src\render\SDL_render.c" />
<ClCompile Include="SDL\src\render\SDL_render_unsupported.c" /> <ClCompile Include="SDL\src\render\SDL_render_unsupported.c" />
<ClCompile Include="SDL\src\render\SDL_yuv_sw.c" /> <ClCompile Include="SDL\src\render\SDL_yuv_sw.c" />

View file

@ -172,6 +172,9 @@
<Filter Include="render\direct3d12"> <Filter Include="render\direct3d12">
<UniqueIdentifier>{f48c2b17-1bee-4fec-a7c8-24cf619abe08}</UniqueIdentifier> <UniqueIdentifier>{f48c2b17-1bee-4fec-a7c8-24cf619abe08}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="video\intrin">
<UniqueIdentifier>{653672cc-90ae-4eba-a256-6479f2c31804}</UniqueIdentifier>
</Filter>
<Filter Include="main"> <Filter Include="main">
<UniqueIdentifier>{00001967ea2801028a046a722a070000}</UniqueIdentifier> <UniqueIdentifier>{00001967ea2801028a046a722a070000}</UniqueIdentifier>
</Filter> </Filter>
@ -1457,6 +1460,9 @@
<ClCompile Include="SDL\src\sensor\windows\SDL_windowssensor.c"> <ClCompile Include="SDL\src\sensor\windows\SDL_windowssensor.c">
<Filter>sensor\windows</Filter> <Filter>sensor\windows</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="SDL\src\render\SDL_d3dmath.c">
<Filter>render</Filter>
</ClCompile>
<ClCompile Include="SDL\src\render\SDL_render.c"> <ClCompile Include="SDL\src\render\SDL_render.c">
<Filter>render</Filter> <Filter>render</Filter>
</ClCompile> </ClCompile>

@ -1 +1 @@
Subproject commit 15a7ebb4d426c5ce196684347d2b7cafad862626 Subproject commit a61afe5f75d969c4561a1d0ad753aa23cee6329a

View file

@ -66,10 +66,12 @@ if(WITH_LLVM)
find_package(LLVM CONFIG) find_package(LLVM CONFIG)
if (NOT LLVM_FOUND) if (NOT LLVM_FOUND)
message(FATAL_ERROR "Can't find LLVM libraries from the CMAKE_PREFIX_PATH path or LLVM_DIR. Enable BUILD_LLVM option to build LLVM from included as a git submodule.") message(FATAL_ERROR "Can't find LLVM libraries from the CMAKE_PREFIX_PATH path or LLVM_DIR. \
Enable BUILD_LLVM option to build LLVM from included as a git submodule.")
endif() endif()
if (LLVM_VERSION VERSION_LESS 18) if (LLVM_VERSION VERSION_LESS 18)
message(FATAL_ERROR "Found LLVM version ${LLVM_VERSION}. Required version 18 or above. Enable BUILD_LLVM option to build LLVM from included as a git submodule.") message(FATAL_ERROR "Found LLVM version ${LLVM_VERSION}. Required version 18 or above. \
Enable BUILD_LLVM option to build LLVM from included as a git submodule.")
endif() endif()
endif() endif()

View file

@ -1,21 +1,8 @@
if(USE_SYSTEM_MINIUPNPC) option (UPNPC_BUILD_STATIC "Build static library" TRUE)
message(STATUS "RPCS3: using shared MiniUPnPc") option (UPNPC_BUILD_SHARED "Build shared library" FALSE)
pkg_check_modules(MiniUPnPc REQUIRED IMPORTED_TARGET miniupnpc>=2.3.3) option (UPNPC_BUILD_TESTS "Build test executables" FALSE)
add_library(3rdparty_miniupnpc INTERFACE) option (UPNPC_BUILD_SAMPLE "Build sample executables" FALSE)
target_link_libraries(3rdparty_miniupnpc INTERFACE PkgConfig::MiniUPnPc) option (NO_GETADDRINFO "Define NO_GETADDRINFO" FALSE)
target_include_directories(3rdparty_miniupnpc INTERFACE PkgConfig::MiniUPnPc) option (UPNPC_NO_INSTALL "Disable installation" TRUE)
list(TRANSFORM MiniUPnPc_INCLUDE_DIRS APPEND "/miniupnpc")
target_include_directories(3rdparty_miniupnpc INTERFACE ${MiniUPnPc_INCLUDE_DIRS})
else()
option (UPNPC_BUILD_STATIC "Build static library" TRUE)
option (UPNPC_BUILD_SHARED "Build shared library" FALSE)
option (UPNPC_BUILD_TESTS "Build test executables" FALSE)
option (UPNPC_BUILD_SAMPLE "Build sample executables" FALSE)
option (NO_GETADDRINFO "Define NO_GETADDRINFO" FALSE)
option (UPNPC_NO_INSTALL "Disable installation" TRUE)
add_subdirectory(miniupnp/miniupnpc EXCLUDE_FROM_ALL) add_subdirectory(miniupnp/miniupnpc EXCLUDE_FROM_ALL)
add_library(3rdparty_miniupnpc INTERFACE)
target_link_libraries(3rdparty_miniupnpc INTERFACE libminiupnpc-static)
target_include_directories(3rdparty_miniupnpc INTERFACE libminiupnpc-static)
endif()

@ -1 +1 @@
Subproject commit 67f53c26a701c2aeefd8033ec2f2079e04c438ca Subproject commit f76628fb5b25746fcb75a7ce85be0d8c6439fc57

5
3rdparty/qt6.cmake vendored
View file

@ -6,15 +6,14 @@ find_package(Qt6 ${QT_MIN_VER} CONFIG COMPONENTS Widgets Concurrent Multimedia M
if(WIN32) if(WIN32)
target_link_libraries(3rdparty_qt6 INTERFACE Qt6::Widgets Qt6::Concurrent Qt6::Multimedia Qt6::MultimediaWidgets Qt6::Svg Qt6::SvgWidgets) target_link_libraries(3rdparty_qt6 INTERFACE Qt6::Widgets Qt6::Concurrent Qt6::Multimedia Qt6::MultimediaWidgets Qt6::Svg Qt6::SvgWidgets)
else() else()
set(QT_NO_PRIVATE_MODULE_WARNING ON) find_package(Qt6 ${QT_MIN_VER} COMPONENTS DBus Gui)
find_package(Qt6 ${QT_MIN_VER} COMPONENTS DBus Gui GuiPrivate)
if(Qt6DBus_FOUND) if(Qt6DBus_FOUND)
target_link_libraries(3rdparty_qt6 INTERFACE Qt6::Widgets Qt6::DBus Qt6::Concurrent Qt6::Multimedia Qt6::MultimediaWidgets Qt6::Svg Qt6::SvgWidgets) target_link_libraries(3rdparty_qt6 INTERFACE Qt6::Widgets Qt6::DBus Qt6::Concurrent Qt6::Multimedia Qt6::MultimediaWidgets Qt6::Svg Qt6::SvgWidgets)
target_compile_definitions(3rdparty_qt6 INTERFACE -DHAVE_QTDBUS) target_compile_definitions(3rdparty_qt6 INTERFACE -DHAVE_QTDBUS)
else() else()
target_link_libraries(3rdparty_qt6 INTERFACE Qt6::Widgets Qt6::Concurrent Qt6::Multimedia Qt6::MultimediaWidgets Qt6::Svg Qt6::SvgWidgets) target_link_libraries(3rdparty_qt6 INTERFACE Qt6::Widgets Qt6::Concurrent Qt6::Multimedia Qt6::MultimediaWidgets Qt6::Svg Qt6::SvgWidgets)
endif() endif()
target_link_libraries(3rdparty_qt6 INTERFACE Qt6::GuiPrivate) target_include_directories(3rdparty_qt6 INTERFACE ${Qt6Gui_PRIVATE_INCLUDE_DIRS})
endif() endif()
if(Qt6Widgets_FOUND) if(Qt6Widgets_FOUND)

View file

@ -1,12 +1,4 @@
if(USE_SYSTEM_RTMIDI) option(RTMIDI_API_JACK "Compile with JACK support." OFF)
message(STATUS "RPCS3: using shared RtMidi") option(RTMIDI_BUILD_TESTING "Build test programs" OFF)
pkg_check_modules(RtMidi REQUIRED IMPORTED_TARGET rtmidi>=6.0.0) set(RTMIDI_TARGETNAME_UNINSTALL "uninstall-rpcs3-rtmidi")
add_library(rtmidi INTERFACE) add_subdirectory(rtmidi EXCLUDE_FROM_ALL)
target_link_libraries(rtmidi INTERFACE PkgConfig::RtMidi)
target_include_directories(rtmidi INTERFACE PkgConfig::RtMidi)
else()
option(RTMIDI_API_JACK "Compile with JACK support." OFF)
option(RTMIDI_BUILD_TESTING "Build test programs" OFF)
set(RTMIDI_TARGETNAME_UNINSTALL "uninstall-rpcs3-rtmidi")
add_subdirectory(rtmidi EXCLUDE_FROM_ALL)
endif()

View file

@ -39,14 +39,13 @@ check_tags()
echo "Checking $path" echo "Checking $path"
git_call fetch --prune --all # git_call fetch --prune --all
# Get the latest tag (by commit date, not tag name) # Get the latest tag (by commit date, not tag name)
local tag_list=$(git_call rev-list --tags --max-count=1) local tag_list=$(git_call rev-list --tags --max-count=1)
local latest_tag=$(git_call describe --tags "$tag_list") local latest_tag=$(git_call describe --tags "$tag_list")
local highest_tag=$(git_call tag -l | sort -V | tail -n1)
if [ -n "$latest_tag" ] || [ -n "$highest_tag" ]; then if [ -n "$latest_tag" ]; then
# Get the current tag # Get the current tag
local current_tag=$(git_call describe --tags --abbrev=0) local current_tag=$(git_call describe --tags --abbrev=0)
@ -54,29 +53,28 @@ check_tags()
if [ -n "$current_tag" ]; then if [ -n "$current_tag" ]; then
if [ "$verbose" -eq 1 ]; then if [ "$verbose" -eq 1 ]; then
echo "$path -> latest: $latest_tag, highest: $highest_tag, current: $current_tag" echo "$path -> latest: $latest_tag, current: $current_tag"
fi fi
local ts0=$(git_call log -1 --format=%ct $highest_tag)
local ts1=$(git_call log -1 --format=%ct $latest_tag) local ts1=$(git_call log -1 --format=%ct $latest_tag)
local ts2=$(git_call log -1 --format=%ct $current_tag) local ts2=$(git_call log -1 --format=%ct $current_tag)
if (( ts0 > ts2 )) || (( ts1 > ts2 )); then if (( ts1 > ts2 )); then
if [ "$verbose" -eq 1 ]; then if [ "$verbose" -eq 1 ]; then
echo -e "\t $path: latest is newer" echo -e "\t $path: latest is newer"
elif [ "$verbose" -eq 0 ]; then elif [ "$verbose" -eq 0 ]; then
echo "$path -> latest: $latest_tag, highest: $highest_tag, current: $current_tag" echo "$path -> latest: $latest_tag, current: $current_tag"
fi fi
# Critical section guarded by flock # Critical section guarded by flock
( (
flock 200 flock 200
echo "$path -> latest: $latest_tag, highest: $highest_tag, current: $current_tag" >> "$resultfile" echo "$path -> latest: $latest_tag, current: $current_tag" >> "$resultfile"
) 200>"$lockfile" ) 200>"$lockfile"
fi fi
elif [ "$verbose" -eq 1 ]; then elif [ "$verbose" -eq 1 ]; then
echo "$path -> latest: $latest_tag, highest: $highest_tag" echo "$path -> latest: $latest_tag"
fi fi
elif [ "$verbose" -eq 1 ]; then elif [ "$verbose" -eq 1 ]; then

View file

@ -1,16 +1,8 @@
if(USE_SYSTEM_ZSTD) option(ZSTD_BUILD_PROGRAMS "BUILD PROGRAMS" OFF)
message(STATUS "RPCS3: using shared zstd") option(ZSTD_BUILD_SHARED "BUILD SHARED LIBRARIES" OFF)
pkg_check_modules(zstd REQUIRED IMPORTED_TARGET libzstd) option(ZSTD_BUILD_STATIC "BUILD STATIC LIBRARIES" ON)
add_library(3rdparty_zstd INTERFACE) option(ZSTD_BUILD_TESTS "BUILD TESTS" OFF)
target_link_libraries(3rdparty_zstd INTERFACE PkgConfig::zstd)
target_include_directories(3rdparty_zstd INTERFACE PkgConfig::RtMidi)
else()
option(ZSTD_BUILD_PROGRAMS "BUILD PROGRAMS" OFF)
option(ZSTD_BUILD_SHARED "BUILD SHARED LIBRARIES" OFF)
option(ZSTD_BUILD_STATIC "BUILD STATIC LIBRARIES" ON)
option(ZSTD_BUILD_TESTS "BUILD TESTS" OFF)
add_subdirectory(zstd/build/cmake EXCLUDE_FROM_ALL) add_subdirectory(zstd/build/cmake EXLUDE_FROM_ALL)
add_library(3rdparty_zstd INTERFACE) add_library(3rdparty_zstd INTERFACE)
target_link_libraries(3rdparty_zstd INTERFACE libzstd_static) target_link_libraries(3rdparty_zstd INTERFACE libzstd_static)
endif()

View file

@ -8,38 +8,37 @@ Other instructions may be found [here](https://wiki.rpcs3.net/index.php?title=Bu
### Windows 10 or later ### Windows 10 or later
The following tools are required to build RPCS3 on Windows 10 or later: The following tools are required to build RPCS3 on Windows 10 or later:
- [Visual Studio 2022/2026](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community) - [Visual Studio 2022](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community)
- **Optional** - [CMake 3.28.0+](https://www.cmake.org/download/) (add to PATH) - **Optional** - [CMake 3.28.0+](https://www.cmake.org/download/) (add to PATH)
**NOTES:** **NOTES:**
- **Visual Studio 2026** needs at least **CMake 4.2.0+**. - **Visual Studio 2022** integrates **CMake 3.29+** and it also supports both the `sln` solution (`.sln`, `.vcxproj`) and `CMake` solution (`CMakeLists.txt`, `CMakePresets.json`).
- **Visual Studio 2022/2026** integrates **CMake 3.29+** and it also supports both the `sln` solution (`.sln`, `.vcxproj`) and `CMake` solution (`CMakeLists.txt`, `CMakePresets.json`).
See sections [Building with Visual Studio sln solution](#building-with-visual-studio-sln-solution) and [Building with Visual Studio CMake solution](#building-with-visual-studio-cmake-solution) See sections [Building with Visual Studio sln solution](#building-with-visual-studio-sln-solution) and [Building with Visual Studio CMake solution](#building-with-visual-studio-cmake-solution)
on how to build the project with **Visual Studio**. on how to build the project with **Visual Studio**.
- Install and use this standalone **CMake** tool just in case of your preference. See section [Building with standalone CMake tool](#building-with-standalone-cmake-tool) on how to build the project - Install and use this standalone **CMake** tool just in case of your preference. See section [Building with standalone CMake tool](#building-with-standalone-cmake-tool) on how to build the project
with standalone **CMake** tool. with standalone **CMake** tool.
- [Python 3.6+](https://www.python.org/downloads/) (add to PATH) - [Python 3.6+](https://www.python.org/downloads/) (add to PATH)
- [Qt 6.10.1](https://www.qt.io/download-qt-installer) In case you can't download from the official installer, you can use [Another Qt installer](https://github.com/miurahr/aqtinstall) (In that case you will need to manually add the "qtmultimedia" module when installing Qt) - [Qt 6.9.0](https://www.qt.io/download-qt-installer) In case you can't download from the official installer, you can use [Another Qt installer](https://github.com/miurahr/aqtinstall) (In that case you will need to manually add the "qtmultimedia" module when installing Qt)
- [Vulkan SDK 1.3.268.0](https://vulkan.lunarg.com/sdk/home) (see "Install the SDK" [here](https://vulkan.lunarg.com/doc/sdk/latest/windows/getting_started.html)) for now future SDKs don't work. You need precisely 1.3.268.0. - [Vulkan SDK 1.3.268.0](https://vulkan.lunarg.com/sdk/home) (see "Install the SDK" [here](https://vulkan.lunarg.com/doc/sdk/latest/windows/getting_started.html)) for now future SDKs don't work. You need precisely 1.3.268.0.
The `sln` solution available only on **Visual Studio** is the preferred building solution. It easily allows to build the **RPCS3** application in `Release` and `Debug` mode. The `sln` solution available only on **Visual Studio** is the preferred building solution. It easily allows to build the **RPCS3** application in `Release` and `Debug` mode.
In order to build **RPCS3** with the `sln` solution (with **Visual Studio**), **Qt** libs need to be detected. To detect the libs: In order to build **RPCS3** with the `sln` solution (with **Visual Studio**), **Qt** libs need to be detected. To detect the libs:
- add and set the `QTDIR` environment variable, e.g. `<QtInstallFolder>\6.10.1\msvc2022_64\` - add and set the `QTDIR` environment variable, e.g. `<QtInstallFolder>\6.9.0\msvc2022_64\`
- or use the [Visual Studio Qt Plugin](https://marketplace.visualstudio.com/items?itemName=TheQtCompany.QtVisualStudioTools2022) - or use the [Visual Studio Qt Plugin](https://marketplace.visualstudio.com/items?itemName=TheQtCompany.QtVisualStudioTools2022)
**NOTE:** If you have issues with the **Visual Studio Qt Plugin**, you may want to uninstall it and install the [Legacy Qt Plugin](https://marketplace.visualstudio.com/items?itemName=TheQtCompany.LEGACYQtVisualStudioTools2022) instead. **NOTE:** If you have issues with the **Visual Studio Qt Plugin**, you may want to uninstall it and install the [Legacy Qt Plugin](https://marketplace.visualstudio.com/items?itemName=TheQtCompany.LEGACYQtVisualStudioTools2022) instead.
In order to build **RPCS3** with the `CMake` solution (with both **Visual Studio** and standalone **CMake** tool): In order to build **RPCS3** with the `CMake` solution (with both **Visual Studio** and standalone **CMake** tool):
- add and set the `Qt6_ROOT` environment variable to the **Qt** libs path, e.g. `<QtInstallFolder>\6.10.1\msvc2022_64\` - add and set the `Qt6_ROOT` environment variable to the **Qt** libs path, e.g. `<QtInstallFolder>\6.9.0\msvc2022_64\`
### Linux ### Linux
These are the essentials tools to build RPCS3 on Linux. Some of them can be installed through your favorite package manager: These are the essentials tools to build RPCS3 on Linux. Some of them can be installed through your favorite package manager:
- Clang 17+ or GCC 13+ - Clang 17+ or GCC 13+
- [CMake 3.28.0+](https://www.cmake.org/download/) - [CMake 3.28.0+](https://www.cmake.org/download/)
- [Qt 6.10.1](https://www.qt.io/download-qt-installer) - [Qt 6.9.0](https://www.qt.io/download-qt-installer)
- [Vulkan SDK 1.3.268.0](https://vulkan.lunarg.com/sdk/home) (See "Install the SDK" [here](https://vulkan.lunarg.com/doc/sdk/latest/linux/getting_started.html)) for now future SDKs don't work. You need precisely 1.3.268.0. - [Vulkan SDK 1.3.268.0](https://vulkan.lunarg.com/sdk/home) (See "Install the SDK" [here](https://vulkan.lunarg.com/doc/sdk/latest/linux/getting_started.html)) for now future SDKs don't work. You need precisely 1.3.268.0.
- [SDL3](https://github.com/libsdl-org/SDL/releases) (for the FAudio backend) - [SDL3](https://github.com/libsdl-org/SDL/releases) (for the FAudio backend)
@ -122,7 +121,7 @@ Start **Visual Studio**, click on `Open a project or solution` and select the `r
##### Configuring the Qt Plugin (if used) ##### Configuring the Qt Plugin (if used)
1) go to `Extensions->Qt VS Tools->Qt Versions` 1) go to `Extensions->Qt VS Tools->Qt Versions`
2) add the path to your Qt installation with compiler e.g. `<QtInstallFolder>\6.10.1\msvc2022_64`, version will fill in automatically 2) add the path to your Qt installation with compiler e.g. `<QtInstallFolder>\6.9.0\msvc2022_64`, version will fill in automatically
3) go to `Extensions->Qt VS Tools->Options->Legacy Project Format`. (Only available in the **Legacy Qt Plugin**) 3) go to `Extensions->Qt VS Tools->Options->Legacy Project Format`. (Only available in the **Legacy Qt Plugin**)
4) set `Build: Run pre-build setup` to `true`. (Only available in the **Legacy Qt Plugin**) 4) set `Build: Run pre-build setup` to `true`. (Only available in the **Legacy Qt Plugin**)

View file

@ -1,12 +1,5 @@
cmake_minimum_required(VERSION 3.28) cmake_minimum_required(VERSION 3.28)
find_program(CCACHE_PATH ccache HINTS ENV PATH)
if(CCACHE_PATH)
message(STATUS "Using ccache: ${CCACHE_PATH}")
set(CMAKE_C_COMPILER_LAUNCHER "${CCACHE_PATH}")
set(CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_PATH}")
endif()
project(rpcs3 LANGUAGES C CXX) project(rpcs3 LANGUAGES C CXX)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
@ -22,12 +15,6 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
endif() endif()
endif() endif()
if(APPLE OR WIN32)
set(USE_SYSTEM_OPENAL_DEFAULT OFF)
else()
set(USE_SYSTEM_OPENAL_DEFAULT ON)
endif()
option(USE_NATIVE_INSTRUCTIONS "USE_NATIVE_INSTRUCTIONS makes rpcs3 compile with -march=native, which is useful for local builds, but not good for packages." ON) option(USE_NATIVE_INSTRUCTIONS "USE_NATIVE_INSTRUCTIONS makes rpcs3 compile with -march=native, which is useful for local builds, but not good for packages." ON)
option(WITH_LLVM "Enable usage of LLVM library" ON) option(WITH_LLVM "Enable usage of LLVM library" ON)
option(BUILD_LLVM "Build LLVM from git submodule" OFF) option(BUILD_LLVM "Build LLVM from git submodule" OFF)
@ -35,34 +22,20 @@ option(STATIC_LINK_LLVM "Link against LLVM statically. This will get set to ON i
option(USE_FAUDIO "FAudio audio backend" ON) option(USE_FAUDIO "FAudio audio backend" ON)
option(USE_LIBEVDEV "libevdev-based joystick support" ON) option(USE_LIBEVDEV "libevdev-based joystick support" ON)
option(USE_DISCORD_RPC "Discord rich presence integration" OFF) option(USE_DISCORD_RPC "Discord rich presence integration" OFF)
option(USE_SYSTEM_ZLIB "Prefer system ZLIB instead of the builtin one" ON)
option(USE_VULKAN "Vulkan render backend" ON) option(USE_VULKAN "Vulkan render backend" ON)
option(USE_PRECOMPILED_HEADERS "Use precompiled headers" OFF) option(USE_PRECOMPILED_HEADERS "Use precompiled headers" OFF)
option(USE_SDL "Enables SDL input handler" OFF) option(USE_SDL "Enables SDL input handler" OFF)
option(USE_SYSTEM_CUBEB "Prefer system cubeb instead of the builtin one" OFF)
option(USE_SYSTEM_CURL "Prefer system Curl instead of the prebuild one" ON)
option(USE_SYSTEM_FAUDIO "Prefer system FAudio instead of the builtin one" OFF)
option(USE_SYSTEM_FFMPEG "Prefer system ffmpeg instead of the prebuild one" OFF)
option(USE_SYSTEM_FLATBUFFERS "Prefer system flatbuffers instead of the builtin one" OFF)
option(USE_SYSTEM_GLSLANG "Prefer system glslang instead of the builtin one" OFF)
option(USE_SYSTEM_HIDAPI "Prefer system hidapi instead of the builtin one" OFF)
option(USE_SYSTEM_LIBPNG "Prefer system libpng instead of the builtin one" OFF)
option(USE_SYSTEM_LIBUSB "Prefer system libusb instead of the builtin one" OFF)
option(USE_SYSTEM_MINIUPNPC "Prefer system MiniUPnPc instead of the builtin one" OFF)
option(USE_SYSTEM_MVK "Prefer system MoltenVK instead of the builtin one" OFF)
option(USE_SYSTEM_OPENAL "Prefer system OpenAL instead of the prebuild one" ${USE_SYSTEM_OPENAL_DEFAULT})
option(USE_SYSTEM_OPENCV "Prefer system OpenCV instead of the builtin one" ON)
option(USE_SYSTEM_PUGIXML "Prefer system pugixml instead of the builtin one" OFF)
option(USE_SYSTEM_RTMIDI "Prefer system RtMidi instead of the builtin one" OFF)
option(USE_SYSTEM_SDL "Prefer system SDL instead of the builtin one" ON) option(USE_SYSTEM_SDL "Prefer system SDL instead of the builtin one" ON)
option(USE_SYSTEM_VULKAN_MEMORY_ALLOCATOR "Prefer system Vulkan Memory Allocator instead of the builtin one" OFF) option(USE_SYSTEM_FFMPEG "Prefer system ffmpeg instead of the prebuild one" OFF)
option(USE_SYSTEM_WOLFSSL "Prefer system wolfSSL instead of the builtin one" OFF) option(USE_SYSTEM_OPENAL "Prefer system OpenAL instead of the prebuild one" ON)
option(USE_SYSTEM_ZLIB "Prefer system ZLIB instead of the builtin one" ON) option(USE_SYSTEM_CURL "Prefer system Curl instead of the prebuild one" ON)
option(USE_SYSTEM_ZSTD "Prefer system zstd instead of the builtin one" OFF) option(USE_SYSTEM_OPENCV "Prefer system OpenCV instead of the builtin one" ON)
option(USE_SYSTEM_CUBEB "Prefer system cubeb instead of the builtin one" OFF)
option(HAS_MEMORY_BREAKPOINTS "Add support for memory breakpoints to the interpreter" OFF) option(HAS_MEMORY_BREAKPOINTS "Add support for memory breakpoints to the interpreter" OFF)
option(USE_LTO "Use LTO for building" ON) option(USE_LTO "Use LTO for building" ON)
option(BUILD_RPCS3_TESTS "Build RPCS3 unit tests." OFF) option(BUILD_RPCS3_TESTS "Build RPCS3 unit tests." OFF)
option(RUN_RPCS3_TESTS "Run RPCS3 unit tests. Requires BUILD_RPCS3_TESTS" OFF) option(RUN_RPCS3_TESTS "Run RPCS3 unit tests. Requires BUILD_RPCS3_TESTS" OFF)
option(USE_GAMEMODE "Choose whether to enable GameMode features or not." ON)
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/buildfiles/cmake") set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/buildfiles/cmake")
@ -133,7 +106,12 @@ if(MSVC)
endif() endif()
if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8) if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
message(FATAL_ERROR "RPCS3 can only be compiled on 64-bit platforms.") message( FATAL_ERROR "RPCS3 can only be compiled on 64-bit platforms." )
endif()
find_program(CCACHE_FOUND ccache)
if(CCACHE_FOUND)
set(CMAKE_CXX_COMPILER_LAUNCHER ccache)
endif() endif()
if(APPLE AND CMAKE_OSX_ARCHITECTURES STREQUAL "arm64") if(APPLE AND CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
@ -165,14 +143,6 @@ if(NOT WIN32)
add_compile_options(-pthread) add_compile_options(-pthread)
endif() endif()
## Look for Gamemode if its installed on Linux
if(LINUX)
## User chooses whether to Enable GameMode features or not
if(USE_GAMEMODE)
add_compile_definitions(GAMEMODE_AVAILABLE)
endif()
endif()
# TODO: do real installation, including copying directory structure # TODO: do real installation, including copying directory structure
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${PROJECT_BINARY_DIR}/bin") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${PROJECT_BINARY_DIR}/bin")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${PROJECT_BINARY_DIR}/bin") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${PROJECT_BINARY_DIR}/bin")

View file

@ -1,6 +1,7 @@
RPCS3 RPCS3
===== =====
[![Cirrus CI - Base Branch Build Status](https://img.shields.io/cirrus/github/RPCS3/rpcs3/master?label=Cirrus%20CI&logo=cirrus-ci)](https://cirrus-ci.com/github/RPCS3/rpcs3)
[![GitHub Actions](https://img.shields.io/github/actions/workflow/status/RPCS3/rpcs3/rpcs3.yml?branch=master&logo=github&label=Actions)](https://github.com/RPCS3/rpcs3/actions/workflows/rpcs3.yml) [![GitHub Actions](https://img.shields.io/github/actions/workflow/status/RPCS3/rpcs3/rpcs3.yml?branch=master&logo=github&label=Actions)](https://github.com/RPCS3/rpcs3/actions/workflows/rpcs3.yml)
[![RPCS3 Discord Server](https://img.shields.io/discord/272035812277878785?color=5865F2&label=RPCS3%20Discord&logo=discord&logoColor=white)](https://discord.gg/rpcs3) [![RPCS3 Discord Server](https://img.shields.io/discord/272035812277878785?color=5865F2&label=RPCS3%20Discord&logo=discord&logoColor=white)](https://discord.gg/rpcs3)

View file

@ -166,55 +166,6 @@ bool try_to_uint64(u64* out, std::string_view value, u64 min, u64 max)
return true; return true;
} }
bool try_to_uint128(u128* out, std::string_view value)
{
if (value.empty())
{
if (out) cfg_log.error("cfg::try_to_uint128(): called with an empty string");
return false;
}
u64 result_low = 0, result_high = 0;
const char* start_high64 = value.data();
const char* end = value.data() + value.size();
if (start_high64[0] == '0' && value.size() >= 2 && (start_high64[1] == 'x' || start_high64[1] == 'X'))
{
// Hex support
start_high64 += 2;
}
const char* start_low64 = end - std::min<usz>(end - start_high64, 16);
// Hexadecimal-only
constexpr int base = 16;
auto ret = std::from_chars(start_low64, end, result_low, base);
if (ret.ec != std::errc() || ret.ptr != end)
{
if (out) cfg_log.error("cfg::try_to_uint128('%s'): invalid integer", value);
return false;
}
if (start_high64 == start_low64)
{
if (out) *out = result_low;
return true;
}
ret = std::from_chars(start_high64, start_low64, result_high, base);
if (ret.ec != std::errc() || ret.ptr != start_low64)
{
if (out) cfg_log.error("cfg::try_to_uint128('%s'): invalid integer", value);
return false;
}
if (out) *out = result_low + (u128{result_high} << 64);
return true;
}
std::vector<std::string> cfg::make_float_range(f64 min, f64 max) std::vector<std::string> cfg::make_float_range(f64 min, f64 max)
{ {
return {std::to_string(min), std::to_string(max)}; return {std::to_string(min), std::to_string(max)};
@ -327,19 +278,6 @@ bool cfg::try_to_enum_value(u64* out, decltype(&fmt_class_string<int>::format) f
return true; return true;
} }
std::string cfg::uint128::to_string(u128 value) noexcept
{
std::string result = "0x";
result.resize(result.size() + 32);
for (u32 i = 0; i < 32; i++)
{
result[result.size() - 1 - i] = "0123456789ABCDEF"[static_cast<u64>(value >> (i * 4)) % 16];
}
return result;
}
std::vector<std::string> cfg::try_to_enum_list(decltype(&fmt_class_string<int>::format) func) std::vector<std::string> cfg::try_to_enum_list(decltype(&fmt_class_string<int>::format) func)
{ {
std::vector<std::string> result; std::vector<std::string> result;
@ -615,12 +553,19 @@ void cfg::node::from_default()
} }
} }
void cfg::node::restore_defaults() void cfg::_bool::from_default()
{ {
for (auto& node : m_nodes) m_value = def;
{ }
node->restore_defaults();
} void cfg::string::from_default()
{
m_value = def;
}
void cfg::set_entry::from_default()
{
m_set = {};
} }
std::string cfg::map_entry::get_value(std::string_view key) std::string cfg::map_entry::get_value(std::string_view key)

View file

@ -38,7 +38,6 @@ namespace cfg
_enum, // cfg::_enum type _enum, // cfg::_enum type
_int, // cfg::_int type _int, // cfg::_int type
uint, // cfg::uint type uint, // cfg::uint type
uint128, // cfg::uint128 type
string, // cfg::string type string, // cfg::string type
set, // cfg::set_entry type set, // cfg::set_entry type
map, // cfg::map_entry type map, // cfg::map_entry type
@ -91,9 +90,6 @@ namespace cfg
// Reset defaults // Reset defaults
virtual void from_default() = 0; virtual void from_default() = 0;
// Restore default members
virtual void restore_defaults() = 0;
// Convert to string (optional) // Convert to string (optional)
virtual std::string to_string() const virtual std::string to_string() const
{ {
@ -155,15 +151,11 @@ namespace cfg
// Set default values // Set default values
void from_default() override; void from_default() override;
// Restore default members
void restore_defaults() override;
}; };
class _bool final : public _base class _bool final : public _base
{ {
atomic_t<bool> m_value; atomic_t<bool> m_value;
bool original_def;
public: public:
bool def; bool def;
@ -171,7 +163,6 @@ namespace cfg
_bool(node* owner, std::string name, bool def = false, bool dynamic = false) _bool(node* owner, std::string name, bool def = false, bool dynamic = false)
: _base(type::_bool, owner, std::move(name), dynamic) : _base(type::_bool, owner, std::move(name), dynamic)
, m_value(def) , m_value(def)
, original_def(def)
, def(def) , def(def)
{ {
} }
@ -186,15 +177,7 @@ namespace cfg
return m_value; return m_value;
} }
void from_default() override void from_default() override;
{
m_value = def;
}
void restore_defaults() override
{
def = original_def;
}
std::string to_string() const override std::string to_string() const override
{ {
@ -237,16 +220,14 @@ namespace cfg
class _enum : public _base class _enum : public _base
{ {
atomic_t<T> m_value; atomic_t<T> m_value;
T original_def;
public: public:
T def; const T def;
_enum(node* owner, const std::string& name, T def = {}, bool dynamic = false) _enum(node* owner, const std::string& name, T value = {}, bool dynamic = false)
: _base(type::_enum, owner, name, dynamic) : _base(type::_enum, owner, name, dynamic)
, m_value(def) , m_value(value)
, original_def(def) , def(value)
, def(def)
{ {
} }
@ -275,11 +256,6 @@ namespace cfg
m_value = def; m_value = def;
} }
void restore_defaults() override
{
def = original_def;
}
std::string to_string() const override std::string to_string() const override
{ {
std::string result; std::string result;
@ -324,7 +300,6 @@ namespace cfg
using int_type = std::conditional_t<Min >= s32{smin} && Max <= s32{smax}, s32, s64>; using int_type = std::conditional_t<Min >= s32{smin} && Max <= s32{smax}, s32, s64>;
atomic_t<int_type> m_value; atomic_t<int_type> m_value;
int_type original_def;
public: public:
int_type def; int_type def;
@ -336,7 +311,6 @@ namespace cfg
_int(node* owner, const std::string& name, int_type def = std::min<int_type>(Max, std::max<int_type>(Min, 0)), bool dynamic = false) _int(node* owner, const std::string& name, int_type def = std::min<int_type>(Max, std::max<int_type>(Min, 0)), bool dynamic = false)
: _base(type::_int, owner, name, dynamic) : _base(type::_int, owner, name, dynamic)
, m_value(def) , m_value(def)
, original_def(def)
, def(def) , def(def)
{ {
} }
@ -356,11 +330,6 @@ namespace cfg
m_value = def; m_value = def;
} }
void restore_defaults() override
{
def = original_def;
}
std::string to_string() const override std::string to_string() const override
{ {
return std::to_string(m_value); return std::to_string(m_value);
@ -403,7 +372,6 @@ namespace cfg
using float_type = f64; using float_type = f64;
atomic_t<float_type> m_value; atomic_t<float_type> m_value;
float_type original_def;
public: public:
float_type def; float_type def;
@ -415,7 +383,6 @@ namespace cfg
_float(node* owner, const std::string& name, float_type def = std::min<float_type>(Max, std::max<float_type>(Min, 0)), bool dynamic = false) _float(node* owner, const std::string& name, float_type def = std::min<float_type>(Max, std::max<float_type>(Min, 0)), bool dynamic = false)
: _base(type::_int, owner, name, dynamic) : _base(type::_int, owner, name, dynamic)
, m_value(def) , m_value(def)
, original_def(def)
, def(def) , def(def)
{ {
} }
@ -435,11 +402,6 @@ namespace cfg
m_value = def; m_value = def;
} }
void restore_defaults() override
{
def = original_def;
}
std::string to_string() const override std::string to_string() const override
{ {
std::string result; std::string result;
@ -502,7 +464,6 @@ namespace cfg
using int_type = std::conditional_t<Max <= u32{umax}, u32, u64>; using int_type = std::conditional_t<Max <= u32{umax}, u32, u64>;
atomic_t<int_type> m_value; atomic_t<int_type> m_value;
int_type original_def;
public: public:
int_type def; int_type def;
@ -514,7 +475,6 @@ namespace cfg
uint(node* owner, const std::string& name, int_type def = std::max<int_type>(Min, 0), bool dynamic = false) uint(node* owner, const std::string& name, int_type def = std::max<int_type>(Min, 0), bool dynamic = false)
: _base(type::uint, owner, name, dynamic) : _base(type::uint, owner, name, dynamic)
, m_value(def) , m_value(def)
, original_def(def)
, def(def) , def(def)
{ {
} }
@ -534,11 +494,6 @@ namespace cfg
m_value = def; m_value = def;
} }
void restore_defaults() override
{
def = original_def;
}
std::string to_string() const override std::string to_string() const override
{ {
return std::to_string(m_value); return std::to_string(m_value);
@ -579,91 +534,10 @@ namespace cfg
// Alias for 64 bit int // Alias for 64 bit int
using uint64 = uint<0, u64{umax}>; using uint64 = uint<0, u64{umax}>;
// Unsigned 128-bit integer entry.
class uint128 final : public _base
{
using int_type = u128;
atomic_t<int_type> m_value{};
int_type original_def = 0;
public:
int_type def;
uint128(node* owner, const std::string& name, int_type def = 0, bool dynamic = false)
: _base(type::uint128, owner, name, dynamic)
, m_value(def)
, original_def(def)
, def(def)
{
}
operator int_type() const
{
return m_value;
}
operator ullong() const
{
return static_cast<ullong>(m_value.load());
}
int_type get() const
{
return m_value;
}
void from_default() override
{
m_value = def;
}
void restore_defaults() override
{
def = original_def;
}
static std::string to_string(u128 value) noexcept;
std::string to_string() const override
{
return to_string(m_value.load());
}
std::string def_to_string() const override
{
return to_string(def);
}
bool from_string(std::string_view value, bool /*dynamic*/ = false) override
{
u128 result;
if (try_to_uint128(&result, value))
{
m_value = result;
return true;
}
return false;
}
void set(u128 value)
{
m_value = value;
}
std::vector<std::string> to_list() const override
{
// Should not be used
return make_uint_range(0, 1);
}
};
// Simple string entry with mutex // Simple string entry with mutex
class string : public _base class string : public _base
{ {
atomic_ptr<std::string> m_value; atomic_ptr<std::string> m_value;
std::string original_def;
public: public:
std::string def; std::string def;
@ -671,7 +545,6 @@ namespace cfg
string(node* owner, std::string name, std::string def = {}, bool dynamic = false) string(node* owner, std::string name, std::string def = {}, bool dynamic = false)
: _base(type::string, owner, std::move(name), dynamic) : _base(type::string, owner, std::move(name), dynamic)
, m_value(def) , m_value(def)
, original_def(def)
, def(std::move(def)) , def(std::move(def))
{ {
} }
@ -681,15 +554,7 @@ namespace cfg
return *m_value.load().get(); return *m_value.load().get();
} }
void from_default() override void from_default() override;
{
m_value = def;
}
void restore_defaults() override
{
def = original_def;
}
std::string to_string() const override std::string to_string() const override
{ {
@ -730,14 +595,7 @@ namespace cfg
m_set = std::move(set); m_set = std::move(set);
} }
void from_default() override void from_default() override;
{
m_set = {};
}
void restore_defaults() override
{
}
std::vector<std::string> to_list() const override std::vector<std::string> to_list() const override
{ {
@ -778,10 +636,6 @@ namespace cfg
void erase(std::string_view key); void erase(std::string_view key);
void from_default() override; void from_default() override;
void restore_defaults() override
{
}
}; };
class node_map_entry final : public map_entry class node_map_entry final : public map_entry
@ -811,10 +665,6 @@ namespace cfg
void set_map(map_of_type<logs::level>&& map); void set_map(map_of_type<logs::level>&& map);
void from_default() override; void from_default() override;
void restore_defaults() override
{
}
}; };
struct device_info struct device_info
@ -852,9 +702,5 @@ namespace cfg
void set_map(map_of_type<device_info>&& map); void set_map(map_of_type<device_info>&& map);
void from_default() override; void from_default() override;
void restore_defaults() override
{
}
}; };
} }

View file

@ -658,11 +658,7 @@ jit_compiler::jit_compiler(const std::unordered_map<std::string, u64>& _link, co
std::string result; std::string result;
auto null_mod = std::make_unique<llvm::Module> ("null_", *m_context); auto null_mod = std::make_unique<llvm::Module> ("null_", *m_context);
#if LLVM_VERSION_MAJOR >= 21 && (LLVM_VERSION_MINOR >= 1 || LLVM_VERSION_MAJOR >= 22)
null_mod->setTargetTriple(llvm::Triple(jit_compiler::triple1()));
#else
null_mod->setTargetTriple(jit_compiler::triple1()); null_mod->setTargetTriple(jit_compiler::triple1());
#endif
std::unique_ptr<llvm::RTDyldMemoryManager> mem; std::unique_ptr<llvm::RTDyldMemoryManager> mem;
@ -676,11 +672,7 @@ jit_compiler::jit_compiler(const std::unordered_map<std::string, u64>& _link, co
else else
{ {
mem = std::make_unique<MemoryManager2>(std::move(symbols_cement)); mem = std::make_unique<MemoryManager2>(std::move(symbols_cement));
#if LLVM_VERSION_MAJOR >= 21 && (LLVM_VERSION_MINOR >= 1 || LLVM_VERSION_MAJOR >= 22)
null_mod->setTargetTriple(llvm::Triple(jit_compiler::triple2()));
#else
null_mod->setTargetTriple(jit_compiler::triple2()); null_mod->setTargetTriple(jit_compiler::triple2());
#endif
} }
} }
else else

View file

@ -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__) #ifndef _MSC_VER
[[noreturn]] ~throw_exception() = default; [[noreturn]] ~throw_exception();
#endif #endif
}; };

View file

@ -28,9 +28,6 @@ bool try_to_int64(s64* out, std::string_view value, s64 min, s64 max);
// Convert string to unsigned integer // Convert string to unsigned integer
bool try_to_uint64(u64* out, std::string_view value, u64 min, u64 max); bool try_to_uint64(u64* out, std::string_view value, u64 min, u64 max);
// Convert string to unsigned int128_t
bool try_to_uint128(u128* out, std::string_view value);
// Convert string to float // Convert string to float
bool try_to_float(f64* out, std::string_view value, f64 min, f64 max); bool try_to_float(f64* out, std::string_view value, f64 min, f64 max);

View file

@ -106,11 +106,6 @@ thread_local u64 g_tls_wait_fail = 0;
thread_local bool g_tls_access_violation_recovered = false; thread_local bool g_tls_access_violation_recovered = false;
extern thread_local std::string(*g_tls_log_prefix)(); extern thread_local std::string(*g_tls_log_prefix)();
namespace stx
{
atomic_t<u32> g_launch_retainer{0};
}
// Report error and call std::abort(), defined in main.cpp // Report error and call std::abort(), defined in main.cpp
[[noreturn]] void report_fatal_error(std::string_view text, bool is_html = false, bool include_help_text = true); [[noreturn]] void report_fatal_error(std::string_view text, bool is_html = false, bool include_help_text = true);

View file

@ -96,7 +96,7 @@ class thread_future
thread_future* prev{}; thread_future* prev{};
protected: protected:
atomic_t<void(*)(const thread_base*, thread_future*)> exec{}; atomic_t<void(*)(thread_base*, thread_future*)> exec{};
atomic_t<u32> done{0}; atomic_t<u32> done{0};
@ -374,23 +374,13 @@ private:
static const u64 process_affinity_mask; static const u64 process_affinity_mask;
}; };
#if defined(__has_cpp_attribute)
#if __has_cpp_attribute(no_unique_address)
#define NO_UNIQUE_ADDRESS [[no_unique_address]]
#else
#define NO_UNIQUE_ADDRESS
#endif
#else
#define NO_UNIQUE_ADDRESS
#endif
// Used internally // Used internally
template <bool Discard, typename Ctx, typename... Args> template <bool Discard, typename Ctx, typename... Args>
class thread_future_t : public thread_future, result_storage<Ctx, std::conditional_t<Discard, int, void>, Args...> class thread_future_t : public thread_future, result_storage<Ctx, std::conditional_t<Discard, int, void>, Args...>
{ {
NO_UNIQUE_ADDRESS decltype(std::make_tuple(std::forward<Args>(std::declval<Args>())...)) m_args; [[no_unique_address]] decltype(std::make_tuple(std::forward<Args>(std::declval<Args>())...)) m_args;
NO_UNIQUE_ADDRESS Ctx m_func; [[no_unique_address]] Ctx m_func;
using future = thread_future_t; using future = thread_future_t;
@ -399,7 +389,7 @@ public:
: m_args(std::forward<Args>(args)...) : m_args(std::forward<Args>(args)...)
, m_func(std::forward<Ctx>(func)) , m_func(std::forward<Ctx>(func))
{ {
thread_future::exec.raw() = +[](const thread_base* tb, thread_future* tf) thread_future::exec.raw() = +[](thread_base* tb, thread_future* tf)
{ {
const auto _this = static_cast<future*>(tf); const auto _this = static_cast<future*>(tf);
@ -465,8 +455,6 @@ public:
namespace stx namespace stx
{ {
struct launch_retainer; struct launch_retainer;
extern atomic_t<u32> g_launch_retainer;
} }
// Derived from the callable object Context, possibly a lambda // Derived from the callable object Context, possibly a lambda
@ -483,11 +471,6 @@ class named_thread final : public Context, result_storage<Context>, thread_base
u64 entry_point2() u64 entry_point2()
{ {
while (u32 value = stx::g_launch_retainer)
{
stx::g_launch_retainer.wait(value);
}
thread::initialize([]() thread::initialize([]()
{ {
if constexpr (!result::empty) if constexpr (!result::empty)

View file

@ -1,27 +0,0 @@
#pragma once
// Generic deferred routine wrapper
// Use-case is similar to "defer" statement in other languages, just invokes a callback when the object goes out of scope
#include <functional>
namespace utils
{
template <typename F>
requires std::is_invocable_v<F>
class deferred_op
{
public:
deferred_op(F&& callback)
: m_callback(callback)
{}
~deferred_op()
{
m_callback();
}
private:
F m_callback;
};
}

View file

@ -94,6 +94,8 @@ if defined BUILD_SOURCEBRANCHNAME (
rem // This must be a CI build rem // This must be a CI build
echo SYSTEM_PULLREQUEST_SOURCEBRANCH: %SYSTEM_PULLREQUEST_SOURCEBRANCH%
if defined BUILD_REPOSITORY_NAME ( if defined BUILD_REPOSITORY_NAME (
echo BUILD_REPOSITORY_NAME: %BUILD_REPOSITORY_NAME% echo BUILD_REPOSITORY_NAME: %BUILD_REPOSITORY_NAME%
) else ( ) else (
@ -108,7 +110,9 @@ if defined BUILD_SOURCEBRANCHNAME (
rem // These environment variables are defined by CI rem // These environment variables are defined by CI
rem // BUILD_REPOSITORY_NAME will look like "RPCS3/rpcs3" rem // BUILD_REPOSITORY_NAME will look like "RPCS3/rpcs3"
rem // SYSTEM_PULLREQUEST_SOURCEBRANCH will look like "master"
rem // BUILD_SOURCEBRANCHNAME will look like "master" rem // BUILD_SOURCEBRANCHNAME will look like "master"
rem // See https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables
set GIT_FULL_BRANCH=%BUILD_REPOSITORY_NAME%/%BUILD_SOURCEBRANCHNAME% set GIT_FULL_BRANCH=%BUILD_REPOSITORY_NAME%/%BUILD_SOURCEBRANCHNAME%
echo GIT_FULL_BRANCH: !GIT_FULL_BRANCH! echo GIT_FULL_BRANCH: !GIT_FULL_BRANCH!
@ -125,12 +129,12 @@ if defined BUILD_SOURCEBRANCHNAME (
rem // This must be a pull request or a build from a fork. rem // This must be a pull request or a build from a fork.
echo Assuming pull request build echo Assuming pull request build
if "%BUILD_SOURCEBRANCHNAME%"=="master" ( if "%SYSTEM_PULLREQUEST_SOURCEBRANCH%"=="master" (
rem // If pull request comes from a master branch, GIT_BRANCH = username/branch in order to distinguish from upstream/master rem // If pull request comes from a master branch, GIT_BRANCH = username/branch in order to distinguish from upstream/master
for /f "tokens=1* delims=/" %%a in ("%BUILD_REPOSITORY_NAME%") do set user=%%a for /f "tokens=1* delims=/" %%a in ("%BUILD_REPOSITORY_NAME%") do set user=%%a
set "GIT_BRANCH=!user!/%BUILD_SOURCEBRANCHNAME%" set "GIT_BRANCH=!user!/%SYSTEM_PULLREQUEST_SOURCEBRANCH%"
) else ( ) else (
set GIT_BRANCH=%BUILD_SOURCEBRANCHNAME% set GIT_BRANCH=%SYSTEM_PULLREQUEST_SOURCEBRANCH%
) )
rem // Make GIT_VERSION the last commit (shortened); Don't include commit count on non-release builds rem // Make GIT_VERSION the last commit (shortened); Don't include commit count on non-release builds

View file

@ -84,8 +84,9 @@ public:
transactional_storage& operator=(const transactional_storage&) = delete; transactional_storage& operator=(const transactional_storage&) = delete;
transactional_storage(transactional_storage&& other) transactional_storage(transactional_storage&& other)
: pool(std::move(other.pool))
{ {
pool = std::move(other.pool);
std::unique_lock lock_other{other.current_mutex}; std::unique_lock lock_other{other.current_mutex};
const std::shared_ptr<T> other_current = other.current; const std::shared_ptr<T> other_current = other.current;
other.current = nullptr; other.current = nullptr;

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -4,28 +4,24 @@ by Ani @ https://github.com/AniLeo
r1 (2018.02.27) r1 (2018.02.27)
r2 (2021.08.28) r2 (2021.08.28)
r3 (2022.08.20) r3 (2022.08.20)
r4 (2025.09.14)
*/ */
/* /*
Color Scheme Color Scheme
- Pod Programs - Pod Programs
#8c806a 8c806a
#bd9d86 bd9d86
#c1b398 c1b398
#eadfb1 eadfb1
#ebe4d2 ebe4d2
- Light - Light
#b3ac98 b3ac98
#aea993 aea993
- Dark - Dark
#4d4940 4d4940
- Disabled
#828790
*/ */
@ -59,6 +55,31 @@ QTextEdit, QPlainTextEdit {
font-size: 8.50pt; font-size: 8.50pt;
} }
/*
QListWidget, QTreeWidget: Style checkboxes and rows
RPCS3: LLE/HLE Selector, Debugger
*/
QListWidget::item {
margin-top: 0.05em;
margin-bottom: 0.05em;
}
QListWidget::indicator, QTreeWidget::indicator {
border: 0.05em solid #4d4940;
}
QListWidget::indicator::unchecked, QTreeWidget::indicator::unchecked {
background-color: #b3ac98;
}
QListWidget::indicator::checked, QTreeWidget::indicator::checked {
background-color: #4d4940;
}
QListWidget::indicator::disabled, QTreeWidget::indicator::disabled {
background-color: #828790;
}
QListWidget::item::selected, QTreeWidget::item::selected {
background-color: #4d4940;
}
/* /*
QTableView: Style selected row QTableView: Style selected row
@ -120,38 +141,31 @@ QTabBar::tab::selected {
color: #aea993; color: #aea993;
} }
/* Checkboxes /* Checkboxes */
Radio Buttons QCheckBox::indicator {
QListWidget, QTreeWidget: Style indicators (checkboxes) and selected rows
RPCS3: LLE/HLE Selector, Debugger, Game Patches
*/
QCheckBox::indicator, QListWidget::indicator, QTreeWidget::indicator {
border-radius: 0.1em; border-radius: 0.1em;
} }
/* Radio Buttons */
QRadioButton::indicator { QRadioButton::indicator {
border-radius: 0.4em; border-radius: 0.4em;
} }
QCheckBox::indicator, QRadioButton::indicator, QListWidget::indicator, QTreeWidget::indicator { /* Checkboxes and Radio Buttons */
QCheckBox::indicator, QRadioButton::indicator {
border: 0.05em solid #4d4940; border: 0.05em solid #4d4940;
margin-top: 0.05em; margin-top: 0.05em;
margin-bottom: 0.05em; margin-bottom: 0.05em;
width: 0.8em; width: 0.8em;
height: 0.8em; height: 0.8em;
} }
QCheckBox::indicator:checked, QRadioButton::indicator:checked, QListWidget::indicator::checked, QTreeWidget::indicator::checked{ QCheckBox::indicator:checked, QRadioButton::indicator:checked {
background-color: #4d4940; /* Dark */ background-color: #4d4940; /* Dark */
} }
QCheckBox::indicator:unchecked, QRadioButton::indicator:unchecked, QListWidget::indicator::unchecked, QTreeWidget::indicator::unchecked { QCheckBox::indicator:unchecked, QRadioButton::indicator:unchecked {
background-color: #b3ac98; /* Light */ background-color: #b3ac98; /* Light */
} }
QCheckBox::indicator::disabled, QRadioButton::indicator::disabled, QListWidget::indicator::disabled, QTreeWidget::indicator::disabled { QCheckBox::indicator::disabled, QRadioButton::indicator::disabled {
background-color: #828790; /* Gray */ background-color: #828790; /* Gray */
} }
QListWidget::item::selected, QTreeWidget::item::selected {
background-color: #4d4940;
}
/* Combo Boxes, Datetime dropdown */ /* Combo Boxes, Datetime dropdown */
QComboBox, QDateTimeEdit, QLineEdit { QComboBox, QDateTimeEdit, QLineEdit {
@ -201,7 +215,6 @@ QPushButton::disabled {
/* QSpinBox (Settings -> Emulator -> width/height) */ /* QSpinBox (Settings -> Emulator -> width/height) */
/* QDoubleSpinBox (Pads -> Mouse Acceleration -> x/y) */ /* QDoubleSpinBox (Pads -> Mouse Acceleration -> x/y) */
QSpinBox, QDoubleSpinBox { QSpinBox, QDoubleSpinBox {
height: 1.50em;
background-color: #b3ac98; background-color: #b3ac98;
} }
QSpinBox::disabled, QDoubleSpinBox::disabled { QSpinBox::disabled, QDoubleSpinBox::disabled {
@ -234,7 +247,6 @@ QDockWidget {
QDockWidget::title { QDockWidget::title {
background: #4d4940; background: #4d4940;
padding-top: 0.2em; padding-top: 0.2em;
padding-left: 0.2em;
} }
QDockWidget::close-button, QDockWidget::float-button { QDockWidget::close-button, QDockWidget::float-button {
background-color: #b3ac98; background-color: #b3ac98;
@ -250,7 +262,7 @@ QTabWidget::tab-bar {
} }
/* Top menu bar */ /* Top menu bar */
QMenuBar#menuBar { QMenuBar {
height:1.50em; height:1.50em;
text-transform: uppercase; text-transform: uppercase;
} }
@ -302,27 +314,12 @@ QCalendarWidget QWidget{
color: #4d4940; color: #4d4940;
} }
/* Scrollbars */
QScrollBar::handle, QTableView QScrollBar::handle {
background: #4d4940;
}
QScrollBar::handle:disabled {
background: #828790;
}
QScrollBar::add-page, QScrollBar::sub-page {
background: #8c806a;
}
QScrollBar::up-arrow, QScrollBar::down-arrow, QScrollBar::up-button:vertical, QScrollBar::down-button, QScrollBar::sub-line, QScrollBar::add-line {
background: transparent;
color: transparent;
}
/*** RPCS3 Specifics ***/ /*** RPCS3 Specifics ***/
/* Main Window, Dialogs and some Dialogs that are actually widgets */ /* Main Window, Dialogs and some Dialogs that are actually widgets */
QWidget#trophy_manager, QWidget#cg_disasm, QWidget#log_viewer, QWidget#savestate_manager, QMainWindow#main_window { QWidget#trophy_manager, QWidget#cg_disasm, QWidget#log_viewer, QMainWindow#main_window {
border-image: url("GuiConfigs/YoRHa-background.jpg"); border-image: url("GuiConfigs/YoRHa-background.jpg");
} }

View file

@ -1,3 +0,0 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.793 4.04298C11.1835 3.65246 11.8165 3.65246 12.207 4.04298C12.5975 4.43351 12.5975 5.06654 12.207 5.45704L7.70708 9.95704C7.31658 10.3475 6.68355 10.3475 6.29302 9.95704L1.79302 5.45704C1.40249 5.06652 1.40249 4.43351 1.79302 4.04298C2.18354 3.65246 2.81656 3.65246 3.20708 4.04298L7.00005 7.83595L10.793 4.04298Z" fill="#7E7E7E"/>
</svg>

Before

Width:  |  Height:  |  Size: 448 B

View file

@ -1,3 +0,0 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.793 4.04298C11.1835 3.65246 11.8165 3.65246 12.207 4.04298C12.5975 4.43351 12.5975 5.06654 12.207 5.45704L7.70708 9.95704C7.31658 10.3475 6.68355 10.3475 6.29302 9.95704L1.79302 5.45704C1.40249 5.06652 1.40249 4.43351 1.79302 4.04298C2.18354 3.65246 2.81656 3.65246 3.20708 4.04298L7.00005 7.83595L10.793 4.04298Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 446 B

View file

@ -1,3 +0,0 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.95698 10.793C10.3475 11.1835 10.3475 11.8165 9.95698 12.207C9.56645 12.5975 8.93343 12.5975 8.54293 12.207L4.04293 7.70706C3.65243 7.31656 3.65248 6.68353 4.04293 6.293L8.54293 1.793C8.93345 1.40248 9.56646 1.40248 9.95698 1.793C10.3475 2.18352 10.3475 2.81654 9.95698 3.20706L6.16402 7.00003L9.95698 10.793Z" fill="#7E7E7E"/>
</svg>

Before

Width:  |  Height:  |  Size: 442 B

View file

@ -1,3 +0,0 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.95698 10.793C10.3475 11.1835 10.3475 11.8165 9.95698 12.207C9.56645 12.5975 8.93343 12.5975 8.54293 12.207L4.04293 7.70706C3.65243 7.31656 3.65248 6.68353 4.04293 6.293L8.54293 1.793C8.93345 1.40248 9.56646 1.40248 9.95698 1.793C10.3475 2.18352 10.3475 2.81654 9.95698 3.20706L6.16402 7.00003L9.95698 10.793Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 440 B

View file

@ -1,10 +0,0 @@
<svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_47_46)">
<path d="M8.70711 0.792985C8.31659 0.402461 7.68357 0.402461 7.29305 0.792985C6.9026 1.18351 6.90255 1.81655 7.29305 2.20705L11.586 6.50002H1.00008C0.447775 6.50006 7.53403e-05 6.94776 7.53403e-05 7.50002C7.53403e-05 8.05224 0.447875 8.49998 1.00008 8.50002H11.586L7.29305 12.7929C6.9026 13.1835 6.90255 13.8165 7.29305 14.207C7.68355 14.5975 8.31658 14.5975 8.70711 14.207L14.7071 8.20705C15.0976 7.81652 15.0976 7.18351 14.7071 6.79299L8.70711 0.792985Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_47_46">
<rect width="15" height="15" fill="white" transform="matrix(-1 0 0 1 15 0)"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 747 B

View file

@ -1,10 +0,0 @@
<svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_47_43)">
<path d="M6.29289 0.792985C6.68341 0.402461 7.31643 0.402461 7.70695 0.792985C8.0974 1.18351 8.09745 1.81655 7.70695 2.20705L3.41398 6.50002H13.9999C14.5522 6.50006 14.9999 6.94776 14.9999 7.50002C14.9999 8.05224 14.5521 8.49998 13.9999 8.50002H3.41398L7.70695 12.7929C8.0974 13.1835 8.09745 13.8165 7.70695 14.207C7.31645 14.5975 6.68342 14.5975 6.29289 14.207L0.292893 8.20705C-0.0976311 7.81652 -0.0976311 7.18351 0.292893 6.79299L6.29289 0.792985Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_47_43">
<rect width="15" height="15" fill="white"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 709 B

View file

@ -1,3 +0,0 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.04302 10.793C3.65249 11.1835 3.65249 11.8165 4.04302 12.207C4.43355 12.5975 5.06657 12.5975 5.45707 12.207L9.95707 7.70706C10.3476 7.31656 10.3475 6.68353 9.95707 6.293L5.45707 1.793C5.06655 1.40248 4.43354 1.40248 4.04302 1.793C3.65249 2.18352 3.65249 2.81654 4.04302 3.20706L7.83598 7.00003L4.04302 10.793Z" fill="#7E7E7E"/>
</svg>

Before

Width:  |  Height:  |  Size: 442 B

View file

@ -1,3 +0,0 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.04302 10.793C3.65249 11.1835 3.65249 11.8165 4.04302 12.207C4.43355 12.5975 5.06657 12.5975 5.45707 12.207L9.95707 7.70706C10.3476 7.31656 10.3475 6.68353 9.95707 6.293L5.45707 1.793C5.06655 1.40248 4.43354 1.40248 4.04302 1.793C3.65249 2.18352 3.65249 2.81654 4.04302 3.20706L7.83598 7.00003L4.04302 10.793Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 440 B

View file

@ -1,3 +0,0 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.793 9.95702C11.1835 10.3475 11.8165 10.3475 12.207 9.95702C12.5975 9.56649 12.5975 8.93346 12.207 8.54296L7.70708 4.04296C7.31658 3.65246 6.68355 3.65251 6.29302 4.04296L1.79302 8.54296C1.40249 8.93348 1.40249 9.56649 1.79302 9.95702C2.18354 10.3475 2.81656 10.3475 3.20708 9.95702L7.00005 6.16405L10.793 9.95702Z" fill="#7E7E7E"/>
</svg>

Before

Width:  |  Height:  |  Size: 448 B

View file

@ -1,3 +0,0 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.793 9.95702C11.1835 10.3475 11.8165 10.3475 12.207 9.95702C12.5975 9.56649 12.5975 8.93346 12.207 8.54296L7.70708 4.04296C7.31658 3.65246 6.68355 3.65251 6.29302 4.04296L1.79302 8.54296C1.40249 8.93348 1.40249 9.56649 1.79302 9.95702C2.18354 10.3475 2.81656 10.3475 3.20708 9.95702L7.00005 6.16405L10.793 9.95702Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 446 B

View file

@ -1,3 +0,0 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.7929 2.29289C12.1834 1.90237 12.8164 1.90237 13.207 2.29289C13.5974 2.68342 13.5975 3.31645 13.207 3.70695L5.70695 11.207C5.31645 11.5975 4.68342 11.5974 4.29289 11.207L0.792893 7.70695C0.402369 7.31643 0.402369 6.68341 0.792893 6.29289C1.18342 5.90237 1.81643 5.90237 2.20695 6.29289L4.99992 9.08586L11.7929 2.29289Z" fill="#7E7E7E"/>
</svg>

Before

Width:  |  Height:  |  Size: 452 B

View file

@ -1,3 +0,0 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.7929 2.29289C12.1834 1.90237 12.8164 1.90237 13.207 2.29289C13.5974 2.68342 13.5975 3.31645 13.207 3.70695L5.70695 11.207C5.31645 11.5975 4.68342 11.5974 4.29289 11.207L0.792893 7.70695C0.402369 7.31643 0.402369 6.68341 0.792893 6.29289C1.18342 5.90237 1.81643 5.90237 2.20695 6.29289L4.99992 9.08586L11.7929 2.29289Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 450 B

View file

@ -1,11 +0,0 @@
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="25" height="25" rx="6" fill="#343434"/>
<g clip-path="url(#clip0_43_2)">
<path d="M17.2929 7.79289C17.6834 7.40237 18.3164 7.40237 18.7069 7.79289C19.0974 8.18342 19.0974 8.81645 18.7069 9.20695L11.207 16.707C10.8165 17.0975 10.1834 17.0974 9.79289 16.707L6.29289 13.207C5.90237 12.8164 5.90237 12.1834 6.29289 11.7929C6.68342 11.4024 7.31643 11.4024 7.70695 11.7929L10.4999 14.5859L17.2929 7.79289Z" fill="#7E7E7E"/>
</g>
<defs>
<clipPath id="clip0_43_2">
<rect width="13" height="10" fill="white" transform="translate(6 7.5)"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 666 B

View file

@ -1,11 +0,0 @@
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="25" height="25" rx="6" fill="#48B2E9"/>
<g clip-path="url(#clip0_4_14)">
<path d="M17.2929 7.79289C17.6834 7.40237 18.3164 7.40237 18.7069 7.79289C19.0974 8.18342 19.0974 8.81645 18.7069 9.20695L11.207 16.707C10.8165 17.0975 10.1834 17.0974 9.79289 16.707L6.29289 13.207C5.90237 12.8164 5.90237 12.1834 6.29289 11.7929C6.68342 11.4024 7.31643 11.4024 7.70695 11.7929L10.4999 14.5859L17.2929 7.79289Z" fill="black"/>
</g>
<defs>
<clipPath id="clip0_4_14">
<rect width="13" height="10" fill="white" transform="translate(6 7.5)"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 664 B

View file

@ -1,11 +0,0 @@
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="25" height="25" rx="6" fill="#45A4D5"/>
<g clip-path="url(#clip0_4_80)">
<path d="M17.2929 7.79289C17.6834 7.40237 18.3164 7.40237 18.7069 7.79289C19.0974 8.18342 19.0974 8.81645 18.7069 9.20695L11.207 16.707C10.8165 17.0975 10.1834 17.0974 9.79289 16.707L6.29289 13.207C5.90237 12.8164 5.90237 12.1834 6.29289 11.7929C6.68342 11.4024 7.31643 11.4024 7.70695 11.7929L10.4999 14.5859L17.2929 7.79289Z" fill="#22526A"/>
</g>
<defs>
<clipPath id="clip0_4_80">
<rect width="13" height="10" fill="white" transform="translate(6 7.5)"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 666 B

View file

@ -1,11 +0,0 @@
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="25" height="25" rx="6" fill="#4CC2FF"/>
<g clip-path="url(#clip0_4_17)">
<path d="M17.2929 7.79289C17.6834 7.40237 18.3164 7.40237 18.7069 7.79289C19.0974 8.18342 19.0974 8.81645 18.7069 9.20695L11.207 16.707C10.8165 17.0975 10.1834 17.0974 9.79289 16.707L6.29289 13.207C5.90237 12.8164 5.90237 12.1834 6.29289 11.7929C6.68342 11.4024 7.31643 11.4024 7.70695 11.7929L10.4999 14.5859L17.2929 7.79289Z" fill="black"/>
</g>
<defs>
<clipPath id="clip0_4_17">
<rect width="13" height="10" fill="white" transform="translate(6 7.5)"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 664 B

View file

@ -1,4 +0,0 @@
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="1" y="1" width="23" height="23" rx="5" fill="#2B2B2B"/>
<rect x="1" y="1" width="23" height="23" rx="5" stroke="#4D4D4D" stroke-width="2"/>
</svg>

Before

Width:  |  Height:  |  Size: 252 B

View file

@ -1,11 +0,0 @@
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="25" height="25" rx="6" fill="#343434"/>
<g clip-path="url(#clip0_43_5)">
<path d="M18 11.5C18.5523 11.5 19 11.9477 19 12.5C19 13.0523 18.5523 13.5 18 13.5H7C6.44771 13.5 6 13.0523 6 12.5C6 11.9477 6.44771 11.5 7 11.5H18Z" fill="#7E7E7E"/>
</g>
<defs>
<clipPath id="clip0_43_5">
<rect width="13" height="2" fill="white" transform="translate(6 11.5)"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 487 B

View file

@ -1,11 +0,0 @@
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="25" height="25" rx="6" fill="#48B2E9"/>
<g clip-path="url(#clip0_4_32)">
<path d="M18 11.5C18.5523 11.5 19 11.9477 19 12.5C19 13.0523 18.5523 13.5 18 13.5H7C6.44771 13.5 6 13.0523 6 12.5C6 11.9477 6.44771 11.5 7 11.5H18Z" fill="black"/>
</g>
<defs>
<clipPath id="clip0_4_32">
<rect width="13" height="2" fill="white" transform="translate(6 11.5)"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 485 B

View file

@ -1,11 +0,0 @@
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="25" height="25" rx="6" fill="#45A4D5"/>
<g clip-path="url(#clip0_4_83)">
<path d="M18 11.5C18.5523 11.5 19 11.9477 19 12.5C19 13.0523 18.5523 13.5 18 13.5H7C6.44771 13.5 6 13.0523 6 12.5C6 11.9477 6.44771 11.5 7 11.5H18Z" fill="#22526A"/>
</g>
<defs>
<clipPath id="clip0_4_83">
<rect width="13" height="2" fill="white" transform="translate(6 11.5)"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 487 B

View file

@ -1,11 +0,0 @@
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="25" height="25" rx="6" fill="#4CC2FF"/>
<g clip-path="url(#clip0_4_35)">
<path d="M18 11.5C18.5523 11.5 19 11.9477 19 12.5C19 13.0523 18.5523 13.5 18 13.5H7C6.44771 13.5 6 13.0523 6 12.5C6 11.9477 6.44771 11.5 7 11.5H18Z" fill="black"/>
</g>
<defs>
<clipPath id="clip0_4_35">
<rect width="13" height="2" fill="white" transform="translate(6 11.5)"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 485 B

View file

@ -1,4 +0,0 @@
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="1" y="1" width="23" height="23" rx="5" fill="#343434"/>
<rect x="1" y="1" width="23" height="23" rx="5" stroke="#9E9E9E" stroke-width="2"/>
</svg>

Before

Width:  |  Height:  |  Size: 252 B

View file

@ -1,4 +0,0 @@
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="1" y="1" width="23" height="23" rx="5" fill="#3A3A3A"/>
<rect x="1" y="1" width="23" height="23" rx="5" stroke="#525252" stroke-width="2"/>
</svg>

Before

Width:  |  Height:  |  Size: 252 B

View file

@ -1,4 +0,0 @@
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="1" y="1" width="23" height="23" rx="5" fill="#272727"/>
<rect x="1" y="1" width="23" height="23" rx="5" stroke="#9E9E9E" stroke-width="2"/>
</svg>

Before

Width:  |  Height:  |  Size: 252 B

View file

@ -1,2 +0,0 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
</svg>

Before

Width:  |  Height:  |  Size: 103 B

View file

@ -1,3 +0,0 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.40772 9.05172C5.19743 9.26295 5.19743 9.60535 5.40772 9.81658C5.61801 10.0278 5.95888 10.0278 6.16915 9.81658L8.5923 7.38247C8.80259 7.17124 8.80254 6.82882 8.5923 6.61758L6.16915 4.18344C5.95887 3.9722 5.618 3.9722 5.40772 4.18344C5.19743 4.39468 5.19743 4.73709 5.40772 4.94833L7.45014 7.00003L5.40772 9.05172Z" fill="#7E7E7E"/>
</svg>

Before

Width:  |  Height:  |  Size: 446 B

View file

@ -1,3 +0,0 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.40772 9.05172C5.19743 9.26295 5.19743 9.60535 5.40772 9.81658C5.61801 10.0278 5.95888 10.0278 6.16915 9.81658L8.5923 7.38247C8.80259 7.17124 8.80254 6.82882 8.5923 6.61757L6.16915 4.18343C5.95887 3.97219 5.618 3.97219 5.40772 4.18343C5.19743 4.39467 5.19743 4.73709 5.40772 4.94833L7.45014 7.00002L5.40772 9.05172Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 446 B

View file

@ -1,3 +0,0 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.94826 5.40772C4.73703 5.19743 4.39463 5.19743 4.1834 5.40772C3.97217 5.61801 3.97217 5.95888 4.1834 6.16916L6.61751 8.59231C6.82874 8.8026 7.17116 8.80254 7.3824 8.59231L9.81655 6.16916C10.0278 5.95887 10.0278 5.61801 9.81655 5.40772C9.6053 5.19743 9.26289 5.19743 9.05165 5.40772L6.99996 7.45015L4.94826 5.40772Z" fill="#7E7E7E"/>
</svg>

Before

Width:  |  Height:  |  Size: 447 B

View file

@ -1,3 +0,0 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.94826 5.40772C4.73703 5.19743 4.39463 5.19743 4.1834 5.40772C3.97217 5.61801 3.97217 5.95888 4.1834 6.16915L6.61751 8.5923C6.82874 8.80259 7.17116 8.80254 7.3824 8.5923L9.81655 6.16915C10.0278 5.95887 10.0278 5.618 9.81655 5.40772C9.6053 5.19743 9.26289 5.19743 9.05165 5.40772L6.99996 7.45014L4.94826 5.40772Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 442 B

View file

@ -1,4 +0,0 @@
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="3" y="3" width="19" height="19" rx="9.5" fill="#7E7E7E"/>
<rect x="3" y="3" width="19" height="19" rx="9.5" stroke="#343434" stroke-width="6"/>
</svg>

Before

Width:  |  Height:  |  Size: 256 B

View file

@ -1,4 +0,0 @@
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="2" y="2" width="21" height="21" rx="10.5" fill="black"/>
<rect x="2" y="2" width="21" height="21" rx="10.5" stroke="#48B2E9" stroke-width="4"/>
</svg>

Before

Width:  |  Height:  |  Size: 256 B

View file

@ -1,5 +0,0 @@
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="3.5" y="3.5" width="18" height="18" rx="9" fill="black"/>
<rect x="3.5" y="3.5" width="18" height="18" rx="9" stroke="#45A4D5" stroke-width="7"/>
<circle cx="12.5" cy="12.5" r="9" fill="black" stroke="#45A4D5" stroke-width="7"/>
</svg>

Before

Width:  |  Height:  |  Size: 341 B

Some files were not shown because too many files have changed in this diff Show more