mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-12-06 07:12:28 +01:00
Compare commits
No commits in common. "master" and "v0.0.36" have entirely different histories.
|
|
@ -1,10 +1,9 @@
|
||||||
#!/bin/sh -ex
|
#!/bin/sh -ex
|
||||||
|
|
||||||
# Pull all the submodules except some
|
# Pull all the submodules except llvm and opencv
|
||||||
# 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/ { 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
|
||||||
"
|
"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
#!/bin/sh -ex
|
#!/bin/sh -ex
|
||||||
|
|
||||||
cd rpcs3 || exit 1
|
if [ -z "$CIRRUS_CI" ]; then
|
||||||
|
cd rpcs3 || exit 1
|
||||||
shellcheck .ci/*.sh
|
fi
|
||||||
|
|
||||||
git config --global --add safe.directory '*'
|
git config --global --add safe.directory '*'
|
||||||
|
|
||||||
# Pull all the submodules except some
|
# Pull all the submodules except llvm and opencv
|
||||||
# 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/ { print $3 }' .gitmodules)
|
||||||
|
|
||||||
mkdir build && cd build || exit 1
|
mkdir build && cd build || exit 1
|
||||||
|
|
||||||
|
|
@ -22,16 +22,15 @@ else
|
||||||
export CXX="${CLANGXX_BINARY}"
|
export CXX="${CLANGXX_BINARY}"
|
||||||
export LINKER="${LLD_BINARY}"
|
export LINKER="${LLD_BINARY}"
|
||||||
fi
|
fi
|
||||||
|
export CFLAGS="$CFLAGS -fuse-ld=${LINKER}"
|
||||||
export LINKER_FLAG="-fuse-ld=${LINKER}"
|
export CXXFLAGS="$CXXFLAGS -fuse-ld=${LINKER}"
|
||||||
|
|
||||||
cmake .. \
|
cmake .. \
|
||||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||||
-DUSE_NATIVE_INSTRUCTIONS=OFF \
|
-DUSE_NATIVE_INSTRUCTIONS=OFF \
|
||||||
-DUSE_PRECOMPILED_HEADERS=OFF \
|
-DUSE_PRECOMPILED_HEADERS=OFF \
|
||||||
-DCMAKE_EXE_LINKER_FLAGS="${LINKER_FLAG}" \
|
-DCMAKE_C_FLAGS="$CFLAGS" \
|
||||||
-DCMAKE_MODULE_LINKER_FLAGS="${LINKER_FLAG}" \
|
-DCMAKE_CXX_FLAGS="$CFLAGS" \
|
||||||
-DCMAKE_SHARED_LINKER_FLAGS="${LINKER_FLAG}" \
|
|
||||||
-DUSE_SYSTEM_CURL=ON \
|
-DUSE_SYSTEM_CURL=ON \
|
||||||
-DUSE_SDL=ON \
|
-DUSE_SDL=ON \
|
||||||
-DUSE_SYSTEM_SDL=ON \
|
-DUSE_SYSTEM_SDL=ON \
|
||||||
|
|
@ -41,15 +40,19 @@ cmake .. \
|
||||||
-DOpenGL_GL_PREFERENCE=LEGACY \
|
-DOpenGL_GL_PREFERENCE=LEGACY \
|
||||||
-DLLVM_DIR=/opt/llvm/lib/cmake/llvm \
|
-DLLVM_DIR=/opt/llvm/lib/cmake/llvm \
|
||||||
-DSTATIC_LINK_LLVM=ON \
|
-DSTATIC_LINK_LLVM=ON \
|
||||||
-DBUILD_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
|
|
||||||
-DRUN_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
|
|
||||||
-G Ninja
|
-G Ninja
|
||||||
|
|
||||||
ninja; build_status=$?;
|
ninja; build_status=$?;
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
|
shellcheck .ci/*.sh
|
||||||
|
|
||||||
# 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
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,15 @@
|
||||||
#!/bin/sh -ex
|
#!/bin/sh -ex
|
||||||
|
|
||||||
cd rpcs3 || exit 1
|
if [ -z "$CIRRUS_CI" ]; then
|
||||||
|
cd rpcs3 || exit 1
|
||||||
shellcheck .ci/*.sh
|
fi
|
||||||
|
|
||||||
git config --global --add safe.directory '*'
|
git config --global --add safe.directory '*'
|
||||||
|
|
||||||
# Pull all the submodules except some
|
# Pull all the submodules except llvm and opencv
|
||||||
# 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/ { print $3 }' .gitmodules)
|
||||||
|
|
||||||
mkdir build && cd build || exit 1
|
mkdir build && cd build || exit 1
|
||||||
|
|
||||||
|
|
@ -30,7 +30,7 @@ else
|
||||||
export RANLIB=/usr/bin/llvm-ranlib-"$LLVMVER"
|
export RANLIB=/usr/bin/llvm-ranlib-"$LLVMVER"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export LINKER_FLAG="-fuse-ld=${LINKER}"
|
export CFLAGS="$CFLAGS -fuse-ld=${LINKER}"
|
||||||
|
|
||||||
cmake .. \
|
cmake .. \
|
||||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||||
|
|
@ -38,9 +38,6 @@ cmake .. \
|
||||||
-DUSE_PRECOMPILED_HEADERS=OFF \
|
-DUSE_PRECOMPILED_HEADERS=OFF \
|
||||||
-DCMAKE_C_FLAGS="$CFLAGS" \
|
-DCMAKE_C_FLAGS="$CFLAGS" \
|
||||||
-DCMAKE_CXX_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_AR="$AR" \
|
||||||
-DCMAKE_RANLIB="$RANLIB" \
|
-DCMAKE_RANLIB="$RANLIB" \
|
||||||
-DUSE_SYSTEM_CURL=ON \
|
-DUSE_SYSTEM_CURL=ON \
|
||||||
|
|
@ -52,15 +49,19 @@ cmake .. \
|
||||||
-DOpenGL_GL_PREFERENCE=LEGACY \
|
-DOpenGL_GL_PREFERENCE=LEGACY \
|
||||||
-DLLVM_DIR=/opt/llvm/lib/cmake/llvm \
|
-DLLVM_DIR=/opt/llvm/lib/cmake/llvm \
|
||||||
-DSTATIC_LINK_LLVM=ON \
|
-DSTATIC_LINK_LLVM=ON \
|
||||||
-DBUILD_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
|
|
||||||
-DRUN_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
|
|
||||||
-G Ninja
|
-G Ninja
|
||||||
|
|
||||||
ninja; build_status=$?;
|
ninja; build_status=$?;
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
|
shellcheck .ci/*.sh
|
||||||
|
|
||||||
# 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
|
||||||
|
|
|
||||||
118
.ci/build-mac-arm64.sh
Executable file → Normal file
118
.ci/build-mac-arm64.sh
Executable file → Normal file
|
|
@ -1,88 +1,120 @@
|
||||||
#!/bin/sh -ex
|
#!/bin/sh -ex
|
||||||
|
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
|
brew_arm64_install_packages() {
|
||||||
|
for pkg in "$@"; do
|
||||||
|
echo "Fetching bottle for $pkg (arm64)..."
|
||||||
|
bottle_path="$("$BREW_ARM64_PATH/bin/brew" --cache --bottle-tag=arm64_sonoma "$pkg")"
|
||||||
|
if [ ! -f "$bottle_path" ]; then
|
||||||
|
if ! "$BREW_ARM64_PATH/bin/brew" fetch --force --verbose --debug --bottle-tag=arm64_sonoma "$pkg"; then
|
||||||
|
echo "Failed to fetch bottle for $pkg"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
bottle_path="$("$BREW_ARM64_PATH/bin/brew" --cache --bottle-tag=arm64_sonoma "$pkg")"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Installing $pkg (arm64)..."
|
||||||
|
"$BREW_ARM64_PATH/bin/brew" install --force --force-bottle --ignore-dependencies "$bottle_path" || true
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
export HOMEBREW_NO_AUTO_UPDATE=1
|
export HOMEBREW_NO_AUTO_UPDATE=1
|
||||||
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
|
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=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
|
/usr/local/bin/brew update
|
||||||
brew unlink --quiet ffmpeg qtbase qtsvg qtdeclarative
|
sudo rm -rf /usr/local/Cellar/curl /usr/local/opt/curl
|
||||||
brew link -f --quiet "llvm@$LLVM_COMPILER_VER" ffmpeg@5
|
/usr/local/bin/brew install -f --overwrite curl
|
||||||
|
/usr/local/bin/brew uninstall -f --ignore-dependencies ffmpeg
|
||||||
|
/usr/local/bin/brew install -f --build-from-source ffmpeg@5 || true
|
||||||
|
/usr/local/bin/brew install -f --overwrite python || true
|
||||||
|
/usr/local/bin/brew link --overwrite python || true
|
||||||
|
/usr/local/bin/brew install -f --overwrite nasm ninja p7zip ccache pipenv #create-dmg
|
||||||
|
/usr/local/bin/brew link -f curl || true
|
||||||
|
/usr/local/bin/brew install llvm@$LLVM_COMPILER_VER glew cmake sdl3 vulkan-headers coreutils
|
||||||
|
/usr/local/bin/brew link -f llvm@$LLVM_COMPILER_VER ffmpeg@5 || true
|
||||||
|
|
||||||
# moltenvk based on commit for 1.4.0 release
|
export BREW_ARM64_PATH="/opt/homebrew1"
|
||||||
export HOMEBREW_DEVELOPER=1 # Prevents blocking of local formulae
|
sudo mkdir -p "$BREW_ARM64_PATH"
|
||||||
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/ea2bec5f1f4384e188d7fc0702ab21a20a2ced08/Formula/m/molten-vk.rb
|
sudo chmod 777 "$BREW_ARM64_PATH"
|
||||||
/opt/homebrew/bin/brew install -f --overwrite --formula --quiet ./molten-vk.rb
|
curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C "$BREW_ARM64_PATH"
|
||||||
export HOMEBREW_DEVELOPER=0
|
|
||||||
|
|
||||||
|
#"$BREW_ARM64_PATH/bin/brew" update
|
||||||
|
# libvorbis requires Homebrew-installed curl, but we can't run it on x64, and we also need the aarch64 libs, so we swap the binary
|
||||||
|
brew_arm64_install_packages curl
|
||||||
|
mv /opt/homebrew1/opt/curl/bin/curl /opt/homebrew1/opt/curl/bin/curl.bak
|
||||||
|
ln -s /usr/local/opt/curl/bin/curl /opt/homebrew1/opt/curl/bin/curl
|
||||||
|
|
||||||
|
brew_arm64_install_packages 0mq aom aribb24 ca-certificates cjson dav1d ffmpeg@5 fontconfig freetype freetype2 gettext glew gmp gnutls lame libbluray libidn2 libnettle libogg libpng librist libsodium libsoxr libtasn libtasn1 libunistring libvmaf libvorbis libvpx libx11 libxau libxcb libxdmcp llvm@$LLVM_COMPILER_VER mbedtls molten-vk nettle opencore-amr openjpeg openssl opus p11-kit pkg-config pkgconfig pzstd rav1e sdl3 snappy speex srt svt-av1 theora vulkan-headers webp x264 x265 xz z3 zeromq zmq zstd
|
||||||
|
"$BREW_ARM64_PATH/bin/brew" link -f ffmpeg@5
|
||||||
|
ln -s "/opt/homebrew1/opt/llvm@$LLVM_COMPILER_VER/lib/unwind/libunwind.1.dylib" "/opt/homebrew1/opt/llvm@$LLVM_COMPILER_VER/lib/libunwind.1.dylib"
|
||||||
|
|
||||||
|
# moltenvk based on commit for 1.2.11 release
|
||||||
|
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/6bfc8950c696d1f952425e8af2a6248603dc0df9/Formula/m/molten-vk.rb
|
||||||
|
/usr/local/bin/brew install -f --overwrite ./molten-vk.rb
|
||||||
export CXX=clang++
|
export CXX=clang++
|
||||||
export CC=clang
|
export CC=clang
|
||||||
|
|
||||||
export BREW_PATH;
|
export BREW_PATH;
|
||||||
BREW_PATH="$(brew --prefix)"
|
BREW_PATH="$(brew --prefix)"
|
||||||
export BREW_BIN="/opt/homebrew/bin"
|
export BREW_X64_PATH;
|
||||||
export BREW_SBIN="/opt/homebrew/sbin"
|
BREW_X64_PATH="$("/usr/local/bin/brew" --prefix)"
|
||||||
|
export BREW_BIN="/usr/local/bin"
|
||||||
|
export BREW_SBIN="/usr/local/sbin"
|
||||||
export CMAKE_EXTRA_OPTS='-DLLVM_TARGETS_TO_BUILD=arm64'
|
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.8.3 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
|
||||||
cd "/tmp/Qt"
|
cd "/tmp/Qt"
|
||||||
"$BREW_PATH/bin/pipenv" run pip3 uninstall py7zr requests semantic_version lxml
|
"$BREW_X64_PATH/bin/pipenv" run pip3 install py7zr requests semantic_version lxml
|
||||||
"$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.8.3 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"
|
"$BREW_X64_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"
|
||||||
ditto "/tmp/Qt/$QT_VER" "qt-downloader/$QT_VER"
|
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_PATH/opt/sdl3/lib/cmake/SDL3"
|
export SDL3_DIR="$BREW_ARM64_PATH/opt/sdl3/lib/cmake/SDL3"
|
||||||
|
|
||||||
export PATH="$BREW_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"
|
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"
|
||||||
export LDFLAGS="-L$BREW_PATH/lib $BREW_PATH/opt/ffmpeg@5/lib/libavcodec.dylib $BREW_PATH/opt/ffmpeg@5/lib/libavformat.dylib $BREW_PATH/opt/ffmpeg@5/lib/libavutil.dylib $BREW_PATH/opt/ffmpeg@5/lib/libswscale.dylib $BREW_PATH/opt/ffmpeg@5/lib/libswresample.dylib $BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/lib/c++/libc++.1.dylib $BREW_PATH/lib/libSDL3.dylib $BREW_PATH/lib/libGLEW.dylib $BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/lib/unwind/libunwind.1.dylib -Wl,-rpath,$BREW_PATH/lib"
|
export LDFLAGS="-L$BREW_ARM64_PATH/lib $BREW_ARM64_PATH/opt/ffmpeg@5/lib/libavcodec.dylib $BREW_ARM64_PATH/opt/ffmpeg@5/lib/libavformat.dylib $BREW_ARM64_PATH/opt/ffmpeg@5/lib/libavutil.dylib $BREW_ARM64_PATH/opt/ffmpeg@5/lib/libswscale.dylib $BREW_ARM64_PATH/opt/ffmpeg@5/lib/libswresample.dylib $BREW_ARM64_PATH/opt/llvm@$LLVM_COMPILER_VER/lib/c++/libc++.1.dylib $BREW_ARM64_PATH/lib/libSDL3.dylib $BREW_ARM64_PATH/lib/libGLEW.dylib $BREW_ARM64_PATH/opt/llvm@$LLVM_COMPILER_VER/lib/libunwind.1.dylib -Wl,-rpath,$BREW_ARM64_PATH/lib"
|
||||||
export CPPFLAGS="-I$BREW_PATH/include -I$BREW_PATH/include -no-pie -D__MAC_OS_X_VERSION_MIN_REQUIRED=140000"
|
export CPPFLAGS="-I$BREW_ARM64_PATH/include -I$BREW_X64_PATH/include -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_PATH/lib"
|
export LIBRARY_PATH="$BREW_ARM64_PATH/lib"
|
||||||
export LD_LIBRARY_PATH="$BREW_PATH/lib"
|
export LD_LIBRARY_PATH="$BREW_ARM64_PATH/lib"
|
||||||
|
|
||||||
export VULKAN_SDK
|
export VULKAN_SDK
|
||||||
VULKAN_SDK="$BREW_PATH/opt/molten-vk"
|
VULKAN_SDK="$BREW_ARM64_PATH/opt/molten-vk"
|
||||||
ln -s "$VULKAN_SDK/lib/libMoltenVK.dylib" "$VULKAN_SDK/lib/libvulkan.dylib" || true
|
ln -s "$VULKAN_SDK/lib/libMoltenVK.dylib" "$VULKAN_SDK/lib/libvulkan.dylib" || true
|
||||||
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_PATH/opt/llvm@$LLVM_COMPILER_VER"
|
LLVM_DIR="$BREW_ARM64_PATH/opt/llvm@$LLVM_COMPILER_VER"
|
||||||
# exclude ffmpeg, LLVM, opencv, and sdl from submodule update
|
# exclude ffmpeg, LLVM, 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/ && !/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
|
||||||
|
|
||||||
|
rm -rf build
|
||||||
mkdir build && cd build || exit 1
|
mkdir build && cd build || exit 1
|
||||||
|
|
||||||
export MACOSX_DEPLOYMENT_TARGET=14.0
|
export MACOSX_DEPLOYMENT_TARGET=14.0
|
||||||
|
|
||||||
"$BREW_PATH/bin/cmake" .. \
|
"$BREW_X64_PATH/bin/cmake" .. \
|
||||||
-DBUILD_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
|
|
||||||
-DRUN_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
|
|
||||||
-DUSE_SDL=ON \
|
-DUSE_SDL=ON \
|
||||||
-DUSE_DISCORD_RPC=ON \
|
-DUSE_DISCORD_RPC=ON \
|
||||||
-DUSE_VULKAN=ON \
|
-DUSE_VULKAN=ON \
|
||||||
|
|
@ -105,21 +137,23 @@ export MACOSX_DEPLOYMENT_TARGET=14.0
|
||||||
-DUSE_SYSTEM_FAUDIO=OFF \
|
-DUSE_SYSTEM_FAUDIO=OFF \
|
||||||
-DUSE_SYSTEM_SDL=ON \
|
-DUSE_SYSTEM_SDL=ON \
|
||||||
-DUSE_SYSTEM_OPENCV=ON \
|
-DUSE_SYSTEM_OPENCV=ON \
|
||||||
"$CMAKE_EXTRA_OPTS" \
|
$CMAKE_EXTRA_OPTS \
|
||||||
-DLLVM_TARGET_ARCH=arm64 \
|
-DLLVM_TARGET_ARCH=arm64 \
|
||||||
-DCMAKE_OSX_ARCHITECTURES=arm64 \
|
-DCMAKE_OSX_ARCHITECTURES=arm64 \
|
||||||
-DCMAKE_IGNORE_PATH="$BREW_PATH/lib" \
|
-DCMAKE_IGNORE_PATH="$BREW_X64_PATH/lib" \
|
||||||
-DCMAKE_IGNORE_PREFIX_PATH=/opt/homebrew/opt \
|
-DCMAKE_IGNORE_PREFIX_PATH=/usr/local/opt \
|
||||||
|
-DCMAKE_SYSTEM_PROCESSOR=arm64 \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=buildfiles/cmake/TCDarwinARM64.cmake \
|
||||||
-DCMAKE_CXX_FLAGS="-D__MAC_OS_X_VERSION_MIN_REQUIRED=140000" \
|
-DCMAKE_CXX_FLAGS="-D__MAC_OS_X_VERSION_MIN_REQUIRED=140000" \
|
||||||
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
|
|
||||||
-DCMAKE_OSX_SYSROOT="$(xcrun --sdk macosx --show-sdk-path)" \
|
|
||||||
-G Ninja
|
-G Ninja
|
||||||
|
|
||||||
"$BREW_PATH/bin/ninja"; build_status=$?;
|
"$BREW_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-arm64.sh
|
.ci/deploy-mac-arm64.sh
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
75
.ci/build-mac.sh
Executable file → Normal file
75
.ci/build-mac.sh
Executable file → Normal file
|
|
@ -3,27 +3,27 @@
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
export HOMEBREW_NO_AUTO_UPDATE=1
|
export HOMEBREW_NO_AUTO_UPDATE=1
|
||||||
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
|
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
|
||||||
export HOMEBREW_NO_ENV_HINTS=1
|
brew unlink certifi
|
||||||
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
brew install -f --overwrite nasm ninja p7zip ccache pipenv #create-dmg
|
||||||
|
|
||||||
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 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 uninstall -f --ignore-dependencies ffmpeg
|
||||||
|
arch -x86_64 /usr/local/bin/brew install -f --build-from-source ffmpeg@5
|
||||||
|
arch -x86_64 /usr/local/bin/brew reinstall -f --build-from-source gnutls freetype
|
||||||
|
arch -x86_64 /usr/local/bin/brew install llvm@$LLVM_COMPILER_VER glew cmake sdl3 vulkan-headers coreutils
|
||||||
|
arch -x86_64 /usr/local/bin/brew link -f llvm@$LLVM_COMPILER_VER ffmpeg@5
|
||||||
|
|
||||||
# moltenvk based on commit for 1.4.0 release
|
# moltenvk based on commit for 1.2.11 release
|
||||||
export HOMEBREW_DEVELOPER=1 # Prevents blocking of local formulae
|
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/6bfc8950c696d1f952425e8af2a6248603dc0df9/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 ./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
|
||||||
|
|
||||||
|
export BREW_PATH;
|
||||||
|
BREW_PATH="$(brew --prefix)"
|
||||||
export BREW_X64_PATH;
|
export BREW_X64_PATH;
|
||||||
BREW_X64_PATH="$("/usr/local/bin/brew" --prefix)"
|
BREW_X64_PATH="$("/usr/local/bin/brew" --prefix)"
|
||||||
export BREW_BIN="/usr/local/bin"
|
export BREW_BIN="/usr/local/bin"
|
||||||
|
|
@ -39,13 +39,14 @@ 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.8.3 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
|
||||||
cd "/tmp/Qt"
|
cd "/tmp/Qt"
|
||||||
"/opt/homebrew/bin/pipenv" --python "/opt/homebrew/bin/python3" run pip3 install py7zr requests semantic_version lxml
|
"$BREW_X64_PATH/bin/pipenv" 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.8.3 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"
|
"$BREW_X64_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"
|
||||||
|
|
@ -54,13 +55,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 +68,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,9 +80,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 \
|
|
||||||
-DRUN_RPCS3_TESTS=OFF \
|
|
||||||
-DUSE_SDL=ON \
|
-DUSE_SDL=ON \
|
||||||
-DUSE_DISCORD_RPC=ON \
|
-DUSE_DISCORD_RPC=ON \
|
||||||
-DUSE_VULKAN=ON \
|
-DUSE_VULKAN=ON \
|
||||||
|
|
@ -105,23 +103,20 @@ export MACOSX_DEPLOYMENT_TARGET=14.0
|
||||||
-DUSE_SYSTEM_FAUDIO=OFF \
|
-DUSE_SYSTEM_FAUDIO=OFF \
|
||||||
-DUSE_SYSTEM_SDL=ON \
|
-DUSE_SYSTEM_SDL=ON \
|
||||||
-DUSE_SYSTEM_OPENCV=ON \
|
-DUSE_SYSTEM_OPENCV=ON \
|
||||||
"$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_IGNORE_PATH="$BREW_PATH/lib" \
|
||||||
-DCMAKE_TOOLCHAIN_FILE=buildfiles/cmake/TCDarwinX86_64.cmake \
|
|
||||||
-DCMAKE_IGNORE_PATH="$BREW_X64_PATH/lib" \
|
|
||||||
-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" \
|
||||||
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
|
|
||||||
-DCMAKE_OSX_SYSROOT="$(xcrun --sdk macosx --show-sdk-path)" \
|
|
||||||
-G Ninja
|
-G Ninja
|
||||||
|
|
||||||
"/opt/homebrew/bin/ninja"; build_status=$?;
|
"$BREW_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
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -25,36 +25,11 @@ if [ "$DEPLOY_APPIMAGE" = "true" ]; then
|
||||||
# Remove libvulkan because it causes issues with gamescope
|
# Remove libvulkan because it causes issues with gamescope
|
||||||
rm -f ./AppDir/usr/lib/libvulkan.so*
|
rm -f ./AppDir/usr/lib/libvulkan.so*
|
||||||
|
|
||||||
# Remove unused Qt6 libraries
|
|
||||||
rm -f ./AppDir/usr/lib/libQt6VirtualKeyboard.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
|
linuxdeploy --appimage-extract
|
||||||
mkdir -p "./AppDir/usr/translations"
|
./squashfs-root/plugins/linuxdeploy-plugin-appimage/usr/bin/appimagetool AppDir -g
|
||||||
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"
|
|
||||||
chmod +x /uruntime
|
|
||||||
/uruntime --appimage-mkdwarfs -f --set-owner 0 --set-group 0 --no-history --no-create-timestamp \
|
|
||||||
--compression zstd:level=22 -S26 -B32 --header /uruntime -i AppDir -o RPCS3.AppImage
|
|
||||||
|
|
||||||
APPIMAGE_SUFFIX="linux_${CPU_ARCH}"
|
APPIMAGE_SUFFIX="linux_${CPU_ARCH}"
|
||||||
if [ "$CPU_ARCH" = "x86_64" ]; then
|
if [ "$CPU_ARCH" = "x86_64" ]; then
|
||||||
|
|
|
||||||
|
|
@ -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"
|
|
||||||
52
.ci/deploy-mac-arm64.sh
Executable file → Normal file
52
.ci/deploy-mac-arm64.sh
Executable file → Normal file
|
|
@ -16,10 +16,9 @@ echo "AVVER=$AVVER" >> ../.ci/ci-vars.env
|
||||||
cd bin
|
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/homebrew1/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/homebrew1/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/homebrew1/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"
|
|
||||||
|
|
||||||
rm -rf "rpcs3.app/Contents/Frameworks/QtPdf.framework" \
|
rm -rf "rpcs3.app/Contents/Frameworks/QtPdf.framework" \
|
||||||
"rpcs3.app/Contents/Frameworks/QtQml.framework" \
|
"rpcs3.app/Contents/Frameworks/QtQml.framework" \
|
||||||
|
|
@ -32,28 +31,13 @@ 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/homebrew1/lib \
|
||||||
|
-delete_rpath /opt/homebrew/lib \
|
||||||
|
-delete_rpath /opt/homebrew1/opt/llvm@$LLVM_COMPILER_VER/lib \
|
||||||
|
-delete_rpath /usr/local/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 +50,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_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 }')
|
||||||
|
|
||||||
|
|
|
||||||
45
.ci/deploy-mac.sh
Executable file → Normal file
45
.ci/deploy-mac.sh
Executable file → Normal 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 }')
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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"
|
|
||||||
|
|
@ -1,13 +1,14 @@
|
||||||
#!/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
|
||||||
rm -f ./bin/rpcs3.exp ./bin/rpcs3.lib ./bin/rpcs3.pdb ./bin/vc_redist.x64.exe
|
rm -f ./bin/rpcs3.exp ./bin/rpcs3.lib ./bin/rpcs3.pdb ./bin/vc_redist.x64.exe
|
||||||
|
rm -rf ./bin/git
|
||||||
|
|
||||||
# Prepare compatibility and SDL database for packaging
|
# Prepare compatibility and SDL database for packaging
|
||||||
mkdir ./bin/config
|
mkdir ./bin/config
|
||||||
|
|
@ -15,25 +16,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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -7,7 +8,6 @@ BUILD_SOURCEBRANCHNAME
|
||||||
APPDIR
|
APPDIR
|
||||||
ARTDIR
|
ARTDIR
|
||||||
RELEASE_MESSAGE
|
RELEASE_MESSAGE
|
||||||
RUN_UNIT_TESTS
|
|
||||||
# Variables for build matrix
|
# Variables for build matrix
|
||||||
COMPILER
|
COMPILER
|
||||||
DEPLOY_APPIMAGE
|
DEPLOY_APPIMAGE
|
||||||
|
|
|
||||||
13
.ci/export-azure-vars.sh
Executable file
13
.ci/export-azure-vars.sh
Executable 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
Normal file
13
.ci/export-cirrus-vars.sh
Normal 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"
|
||||||
1
.ci/get_keys-windows.sh
Executable file → Normal file
1
.ci/get_keys-windows.sh
Executable file → Normal file
|
|
@ -1,3 +1,4 @@
|
||||||
#!/bin/sh -ex
|
#!/bin/sh -ex
|
||||||
|
|
||||||
curl -fLo "./llvm.lock" "https://github.com/RPCS3/llvm-mirror/releases/download/custom-build-win-${LLVM_VER}/llvmlibs_mt.7z.sha256"
|
curl -fLo "./llvm.lock" "https://github.com/RPCS3/llvm-mirror/releases/download/custom-build-win-${LLVM_VER}/llvmlibs_mt.7z.sha256"
|
||||||
|
curl -fLo "./glslang.lock" "https://github.com/RPCS3/glslang/releases/download/custom-build-win/glslanglibs_mt.7z.sha256"
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
0
.ci/optimize-mac.sh
Executable file → Normal file
0
.ci/optimize-mac.sh
Executable file → Normal 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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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,15 +13,16 @@ 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}"
|
||||||
QT_MM_URL="${QT_HOST}${QT_PREFIX}addons.qtmultimedia.${QT_PREFIX_2}qtmultimedia${QT_SUFFIX}"
|
QT_MM_URL="${QT_HOST}${QT_PREFIX}addons.qtmultimedia.${QT_PREFIX_2}qtmultimedia${QT_SUFFIX}"
|
||||||
QT_SVG_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qtsvg${QT_SUFFIX}"
|
QT_SVG_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qtsvg${QT_SUFFIX}"
|
||||||
LLVMLIBS_URL="https://github.com/RPCS3/llvm-mirror/releases/download/custom-build-win-${LLVM_VER}/llvmlibs_mt.7z"
|
LLVMLIBS_URL="https://github.com/RPCS3/llvm-mirror/releases/download/custom-build-win-${LLVM_VER}/llvmlibs_mt.7z"
|
||||||
|
GLSLANG_URL='https://github.com/RPCS3/glslang/releases/latest/download/glslanglibs_mt.7z'
|
||||||
VULKAN_SDK_URL="https://www.dropbox.com/scl/fi/sjjh0fc4ld281pjbl2xzu/VulkanSDK-${VULKAN_VER}-Installer.exe?rlkey=f6wzc0lvms5vwkt2z3qabfv9d&dl=1"
|
VULKAN_SDK_URL="https://www.dropbox.com/scl/fi/sjjh0fc4ld281pjbl2xzu/VulkanSDK-${VULKAN_VER}-Installer.exe?rlkey=f6wzc0lvms5vwkt2z3qabfv9d&dl=1"
|
||||||
CCACHE_URL="https://github.com/ccache/ccache/releases/download/v4.11.2/ccache-4.11.2-windows-x86_64.zip"
|
CCACHE_URL="https://github.com/ccache/ccache/releases/download/v4.10.2/ccache-4.10.2-windows-x86_64.zip"
|
||||||
|
|
||||||
DEP_URLS=" \
|
DEP_URLS=" \
|
||||||
$QT_BASE_URL \
|
$QT_BASE_URL \
|
||||||
|
|
@ -25,16 +31,17 @@ DEP_URLS=" \
|
||||||
$QT_MM_URL \
|
$QT_MM_URL \
|
||||||
$QT_SVG_URL \
|
$QT_SVG_URL \
|
||||||
$LLVMLIBS_URL \
|
$LLVMLIBS_URL \
|
||||||
|
$GLSLANG_URL \
|
||||||
$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()
|
||||||
|
|
@ -73,6 +80,7 @@ for url in $DEP_URLS; do
|
||||||
case "$url" in
|
case "$url" in
|
||||||
*qt*) checksum=$(curl -fL "${url}.sha1"); algo="sha1"; outDir="$QTDIR/" ;;
|
*qt*) checksum=$(curl -fL "${url}.sha1"); algo="sha1"; outDir="$QTDIR/" ;;
|
||||||
*llvm*) checksum=$(curl -fL "${url}.sha256"); algo="sha256"; outDir="./build/lib_ext/Release-x64" ;;
|
*llvm*) checksum=$(curl -fL "${url}.sha256"); algo="sha256"; outDir="./build/lib_ext/Release-x64" ;;
|
||||||
|
*glslang*) checksum=$(curl -fL "${url}.sha256"); algo="sha256"; outDir="./build/lib_ext/Release-x64" ;;
|
||||||
*ccache*) checksum=$CCACHE_SHA; algo="sha256"; outDir="$CCACHE_BIN_DIR" ;;
|
*ccache*) checksum=$CCACHE_SHA; algo="sha256"; outDir="$CCACHE_BIN_DIR" ;;
|
||||||
*Vulkan*)
|
*Vulkan*)
|
||||||
# Vulkan setup needs to be run in batch environment
|
# Vulkan setup needs to be run in batch environment
|
||||||
|
|
@ -94,3 +102,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
153
.cirrus.yml
Normal 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.8.3'
|
||||||
|
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: '202503201308'
|
||||||
|
# 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.2
|
||||||
|
# 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.2'
|
||||||
|
# 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;
|
||||||
2
.github/CONTRIBUTING.md
vendored
2
.github/CONTRIBUTING.md
vendored
|
|
@ -16,4 +16,4 @@ Submitting your test results for Commercial Games must be done on our forums. Pl
|
||||||
|
|
||||||
# Contributing
|
# Contributing
|
||||||
|
|
||||||
Check the [Coding Style Guidelines](https://github.com/RPCS3/rpcs3/wiki/Coding-Style) and [Developer Information](https://github.com/RPCS3/rpcs3/wiki/Developer-Information). If you have any questions, hit us up on our [Discord Server](https://discord.gg/rpcs3) in the **#development** channel.
|
Check the [Coding Style Guidelines](https://github.com/RPCS3/rpcs3/wiki/Coding-Style) and [Developer Information](https://github.com/RPCS3/rpcs3/wiki/Developer-Information). If you have any questions, hit us up on our [Discord Server](https://discord.me/RPCS3) in the **#development** channel.
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ body:
|
||||||
attributes:
|
attributes:
|
||||||
value: |
|
value: |
|
||||||
# Summary
|
# Summary
|
||||||
Please do not ask for help or report compatibility regressions here, use [RPCS3 Discord server](https://discord.gg/rpcs3) or [forums](https://forums.rpcs3.net/) instead.
|
Please do not ask for help or report compatibility regressions here, use [RPCS3 Discord server](https://discord.me/RPCS3) or [forums](https://forums.rpcs3.net/) instead.
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: quick-summary
|
id: quick-summary
|
||||||
attributes:
|
attributes:
|
||||||
|
|
@ -50,7 +50,7 @@ body:
|
||||||
* Completely close RPCS3 and locate the log file.
|
* Completely close RPCS3 and locate the log file.
|
||||||
|
|
||||||
RPCS3's Log file will be ```RPCS3.log.gz``` (sometimes shows as RPCS3.log with zip icon) or ```RPCS3.log``` (sometimes shows as RPCS3 wtih notepad icon).
|
RPCS3's Log file will be ```RPCS3.log.gz``` (sometimes shows as RPCS3.log with zip icon) or ```RPCS3.log``` (sometimes shows as RPCS3 wtih notepad icon).
|
||||||
* On Windows it will be in the ```log``` folder inside your RPCS3 folder.
|
* On Windows it will be in the RPCS3 directory near the executable
|
||||||
* On Linux it will be in ```~/.cache/rpcs3/```
|
* On Linux it will be in ```~/.cache/rpcs3/```
|
||||||
* On MacOS it will be in ```~/Library/Caches/rpcs3```. If you're unable to locate it copy paste the path in Spotlight and hit enter.
|
* On MacOS it will be in ```~/Library/Caches/rpcs3```. If you're unable to locate it copy paste the path in Spotlight and hit enter.
|
||||||
- type: textarea
|
- type: textarea
|
||||||
|
|
|
||||||
4
.github/ISSUE_TEMPLATE/2-bug-report.yml
vendored
4
.github/ISSUE_TEMPLATE/2-bug-report.yml
vendored
|
|
@ -7,7 +7,7 @@ body:
|
||||||
attributes:
|
attributes:
|
||||||
value: |
|
value: |
|
||||||
# Summary
|
# Summary
|
||||||
Please do not ask for help or report compatibility regressions here, use [RPCS3 Discord server](https://discord.gg/rpcs3) or [forums](https://forums.rpcs3.net/) instead.
|
Please do not ask for help or report compatibility regressions here, use [RPCS3 Discord server](https://discord.me/RPCS3) or [forums](https://forums.rpcs3.net/) instead.
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: quick-summary
|
id: quick-summary
|
||||||
attributes:
|
attributes:
|
||||||
|
|
@ -36,7 +36,7 @@ body:
|
||||||
* Completely close RPCS3 and locate the log file.
|
* Completely close RPCS3 and locate the log file.
|
||||||
|
|
||||||
RPCS3's Log file will be ```RPCS3.log.gz``` (sometimes shows as RPCS3.log with zip icon) or ```RPCS3.log``` (sometimes shows as RPCS3 wtih notepad icon).
|
RPCS3's Log file will be ```RPCS3.log.gz``` (sometimes shows as RPCS3.log with zip icon) or ```RPCS3.log``` (sometimes shows as RPCS3 wtih notepad icon).
|
||||||
* On Windows it will be in the ```log``` folder inside your RPCS3 folder.
|
* On Windows it will be in the RPCS3 directory near the executable
|
||||||
* On Linux it will be in ```~/.cache/rpcs3/```
|
* On Linux it will be in ```~/.cache/rpcs3/```
|
||||||
* On MacOS it will be in ```~/Library/Caches/rpcs3```. If you're unable to locate it copy paste the path in Spotlight and hit enter.
|
* On MacOS it will be in ```~/Library/Caches/rpcs3```. If you're unable to locate it copy paste the path in Spotlight and hit enter.
|
||||||
- type: textarea
|
- type: textarea
|
||||||
|
|
|
||||||
4
.github/ISSUE_TEMPLATE/3-feature-request.yml
vendored
4
.github/ISSUE_TEMPLATE/3-feature-request.yml
vendored
|
|
@ -6,7 +6,7 @@ body:
|
||||||
- type: markdown
|
- type: markdown
|
||||||
attributes:
|
attributes:
|
||||||
value: |
|
value: |
|
||||||
Please do not ask for help or report compatibility regressions here, use [RPCS3 Discord server](https://discord.gg/rpcs3) or [forums](https://forums.rpcs3.net/) instead.
|
Please do not ask for help or report compatibility regressions here, use [RPCS3 Discord server](https://discord.me/RPCS3) or [forums](https://forums.rpcs3.net/) instead.
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: quick-summary
|
id: quick-summary
|
||||||
attributes:
|
attributes:
|
||||||
|
|
@ -31,6 +31,6 @@ body:
|
||||||
* If this feature is something that a game is trying to use, upload a log file for it.
|
* If this feature is something that a game is trying to use, upload a log file for it.
|
||||||
|
|
||||||
RPCS3's Log file will be ```RPCS3.log.gz``` (sometimes shows as RPCS3.log with zip icon) or ```RPCS3.log``` (sometimes shows as RPCS3 wtih notepad icon).
|
RPCS3's Log file will be ```RPCS3.log.gz``` (sometimes shows as RPCS3.log with zip icon) or ```RPCS3.log``` (sometimes shows as RPCS3 wtih notepad icon).
|
||||||
* On Windows it will be in the ```log``` folder inside your RPCS3 folder.
|
* On Windows it will be in the RPCS3 directory near the executable
|
||||||
* On Linux it will be in ```~/.cache/rpcs3/```
|
* On Linux it will be in ```~/.cache/rpcs3/```
|
||||||
* On MacOS it will be in ```~/Library/Caches/rpcs3```. If you're unable to locate it copy paste the path in Spotlight and hit enter.
|
* On MacOS it will be in ```~/Library/Caches/rpcs3```. If you're unable to locate it copy paste the path in Spotlight and hit enter.
|
||||||
|
|
|
||||||
2
.github/ISSUE_TEMPLATE/4-advanced.md
vendored
2
.github/ISSUE_TEMPLATE/4-advanced.md
vendored
|
|
@ -7,7 +7,7 @@ assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Please do not ask for help or report compatibility regressions here, use [RPCS3 Discord server](https://discord.gg/rpcs3) or [forums](https://forums.rpcs3.net/) instead.
|
## Please do not ask for help or report compatibility regressions here, use [RPCS3 Discord server](https://discord.me/RPCS3) or [forums](https://forums.rpcs3.net/) instead.
|
||||||
|
|
||||||
You're using the advanced template. You're expected to know what to write in order to fill in all the required information for proper report.
|
You're using the advanced template. You're expected to know what to write in order to fill in all the required information for proper report.
|
||||||
|
|
||||||
|
|
|
||||||
2
.github/ISSUE_TEMPLATE/config.yml
vendored
2
.github/ISSUE_TEMPLATE/config.yml
vendored
|
|
@ -4,7 +4,7 @@ contact_links:
|
||||||
url: https://rpcs3.net/quickstart
|
url: https://rpcs3.net/quickstart
|
||||||
about: Everything you need to know to install and configure emulator, and add games
|
about: Everything you need to know to install and configure emulator, and add games
|
||||||
- name: Ask for help
|
- name: Ask for help
|
||||||
url: https://discord.gg/rpcs3
|
url: https://discord.me/RPCS3
|
||||||
about: If you have some questions or need help, please use our Discord server instead of GitHub
|
about: If you have some questions or need help, please use our Discord server instead of GitHub
|
||||||
- name: Report game compatibility
|
- name: Report game compatibility
|
||||||
url: https://forums.rpcs3.net/thread-196671.html
|
url: https://forums.rpcs3.net/thread-196671.html
|
||||||
|
|
|
||||||
18
.github/PR-BUILD.md
vendored
Normal file
18
.github/PR-BUILD.md
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
## How to test a PR build
|
||||||
|
|
||||||
|
Please take into account, that RPCS3 build usually takes some time (about 15 mins), so you can't access a build if a PR was just submitted.
|
||||||
|
|
||||||
|
- Open a PR you want to test
|
||||||
|
- Scroll to the very bottom and locate the **Checks** section
|
||||||
|
- Click on **Show all checks**
|
||||||
|
You are supposed to see something like this
|
||||||
|

|
||||||
|
- Click on __Details__ on either **Cirrus Linux GCC** or **Cirrus Windows**
|
||||||
|
- Click **View more details on Cirrus CI** at the very bottom
|
||||||
|

|
||||||
|
- Click on the download button for **Artifact** on the **Artifacts** block
|
||||||
|

|
||||||
|
|
||||||
|
- Congratulations! You are now downloading an RPCS3 build for that specific PR.
|
||||||
|
|
||||||
|
__Please note that PR builds are not supposed to be stable because they contain new changesets.__
|
||||||
3
.github/PULL_REQUEST_TEMPLATE/1-default.md
vendored
Normal file
3
.github/PULL_REQUEST_TEMPLATE/1-default.md
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
<!-- Please include a summary of the change and which issue is fixed. -->
|
||||||
|
|
||||||
|
[How to test this PR](.github/PR-BUILD.md)
|
||||||
72
.github/workflows/llvm.yml
vendored
72
.github/workflows/llvm.yml
vendored
|
|
@ -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 }}
|
|
||||||
296
.github/workflows/rpcs3.yml
vendored
296
.github/workflows/rpcs3.yml
vendored
|
|
@ -5,8 +5,6 @@ defaults:
|
||||||
shell: bash
|
shell: bash
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
|
||||||
- master # Only trigger push event on 'master' branch
|
|
||||||
pull_request:
|
pull_request:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
|
|
@ -17,42 +15,36 @@ 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/
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
Linux_Build:
|
Linux_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')
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
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.3"
|
||||||
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.3"
|
||||||
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.3"
|
||||||
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"
|
||||||
|
|
@ -60,29 +52,28 @@ jobs:
|
||||||
COMPILER: ${{ matrix.compiler }}
|
COMPILER: ${{ matrix.compiler }}
|
||||||
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.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 ${{ github.workspace }}/artifacts:/root/artifacts \
|
||||||
${{ matrix.docker_img }} \
|
${{ matrix.docker_img }} \
|
||||||
${{ matrix.build_sh }}
|
${{ matrix.build_sh }}
|
||||||
|
|
||||||
|
|
@ -108,117 +99,19 @@ 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:
|
|
||||||
# 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')
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- name: Intel
|
|
||||||
build_sh: .ci/build-mac.sh
|
|
||||||
UPLOAD_COMMIT_HASH: 51ae32f468089a8169aaf1567de355ff4a3e0842
|
|
||||||
UPLOAD_REPO_FULL_NAME: rpcs3/rpcs3-binaries-mac
|
|
||||||
- name: Apple Silicon
|
|
||||||
build_sh: .ci/build-mac-arm64.sh
|
|
||||||
UPLOAD_COMMIT_HASH: 8e21bdbc40711a3fccd18fbf17b742348b0f4281
|
|
||||||
UPLOAD_REPO_FULL_NAME: rpcs3/rpcs3-binaries-mac-arm64
|
|
||||||
name: RPCS3 Mac ${{ matrix.name }}
|
|
||||||
runs-on: macos-14
|
|
||||||
env:
|
|
||||||
CCACHE_DIR: /tmp/ccache_dir
|
|
||||||
QT_VER: '6.10.1'
|
|
||||||
QT_VER_MAIN: '6'
|
|
||||||
LLVM_COMPILER_VER: '21'
|
|
||||||
RELEASE_MESSAGE: ../GitHubReleaseMessage.txt
|
|
||||||
UPLOAD_COMMIT_HASH: ${{ matrix.UPLOAD_COMMIT_HASH }}
|
|
||||||
UPLOAD_REPO_FULL_NAME: ${{ matrix.UPLOAD_REPO_FULL_NAME }}
|
|
||||||
RUN_UNIT_TESTS: github.event_name == 'pull_request' && 'ON' || 'OFF'
|
|
||||||
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: ${{ runner.os }}-ccache-${{ matrix.name }}-${{github.run_id}}
|
|
||||||
restore-keys: ${{ runner.os }}-ccache-${{ matrix.name }}-
|
|
||||||
|
|
||||||
- name: Restore Qt Cache
|
|
||||||
uses: actions/cache/restore@main
|
|
||||||
id: restore-qt-cache
|
|
||||||
with:
|
|
||||||
path: /tmp/Qt
|
|
||||||
key: ${{ runner.os }}-qt-${{ matrix.name }}-${{ env.QT_VER }}
|
|
||||||
restore-keys: ${{ runner.os }}-qt-${{ matrix.name }}-${{ env.QT_VER }}
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
run: ${{ matrix.build_sh }}
|
|
||||||
|
|
||||||
- name: Upload artifacts
|
|
||||||
uses: actions/upload-artifact@main
|
|
||||||
with:
|
|
||||||
name: RPCS3 for Mac (${{ matrix.name }})
|
|
||||||
path: ${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }}
|
|
||||||
compression-level: 0
|
|
||||||
|
|
||||||
- name: Export Variables
|
|
||||||
run: |
|
|
||||||
while IFS='=' read -r key val; do
|
|
||||||
# Skip lines that are empty or start with '#'
|
|
||||||
[[ -z "$key" || "$key" =~ ^# ]] && continue
|
|
||||||
echo "$key=$val" >> "${{ github.env }}"
|
|
||||||
done < .ci/ci-vars.env
|
|
||||||
|
|
||||||
- name: Deploy master build to GitHub Releases
|
|
||||||
if: |
|
|
||||||
github.event_name != 'pull_request' &&
|
|
||||||
github.repository == 'RPCS3/rpcs3' &&
|
|
||||||
github.ref == 'refs/heads/master'
|
|
||||||
env:
|
|
||||||
RPCS3_TOKEN: ${{ secrets.RPCS3_TOKEN }}
|
|
||||||
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
|
|
||||||
if: github.event_name != 'push' || (github.repository == 'RPCS3/rpcs3' && github.ref_name == 'master')
|
|
||||||
name: RPCS3 Windows
|
name: RPCS3 Windows
|
||||||
runs-on: windows-2025
|
runs-on: windows-2025
|
||||||
env:
|
env:
|
||||||
COMPILER: msvc
|
COMPILER: msvc
|
||||||
QT_VER_MAIN: '6'
|
QT_VER_MAIN: '6'
|
||||||
QT_VER: '6.10.1'
|
QT_VER: '6.8.3'
|
||||||
QT_VER_MSVC: 'msvc2022'
|
QT_VER_MSVC: 'msvc2022'
|
||||||
QT_DATE: '202511161843'
|
QT_DATE: '202503201308'
|
||||||
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'
|
||||||
CCACHE_SHA: '1f39f3ad5aae3fe915e99ad1302633bc8f6718e58fa7c0de2b0ba7e080f0f08c'
|
CCACHE_SHA: '6252f081876a9a9f700fae13a5aec5d0d486b28261d7f1f72ac11c7ad9df4da9'
|
||||||
CCACHE_BIN_DIR: 'C:\ccache_bin'
|
CCACHE_BIN_DIR: 'C:\ccache_bin'
|
||||||
CCACHE_DIR: 'C:\ccache'
|
CCACHE_DIR: 'C:\ccache'
|
||||||
CCACHE_INODECACHE: 'true'
|
CCACHE_INODECACHE: 'true'
|
||||||
|
|
@ -233,12 +126,6 @@ jobs:
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Setup NuGet
|
|
||||||
uses: nuget/setup-nuget@v2
|
|
||||||
|
|
||||||
- name: Restore NuGet packages
|
|
||||||
run: nuget restore rpcs3.sln
|
|
||||||
|
|
||||||
- name: Setup env
|
- name: Setup env
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
run: |
|
run: |
|
||||||
|
|
@ -248,26 +135,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') }}-${{ hashFiles('glslang.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: |
|
||||||
|
|
@ -282,12 +165,7 @@ jobs:
|
||||||
|
|
||||||
- name: Compile RPCS3
|
- name: Compile RPCS3
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
run: msbuild rpcs3.sln /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"
|
run: msbuild rpcs3.sln /p:Configuration=Release /v:minimal /p:Platform=x64 /p:CLToolPath=${{ env.CCACHE_BIN_DIR }} /p:UseMultiToolTask=true /p:CustomAfterMicrosoftCommonTargets="${{ github.workspace }}\buildfiles\msvc\ci_only.targets"
|
||||||
|
|
||||||
- name: Run Unit Tests
|
|
||||||
if: github.event_name == 'pull_request'
|
|
||||||
shell: pwsh
|
|
||||||
run: build\lib\Release-x64\rpcs3_test.exe
|
|
||||||
|
|
||||||
- name: Pack up build artifacts
|
- name: Pack up build artifacts
|
||||||
run: |
|
run: |
|
||||||
|
|
@ -310,135 +188,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 }}
|
|
||||||
|
|
|
||||||
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -35,7 +35,6 @@
|
||||||
/lib
|
/lib
|
||||||
/tmp
|
/tmp
|
||||||
/ipch
|
/ipch
|
||||||
/packages
|
|
||||||
/rpcs3/Debug
|
/rpcs3/Debug
|
||||||
/rpcs3/Release
|
/rpcs3/Release
|
||||||
|
|
||||||
|
|
@ -56,6 +55,9 @@
|
||||||
/bin/GuiConfigs/*.dat
|
/bin/GuiConfigs/*.dat
|
||||||
/bin/GuiConfigs/*.dat.*
|
/bin/GuiConfigs/*.dat.*
|
||||||
|
|
||||||
|
# Some data from git
|
||||||
|
!/bin/git/
|
||||||
|
|
||||||
# Visual Studio Files
|
# Visual Studio Files
|
||||||
.vs/*
|
.vs/*
|
||||||
.vscode/*
|
.vscode/*
|
||||||
|
|
|
||||||
8
.gitmodules
vendored
8
.gitmodules
vendored
|
|
@ -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"]
|
||||||
|
|
@ -106,9 +106,5 @@
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
[submodule "3rdparty/GPUOpen/VulkanMemoryAllocator"]
|
[submodule "3rdparty/GPUOpen/VulkanMemoryAllocator"]
|
||||||
path = 3rdparty/GPUOpen/VulkanMemoryAllocator
|
path = 3rdparty/GPUOpen/VulkanMemoryAllocator
|
||||||
url = ../../GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git
|
url = ../../Megamouse/VulkanMemoryAllocator.git
|
||||||
ignore = dirty
|
|
||||||
[submodule "3rdparty/feralinteractive/feralinteractive"]
|
|
||||||
path = 3rdparty/feralinteractive/feralinteractive
|
|
||||||
url = ../../FeralInteractive/gamemode.git
|
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
|
|
|
||||||
2
3rdparty/7zip/7zip
vendored
2
3rdparty/7zip/7zip
vendored
|
|
@ -1 +1 @@
|
||||||
Subproject commit 5e96a8279489832924056b1fa82f29d5837c9469
|
Subproject commit e5431fa6f5505e385c6f9367260717e9c47dc2ee
|
||||||
99
3rdparty/CMakeLists.txt
vendored
99
3rdparty/CMakeLists.txt
vendored
|
|
@ -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)
|
||||||
|
|
@ -136,14 +131,7 @@ add_subdirectory(stblib)
|
||||||
add_subdirectory(discord-rpc)
|
add_subdirectory(discord-rpc)
|
||||||
|
|
||||||
# Cubeb
|
# Cubeb
|
||||||
if(USE_SYSTEM_CUBEB)
|
add_subdirectory(cubeb EXCLUDE_FROM_ALL)
|
||||||
find_package(cubeb REQUIRED GLOBAL)
|
|
||||||
message(STATUS "Using system cubeb version '${cubeb_VERSION}'")
|
|
||||||
add_library(3rdparty::cubeb ALIAS cubeb::cubeb)
|
|
||||||
else()
|
|
||||||
message(STATUS "Using static cubeb from 3rdparty")
|
|
||||||
add_subdirectory(cubeb EXCLUDE_FROM_ALL)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# SoundTouch
|
# SoundTouch
|
||||||
add_subdirectory(SoundTouch EXCLUDE_FROM_ALL)
|
add_subdirectory(SoundTouch EXCLUDE_FROM_ALL)
|
||||||
|
|
@ -205,6 +193,9 @@ if(USE_VULKAN)
|
||||||
if (WAYLAND_FOUND)
|
if (WAYLAND_FOUND)
|
||||||
target_include_directories(3rdparty_vulkan
|
target_include_directories(3rdparty_vulkan
|
||||||
INTERFACE ${WAYLAND_INCLUDE_DIR})
|
INTERFACE ${WAYLAND_INCLUDE_DIR})
|
||||||
|
|
||||||
|
target_compile_definitions(3rdparty_vulkan
|
||||||
|
INTERFACE -DVK_USE_PLATFORM_WAYLAND_KHR)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
@ -220,29 +211,6 @@ endif()
|
||||||
# AsmJit
|
# AsmJit
|
||||||
add_subdirectory(asmjit EXCLUDE_FROM_ALL)
|
add_subdirectory(asmjit EXCLUDE_FROM_ALL)
|
||||||
|
|
||||||
# SDL3
|
|
||||||
set(SDL3_TARGET 3rdparty_dummy_lib)
|
|
||||||
if(USE_SDL)
|
|
||||||
if(USE_SYSTEM_SDL)
|
|
||||||
find_package(SDL3)
|
|
||||||
if(SDL3_FOUND AND SDL3_VERSION VERSION_GREATER_EQUAL 3.2.0)
|
|
||||||
message(STATUS "Using system SDL3 version '${SDL3_VERSION}'")
|
|
||||||
add_library(3rdparty_sdl3 INTERFACE)
|
|
||||||
target_compile_definitions(3rdparty_sdl3 INTERFACE -DHAVE_SDL3=1)
|
|
||||||
target_link_libraries(3rdparty_sdl3 INTERFACE SDL3::SDL3)
|
|
||||||
set(SDL3_TARGET 3rdparty_sdl3)
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "SDL3 is not available on this system")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
message(STATUS "Using static SDL3 from 3rdparty")
|
|
||||||
add_subdirectory(libsdl-org EXCLUDE_FROM_ALL)
|
|
||||||
target_compile_definitions(SDL3-static INTERFACE -DHAVE_SDL3=1)
|
|
||||||
set(SDL3_TARGET SDL3-static)
|
|
||||||
set(SDL3_DIR "${CMAKE_CURRENT_BINARY_DIR}/libsdl-org/SDL" CACHE STRING "")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# OpenAL
|
# OpenAL
|
||||||
if (NOT ANDROID)
|
if (NOT ANDROID)
|
||||||
add_subdirectory(OpenAL EXCLUDE_FROM_ALL)
|
add_subdirectory(OpenAL EXCLUDE_FROM_ALL)
|
||||||
|
|
@ -257,31 +225,31 @@ if(USE_FAUDIO)
|
||||||
# FAudio depends on SDL3
|
# FAudio depends on SDL3
|
||||||
find_package(SDL3)
|
find_package(SDL3)
|
||||||
if (USE_SYSTEM_FAUDIO)
|
if (USE_SYSTEM_FAUDIO)
|
||||||
if (SDL3_FOUND AND SDL3_VERSION VERSION_GREATER_EQUAL 3.2.0)
|
if (NOT SDL3_FOUND OR SDL3_VERSION VERSION_LESS 3.2.0)
|
||||||
|
message(WARNING
|
||||||
|
"RPCS3: System 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.")
|
||||||
|
set(USE_FAUDIO OFF CACHE BOOL "Disabled using system FAudio with SDL < 3.2.0" FORCE)
|
||||||
|
else()
|
||||||
message(STATUS "RPCS3: Using system FAudio")
|
message(STATUS "RPCS3: Using system FAudio")
|
||||||
find_package(FAudio REQUIRED CONFIGS FAudioConfig.cmake FAudio-config.cmake)
|
find_package(FAudio REQUIRED CONFIGS FAudioConfig.cmake FAudio-config.cmake)
|
||||||
add_library(3rdparty_FAudio INTERFACE)
|
add_library(3rdparty_FAudio INTERFACE)
|
||||||
target_link_libraries(3rdparty_FAudio INTERFACE FAudio)
|
target_link_libraries(3rdparty_FAudio INTERFACE FAudio)
|
||||||
target_compile_definitions(3rdparty_FAudio INTERFACE -DHAVE_FAUDIO)
|
target_compile_definitions(3rdparty_FAudio INTERFACE -DHAVE_FAUDIO)
|
||||||
set(FAUDIO_TARGET 3rdparty_FAudio)
|
set(FAUDIO_TARGET 3rdparty_FAudio)
|
||||||
else()
|
|
||||||
message(WARNING
|
|
||||||
"RPCS3: System 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.")
|
|
||||||
set(USE_FAUDIO OFF CACHE BOOL "Disabled using system FAudio with SDL < 3.2.0" FORCE)
|
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
if (SDL3_FOUND AND SDL3_VERSION VERSION_GREATER_EQUAL 3.2.0)
|
if (NOT SDL3_FOUND OR SDL3_VERSION VERSION_LESS 3.2.0)
|
||||||
|
message(WARNING
|
||||||
|
"-- 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.")
|
||||||
|
set(USE_FAUDIO OFF CACHE BOOL "Disabled FAudio with SDL < 3.2.0" FORCE)
|
||||||
|
else()
|
||||||
message(STATUS "RPCS3: Using builtin FAudio")
|
message(STATUS "RPCS3: Using builtin FAudio")
|
||||||
set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared library")
|
set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared library")
|
||||||
add_subdirectory(FAudio EXCLUDE_FROM_ALL)
|
add_subdirectory(FAudio EXCLUDE_FROM_ALL)
|
||||||
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()
|
|
||||||
message(WARNING
|
|
||||||
"-- 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.")
|
|
||||||
set(USE_FAUDIO OFF CACHE BOOL "Disabled FAudio with SDL < 3.2.0" FORCE)
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
@ -350,6 +318,29 @@ add_subdirectory(wolfssl EXCLUDE_FROM_ALL)
|
||||||
# CURL
|
# CURL
|
||||||
add_subdirectory(curl EXCLUDE_FROM_ALL)
|
add_subdirectory(curl EXCLUDE_FROM_ALL)
|
||||||
|
|
||||||
|
# SDL3
|
||||||
|
set(SDL3_TARGET 3rdparty_dummy_lib)
|
||||||
|
if(USE_SDL)
|
||||||
|
if(USE_SYSTEM_SDL)
|
||||||
|
find_package(SDL3)
|
||||||
|
if(SDL3_FOUND AND NOT SDL3_VERSION VERSION_LESS 3.2.0)
|
||||||
|
message(STATUS "Using system SDL3 version '${SDL3_VERSION}'")
|
||||||
|
add_library(3rdparty_sdl3 INTERFACE)
|
||||||
|
target_compile_definitions(3rdparty_sdl3 INTERFACE -DHAVE_SDL3=1)
|
||||||
|
target_link_libraries(3rdparty_sdl3 INTERFACE SDL3::SDL3)
|
||||||
|
set(SDL3_TARGET 3rdparty_sdl3)
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "SDL3 is not available on this system")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
message(STATUS "Using static SDL3 from 3rdparty")
|
||||||
|
add_library(3rdparty_sdl3 INTERFACE)
|
||||||
|
target_compile_definitions(3rdparty_sdl3 INTERFACE -DHAVE_SDL3=1)
|
||||||
|
add_subdirectory(libsdl-org EXCLUDE_FROM_ALL)
|
||||||
|
set(SDL3_TARGET 3rdparty_sdl3)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
# MINIUPNP
|
# MINIUPNP
|
||||||
add_subdirectory(miniupnp EXCLUDE_FROM_ALL)
|
add_subdirectory(miniupnp EXCLUDE_FROM_ALL)
|
||||||
|
|
||||||
|
|
@ -362,9 +353,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 +381,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
2
3rdparty/FAudio
vendored
|
|
@ -1 +1 @@
|
||||||
Subproject commit 4ea8afea6ba857c24e40877f487d000d559b196d
|
Subproject commit 486e33eef3f282e4ce3d29f32ded3e67bacdbe5c
|
||||||
51
3rdparty/GL/glext.h
vendored
51
3rdparty/GL/glext.h
vendored
|
|
@ -32,7 +32,7 @@ extern "C" {
|
||||||
#define GLAPI extern
|
#define GLAPI extern
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define GL_GLEXT_VERSION 20250203
|
#define GL_GLEXT_VERSION 20220530
|
||||||
|
|
||||||
#include <KHR/khrplatform.h>
|
#include <KHR/khrplatform.h>
|
||||||
|
|
||||||
|
|
@ -5397,12 +5397,12 @@ typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severi
|
||||||
typedef void (APIENTRYP PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
|
typedef void (APIENTRYP PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
|
||||||
typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf);
|
typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf);
|
||||||
typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void *userParam);
|
typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void *userParam);
|
||||||
typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufSize, GLenum *categories, GLenum *severities, GLuint *ids, GLsizei *lengths, GLchar *message);
|
typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufSize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message);
|
||||||
#ifdef GL_GLEXT_PROTOTYPES
|
#ifdef GL_GLEXT_PROTOTYPES
|
||||||
GLAPI void APIENTRY glDebugMessageEnableAMD (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
|
GLAPI void APIENTRY glDebugMessageEnableAMD (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
|
||||||
GLAPI void APIENTRY glDebugMessageInsertAMD (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf);
|
GLAPI void APIENTRY glDebugMessageInsertAMD (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf);
|
||||||
GLAPI void APIENTRY glDebugMessageCallbackAMD (GLDEBUGPROCAMD callback, void *userParam);
|
GLAPI void APIENTRY glDebugMessageCallbackAMD (GLDEBUGPROCAMD callback, void *userParam);
|
||||||
GLAPI GLuint APIENTRY glGetDebugMessageLogAMD (GLuint count, GLsizei bufSize, GLenum *categories, GLenum *severities, GLuint *ids, GLsizei *lengths, GLchar *message);
|
GLAPI GLuint APIENTRY glGetDebugMessageLogAMD (GLuint count, GLsizei bufSize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message);
|
||||||
#endif
|
#endif
|
||||||
#endif /* GL_AMD_debug_output */
|
#endif /* GL_AMD_debug_output */
|
||||||
|
|
||||||
|
|
@ -7370,16 +7370,6 @@ GLAPI void APIENTRY glBlitFramebufferEXT (GLint srcX0, GLint srcY0, GLint srcX1,
|
||||||
#endif
|
#endif
|
||||||
#endif /* GL_EXT_framebuffer_blit */
|
#endif /* GL_EXT_framebuffer_blit */
|
||||||
|
|
||||||
#ifndef GL_EXT_framebuffer_blit_layers
|
|
||||||
#define GL_EXT_framebuffer_blit_layers 1
|
|
||||||
typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERLAYERSEXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
|
|
||||||
typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERLAYEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint srcLayer, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLint dstLayer, GLbitfield mask, GLenum filter);
|
|
||||||
#ifdef GL_GLEXT_PROTOTYPES
|
|
||||||
GLAPI void APIENTRY glBlitFramebufferLayersEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
|
|
||||||
GLAPI void APIENTRY glBlitFramebufferLayerEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint srcLayer, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLint dstLayer, GLbitfield mask, GLenum filter);
|
|
||||||
#endif
|
|
||||||
#endif /* GL_EXT_framebuffer_blit_layers */
|
|
||||||
|
|
||||||
#ifndef GL_EXT_framebuffer_multisample
|
#ifndef GL_EXT_framebuffer_multisample
|
||||||
#define GL_EXT_framebuffer_multisample 1
|
#define GL_EXT_framebuffer_multisample 1
|
||||||
#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
|
#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
|
||||||
|
|
@ -9404,11 +9394,6 @@ GLAPI void APIENTRY glResizeBuffersMESA (void);
|
||||||
#define GL_MESA_shader_integer_functions 1
|
#define GL_MESA_shader_integer_functions 1
|
||||||
#endif /* GL_MESA_shader_integer_functions */
|
#endif /* GL_MESA_shader_integer_functions */
|
||||||
|
|
||||||
#ifndef GL_MESA_texture_const_bandwidth
|
|
||||||
#define GL_MESA_texture_const_bandwidth 1
|
|
||||||
#define GL_CONST_BW_TILING_MESA 0x8BBE
|
|
||||||
#endif /* GL_MESA_texture_const_bandwidth */
|
|
||||||
|
|
||||||
#ifndef GL_MESA_tile_raster_order
|
#ifndef GL_MESA_tile_raster_order
|
||||||
#define GL_MESA_tile_raster_order 1
|
#define GL_MESA_tile_raster_order 1
|
||||||
#define GL_TILE_RASTER_ORDER_FIXED_MESA 0x8BB8
|
#define GL_TILE_RASTER_ORDER_FIXED_MESA 0x8BB8
|
||||||
|
|
@ -10263,6 +10248,12 @@ typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s,
|
||||||
typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v);
|
typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v);
|
||||||
typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
|
typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
|
||||||
typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v);
|
typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v);
|
||||||
|
typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog);
|
||||||
|
typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog);
|
||||||
|
typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
|
||||||
|
typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v);
|
||||||
|
typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight);
|
||||||
|
typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight);
|
||||||
typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x);
|
typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x);
|
||||||
typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v);
|
typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v);
|
||||||
typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y);
|
typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y);
|
||||||
|
|
@ -10275,12 +10266,6 @@ typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, c
|
||||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
|
typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
|
||||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
|
typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
|
||||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
|
typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
|
||||||
typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog);
|
|
||||||
typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog);
|
|
||||||
typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
|
|
||||||
typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v);
|
|
||||||
typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight);
|
|
||||||
typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight);
|
|
||||||
#ifdef GL_GLEXT_PROTOTYPES
|
#ifdef GL_GLEXT_PROTOTYPES
|
||||||
GLAPI void APIENTRY glVertex2hNV (GLhalfNV x, GLhalfNV y);
|
GLAPI void APIENTRY glVertex2hNV (GLhalfNV x, GLhalfNV y);
|
||||||
GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *v);
|
GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *v);
|
||||||
|
|
@ -10310,6 +10295,12 @@ GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum target, GLhalfNV s, GLhalfNV t,
|
||||||
GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum target, const GLhalfNV *v);
|
GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum target, const GLhalfNV *v);
|
||||||
GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
|
GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
|
||||||
GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum target, const GLhalfNV *v);
|
GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum target, const GLhalfNV *v);
|
||||||
|
GLAPI void APIENTRY glFogCoordhNV (GLhalfNV fog);
|
||||||
|
GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *fog);
|
||||||
|
GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
|
||||||
|
GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *v);
|
||||||
|
GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV weight);
|
||||||
|
GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *weight);
|
||||||
GLAPI void APIENTRY glVertexAttrib1hNV (GLuint index, GLhalfNV x);
|
GLAPI void APIENTRY glVertexAttrib1hNV (GLuint index, GLhalfNV x);
|
||||||
GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint index, const GLhalfNV *v);
|
GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint index, const GLhalfNV *v);
|
||||||
GLAPI void APIENTRY glVertexAttrib2hNV (GLuint index, GLhalfNV x, GLhalfNV y);
|
GLAPI void APIENTRY glVertexAttrib2hNV (GLuint index, GLhalfNV x, GLhalfNV y);
|
||||||
|
|
@ -10322,12 +10313,6 @@ GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint index, GLsizei n, const GLhalfN
|
||||||
GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
|
GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
|
||||||
GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
|
GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
|
||||||
GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
|
GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
|
||||||
GLAPI void APIENTRY glFogCoordhNV (GLhalfNV fog);
|
|
||||||
GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *fog);
|
|
||||||
GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
|
|
||||||
GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *v);
|
|
||||||
GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV weight);
|
|
||||||
GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *weight);
|
|
||||||
#endif
|
#endif
|
||||||
#endif /* GL_NV_half_float */
|
#endif /* GL_NV_half_float */
|
||||||
|
|
||||||
|
|
@ -11464,10 +11449,6 @@ GLAPI void APIENTRY glDrawTransformFeedbackNV (GLenum mode, GLuint id);
|
||||||
#endif
|
#endif
|
||||||
#endif /* GL_NV_transform_feedback2 */
|
#endif /* GL_NV_transform_feedback2 */
|
||||||
|
|
||||||
#ifndef GL_NV_uniform_buffer_std430_layout
|
|
||||||
#define GL_NV_uniform_buffer_std430_layout 1
|
|
||||||
#endif /* GL_NV_uniform_buffer_std430_layout */
|
|
||||||
|
|
||||||
#ifndef GL_NV_uniform_buffer_unified_memory
|
#ifndef GL_NV_uniform_buffer_unified_memory
|
||||||
#define GL_NV_uniform_buffer_unified_memory 1
|
#define GL_NV_uniform_buffer_unified_memory 1
|
||||||
#define GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E
|
#define GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E
|
||||||
|
|
@ -11983,10 +11964,8 @@ GLAPI void APIENTRY glViewportSwizzleNV (GLuint index, GLenum swizzlex, GLenum s
|
||||||
#define GL_MAX_VIEWS_OVR 0x9631
|
#define GL_MAX_VIEWS_OVR 0x9631
|
||||||
#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633
|
#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633
|
||||||
typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
|
typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
|
||||||
typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
|
|
||||||
#ifdef GL_GLEXT_PROTOTYPES
|
#ifdef GL_GLEXT_PROTOTYPES
|
||||||
GLAPI void APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
|
GLAPI void APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
|
||||||
GLAPI void APIENTRY glNamedFramebufferTextureMultiviewOVR (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
|
|
||||||
#endif
|
#endif
|
||||||
#endif /* GL_OVR_multiview */
|
#endif /* GL_OVR_multiview */
|
||||||
|
|
||||||
|
|
|
||||||
2
3rdparty/GPUOpen/VulkanMemoryAllocator
vendored
2
3rdparty/GPUOpen/VulkanMemoryAllocator
vendored
|
|
@ -1 +1 @@
|
||||||
Subproject commit 1d8f600fd424278486eade7ed3e877c99f0846b1
|
Subproject commit 37064843398c69cc0ca7f8cf5b33128c03a2bd74
|
||||||
3
3rdparty/MoltenVK/CMakeLists.txt
vendored
3
3rdparty/MoltenVK/CMakeLists.txt
vendored
|
|
@ -1,9 +1,10 @@
|
||||||
|
cmake_minimum_required(VERSION 2.8.12)
|
||||||
project(moltenvk NONE)
|
project(moltenvk NONE)
|
||||||
include(ExternalProject)
|
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 81541f6
|
||||||
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
|
||||||
|
|
|
||||||
1
3rdparty/OpenAL/CMakeLists.txt
vendored
1
3rdparty/OpenAL/CMakeLists.txt
vendored
|
|
@ -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)
|
||||||
|
|
|
||||||
2
3rdparty/OpenAL/openal-soft
vendored
2
3rdparty/OpenAL/openal-soft
vendored
|
|
@ -1 +1 @@
|
||||||
Subproject commit 0e5e98e4ac8adae92e4f7653dd6eee17aa9c8791
|
Subproject commit 90191edd20bb877c5cbddfdac7ec0fe49ad93727
|
||||||
6
3rdparty/OpenAL/openal-soft.vcxproj
vendored
6
3rdparty/OpenAL/openal-soft.vcxproj
vendored
|
|
@ -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>
|
||||||
2
3rdparty/SoundTouch/soundtouch
vendored
2
3rdparty/SoundTouch/soundtouch
vendored
|
|
@ -1 +1 @@
|
||||||
Subproject commit 3982730833b6daefe77dcfb32b5c282851640c17
|
Subproject commit 394e1f58b23dc80599214d2e9b6a5e0dfd0bbe07
|
||||||
2
3rdparty/cubeb/cubeb
vendored
2
3rdparty/cubeb/cubeb
vendored
|
|
@ -1 +1 @@
|
||||||
Subproject commit e495bee4cd630c9f99907a764e16edba37a4b564
|
Subproject commit 70b4e3db7822de4d534959885cda109d6edbee36
|
||||||
4
3rdparty/curl/CMakeLists.txt
vendored
4
3rdparty/curl/CMakeLists.txt
vendored
|
|
@ -26,8 +26,8 @@ else()
|
||||||
endif()
|
endif()
|
||||||
set(CURL_USE_LIBSSH2 OFF CACHE BOOL "Use libSSH2")
|
set(CURL_USE_LIBSSH2 OFF CACHE BOOL "Use libSSH2")
|
||||||
set(CURL_USE_LIBPSL OFF CACHE BOOL "Use libPSL")
|
set(CURL_USE_LIBPSL OFF CACHE BOOL "Use libPSL")
|
||||||
option(BUILD_TESTING "Build tests" OFF)
|
|
||||||
option(BUILD_EXAMPLES "Build libcurl examples" OFF)
|
set(CURL_DISABLE_TESTS ON)
|
||||||
|
|
||||||
add_subdirectory(curl EXCLUDE_FROM_ALL)
|
add_subdirectory(curl EXCLUDE_FROM_ALL)
|
||||||
|
|
||||||
|
|
|
||||||
2
3rdparty/curl/curl
vendored
2
3rdparty/curl/curl
vendored
|
|
@ -1 +1 @@
|
||||||
Subproject commit 400fffa90f30c7a2dc762fa33009d24851bd2016
|
Subproject commit 57495c64871d18905a0941db9196ef90bafe9a29
|
||||||
104
3rdparty/curl/libcurl.vcxproj
vendored
104
3rdparty/curl/libcurl.vcxproj
vendored
|
|
@ -62,45 +62,29 @@
|
||||||
<ClCompile Include="curl\lib\altsvc.c" />
|
<ClCompile Include="curl\lib\altsvc.c" />
|
||||||
<ClCompile Include="curl\lib\amigaos.c" />
|
<ClCompile Include="curl\lib\amigaos.c" />
|
||||||
<ClCompile Include="curl\lib\asyn-ares.c" />
|
<ClCompile Include="curl\lib\asyn-ares.c" />
|
||||||
<ClCompile Include="curl\lib\asyn-base.c" />
|
<ClCompile Include="curl\lib\asyn-thread.c" />
|
||||||
<ClCompile Include="curl\lib\asyn-thrdd.c" />
|
<ClCompile Include="curl\lib\base64.c" />
|
||||||
<ClCompile Include="curl\lib\bufq.c" />
|
<ClCompile Include="curl\lib\bufq.c" />
|
||||||
<ClCompile Include="curl\lib\bufref.c" />
|
<ClCompile Include="curl\lib\bufref.c" />
|
||||||
<ClCompile Include="curl\lib\cf-h1-proxy.c" />
|
<ClCompile Include="curl\lib\cf-h1-proxy.c" />
|
||||||
<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" />
|
||||||
<ClCompile Include="curl\lib\connect.c" />
|
<ClCompile Include="curl\lib\connect.c" />
|
||||||
<ClCompile Include="curl\lib\content_encoding.c" />
|
<ClCompile Include="curl\lib\content_encoding.c" />
|
||||||
<ClCompile Include="curl\lib\cookie.c" />
|
<ClCompile Include="curl\lib\cookie.c" />
|
||||||
<ClCompile Include="curl\lib\cshutdn.c" />
|
|
||||||
<ClCompile Include="curl\lib\curlx\base64.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\multibyte.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\timediff.c" />
|
|
||||||
<ClCompile Include="curl\lib\curlx\timeval.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\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" />
|
||||||
<ClCompile Include="curl\lib\curl_memrchr.c" />
|
<ClCompile Include="curl\lib\curl_memrchr.c" />
|
||||||
|
<ClCompile Include="curl\lib\curl_multibyte.c" />
|
||||||
<ClCompile Include="curl\lib\curl_ntlm_core.c" />
|
<ClCompile Include="curl\lib\curl_ntlm_core.c" />
|
||||||
<ClCompile Include="curl\lib\curl_range.c" />
|
<ClCompile Include="curl\lib\curl_range.c" />
|
||||||
<ClCompile Include="curl\lib\curl_rtmp.c" />
|
<ClCompile Include="curl\lib\curl_rtmp.c" />
|
||||||
|
|
@ -110,18 +94,17 @@
|
||||||
<ClCompile Include="curl\lib\curl_threads.c" />
|
<ClCompile Include="curl\lib\curl_threads.c" />
|
||||||
<ClCompile Include="curl\lib\curl_trc.c" />
|
<ClCompile Include="curl\lib\curl_trc.c" />
|
||||||
<ClCompile Include="curl\lib\cw-out.c" />
|
<ClCompile Include="curl\lib\cw-out.c" />
|
||||||
<ClCompile Include="curl\lib\cw-pause.c" />
|
|
||||||
<ClCompile Include="curl\lib\dict.c" />
|
<ClCompile Include="curl\lib\dict.c" />
|
||||||
<ClCompile Include="curl\lib\dllmain.c" />
|
|
||||||
<ClCompile Include="curl\lib\doh.c" />
|
<ClCompile Include="curl\lib\doh.c" />
|
||||||
|
<ClCompile Include="curl\lib\dynbuf.c" />
|
||||||
<ClCompile Include="curl\lib\dynhds.c" />
|
<ClCompile Include="curl\lib\dynhds.c" />
|
||||||
<ClCompile Include="curl\lib\easy.c" />
|
<ClCompile Include="curl\lib\easy.c" />
|
||||||
<ClCompile Include="curl\lib\easygetopt.c" />
|
<ClCompile Include="curl\lib\easygetopt.c" />
|
||||||
<ClCompile Include="curl\lib\easyoptions.c" />
|
<ClCompile Include="curl\lib\easyoptions.c" />
|
||||||
<ClCompile Include="curl\lib\escape.c" />
|
<ClCompile Include="curl\lib\escape.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" />
|
||||||
|
|
@ -131,9 +114,11 @@
|
||||||
<ClCompile Include="curl\lib\hash.c" />
|
<ClCompile Include="curl\lib\hash.c" />
|
||||||
<ClCompile Include="curl\lib\headers.c" />
|
<ClCompile Include="curl\lib\headers.c" />
|
||||||
<ClCompile Include="curl\lib\hmac.c" />
|
<ClCompile Include="curl\lib\hmac.c" />
|
||||||
|
<ClCompile Include="curl\lib\hostasyn.c" />
|
||||||
<ClCompile Include="curl\lib\hostip.c" />
|
<ClCompile Include="curl\lib\hostip.c" />
|
||||||
<ClCompile Include="curl\lib\hostip4.c" />
|
<ClCompile Include="curl\lib\hostip4.c" />
|
||||||
<ClCompile Include="curl\lib\hostip6.c" />
|
<ClCompile Include="curl\lib\hostip6.c" />
|
||||||
|
<ClCompile Include="curl\lib\hostsyn.c" />
|
||||||
<ClCompile Include="curl\lib\hsts.c" />
|
<ClCompile Include="curl\lib\hsts.c" />
|
||||||
<ClCompile Include="curl\lib\http.c" />
|
<ClCompile Include="curl\lib\http.c" />
|
||||||
<ClCompile Include="curl\lib\http1.c" />
|
<ClCompile Include="curl\lib\http1.c" />
|
||||||
|
|
@ -148,9 +133,11 @@
|
||||||
<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\inet_pton.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\md4.c" />
|
<ClCompile Include="curl\lib\md4.c" />
|
||||||
<ClCompile Include="curl\lib\md5.c" />
|
<ClCompile Include="curl\lib\md5.c" />
|
||||||
<ClCompile Include="curl\lib\memdebug.c" />
|
<ClCompile Include="curl\lib\memdebug.c" />
|
||||||
|
|
@ -158,9 +145,8 @@
|
||||||
<ClCompile Include="curl\lib\mprintf.c" />
|
<ClCompile Include="curl\lib\mprintf.c" />
|
||||||
<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_ntfy.c" />
|
|
||||||
<ClCompile Include="curl\lib\netrc.c" />
|
<ClCompile Include="curl\lib\netrc.c" />
|
||||||
|
<ClCompile Include="curl\lib\nonblock.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" />
|
||||||
<ClCompile Include="curl\lib\parsedate.c" />
|
<ClCompile Include="curl\lib\parsedate.c" />
|
||||||
|
|
@ -188,29 +174,31 @@
|
||||||
<ClCompile Include="curl\lib\splay.c" />
|
<ClCompile Include="curl\lib\splay.c" />
|
||||||
<ClCompile Include="curl\lib\strcase.c" />
|
<ClCompile Include="curl\lib\strcase.c" />
|
||||||
<ClCompile Include="curl\lib\strdup.c" />
|
<ClCompile Include="curl\lib\strdup.c" />
|
||||||
<ClCompile Include="curl\lib\strequal.c" />
|
|
||||||
<ClCompile Include="curl\lib\strerror.c" />
|
<ClCompile Include="curl\lib\strerror.c" />
|
||||||
|
<ClCompile Include="curl\lib\strparse.c" />
|
||||||
|
<ClCompile Include="curl\lib\strtok.c" />
|
||||||
|
<ClCompile Include="curl\lib\strtoofft.c" />
|
||||||
<ClCompile Include="curl\lib\system_win32.c" />
|
<ClCompile Include="curl\lib\system_win32.c" />
|
||||||
<ClCompile Include="curl\lib\telnet.c" />
|
<ClCompile Include="curl\lib\telnet.c" />
|
||||||
<ClCompile Include="curl\lib\tftp.c" />
|
<ClCompile Include="curl\lib\tftp.c" />
|
||||||
|
<ClCompile Include="curl\lib\timediff.c" />
|
||||||
|
<ClCompile Include="curl\lib\timeval.c" />
|
||||||
<ClCompile Include="curl\lib\transfer.c" />
|
<ClCompile Include="curl\lib\transfer.c" />
|
||||||
<ClCompile Include="curl\lib\uint-bset.c" />
|
|
||||||
<ClCompile Include="curl\lib\uint-hash.c" />
|
|
||||||
<ClCompile Include="curl\lib\uint-spbset.c" />
|
|
||||||
<ClCompile Include="curl\lib\uint-table.c" />
|
|
||||||
<ClCompile Include="curl\lib\url.c" />
|
<ClCompile Include="curl\lib\url.c" />
|
||||||
<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\version_win32.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" />
|
||||||
<ClCompile Include="curl\lib\vtls\vtls_scache.c" />
|
<ClCompile Include="curl\lib\vtls\vtls_scache.c" />
|
||||||
<ClCompile Include="curl\lib\vtls\vtls_spack.c" />
|
<ClCompile Include="curl\lib\vtls\vtls_spack.c" />
|
||||||
<ClCompile Include="curl\lib\vtls\x509asn1.c" />
|
<ClCompile Include="curl\lib\vtls\x509asn1.c" />
|
||||||
|
<ClCompile Include="curl\lib\warnless.c" />
|
||||||
<ClCompile Include="curl\lib\vauth\cleartext.c" />
|
<ClCompile Include="curl\lib\vauth\cleartext.c" />
|
||||||
<ClCompile Include="curl\lib\vauth\cram.c" />
|
<ClCompile Include="curl\lib\vauth\cram.c" />
|
||||||
<ClCompile Include="curl\lib\vauth\digest.c" />
|
<ClCompile Include="curl\lib\vauth\digest.c" />
|
||||||
|
|
@ -227,6 +215,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 +224,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 +249,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" />
|
||||||
|
|
@ -270,39 +260,24 @@
|
||||||
<ClInclude Include="curl\lib\connect.h" />
|
<ClInclude Include="curl\lib\connect.h" />
|
||||||
<ClInclude Include="curl\lib\content_encoding.h" />
|
<ClInclude Include="curl\lib\content_encoding.h" />
|
||||||
<ClInclude Include="curl\lib\cookie.h" />
|
<ClInclude Include="curl\lib\cookie.h" />
|
||||||
<ClInclude Include="curl\lib\cshutdn.h" />
|
<ClInclude Include="curl\lib\curlx.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\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\multibyte.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\timediff.h" />
|
|
||||||
<ClInclude Include="curl\lib\curlx\timeval.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\winapi.h" />
|
|
||||||
<ClInclude Include="curl\lib\curl_addrinfo.h" />
|
<ClInclude Include="curl\lib\curl_addrinfo.h" />
|
||||||
|
<ClInclude Include="curl\lib\curl_base64.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_multibyte.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" />
|
||||||
|
|
@ -316,17 +291,17 @@
|
||||||
<ClInclude Include="curl\lib\curl_threads.h" />
|
<ClInclude Include="curl\lib\curl_threads.h" />
|
||||||
<ClInclude Include="curl\lib\curl_trc.h" />
|
<ClInclude Include="curl\lib\curl_trc.h" />
|
||||||
<ClInclude Include="curl\lib\cw-out.h" />
|
<ClInclude Include="curl\lib\cw-out.h" />
|
||||||
<ClInclude Include="curl\lib\cw-pause.h" />
|
|
||||||
<ClInclude Include="curl\lib\dict.h" />
|
<ClInclude Include="curl\lib\dict.h" />
|
||||||
<ClInclude Include="curl\lib\doh.h" />
|
<ClInclude Include="curl\lib\doh.h" />
|
||||||
|
<ClInclude Include="curl\lib\dynbuf.h" />
|
||||||
<ClInclude Include="curl\lib\dynhds.h" />
|
<ClInclude Include="curl\lib\dynhds.h" />
|
||||||
<ClInclude Include="curl\lib\easyif.h" />
|
<ClInclude Include="curl\lib\easyif.h" />
|
||||||
<ClInclude Include="curl\lib\easyoptions.h" />
|
<ClInclude Include="curl\lib\easyoptions.h" />
|
||||||
<ClInclude Include="curl\lib\easy_lock.h" />
|
<ClInclude Include="curl\lib\easy_lock.h" />
|
||||||
<ClInclude Include="curl\lib\escape.h" />
|
<ClInclude Include="curl\lib\escape.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,16 +325,16 @@
|
||||||
<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\inet_pton.h" />
|
||||||
<ClInclude Include="curl\lib\llist.h" />
|
<ClInclude Include="curl\lib\llist.h" />
|
||||||
<ClInclude Include="curl\lib\macos.h" />
|
|
||||||
<ClInclude Include="curl\lib\memdebug.h" />
|
<ClInclude Include="curl\lib\memdebug.h" />
|
||||||
<ClInclude Include="curl\lib\mime.h" />
|
<ClInclude Include="curl\lib\mime.h" />
|
||||||
<ClInclude Include="curl\lib\mqtt.h" />
|
<ClInclude Include="curl\lib\mqtt.h" />
|
||||||
<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_ntfy.h" />
|
|
||||||
<ClInclude Include="curl\lib\netrc.h" />
|
<ClInclude Include="curl\lib\netrc.h" />
|
||||||
|
<ClInclude Include="curl\lib\nonblock.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" />
|
||||||
<ClInclude Include="curl\lib\pingpong.h" />
|
<ClInclude Include="curl\lib\pingpong.h" />
|
||||||
|
|
@ -389,23 +364,23 @@
|
||||||
<ClInclude Include="curl\lib\strcase.h" />
|
<ClInclude Include="curl\lib\strcase.h" />
|
||||||
<ClInclude Include="curl\lib\strdup.h" />
|
<ClInclude Include="curl\lib\strdup.h" />
|
||||||
<ClInclude Include="curl\lib\strerror.h" />
|
<ClInclude Include="curl\lib\strerror.h" />
|
||||||
|
<ClInclude Include="curl\lib\strparse.h" />
|
||||||
<ClInclude Include="curl\lib\strtok.h" />
|
<ClInclude Include="curl\lib\strtok.h" />
|
||||||
<ClInclude Include="curl\lib\strtoofft.h" />
|
<ClInclude Include="curl\lib\strtoofft.h" />
|
||||||
<ClInclude Include="curl\lib\system_win32.h" />
|
<ClInclude Include="curl\lib\system_win32.h" />
|
||||||
<ClInclude Include="curl\lib\telnet.h" />
|
<ClInclude Include="curl\lib\telnet.h" />
|
||||||
<ClInclude Include="curl\lib\tftp.h" />
|
<ClInclude Include="curl\lib\tftp.h" />
|
||||||
|
<ClInclude Include="curl\lib\timediff.h" />
|
||||||
|
<ClInclude Include="curl\lib\timeval.h" />
|
||||||
<ClInclude Include="curl\lib\transfer.h" />
|
<ClInclude Include="curl\lib\transfer.h" />
|
||||||
<ClInclude Include="curl\lib\uint-bset.h" />
|
|
||||||
<ClInclude Include="curl\lib\uint-hash.h" />
|
|
||||||
<ClInclude Include="curl\lib\uint-spbset.h" />
|
|
||||||
<ClInclude Include="curl\lib\uint-table.h" />
|
|
||||||
<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\version_win32.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" />
|
||||||
|
|
@ -414,18 +389,21 @@
|
||||||
<ClInclude Include="curl\lib\vtls\vtls_scache.h" />
|
<ClInclude Include="curl\lib\vtls\vtls_scache.h" />
|
||||||
<ClInclude Include="curl\lib\vtls\vtls_spack.h" />
|
<ClInclude Include="curl\lib\vtls\vtls_spack.h" />
|
||||||
<ClInclude Include="curl\lib\vtls\x509asn1.h" />
|
<ClInclude Include="curl\lib\vtls\x509asn1.h" />
|
||||||
|
<ClInclude Include="curl\lib\warnless.h" />
|
||||||
<ClInclude Include="curl\lib\vauth\digest.h" />
|
<ClInclude Include="curl\lib\vauth\digest.h" />
|
||||||
<ClInclude Include="curl\lib\vauth\ntlm.h" />
|
<ClInclude Include="curl\lib\vauth\ntlm.h" />
|
||||||
<ClInclude Include="curl\lib\vauth\vauth.h" />
|
<ClInclude Include="curl\lib\vauth\vauth.h" />
|
||||||
<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" />
|
||||||
|
|
|
||||||
312
3rdparty/curl/libcurl.vcxproj.filters
vendored
312
3rdparty/curl/libcurl.vcxproj.filters
vendored
|
|
@ -24,6 +24,12 @@
|
||||||
<ClCompile Include="curl\lib\asyn-ares.c">
|
<ClCompile Include="curl\lib\asyn-ares.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="curl\lib\asyn-thread.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="curl\lib\base64.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="curl\lib\bufref.c">
|
<ClCompile Include="curl\lib\bufref.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -42,6 +48,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>
|
||||||
|
|
@ -60,6 +69,9 @@
|
||||||
<ClCompile Include="curl\lib\curl_memrchr.c">
|
<ClCompile Include="curl\lib\curl_memrchr.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="curl\lib\curl_multibyte.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="curl\lib\curl_ntlm_core.c">
|
<ClCompile Include="curl\lib\curl_ntlm_core.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -120,6 +132,9 @@
|
||||||
<ClCompile Include="curl\lib\hmac.c">
|
<ClCompile Include="curl\lib\hmac.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="curl\lib\hostasyn.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="curl\lib\hostip.c">
|
<ClCompile Include="curl\lib\hostip.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -129,6 +144,9 @@
|
||||||
<ClCompile Include="curl\lib\hostip6.c">
|
<ClCompile Include="curl\lib\hostip6.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="curl\lib\hostsyn.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="curl\lib\http.c">
|
<ClCompile Include="curl\lib\http.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -156,6 +174,15 @@
|
||||||
<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\inet_pton.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>
|
||||||
|
|
@ -183,6 +210,9 @@
|
||||||
<ClCompile Include="curl\lib\netrc.c">
|
<ClCompile Include="curl\lib\netrc.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="curl\lib\nonblock.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="curl\lib\openldap.c">
|
<ClCompile Include="curl\lib\openldap.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -261,6 +291,12 @@
|
||||||
<ClCompile Include="curl\lib\strerror.c">
|
<ClCompile Include="curl\lib\strerror.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="curl\lib\strtok.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="curl\lib\strtoofft.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="curl\lib\system_win32.c">
|
<ClCompile Include="curl\lib\system_win32.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -270,6 +306,9 @@
|
||||||
<ClCompile Include="curl\lib\tftp.c">
|
<ClCompile Include="curl\lib\tftp.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="curl\lib\timeval.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="curl\lib\transfer.c">
|
<ClCompile Include="curl\lib\transfer.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -282,6 +321,9 @@
|
||||||
<ClCompile Include="curl\lib\version.c">
|
<ClCompile Include="curl\lib\version.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="curl\lib\warnless.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="curl\lib\vauth\cleartext.c">
|
<ClCompile Include="curl\lib\vauth\cleartext.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -327,6 +369,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,15 +393,24 @@
|
||||||
<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>
|
||||||
<ClCompile Include="curl\lib\vtls\wolfssl.c">
|
<ClCompile Include="curl\lib\vtls\wolfssl.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="curl\lib\dynbuf.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="curl\lib\mqtt.c">
|
<ClCompile Include="curl\lib\mqtt.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="curl\lib\version_win32.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="curl\lib\vquic\vquic.c">
|
<ClCompile Include="curl\lib\vquic\vquic.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -387,6 +444,12 @@
|
||||||
<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\timediff.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</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 +468,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>
|
||||||
|
|
@ -444,6 +510,9 @@
|
||||||
<ClCompile Include="curl\lib\httpsrr.c">
|
<ClCompile Include="curl\lib\httpsrr.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="curl\lib\strparse.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="curl\lib\vtls\cipher_suite.c">
|
<ClCompile Include="curl\lib\vtls\cipher_suite.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -453,102 +522,6 @@
|
||||||
<ClCompile Include="curl\lib\vtls\vtls_spack.c">
|
<ClCompile Include="curl\lib\vtls\vtls_spack.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="curl\lib\cshutdn.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\cw-pause.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\dllmain.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\macos.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\multi_ev.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\strequal.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\asyn-base.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\asyn-thrdd.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\fake_addrinfo.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\uint-bset.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\uint-hash.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\uint-spbset.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\uint-table.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\curlx\base64.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\curlx\dynbuf.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\curlx\inet_pton.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\curlx\multibyte.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\curlx\nonblock.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\curlx\strparse.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\curlx\timediff.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\curlx\timeval.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\curlx\version_win32.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\curlx\warnless.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\curlx\winapi.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</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">
|
||||||
|
|
@ -620,12 +593,21 @@
|
||||||
<ClInclude Include="curl\lib\cookie.h">
|
<ClInclude Include="curl\lib\cookie.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="curl\lib\curlx.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="curl\lib\curl_addrinfo.h">
|
<ClInclude Include="curl\lib\curl_addrinfo.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="curl\lib\curl_base64.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
<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>
|
||||||
|
|
@ -659,6 +641,9 @@
|
||||||
<ClInclude Include="curl\lib\curl_memrchr.h">
|
<ClInclude Include="curl\lib\curl_memrchr.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="curl\lib\curl_multibyte.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="curl\lib\curl_ntlm_core.h">
|
<ClInclude Include="curl\lib\curl_ntlm_core.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -755,6 +740,12 @@
|
||||||
<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\inet_pton.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>
|
||||||
|
|
@ -773,6 +764,9 @@
|
||||||
<ClInclude Include="curl\lib\netrc.h">
|
<ClInclude Include="curl\lib\netrc.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="curl\lib\nonblock.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="curl\lib\parsedate.h">
|
<ClInclude Include="curl\lib\parsedate.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -866,6 +860,9 @@
|
||||||
<ClInclude Include="curl\lib\tftp.h">
|
<ClInclude Include="curl\lib\tftp.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="curl\lib\timeval.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="curl\lib\transfer.h">
|
<ClInclude Include="curl\lib\transfer.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -878,6 +875,9 @@
|
||||||
<ClInclude Include="curl\lib\urldata.h">
|
<ClInclude Include="curl\lib\urldata.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="curl\lib\warnless.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="curl\lib\vauth\digest.h">
|
<ClInclude Include="curl\lib\vauth\digest.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -893,6 +893,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,24 +911,36 @@
|
||||||
<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>
|
||||||
<ClInclude Include="curl\lib\vtls\wolfssl.h">
|
<ClInclude Include="curl\lib\vtls\wolfssl.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="curl\lib\dynbuf.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="curl\lib\mqtt.h">
|
<ClInclude Include="curl\lib\mqtt.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="curl\lib\setup-win32.h">
|
<ClInclude Include="curl\lib\setup-win32.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="curl\lib\version_win32.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="curl\lib\vquic\vquic.h">
|
<ClInclude Include="curl\lib\vquic\vquic.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<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>
|
||||||
|
|
@ -947,9 +962,15 @@
|
||||||
<ClInclude Include="curl\lib\headers.h">
|
<ClInclude Include="curl\lib\headers.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="curl\lib\timediff.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
<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 +992,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>
|
||||||
|
|
@ -1013,6 +1037,9 @@
|
||||||
<ClInclude Include="curl\lib\httpsrr.h">
|
<ClInclude Include="curl\lib\httpsrr.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="curl\lib\strparse.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="curl\lib\vtls\cipher_suite.h">
|
<ClInclude Include="curl\lib\vtls\cipher_suite.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -1028,99 +1055,6 @@
|
||||||
<ClInclude Include="curl\lib\vtls\vtls_spack.h">
|
<ClInclude Include="curl\lib\vtls\vtls_spack.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="curl\lib\cshutdn.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\cw-pause.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\macos.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\multi_ev.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\fake_addrinfo.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\uint-bset.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\uint-hash.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\uint-spbset.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\uint-table.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\curlx\base64.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\curlx\curlx.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\curlx\dynbuf.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\curlx\inet_pton.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\curlx\multibyte.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\curlx\nonblock.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\curlx\strparse.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\curlx\timediff.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\curlx\timeval.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\curlx\version_win32.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\curlx\warnless.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\curlx\winapi.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</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">
|
||||||
|
|
|
||||||
2
3rdparty/discord-rpc/discord-rpc
vendored
2
3rdparty/discord-rpc/discord-rpc
vendored
|
|
@ -1 +1 @@
|
||||||
Subproject commit 3dc2c326cb4dc5815c6069970c13154898f58d48
|
Subproject commit 171b2142ac8acdf016c231e36dc7a8d48daff19c
|
||||||
9
3rdparty/feralinteractive/CMakeLists.txt
vendored
9
3rdparty/feralinteractive/CMakeLists.txt
vendored
|
|
@ -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
3rdparty/feralinteractive/feralinteractive
vendored
1
3rdparty/feralinteractive/feralinteractive
vendored
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit c54d6d4243b0dd0afcb49f2c9836d432da171a2b
|
|
||||||
2
3rdparty/fusion/fusion
vendored
2
3rdparty/fusion/fusion
vendored
|
|
@ -1 +1 @@
|
||||||
Subproject commit 759ac5d698baefca53f1975a0bb1d2dcbdb9f836
|
Subproject commit 066d4a63b2c714b20b0a8073a01fda7c5c6763f6
|
||||||
30
3rdparty/glslang/CMakeLists.txt
vendored
30
3rdparty/glslang/CMakeLists.txt
vendored
|
|
@ -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()
|
|
||||||
|
|
|
||||||
2
3rdparty/glslang/glslang
vendored
2
3rdparty/glslang/glslang
vendored
|
|
@ -1 +1 @@
|
||||||
Subproject commit fc9889c889561c5882e83819dcaffef5ed45529b
|
Subproject commit 36d08c0d940cf307a23928299ef52c7970d8cee6
|
||||||
6
3rdparty/glslang/glslang.vcxproj
vendored
6
3rdparty/glslang/glslang.vcxproj
vendored
|
|
@ -39,15 +39,17 @@
|
||||||
<PropertyGroup Label="UserMacros">
|
<PropertyGroup Label="UserMacros">
|
||||||
<CmakeGenerator>"Visual Studio $(VisualStudioVersion.Substring(0,2))"</CmakeGenerator>
|
<CmakeGenerator>"Visual Studio $(VisualStudioVersion.Substring(0,2))"</CmakeGenerator>
|
||||||
<CmakeReleaseCLI>call vsdevcmd.bat -arch=amd64
|
<CmakeReleaseCLI>call vsdevcmd.bat -arch=amd64
|
||||||
cmake -G $(CmakeGenerator) -A x64 -DCMAKE_BUILD_TYPE="Release" -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DGLSLANG_TESTS=OFF -DENABLE_GLSLANG_BINARIES=OFF -DBUILD_EXTERNAL=OFF -DENABLE_SPVREMAPPER=OFF -DENABLE_HLSL=OFF -DENABLE_OPT=OFF -S glslang -B "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)"
|
cmake -G $(CmakeGenerator) -A x64 -DCMAKE_BUILD_TYPE="Release" -DLLVM_USE_CRT_DEBUG=MDd -DLLVM_USE_CRT_RELEASE=MT -DENABLE_OPT=OFF -S glslang -B "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)"
|
||||||
</CmakeReleaseCLI>
|
</CmakeReleaseCLI>
|
||||||
<CmakeDebugCLI>call vsdevcmd.bat -arch=amd64
|
<CmakeDebugCLI>call vsdevcmd.bat -arch=amd64
|
||||||
cmake -G $(CmakeGenerator) -A x64 -DCMAKE_BUILD_TYPE="Debug" -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebug -DGLSLANG_TESTS=OFF -DENABLE_GLSLANG_BINARIES=OFF -DBUILD_EXTERNAL=OFF -DENABLE_SPVREMAPPER=OFF -DENABLE_HLSL=OFF -DENABLE_OPT=OFF -S glslang -B "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)"
|
cmake -G $(CmakeGenerator) -A x64 -DCMAKE_BUILD_TYPE="Debug" -DLLVM_USE_CRT_DEBUG=MDd -DLLVM_USE_CRT_RELEASE=MT -DENABLE_OPT=OFF -S glslang -B "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)"
|
||||||
</CmakeDebugCLI>
|
</CmakeDebugCLI>
|
||||||
<CmakeCopyCLI>
|
<CmakeCopyCLI>
|
||||||
echo Copying..
|
echo Copying..
|
||||||
mkdir "$(SolutionDir)build\lib\$(Configuration)-$(Platform)\$(ProjectName)"
|
mkdir "$(SolutionDir)build\lib\$(Configuration)-$(Platform)\$(ProjectName)"
|
||||||
|
copy "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)\hlsl\$(CONFIGURATION)\*.lib" "$(SolutionDir)build\lib\$(Configuration)-$(Platform)\$(ProjectName)"
|
||||||
copy "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)\SPIRV\$(CONFIGURATION)\*.lib" "$(SolutionDir)build\lib\$(Configuration)-$(Platform)\$(ProjectName)"
|
copy "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)\SPIRV\$(CONFIGURATION)\*.lib" "$(SolutionDir)build\lib\$(Configuration)-$(Platform)\$(ProjectName)"
|
||||||
|
copy "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)\OGLCompilersDLL\$(CONFIGURATION)\*.lib" "$(SolutionDir)build\lib\$(Configuration)-$(Platform)\$(ProjectName)"
|
||||||
copy "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)\glslang\OSDependent\Windows\$(CONFIGURATION)\*.lib" "$(SolutionDir)build\lib\$(Configuration)-$(Platform)\$(ProjectName)"
|
copy "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)\glslang\OSDependent\Windows\$(CONFIGURATION)\*.lib" "$(SolutionDir)build\lib\$(Configuration)-$(Platform)\$(ProjectName)"
|
||||||
copy "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)\glslang\$(CONFIGURATION)\*.lib" "$(SolutionDir)build\lib\$(Configuration)-$(Platform)\$(ProjectName)"
|
copy "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)\glslang\$(CONFIGURATION)\*.lib" "$(SolutionDir)build\lib\$(Configuration)-$(Platform)\$(ProjectName)"
|
||||||
</CmakeCopyCLI>
|
</CmakeCopyCLI>
|
||||||
|
|
|
||||||
46
3rdparty/hidapi/CMakeLists.txt
vendored
46
3rdparty/hidapi/CMakeLists.txt
vendored
|
|
@ -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()
|
||||||
|
|
|
||||||
2
3rdparty/hidapi/hidapi
vendored
2
3rdparty/hidapi/hidapi
vendored
|
|
@ -1 +1 @@
|
||||||
Subproject commit d6b2a974608dec3b76fb1e36c189f22b9cf3650c
|
Subproject commit 6bfdcf7368169efe1b745cd4468d45cda05ef8de
|
||||||
2
3rdparty/libpng/libpng
vendored
2
3rdparty/libpng/libpng
vendored
|
|
@ -1 +1 @@
|
||||||
Subproject commit 49363adcfaf098748d7a4c8c624ad8c45a8c3a86
|
Subproject commit 872555f4ba910252783af1507f9e7fe1653be252
|
||||||
13
3rdparty/libsdl-org/CMakeLists.txt
vendored
13
3rdparty/libsdl-org/CMakeLists.txt
vendored
|
|
@ -1,4 +1,11 @@
|
||||||
option(SDL_SHARED "Build a shared version of the library" OFF)
|
option(SDL2_DISABLE_SDL2MAIN "" ON)
|
||||||
option(SDL_STATIC "Build a static version of the library" ON)
|
option(SDL2_DISABLE_INSTALL "" ON)
|
||||||
option(SDL_TEST_LIBRARY "Build the SDL3_test library" OFF)
|
option(SDL2_DISABLE_UNINSTALL "" ON)
|
||||||
|
option(SDL_SHARED OFF)
|
||||||
|
set(SDL_SHARED_ENABLED_BY_DEFAULT OFF)
|
||||||
|
option(SDL_STATIC ON)
|
||||||
|
set(SDL_STATIC_ENABLED_BY_DEFAULT ON)
|
||||||
|
option(SDL_TEST OFF)
|
||||||
|
set(SDL_TEST_ENABLED_BY_DEFAULT OFF)
|
||||||
|
set(OPT_DEF_LIBC ON)
|
||||||
add_subdirectory(SDL EXCLUDE_FROM_ALL)
|
add_subdirectory(SDL EXCLUDE_FROM_ALL)
|
||||||
|
|
|
||||||
2
3rdparty/libsdl-org/SDL
vendored
2
3rdparty/libsdl-org/SDL
vendored
|
|
@ -1 +1 @@
|
||||||
Subproject commit 7f3ae3d57459e59943a4ecfefc8f6277ec6bf540
|
Subproject commit f6864924f76e1a0b4abaefc76ae2ed22b1a8916e
|
||||||
3
3rdparty/libsdl-org/SDL.vcxproj
vendored
3
3rdparty/libsdl-org/SDL.vcxproj
vendored
|
|
@ -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" />
|
||||||
|
|
@ -531,6 +532,8 @@
|
||||||
<AdditionalIncludeDirectories>SDL\include;SDL\include\build_config;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>SDL\include;SDL\include\build_config;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<DebugInformationFormat Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">ProgramDatabase</DebugInformationFormat>
|
<DebugInformationFormat Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">ProgramDatabase</DebugInformationFormat>
|
||||||
<Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
|
<Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
|
||||||
|
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">SDL_HIDAPI_DISABLED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">SDL_HIDAPI_DISABLED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
|
|
||||||
6
3rdparty/libsdl-org/SDL.vcxproj.filters
vendored
6
3rdparty/libsdl-org/SDL.vcxproj.filters
vendored
|
|
@ -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>
|
||||||
|
|
|
||||||
2
3rdparty/libusb/CMakeLists.txt
vendored
2
3rdparty/libusb/CMakeLists.txt
vendored
|
|
@ -1,3 +1,5 @@
|
||||||
|
cmake_minimum_required(VERSION 3.0)
|
||||||
|
|
||||||
project(libusb)
|
project(libusb)
|
||||||
|
|
||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules")
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules")
|
||||||
|
|
|
||||||
2
3rdparty/libusb/libusb
vendored
2
3rdparty/libusb/libusb
vendored
|
|
@ -1 +1 @@
|
||||||
Subproject commit 15a7ebb4d426c5ce196684347d2b7cafad862626
|
Subproject commit a61afe5f75d969c4561a1d0ad753aa23cee6329a
|
||||||
6
3rdparty/llvm/CMakeLists.txt
vendored
6
3rdparty/llvm/CMakeLists.txt
vendored
|
|
@ -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()
|
||||||
|
|
||||||
|
|
|
||||||
27
3rdparty/miniupnp/CMakeLists.txt
vendored
27
3rdparty/miniupnp/CMakeLists.txt
vendored
|
|
@ -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()
|
|
||||||
|
|
|
||||||
2
3rdparty/miniupnp/miniupnp
vendored
2
3rdparty/miniupnp/miniupnp
vendored
|
|
@ -1 +1 @@
|
||||||
Subproject commit d66872e34d9ff83a07f8b71371b13419b2089953
|
Subproject commit 7f189988a0decca0ab7da89000051ab91751f70d
|
||||||
2
3rdparty/opencv/opencv
vendored
2
3rdparty/opencv/opencv
vendored
|
|
@ -1 +1 @@
|
||||||
Subproject commit 67f53c26a701c2aeefd8033ec2f2079e04c438ca
|
Subproject commit f76628fb5b25746fcb75a7ce85be0d8c6439fc57
|
||||||
8
3rdparty/qt6.cmake
vendored
8
3rdparty/qt6.cmake
vendored
|
|
@ -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)
|
||||||
|
|
@ -33,7 +32,8 @@ Find the correct ppa at https://launchpad.net/~beineri and follow the instructio
|
||||||
else()
|
else()
|
||||||
message("CMake was unable to find Qt6!")
|
message("CMake was unable to find Qt6!")
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
message(FATAL_ERROR "Make sure the Qt6_ROOT environment variable has been set properly. (for example C:\\Qt\\${QT_MIN_VER}\\msvc2022_64\\)")
|
message(FATAL_ERROR "Make sure the QTDIR env variable has been set properly. (for example C:\\Qt\\${QT_MIN_VER}\\msvc2019_64\\)
|
||||||
|
You can also try setting the Qt6_DIR preprocessor definiton.")
|
||||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
message(FATAL_ERROR "Make sure to install your distro's qt6 package!")
|
message(FATAL_ERROR "Make sure to install your distro's qt6 package!")
|
||||||
else()
|
else()
|
||||||
|
|
|
||||||
2551
3rdparty/robin_hood/include/robin_hood.h
vendored
Normal file
2551
3rdparty/robin_hood/include/robin_hood.h
vendored
Normal file
File diff suppressed because it is too large
Load diff
16
3rdparty/rtmidi/CMakeLists.txt
vendored
16
3rdparty/rtmidi/CMakeLists.txt
vendored
|
|
@ -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()
|
|
||||||
|
|
|
||||||
2101
3rdparty/unordered_dense/include/unordered_dense.h
vendored
2101
3rdparty/unordered_dense/include/unordered_dense.h
vendored
File diff suppressed because it is too large
Load diff
137
3rdparty/version_check.sh
vendored
137
3rdparty/version_check.sh
vendored
|
|
@ -1,137 +0,0 @@
|
||||||
#!/bin/bash -ex
|
|
||||||
|
|
||||||
verbose=0
|
|
||||||
git_verbose=0
|
|
||||||
max_jobs=16
|
|
||||||
|
|
||||||
lockfile="$(pwd)/version_check.lock"
|
|
||||||
resultfile="$(pwd)/version_check_results.txt"
|
|
||||||
|
|
||||||
if [ "$1" = "-v" ]; then
|
|
||||||
verbose=1
|
|
||||||
elif [ "$1" = "-vv" ]; then
|
|
||||||
verbose=1
|
|
||||||
git_verbose=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Limit concurrent jobs
|
|
||||||
job_control()
|
|
||||||
{
|
|
||||||
while [ "$(jobs | wc -l)" -ge "$max_jobs" ]; do
|
|
||||||
sleep 0.1
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
git_call()
|
|
||||||
{
|
|
||||||
if [ "$git_verbose" -eq 1 ]; then
|
|
||||||
eval "git $@"
|
|
||||||
elif [[ "$1" == "fetch" ]]; then
|
|
||||||
eval "git $@ >/dev/null 2>&1"
|
|
||||||
else
|
|
||||||
eval "git $@ 2>/dev/null"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
check_tags()
|
|
||||||
{
|
|
||||||
local path=$(echo "$1" | sed 's:/*$::')
|
|
||||||
|
|
||||||
echo "Checking $path"
|
|
||||||
|
|
||||||
git_call fetch --prune --all
|
|
||||||
|
|
||||||
# Get the latest tag (by commit date, not tag name)
|
|
||||||
local tag_list=$(git_call rev-list --tags --max-count=1)
|
|
||||||
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
|
|
||||||
|
|
||||||
# Get the current tag
|
|
||||||
local current_tag=$(git_call describe --tags --abbrev=0)
|
|
||||||
|
|
||||||
if [ -n "$current_tag" ]; then
|
|
||||||
|
|
||||||
if [ "$verbose" -eq 1 ]; then
|
|
||||||
echo "$path -> latest: $latest_tag, highest: $highest_tag, current: $current_tag"
|
|
||||||
fi
|
|
||||||
|
|
||||||
local ts0=$(git_call log -1 --format=%ct $highest_tag)
|
|
||||||
local ts1=$(git_call log -1 --format=%ct $latest_tag)
|
|
||||||
local ts2=$(git_call log -1 --format=%ct $current_tag)
|
|
||||||
|
|
||||||
if (( ts0 > ts2 )) || (( ts1 > ts2 )); then
|
|
||||||
if [ "$verbose" -eq 1 ]; then
|
|
||||||
echo -e "\t $path: latest is newer"
|
|
||||||
elif [ "$verbose" -eq 0 ]; then
|
|
||||||
echo "$path -> latest: $latest_tag, highest: $highest_tag, current: $current_tag"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Critical section guarded by flock
|
|
||||||
(
|
|
||||||
flock 200
|
|
||||||
echo "$path -> latest: $latest_tag, highest: $highest_tag, current: $current_tag" >> "$resultfile"
|
|
||||||
) 200>"$lockfile"
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif [ "$verbose" -eq 1 ]; then
|
|
||||||
echo "$path -> latest: $latest_tag, highest: $highest_tag"
|
|
||||||
fi
|
|
||||||
elif [ "$verbose" -eq 1 ]; then
|
|
||||||
|
|
||||||
if [ -n "$current_tag" ]; then
|
|
||||||
echo "$path -> current: $current_tag"
|
|
||||||
else
|
|
||||||
echo "$path -> no tags found"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Fetch and check repositories multi threaded
|
|
||||||
for submoduledir in */ ;
|
|
||||||
do
|
|
||||||
cd "$submoduledir" || continue
|
|
||||||
|
|
||||||
if [ -e ".git" ]; then
|
|
||||||
job_control
|
|
||||||
check_tags "$submoduledir" &
|
|
||||||
else
|
|
||||||
for sub in */ ;
|
|
||||||
do
|
|
||||||
if [ -e "$sub/.git" ]; then
|
|
||||||
cd "$sub" || continue
|
|
||||||
job_control
|
|
||||||
check_tags "$submoduledir$sub" &
|
|
||||||
cd .. || exit
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd .. || exit
|
|
||||||
done
|
|
||||||
|
|
||||||
# Wait for all background jobs to finish
|
|
||||||
wait
|
|
||||||
|
|
||||||
# Print results
|
|
||||||
echo -e "\n\nResult:\n"
|
|
||||||
|
|
||||||
# Find the max length of the paths (before '->')
|
|
||||||
max_len=0
|
|
||||||
while IFS='->' read -r left _; do
|
|
||||||
len=$(echo -n "$left" | wc -c)
|
|
||||||
if (( len > max_len )); then
|
|
||||||
max_len=$len
|
|
||||||
fi
|
|
||||||
done < "$resultfile"
|
|
||||||
|
|
||||||
# Print with padding so '->' lines up
|
|
||||||
while IFS='->' read -r left right; do
|
|
||||||
right=$(echo "$right" | sed 's/^[[:space:]]*>*[[:space:]]*//')
|
|
||||||
printf "%-${max_len}s -> %s\n" "$left" "$right"
|
|
||||||
done < "$resultfile"
|
|
||||||
|
|
||||||
# Remove tmp files
|
|
||||||
rm -f "$resultfile"
|
|
||||||
rm -f "$lockfile"
|
|
||||||
2
3rdparty/wolfssl/wolfssl
vendored
2
3rdparty/wolfssl/wolfssl
vendored
|
|
@ -1 +1 @@
|
||||||
Subproject commit b077c81eb635392e694ccedbab8b644297ec0285
|
Subproject commit 239b85c80438bf60d9a5b9e0ebe9ff097a760d0d
|
||||||
22
3rdparty/zstd/CMakeLists.txt
vendored
22
3rdparty/zstd/CMakeLists.txt
vendored
|
|
@ -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()
|
|
||||||
|
|
|
||||||
23
BUILDING.md
23
BUILDING.md
|
|
@ -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.8.3](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.8.3\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.8.3\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.8.3](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.8.3\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**)
|
||||||
|
|
||||||
|
|
@ -130,17 +129,19 @@ Start **Visual Studio**, click on `Open a project or solution` and select the `r
|
||||||
|
|
||||||
**NOTE:** The recommended build configuration is `Release`. (On older revisions: `Release - LLVM`)
|
**NOTE:** The recommended build configuration is `Release`. (On older revisions: `Release - LLVM`)
|
||||||
|
|
||||||
To speed up the compilation time, you may want to download and extract to `<rpcs3_root>\build\lib_ext\<$(Configuration)>-x64` (e.g. `c:\rpcs3\build\lib_ext\Release-x64`; the path needs to be created) the following precompiled lib:
|
To speed up the compilation time, you may want to download and extract to `<rpcs3_root>\build\lib_ext\<$(Configuration)>-x64` (e.g. `c:\rpcs3\build\lib_ext\Release-x64`; the path needs to be created) some of the following precompiled libs:
|
||||||
- [LLVM libs](https://github.com/RPCS3/llvm-mirror/releases/download/custom-build-win-19.1.7/llvmlibs_mt.7z)
|
- [LLVM libs](https://github.com/RPCS3/llvm-mirror/releases/download/custom-build-win-19.1.7/llvmlibs_mt.7z)
|
||||||
|
- [additional libs](https://github.com/RPCS3/glslang/releases/latest/download/glslanglibs_mt.7z)
|
||||||
|
|
||||||
**NOTES:**
|
**NOTES:**
|
||||||
- `<$(Configuration)>` can assume values `Release` or `Debug`.
|
- `<$(Configuration)>` can assume values `Release` or `Debug`.
|
||||||
- Unoptimised/debug libs are currently not available precompiled for **LLVM**. Trying to use it when building the **RPCS3** application in `Debug` mode will provide a `cannot open file` error.
|
- Unoptimised/debug libs are currently not available precompiled for both **LLVM** and **glslang**. Trying to use them when building the **RPCS3** application in `Debug` mode will provide a `cannot open file` error.
|
||||||
|
|
||||||
If you're not using the precompiled libs, those dependency libs need to be compiled first. From the `Solution Explorer` panel:
|
If you're not using the precompiled libs, those dependency libs need to be compiled first. From the `Solution Explorer` panel:
|
||||||
1) expand `__BUILD_BEFORE`
|
1) expand `__BUILD_BEFORE`
|
||||||
2) from the `Solution Configurations` drop-down menu, select `Release` (select `Debug` if you want to build in `Debug` mode)
|
2) from the `Solution Configurations` drop-down menu, select `Release` (select `Debug` if you want to build in `Debug` mode)
|
||||||
3) right-click one of the following projects and then click on `Build` to build the selected lib:
|
3) one after another, right-click on the following projects and then click on `Build` to build the selected lib:
|
||||||
|
- `glslang`
|
||||||
- `llvm_build`
|
- `llvm_build`
|
||||||
- or `llvm_build_clang_cl` (if you have also the **clang** compiler installed on VS)
|
- or `llvm_build_clang_cl` (if you have also the **clang** compiler installed on VS)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,8 @@
|
||||||
cmake_minimum_required(VERSION 3.28)
|
cmake_minimum_required(VERSION 3.16.9)
|
||||||
|
|
||||||
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)
|
||||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
||||||
|
|
||||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 11)
|
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 11)
|
||||||
|
|
@ -22,12 +14,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 +21,17 @@ 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(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(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 +102,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,22 +139,11 @@ 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")
|
||||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${PROJECT_BINARY_DIR}/bin")
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${PROJECT_BINARY_DIR}/bin")
|
||||||
|
|
||||||
if(BUILD_RPCS3_TESTS)
|
|
||||||
enable_testing()
|
|
||||||
endif()
|
|
||||||
add_subdirectory(rpcs3)
|
add_subdirectory(rpcs3)
|
||||||
|
|
||||||
set_directory_properties(PROPERTIES VS_STARTUP_PROJECT rpcs3)
|
set_directory_properties(PROPERTIES VS_STARTUP_PROJECT rpcs3)
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
RPCS3
|
RPCS3
|
||||||
=====
|
=====
|
||||||
|
|
||||||
|
[](https://dev.azure.com/nekotekina/nekotekina/_build?definitionId=8&_a=summary&repositoryFilter=4)
|
||||||
|
[](https://cirrus-ci.com/github/RPCS3/rpcs3)
|
||||||
[](https://github.com/RPCS3/rpcs3/actions/workflows/rpcs3.yml)
|
[](https://github.com/RPCS3/rpcs3/actions/workflows/rpcs3.yml)
|
||||||
[](https://discord.gg/rpcs3)
|
[](https://discord.me/rpcs3)
|
||||||
|
|
||||||
The world's first free and open-source PlayStation 3 emulator/debugger, written in C++ for Windows, Linux, macOS and FreeBSD.
|
The world's first free and open-source PlayStation 3 emulator/debugger, written in C++ for Windows, Linux, macOS and FreeBSD.
|
||||||
|
|
||||||
|
|
@ -20,6 +22,7 @@ If you want to contribute as a developer, please take a look at the following pa
|
||||||
|
|
||||||
* [Coding Style](https://github.com/RPCS3/rpcs3/wiki/Coding-Style)
|
* [Coding Style](https://github.com/RPCS3/rpcs3/wiki/Coding-Style)
|
||||||
* [Developer Information](https://github.com/RPCS3/rpcs3/wiki/Developer-Information)
|
* [Developer Information](https://github.com/RPCS3/rpcs3/wiki/Developer-Information)
|
||||||
|
* [Roadmap](https://rpcs3.net/roadmap)
|
||||||
|
|
||||||
You should also contact any of the developers in the forums or in the Discord server to learn more about the current state of the emulator.
|
You should also contact any of the developers in the forums or in the Discord server to learn more about the current state of the emulator.
|
||||||
|
|
||||||
|
|
@ -31,7 +34,7 @@ See [BUILDING.md](BUILDING.md) for more information about how to setup an enviro
|
||||||
|
|
||||||
Check our friendly [quickstart](https://rpcs3.net/quickstart) guide to make sure your computer meets the minimum system requirements to run RPCS3.
|
Check our friendly [quickstart](https://rpcs3.net/quickstart) guide to make sure your computer meets the minimum system requirements to run RPCS3.
|
||||||
|
|
||||||
Don't forget to have your graphics driver up to date and to install the [Visual C++ Redistributable Packages for Visual Studio 2022](https://aka.ms/vs/17/release/VC_redist.x64.exe) if you are a Windows user.
|
Don't forget to have your graphics driver up to date and to install the [Visual C++ Redistributable Packages for Visual Studio 2019](https://aka.ms/vs/16/release/VC_redist.x64.exe) if you are a Windows user.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
{
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1707,7 +1707,7 @@ fs::file fs::file::from_native_handle(native_handle handle)
|
||||||
fs::file result;
|
fs::file result;
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
result.m_file = std::make_unique<windows_file>(static_cast<HANDLE>(handle));
|
result.m_file = std::make_unique<windows_file>((const HANDLE)handle);
|
||||||
#else
|
#else
|
||||||
result.m_file = std::make_unique<unix_file>(handle);
|
result.m_file = std::make_unique<unix_file>(handle);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -344,7 +344,15 @@ jit_runtime_base& asmjit::get_global_runtime()
|
||||||
{
|
{
|
||||||
custom_runtime() noexcept
|
custom_runtime() noexcept
|
||||||
{
|
{
|
||||||
ensure(m_pos.raw() = static_cast<uchar*>(utils::memory_reserve(size)));
|
// Search starting in first 2 GiB of memory
|
||||||
|
for (u64 addr = size;; addr += size)
|
||||||
|
{
|
||||||
|
if (auto ptr = utils::memory_reserve(size, reinterpret_cast<void*>(addr)))
|
||||||
|
{
|
||||||
|
m_pos.raw() = static_cast<uchar*>(ptr);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize "end" pointer
|
// Initialize "end" pointer
|
||||||
m_max = m_pos + size;
|
m_max = m_pos + size;
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -748,12 +748,6 @@ void fmt::raw_append(std::string& out, const char* fmt, const fmt_type_info* sup
|
||||||
|
|
||||||
std::string fmt::replace_all(std::string_view src, std::string_view from, std::string_view to, usz count)
|
std::string fmt::replace_all(std::string_view src, std::string_view from, std::string_view to, usz count)
|
||||||
{
|
{
|
||||||
if (src.empty())
|
|
||||||
return {};
|
|
||||||
|
|
||||||
if (from.empty() || count == 0)
|
|
||||||
return std::string(src);
|
|
||||||
|
|
||||||
std::string target;
|
std::string target;
|
||||||
target.reserve(src.size() + to.size());
|
target.reserve(src.size() + to.size());
|
||||||
|
|
||||||
|
|
@ -830,12 +824,7 @@ std::string fmt::trim(const std::string& source, std::string_view values)
|
||||||
if (begin == source.npos)
|
if (begin == source.npos)
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
const usz end = source.find_last_not_of(values);
|
return source.substr(begin, source.find_last_not_of(values) + 1);
|
||||||
|
|
||||||
if (end == source.npos)
|
|
||||||
return source.substr(begin);
|
|
||||||
|
|
||||||
return source.substr(begin, end + 1 - begin);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string fmt::trim_front(const std::string& source, std::string_view values)
|
std::string fmt::trim_front(const std::string& source, std::string_view values)
|
||||||
|
|
@ -875,6 +864,45 @@ std::string fmt::truncate(std::string_view src, usz length)
|
||||||
return std::string(src.begin(), src.begin() + std::min(src.size(), length));
|
return std::string(src.begin(), src.begin() + std::min(src.size(), length));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool fmt::match(const std::string& source, const std::string& mask)
|
||||||
|
{
|
||||||
|
usz source_position = 0, mask_position = 0;
|
||||||
|
|
||||||
|
for (; source_position < source.size() && mask_position < mask.size(); ++mask_position, ++source_position)
|
||||||
|
{
|
||||||
|
switch (mask[mask_position])
|
||||||
|
{
|
||||||
|
case '?': break;
|
||||||
|
|
||||||
|
case '*':
|
||||||
|
for (usz test_source_position = source_position; test_source_position < source.size(); ++test_source_position)
|
||||||
|
{
|
||||||
|
if (match(source.substr(test_source_position), mask.substr(mask_position + 1)))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
|
||||||
|
default:
|
||||||
|
if (source[source_position] != mask[mask_position])
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (source_position != source.size())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (mask_position != mask.size())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
std::string get_file_extension(const std::string& file_path)
|
std::string get_file_extension(const std::string& file_path)
|
||||||
{
|
{
|
||||||
if (usz dotpos = file_path.find_last_of('.'); dotpos != std::string::npos && dotpos + 1 < file_path.size())
|
if (usz dotpos = file_path.find_last_of('.'); dotpos != std::string::npos && dotpos + 1 < file_path.size())
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
|
|
@ -42,15 +39,11 @@ std::string get_file_extension(const std::string& file_path);
|
||||||
|
|
||||||
namespace fmt
|
namespace fmt
|
||||||
{
|
{
|
||||||
// Replaces all occurrences of 'from' with 'to' until 'count' substrings were replaced.
|
std::string replace_all(std::string_view src, std::string_view from, std::string_view to, usz count = -1);
|
||||||
std::string replace_all(std::string_view src, std::string_view from, std::string_view to, usz count = umax);
|
|
||||||
|
|
||||||
template <usz list_size>
|
template <usz list_size>
|
||||||
std::string replace_all(std::string src, const std::pair<std::string_view, std::string> (&list)[list_size])
|
std::string replace_all(std::string src, const std::pair<std::string_view, std::string> (&list)[list_size])
|
||||||
{
|
{
|
||||||
if constexpr (list_size == 0)
|
|
||||||
return src;
|
|
||||||
|
|
||||||
for (usz pos = 0; pos < src.length(); ++pos)
|
for (usz pos = 0; pos < src.length(); ++pos)
|
||||||
{
|
{
|
||||||
for (usz i = 0; i < list_size; ++i)
|
for (usz i = 0; i < list_size; ++i)
|
||||||
|
|
@ -78,9 +71,6 @@ namespace fmt
|
||||||
template <usz list_size>
|
template <usz list_size>
|
||||||
std::string replace_all(std::string src, const std::pair<std::string_view, std::function<std::string()>> (&list)[list_size])
|
std::string replace_all(std::string src, const std::pair<std::string_view, std::function<std::string()>> (&list)[list_size])
|
||||||
{
|
{
|
||||||
if constexpr (list_size == 0)
|
|
||||||
return src;
|
|
||||||
|
|
||||||
for (usz pos = 0; pos < src.length(); ++pos)
|
for (usz pos = 0; pos < src.length(); ++pos)
|
||||||
{
|
{
|
||||||
for (usz i = 0; i < list_size; ++i)
|
for (usz i = 0; i < list_size; ++i)
|
||||||
|
|
@ -109,9 +99,6 @@ namespace fmt
|
||||||
static inline
|
static inline
|
||||||
std::string replace_all(std::string src, const std::vector<std::pair<std::string, std::string>>& list)
|
std::string replace_all(std::string src, const std::vector<std::pair<std::string, std::string>>& list)
|
||||||
{
|
{
|
||||||
if (list.empty())
|
|
||||||
return src;
|
|
||||||
|
|
||||||
for (usz pos = 0; pos < src.length(); ++pos)
|
for (usz pos = 0; pos < src.length(); ++pos)
|
||||||
{
|
{
|
||||||
for (usz i = 0; i < list.size(); ++i)
|
for (usz i = 0; i < list.size(); ++i)
|
||||||
|
|
@ -136,16 +123,9 @@ namespace fmt
|
||||||
return src;
|
return src;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Splits the string into a vector of strings using the separators. The vector may contain empty strings unless is_skip_empty is true.
|
|
||||||
std::vector<std::string> split(std::string_view source, std::initializer_list<std::string_view> separators, bool is_skip_empty = true);
|
std::vector<std::string> split(std::string_view source, std::initializer_list<std::string_view> separators, bool is_skip_empty = true);
|
||||||
|
|
||||||
// Removes all preceding and trailing characters specified by 'values' from 'source'.
|
|
||||||
std::string trim(const std::string& source, std::string_view values = " \t");
|
std::string trim(const std::string& source, std::string_view values = " \t");
|
||||||
|
|
||||||
// Removes all preceding characters specified by 'values' from 'source'.
|
|
||||||
std::string trim_front(const std::string& source, std::string_view values = " \t");
|
std::string trim_front(const std::string& source, std::string_view values = " \t");
|
||||||
|
|
||||||
// Removes all trailing characters specified by 'values' from 'source'.
|
|
||||||
void trim_back(std::string& source, std::string_view values = " \t");
|
void trim_back(std::string& source, std::string_view values = " \t");
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
|
|
@ -195,15 +175,13 @@ namespace fmt
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the string transformed to uppercase
|
|
||||||
std::string to_upper(std::string_view string);
|
std::string to_upper(std::string_view string);
|
||||||
|
|
||||||
// Returns the string transformed to lowercase
|
|
||||||
std::string to_lower(std::string_view string);
|
std::string to_lower(std::string_view string);
|
||||||
|
|
||||||
// Returns the string shortened to length
|
|
||||||
std::string truncate(std::string_view src, usz length);
|
std::string truncate(std::string_view src, usz length);
|
||||||
|
|
||||||
|
bool match(const std::string& source, const std::string& mask);
|
||||||
|
|
||||||
struct buf_to_hexstring
|
struct buf_to_hexstring
|
||||||
{
|
{
|
||||||
buf_to_hexstring(const u8* buf, usz len, usz line_length = 16, bool with_prefix = false)
|
buf_to_hexstring(const u8* buf, usz len, usz line_length = 16, bool with_prefix = false)
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
|
|
@ -2495,7 +2490,7 @@ void thread_ctrl::wait_for(u64 usec, [[maybe_unused]] bool alert /* true */)
|
||||||
if (alert)
|
if (alert)
|
||||||
{
|
{
|
||||||
list.set<0>(_this->m_sync, 0);
|
list.set<0>(_this->m_sync, 0);
|
||||||
list.template set<1>(_this->m_taskq);
|
list.set<1>(utils::bless<atomic_t<u32>>(&_this->m_taskq)[1], 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -8,134 +8,125 @@
|
||||||
|
|
||||||
namespace utils
|
namespace utils
|
||||||
{
|
{
|
||||||
template <typename T>
|
|
||||||
class address_range_vector;
|
class address_range_vector;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helpers
|
* Helpers
|
||||||
*/
|
*/
|
||||||
template <typename T>
|
static inline u32 page_start(u32 addr)
|
||||||
T page_start(T addr)
|
|
||||||
{
|
{
|
||||||
return addr & ~static_cast<T>(get_page_size() - 1);
|
return addr & ~(get_page_size() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
static inline u32 next_page(u32 addr)
|
||||||
static inline T next_page(T addr)
|
|
||||||
{
|
{
|
||||||
return page_start(addr) + static_cast<T>(get_page_size());
|
return page_start(addr) + get_page_size();
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
static inline u32 page_end(u32 addr)
|
||||||
static inline T page_end(T addr)
|
|
||||||
{
|
{
|
||||||
return next_page(addr) - 1;
|
return next_page(addr) - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
static inline u32 is_page_aligned(u32 val)
|
||||||
static inline T is_page_aligned(T val)
|
|
||||||
{
|
{
|
||||||
return (val & static_cast<T>(get_page_size() - 1)) == 0;
|
return (val & (get_page_size() - 1)) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Address Range utility class
|
* Address Range utility class
|
||||||
*/
|
*/
|
||||||
template <typename T>
|
|
||||||
class address_range
|
class address_range
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
T start = umax; // First address in range
|
u32 start = umax; // First address in range
|
||||||
T end = 0; // Last address
|
u32 end = 0; // Last address
|
||||||
|
|
||||||
using signed_type_t = std::make_signed<T>::type;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Helper constexprs
|
// Helper constexprs
|
||||||
static constexpr inline bool range_overlaps(T start1, T end1, T start2, T end2)
|
static constexpr inline bool range_overlaps(u32 start1, u32 end1, u32 start2, u32 end2)
|
||||||
{
|
{
|
||||||
return (start1 <= end2 && start2 <= end1);
|
return (start1 <= end2 && start2 <= end1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr inline bool address_overlaps(T address, T start, T end)
|
static constexpr inline bool address_overlaps(u32 address, u32 start, u32 end)
|
||||||
{
|
{
|
||||||
return (start <= address && address <= end);
|
return (start <= address && address <= end);
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr inline bool range_inside_range(T start1, T end1, T start2, T end2)
|
static constexpr inline bool range_inside_range(u32 start1, u32 end1, u32 start2, u32 end2)
|
||||||
{
|
{
|
||||||
return (start1 >= start2 && end1 <= end2);
|
return (start1 >= start2 && end1 <= end2);
|
||||||
}
|
}
|
||||||
|
|
||||||
constexpr address_range(T _start, T _end) : start(_start), end(_end) {}
|
constexpr address_range(u32 _start, u32 _end) : start(_start), end(_end) {}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructors
|
// Constructors
|
||||||
constexpr address_range() = default;
|
constexpr address_range() = default;
|
||||||
|
|
||||||
static constexpr address_range start_length(T _start, T _length)
|
static constexpr address_range start_length(u32 _start, u32 _length)
|
||||||
{
|
{
|
||||||
if (!_length)
|
if (!_length)
|
||||||
{
|
{
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
const T _end = static_cast<T>(_start + _length - 1);
|
return {_start, _start + (_length - 1)};
|
||||||
return {_start, _end};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr address_range start_end(T _start, T _end)
|
static constexpr address_range start_end(u32 _start, u32 _end)
|
||||||
{
|
{
|
||||||
return {_start, _end};
|
return {_start, _end};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Length
|
// Length
|
||||||
T length() const
|
u32 length() const
|
||||||
{
|
{
|
||||||
AUDIT(valid());
|
AUDIT(valid());
|
||||||
return end - start + 1;
|
return end - start + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_length(const T new_length)
|
void set_length(const u32 new_length)
|
||||||
{
|
{
|
||||||
end = start + new_length - 1;
|
end = start + new_length - 1;
|
||||||
ensure(valid());
|
ensure(valid());
|
||||||
}
|
}
|
||||||
|
|
||||||
T next_address() const
|
u32 next_address() const
|
||||||
{
|
{
|
||||||
return end + 1;
|
return end + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
T prev_address() const
|
u32 prev_address() const
|
||||||
{
|
{
|
||||||
return start - 1;
|
return start - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Overlapping checks
|
// Overlapping checks
|
||||||
bool overlaps(const address_range<T>& other) const
|
bool overlaps(const address_range &other) const
|
||||||
{
|
{
|
||||||
AUDIT(valid() && other.valid());
|
AUDIT(valid() && other.valid());
|
||||||
return range_overlaps(start, end, other.start, other.end);
|
return range_overlaps(start, end, other.start, other.end);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool overlaps(const T addr) const
|
bool overlaps(const u32 addr) const
|
||||||
{
|
{
|
||||||
AUDIT(valid());
|
AUDIT(valid());
|
||||||
return address_overlaps(addr, start, end);
|
return address_overlaps(addr, start, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool inside(const address_range<T>& other) const
|
bool inside(const address_range &other) const
|
||||||
{
|
{
|
||||||
AUDIT(valid() && other.valid());
|
AUDIT(valid() && other.valid());
|
||||||
return range_inside_range(start, end, other.start, other.end);
|
return range_inside_range(start, end, other.start, other.end);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool inside(const address_range_vector<T>& vec) const;
|
inline bool inside(const address_range_vector &vec) const;
|
||||||
inline bool overlaps(const address_range_vector<T>& vec) const;
|
inline bool overlaps(const address_range_vector &vec) const;
|
||||||
|
|
||||||
bool touches(const address_range<T>& other) const
|
bool touches(const address_range &other) const
|
||||||
{
|
{
|
||||||
AUDIT(valid() && other.valid());
|
AUDIT(valid() && other.valid());
|
||||||
// returns true if there is overlap, or if sections are side-by-side
|
// returns true if there is overlap, or if sections are side-by-side
|
||||||
|
|
@ -143,7 +134,7 @@ namespace utils
|
||||||
}
|
}
|
||||||
|
|
||||||
// Utilities
|
// Utilities
|
||||||
signed_type_t signed_distance(const address_range<T>& other) const
|
s32 signed_distance(const address_range &other) const
|
||||||
{
|
{
|
||||||
if (touches(other))
|
if (touches(other))
|
||||||
{
|
{
|
||||||
|
|
@ -153,15 +144,15 @@ namespace utils
|
||||||
// other after this
|
// other after this
|
||||||
if (other.start > end)
|
if (other.start > end)
|
||||||
{
|
{
|
||||||
return static_cast<signed_type_t>(other.start - end - 1);
|
return static_cast<s32>(other.start - end - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// this after other
|
// this after other
|
||||||
AUDIT(start > other.end);
|
AUDIT(start > other.end);
|
||||||
return -static_cast<signed_type_t>(start - other.end - 1);
|
return -static_cast<s32>(start - other.end - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
T distance(const address_range<T>& other) const
|
u32 distance(const address_range &other) const
|
||||||
{
|
{
|
||||||
if (touches(other))
|
if (touches(other))
|
||||||
{
|
{
|
||||||
|
|
@ -179,7 +170,7 @@ namespace utils
|
||||||
return (start - other.end - 1);
|
return (start - other.end - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
address_range<T> get_min_max(const address_range<T>& other) const
|
address_range get_min_max(const address_range &other) const
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
std::min(valid() ? start : umax, other.valid() ? other.start : umax),
|
std::min(valid() ? start : umax, other.valid() ? other.start : umax),
|
||||||
|
|
@ -187,7 +178,7 @@ namespace utils
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_min_max(const address_range<T>& other)
|
void set_min_max(const address_range &other)
|
||||||
{
|
{
|
||||||
*this = get_min_max(other);
|
*this = get_min_max(other);
|
||||||
}
|
}
|
||||||
|
|
@ -197,7 +188,7 @@ namespace utils
|
||||||
return (valid() && is_page_aligned(start) && is_page_aligned(length()));
|
return (valid() && is_page_aligned(start) && is_page_aligned(length()));
|
||||||
}
|
}
|
||||||
|
|
||||||
address_range<T> to_page_range() const
|
address_range to_page_range() const
|
||||||
{
|
{
|
||||||
AUDIT(valid());
|
AUDIT(valid());
|
||||||
return { page_start(start), page_end(end) };
|
return { page_start(start), page_end(end) };
|
||||||
|
|
@ -211,7 +202,7 @@ namespace utils
|
||||||
AUDIT(is_page_range());
|
AUDIT(is_page_range());
|
||||||
}
|
}
|
||||||
|
|
||||||
address_range<T> get_intersect(const address_range<T>& clamp) const
|
address_range get_intersect(const address_range &clamp) const
|
||||||
{
|
{
|
||||||
if (!valid() || !clamp.valid())
|
if (!valid() || !clamp.valid())
|
||||||
{
|
{
|
||||||
|
|
@ -221,7 +212,7 @@ namespace utils
|
||||||
return { std::max(start, clamp.start), std::min(end, clamp.end) };
|
return { std::max(start, clamp.start), std::min(end, clamp.end) };
|
||||||
}
|
}
|
||||||
|
|
||||||
void intersect(const address_range<T>& clamp)
|
void intersect(const address_range &clamp)
|
||||||
{
|
{
|
||||||
if (!clamp.valid())
|
if (!clamp.valid())
|
||||||
{
|
{
|
||||||
|
|
@ -247,7 +238,7 @@ namespace utils
|
||||||
}
|
}
|
||||||
|
|
||||||
// Comparison Operators
|
// Comparison Operators
|
||||||
bool operator ==(const address_range<T>& other) const
|
bool operator ==(const address_range& other) const
|
||||||
{
|
{
|
||||||
return (start == other.start && end == other.end);
|
return (start == other.start && end == other.end);
|
||||||
}
|
}
|
||||||
|
|
@ -261,27 +252,21 @@ namespace utils
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
using address_range16 = address_range<u16>;
|
static inline address_range page_for(u32 addr)
|
||||||
using address_range32 = address_range<u32>;
|
|
||||||
using address_range64 = address_range<u64>;
|
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
static inline address_range<T> page_for(T addr)
|
|
||||||
{
|
{
|
||||||
return address_range<T>::start_end(page_start(addr), page_end(addr));
|
return address_range::start_end(page_start(addr), page_end(addr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Address Range Vector utility class
|
* Address Range Vector utility class
|
||||||
*
|
*
|
||||||
* Collection of address_range<T> objects. Allows for merging and removing ranges from the set.
|
* Collection of address_range objects. Allows for merging and removing ranges from the set.
|
||||||
*/
|
*/
|
||||||
template <typename T>
|
|
||||||
class address_range_vector
|
class address_range_vector
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
using vector_type = std::vector<address_range<T>>;
|
using vector_type = std::vector<address_range>;
|
||||||
using iterator = vector_type::iterator;
|
using iterator = vector_type::iterator;
|
||||||
using const_iterator = vector_type::const_iterator;
|
using const_iterator = vector_type::const_iterator;
|
||||||
using size_type = vector_type::size_type;
|
using size_type = vector_type::size_type;
|
||||||
|
|
@ -295,8 +280,8 @@ namespace utils
|
||||||
inline void clear() { data.clear(); }
|
inline void clear() { data.clear(); }
|
||||||
inline size_type size() const { return data.size(); }
|
inline size_type size() const { return data.size(); }
|
||||||
inline bool empty() const { return data.empty(); }
|
inline bool empty() const { return data.empty(); }
|
||||||
inline address_range<T>& operator[](size_type n) { return data[n]; }
|
inline address_range& operator[](size_type n) { return data[n]; }
|
||||||
inline const address_range<T>& operator[](size_type n) const { return data[n]; }
|
inline const address_range& operator[](size_type n) const { return data[n]; }
|
||||||
inline iterator begin() { return data.begin(); }
|
inline iterator begin() { return data.begin(); }
|
||||||
inline const_iterator begin() const { return data.begin(); }
|
inline const_iterator begin() const { return data.begin(); }
|
||||||
inline iterator end() { return data.end(); }
|
inline iterator end() { return data.end(); }
|
||||||
|
|
@ -304,7 +289,7 @@ namespace utils
|
||||||
|
|
||||||
// Search for ranges that touch new_range. If found, merge instead of adding new_range.
|
// Search for ranges that touch new_range. If found, merge instead of adding new_range.
|
||||||
// When adding a new range, re-use invalid ranges whenever possible
|
// When adding a new range, re-use invalid ranges whenever possible
|
||||||
void merge(const address_range<T>& new_range)
|
void merge(const address_range &new_range)
|
||||||
{
|
{
|
||||||
// Note the case where we have
|
// Note the case where we have
|
||||||
// AAAA BBBB
|
// AAAA BBBB
|
||||||
|
|
@ -316,8 +301,8 @@ namespace utils
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
address_range<T> *found = nullptr;
|
address_range *found = nullptr;
|
||||||
address_range<T> *invalid = nullptr;
|
address_range *invalid = nullptr;
|
||||||
|
|
||||||
for (auto &existing : data)
|
for (auto &existing : data)
|
||||||
{
|
{
|
||||||
|
|
@ -362,22 +347,22 @@ namespace utils
|
||||||
AUDIT(check_consistency());
|
AUDIT(check_consistency());
|
||||||
}
|
}
|
||||||
|
|
||||||
void merge(const address_range_vector<T>& other)
|
void merge(const address_range_vector &other)
|
||||||
{
|
{
|
||||||
for (const address_range<T>& new_range : other)
|
for (const address_range &new_range : other)
|
||||||
{
|
{
|
||||||
merge(new_range);
|
merge(new_range);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Exclude a given range from data
|
// Exclude a given range from data
|
||||||
void exclude(const address_range<T>& exclusion)
|
void exclude(const address_range &exclusion)
|
||||||
{
|
{
|
||||||
// Note the case where we have
|
// Note the case where we have
|
||||||
// AAAAAAA
|
// AAAAAAA
|
||||||
// EEE
|
// EEE
|
||||||
// where data={A} and exclusion=E.
|
// where data={A} and exclusion=E.
|
||||||
// In this case, we need to reduce A to the head (before E starts), and then create a new address_range<T> B for the tail (after E ends), i.e.
|
// In this case, we need to reduce A to the head (before E starts), and then create a new address_range B for the tail (after E ends), i.e.
|
||||||
// AA BB
|
// AA BB
|
||||||
// EEE
|
// EEE
|
||||||
|
|
||||||
|
|
@ -386,13 +371,13 @@ namespace utils
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
address_range<T> *invalid = nullptr; // try to re-use an invalid range instead of calling push_back
|
address_range *invalid = nullptr; // try to re-use an invalid range instead of calling push_back
|
||||||
|
|
||||||
// We use index access because we might have to push_back within the loop, which could invalidate the iterators
|
// We use index access because we might have to push_back within the loop, which could invalidate the iterators
|
||||||
size_type _size = data.size();
|
size_type _size = data.size();
|
||||||
for (size_type n = 0; n < _size; ++n)
|
for (size_type n = 0; n < _size; ++n)
|
||||||
{
|
{
|
||||||
address_range<T>& existing = data[n];
|
address_range &existing = data[n];
|
||||||
|
|
||||||
if (!existing.valid())
|
if (!existing.valid())
|
||||||
{
|
{
|
||||||
|
|
@ -445,7 +430,7 @@ namespace utils
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// IMPORTANT: adding to data invalidates "existing". This must be done last!
|
// IMPORTANT: adding to data invalidates "existing". This must be done last!
|
||||||
data.push_back(address_range<T>::start_end(exclusion.next_address(), tail_end));
|
data.push_back(address_range::start_end(exclusion.next_address(), tail_end));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -453,9 +438,9 @@ namespace utils
|
||||||
AUDIT(!overlaps(exclusion));
|
AUDIT(!overlaps(exclusion));
|
||||||
}
|
}
|
||||||
|
|
||||||
void exclude(const address_range_vector<T>& other)
|
void exclude(const address_range_vector &other)
|
||||||
{
|
{
|
||||||
for (const address_range<T>& exclusion : other)
|
for (const address_range &exclusion : other)
|
||||||
{
|
{
|
||||||
exclude(exclusion);
|
exclude(exclusion);
|
||||||
}
|
}
|
||||||
|
|
@ -493,25 +478,25 @@ namespace utils
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test for overlap with a given range
|
// Test for overlap with a given range
|
||||||
bool overlaps(const address_range<T>& range) const
|
bool overlaps(const address_range &range) const
|
||||||
{
|
{
|
||||||
return std::any_of(data.cbegin(), data.cend(), [&range](const address_range<T>& cur)
|
return std::any_of(data.cbegin(), data.cend(), [&range](const address_range& cur)
|
||||||
{
|
{
|
||||||
return cur.valid() && cur.overlaps(range);
|
return cur.valid() && cur.overlaps(range);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test for overlap with a given address_range<T> vector
|
// Test for overlap with a given address_range vector
|
||||||
bool overlaps(const address_range_vector<T>& other) const
|
bool overlaps(const address_range_vector &other) const
|
||||||
{
|
{
|
||||||
for (const address_range<T>& rng1 : data)
|
for (const address_range &rng1 : data)
|
||||||
{
|
{
|
||||||
if (!rng1.valid())
|
if (!rng1.valid())
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const address_range<T>& rng2 : other.data)
|
for (const address_range &rng2 : other.data)
|
||||||
{
|
{
|
||||||
if (!rng2.valid())
|
if (!rng2.valid())
|
||||||
{
|
{
|
||||||
|
|
@ -528,56 +513,36 @@ namespace utils
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test if a given range is fully contained inside this vector
|
// Test if a given range is fully contained inside this vector
|
||||||
bool contains(const address_range<T>& range) const
|
bool contains(const address_range &range) const
|
||||||
{
|
{
|
||||||
return std::any_of(this->begin(), this->end(), [&range](const address_range<T>& cur)
|
return std::any_of(this->begin(), this->end(), [&range](const address_range& cur)
|
||||||
{
|
{
|
||||||
return cur.valid() && cur.inside(range);
|
return cur.valid() && cur.inside(range);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test if all ranges in this vector are full contained inside a specific range
|
// Test if all ranges in this vector are full contained inside a specific range
|
||||||
bool inside(const address_range<T>& range) const
|
bool inside(const address_range &range) const
|
||||||
{
|
{
|
||||||
return std::all_of(this->begin(), this->end(), [&range](const address_range<T>& cur)
|
return std::all_of(this->begin(), this->end(), [&range](const address_range& cur)
|
||||||
{
|
{
|
||||||
return !cur.valid() || cur.inside(range);
|
return !cur.valid() || cur.inside(range);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Count valid entries
|
|
||||||
usz valid_count() const
|
|
||||||
{
|
|
||||||
usz count = 0;
|
|
||||||
for (const auto& e : data)
|
|
||||||
{
|
|
||||||
if (e.valid())
|
|
||||||
{
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// These declarations must be done after address_range_vector has been defined
|
// These declarations must be done after address_range_vector has been defined
|
||||||
template <typename T>
|
bool address_range::inside(const address_range_vector &vec) const
|
||||||
bool address_range<T>::inside(const address_range_vector<T>& vec) const
|
|
||||||
{
|
{
|
||||||
return vec.contains(*this);
|
return vec.contains(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
bool address_range::overlaps(const address_range_vector &vec) const
|
||||||
bool address_range<T>::overlaps(const address_range_vector<T>& vec) const
|
|
||||||
{
|
{
|
||||||
return vec.overlaps(*this);
|
return vec.overlaps(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
using address_range_vector16 = address_range_vector<u16>;
|
|
||||||
using address_range_vector32 = address_range_vector<u32>;
|
|
||||||
using address_range_vector64 = address_range_vector<u64>;
|
|
||||||
|
|
||||||
} // namespace utils
|
} // namespace utils
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -586,9 +551,9 @@ namespace std
|
||||||
static_assert(sizeof(usz) >= 2 * sizeof(u32), "usz must be at least twice the size of u32");
|
static_assert(sizeof(usz) >= 2 * sizeof(u32), "usz must be at least twice the size of u32");
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
struct hash<utils::address_range32>
|
struct hash<utils::address_range>
|
||||||
{
|
{
|
||||||
usz operator()(const utils::address_range32& k) const
|
usz operator()(const utils::address_range& k) const
|
||||||
{
|
{
|
||||||
// we can guarantee a unique hash since our type is 64 bits and usz as well
|
// we can guarantee a unique hash since our type is 64 bits and usz as well
|
||||||
return (usz{ k.start } << 32) | usz{ k.end };
|
return (usz{ k.start } << 32) | usz{ k.end };
|
||||||
|
|
|
||||||
|
|
@ -1732,7 +1732,7 @@ void patch_engine::save_config(const patch_map& patches_map)
|
||||||
|
|
||||||
fs::pending_file file(path);
|
fs::pending_file file(path);
|
||||||
|
|
||||||
if (!file.file || file.file.write(out.c_str(), out.size()) < out.size() || !file.commit())
|
if (!file.file || (file.file.write(out.c_str(), out.size()), !file.commit()))
|
||||||
{
|
{
|
||||||
patch_log.error("Failed to create patch config file %s (error=%s)", path, fs::g_tls_error);
|
patch_log.error("Failed to create patch config file %s (error=%s)", path, fs::g_tls_error);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ public:
|
||||||
|
|
||||||
if (!next)
|
if (!next)
|
||||||
{
|
{
|
||||||
// Do not allow access beyond many element more at a time
|
// Do not allow access beyond many element more at a time
|
||||||
ensure(!installed && index - i < N * 2);
|
ensure(!installed && index - i < N * 2);
|
||||||
|
|
||||||
installed = true;
|
installed = true;
|
||||||
|
|
@ -384,25 +384,17 @@ public:
|
||||||
template <typename T>
|
template <typename T>
|
||||||
class lf_queue final
|
class lf_queue final
|
||||||
{
|
{
|
||||||
private:
|
atomic_t<u64> m_head{0};
|
||||||
struct fat_ptr
|
|
||||||
{
|
|
||||||
u64 ptr{};
|
|
||||||
u32 is_non_null{};
|
|
||||||
u32 reserved{};
|
|
||||||
};
|
|
||||||
|
|
||||||
atomic_t<fat_ptr> m_head{fat_ptr{}};
|
lf_queue_item<T>* load(u64 value) const noexcept
|
||||||
|
|
||||||
lf_queue_item<T>* load(fat_ptr value) const noexcept
|
|
||||||
{
|
{
|
||||||
return reinterpret_cast<lf_queue_item<T>*>(value.ptr);
|
return reinterpret_cast<lf_queue_item<T>*>(value >> 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extract all elements and reverse element order (FILO to FIFO)
|
// Extract all elements and reverse element order (FILO to FIFO)
|
||||||
lf_queue_item<T>* reverse() noexcept
|
lf_queue_item<T>* reverse() noexcept
|
||||||
{
|
{
|
||||||
if (auto* head = load(m_head) ? load(m_head.exchange(fat_ptr{})) : nullptr)
|
if (auto* head = load(m_head) ? load(m_head.exchange(0)) : nullptr)
|
||||||
{
|
{
|
||||||
if (auto* prev = head->m_link)
|
if (auto* prev = head->m_link)
|
||||||
{
|
{
|
||||||
|
|
@ -428,7 +420,7 @@ public:
|
||||||
|
|
||||||
lf_queue(lf_queue&& other) noexcept
|
lf_queue(lf_queue&& other) noexcept
|
||||||
{
|
{
|
||||||
m_head.release(other.m_head.exchange(fat_ptr{}));
|
m_head.release(other.m_head.exchange(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
lf_queue& operator=(lf_queue&& other) noexcept
|
lf_queue& operator=(lf_queue&& other) noexcept
|
||||||
|
|
@ -438,7 +430,8 @@ public:
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
delete load(m_head.exchange(other.m_head.exchange(fat_ptr{})));
|
delete load(m_head);
|
||||||
|
m_head.release(other.m_head.exchange(0));
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -449,17 +442,12 @@ public:
|
||||||
|
|
||||||
void wait(std::nullptr_t /*null*/ = nullptr) noexcept
|
void wait(std::nullptr_t /*null*/ = nullptr) noexcept
|
||||||
{
|
{
|
||||||
if (!operator bool())
|
if (m_head == 0)
|
||||||
{
|
{
|
||||||
get_wait_atomic().wait(0);
|
utils::bless<atomic_t<u32>>(&m_head)[1].wait(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
atomic_t<u32> &get_wait_atomic()
|
|
||||||
{
|
|
||||||
return *utils::bless<atomic_t<u32>>(&m_head.raw().is_non_null);
|
|
||||||
}
|
|
||||||
|
|
||||||
const volatile void* observe() const noexcept
|
const volatile void* observe() const noexcept
|
||||||
{
|
{
|
||||||
return load(m_head);
|
return load(m_head);
|
||||||
|
|
@ -467,7 +455,7 @@ public:
|
||||||
|
|
||||||
explicit operator bool() const noexcept
|
explicit operator bool() const noexcept
|
||||||
{
|
{
|
||||||
return observe() != nullptr;
|
return m_head != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <bool Notify = true, typename... Args>
|
template <bool Notify = true, typename... Args>
|
||||||
|
|
@ -476,25 +464,25 @@ public:
|
||||||
auto oldv = m_head.load();
|
auto oldv = m_head.load();
|
||||||
auto item = new lf_queue_item<T>(load(oldv), std::forward<Args>(args)...);
|
auto item = new lf_queue_item<T>(load(oldv), std::forward<Args>(args)...);
|
||||||
|
|
||||||
while (!m_head.compare_exchange(oldv, fat_ptr{reinterpret_cast<u64>(item), item != nullptr, 0}))
|
while (!m_head.compare_exchange(oldv, reinterpret_cast<u64>(item) << 16))
|
||||||
{
|
{
|
||||||
item->m_link = load(oldv);
|
item->m_link = load(oldv);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!oldv.ptr && Notify)
|
if (!oldv && Notify)
|
||||||
{
|
{
|
||||||
// Notify only if queue was empty
|
// Notify only if queue was empty
|
||||||
notify(true);
|
notify(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
return !oldv.ptr;
|
return !oldv;
|
||||||
}
|
}
|
||||||
|
|
||||||
void notify(bool force = false)
|
void notify(bool force = false)
|
||||||
{
|
{
|
||||||
if (force || operator bool())
|
if (force || operator bool())
|
||||||
{
|
{
|
||||||
get_wait_atomic().notify_one();
|
utils::bless<atomic_t<u32>>(&m_head)[1].notify_one();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -510,7 +498,7 @@ public:
|
||||||
lf_queue_slice<T> pop_all_reversed()
|
lf_queue_slice<T> pop_all_reversed()
|
||||||
{
|
{
|
||||||
lf_queue_slice<T> result;
|
lf_queue_slice<T> result;
|
||||||
result.m_head = load(m_head.exchange(fat_ptr{}));
|
result.m_head = load(m_head.exchange(0));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
260
azure-pipelines.yml
Normal file
260
azure-pipelines.yml
Normal file
|
|
@ -0,0 +1,260 @@
|
||||||
|
trigger:
|
||||||
|
branches:
|
||||||
|
include:
|
||||||
|
- master
|
||||||
|
tags:
|
||||||
|
exclude:
|
||||||
|
- '*'
|
||||||
|
pr:
|
||||||
|
branches:
|
||||||
|
include:
|
||||||
|
- master
|
||||||
|
jobs:
|
||||||
|
# - job: Linux_Build
|
||||||
|
# strategy:
|
||||||
|
# matrix:
|
||||||
|
# Clang:
|
||||||
|
# COMPILER: clang
|
||||||
|
# GCC:
|
||||||
|
# COMPILER: gcc
|
||||||
|
# variables:
|
||||||
|
# CCACHE_DIR: $(Pipeline.Workspace)/ccache
|
||||||
|
# CI_HAS_ARTIFACTS: true
|
||||||
|
# UPLOAD_COMMIT_HASH: d812f1254a1157c80fd402f94446310560f54e5f
|
||||||
|
# UPLOAD_REPO_FULL_NAME: "RPCS3/rpcs3-binaries-linux"
|
||||||
|
# DEPLOY_APPIMAGE: true
|
||||||
|
# APPDIR: "/rpcs3/build/appdir"
|
||||||
|
# ARTDIR: "/root/artifacts"
|
||||||
|
# RELEASE_MESSAGE: "/rpcs3/GitHubReleaseMessage.txt"
|
||||||
|
|
||||||
|
# pool:
|
||||||
|
# vmImage: 'ubuntu-latest'
|
||||||
|
|
||||||
|
# steps:
|
||||||
|
# - task: Cache@2
|
||||||
|
# inputs:
|
||||||
|
# key: ccache | $(Agent.OS) | $(COMPILER) | $(Build.SourceVersion)
|
||||||
|
# restoreKeys: |
|
||||||
|
# ccache | $(Agent.OS) | $(COMPILER)
|
||||||
|
# path: $(CCACHE_DIR)
|
||||||
|
# displayName: ccache
|
||||||
|
|
||||||
|
# - bash: |
|
||||||
|
# docker pull --quiet rpcs3/rpcs3-ci-jammy:1.3
|
||||||
|
# docker run \
|
||||||
|
# -v $(pwd):/rpcs3 \
|
||||||
|
# --env-file .ci/docker.env \
|
||||||
|
# -v $CCACHE_DIR:/root/.ccache \
|
||||||
|
# -v $BUILD_ARTIFACTSTAGINGDIRECTORY:/root/artifacts \
|
||||||
|
# rpcs3/rpcs3-ci-jammy:1.3 \
|
||||||
|
# /rpcs3/.ci/build-linux.sh
|
||||||
|
# displayName: Docker setup and build
|
||||||
|
|
||||||
|
# - publish: $(Build.ArtifactStagingDirectory)
|
||||||
|
# condition: succeeded()
|
||||||
|
# artifact: RPCS3 for Linux ($(COMPILER))
|
||||||
|
|
||||||
|
# - bash: |
|
||||||
|
# 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
|
||||||
|
# condition: and(ne(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.Repository.Name'], 'RPCS3/rpcs3'), eq(variables['Build.SourceBranch'], 'refs/heads/master'), eq(variables['COMPILER'], 'clang'))
|
||||||
|
# displayName: Push build to GitHub
|
||||||
|
# env:
|
||||||
|
# RPCS3_TOKEN: $(RPCS3-Token)
|
||||||
|
|
||||||
|
# - job: Windows_Build
|
||||||
|
# variables:
|
||||||
|
# COMPILER: msvc
|
||||||
|
# QT_VER_MAIN: '6'
|
||||||
|
# QT_VER: '6.8.3'
|
||||||
|
# QT_VER_MSVC: 'msvc2022'
|
||||||
|
# QT_DATE: '202503201308'
|
||||||
|
# QTDIR: C:\Qt\$(QT_VER)\$(QT_VER_MSVC)_64
|
||||||
|
# LLVM_VER: '19.1.7'
|
||||||
|
# VULKAN_VER: '1.3.268.0'
|
||||||
|
# VULKAN_SDK_SHA: '8459ef49bd06b697115ddd3d97c9aec729e849cd775f5be70897718a9b3b9db5'
|
||||||
|
# VULKAN_SDK: C:\VulkanSDK\$(VULKAN_VER)
|
||||||
|
# CCACHE_SHA: '6252f081876a9a9f700fae13a5aec5d0d486b28261d7f1f72ac11c7ad9df4da9'
|
||||||
|
# CCACHE_BIN_DIR: 'C:\ccache_bin'
|
||||||
|
# CCACHE_DIR: 'C:\ccache'
|
||||||
|
# CCACHE_INODECACHE: 'true'
|
||||||
|
# CCACHE_SLOPPINESS: 'time_macros'
|
||||||
|
# DEPS_CACHE_DIR: ./dependency_cache
|
||||||
|
# UPLOAD_COMMIT_HASH: 7d09e3be30805911226241afbb14f8cdc2eb054e
|
||||||
|
# UPLOAD_REPO_FULL_NAME: "RPCS3/rpcs3-binaries-win"
|
||||||
|
|
||||||
|
# pool:
|
||||||
|
# vmImage: "windows-latest"
|
||||||
|
|
||||||
|
# steps:
|
||||||
|
# - bash: .ci/get_keys-windows.sh
|
||||||
|
# displayName: Get Cache Keys
|
||||||
|
|
||||||
|
# - task: Cache@2
|
||||||
|
# inputs:
|
||||||
|
# key: ccache | $(Agent.OS) | $(COMPILER) | "$(Build.SourceVersion)"
|
||||||
|
# path: $(CCACHE_DIR)
|
||||||
|
# restoreKeys:
|
||||||
|
# ccache | $(Agent.OS) | $(COMPILER)
|
||||||
|
# displayName: Build Ccache
|
||||||
|
|
||||||
|
# - task: Cache@2
|
||||||
|
# inputs:
|
||||||
|
# key: $(Agent.OS) | $(COMPILER) | "$(QT_VER)" | $(VULKAN_SDK_SHA) | $(CCACHE_SHA) | llvm.lock | glslang.lock
|
||||||
|
# path: $(DEPS_CACHE_DIR)
|
||||||
|
# displayName: Dependencies Cache
|
||||||
|
|
||||||
|
# - bash: .ci/setup-windows.sh
|
||||||
|
# displayName: Download and unpack dependencies
|
||||||
|
|
||||||
|
# - bash: .ci/export-azure-vars.sh
|
||||||
|
# displayName: Export Variables
|
||||||
|
|
||||||
|
# - task: VSBuild@1
|
||||||
|
# inputs:
|
||||||
|
# solution: 'rpcs3.sln'
|
||||||
|
# maximumCpuCount: true
|
||||||
|
# platform: x64
|
||||||
|
# configuration: 'Release'
|
||||||
|
# msbuildArgs: /p:CLToolPath=$(CCACHE_BIN_DIR) /p:UseMultiToolTask=true /p:CustomAfterMicrosoftCommonTargets="$(Build.SourcesDirectory)\buildfiles\msvc\ci_only.targets"
|
||||||
|
# displayName: Compile RPCS3
|
||||||
|
|
||||||
|
# - bash: .ci/deploy-windows.sh
|
||||||
|
# displayName: Pack up build artifacts
|
||||||
|
|
||||||
|
# - publish: $(Build.ArtifactStagingDirectory)
|
||||||
|
# condition: succeeded()
|
||||||
|
# artifact: RPCS3 for Windows
|
||||||
|
|
||||||
|
# - bash: .ci/github-upload.sh
|
||||||
|
# condition: and(ne(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.Repository.Name'], 'RPCS3/rpcs3'), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
|
||||||
|
# displayName: Push build to GitHub
|
||||||
|
# env:
|
||||||
|
# RPCS3_TOKEN: $(RPCS3-Token)
|
||||||
|
|
||||||
|
- job: Mac_Build_x86_64
|
||||||
|
timeoutInMinutes: 180
|
||||||
|
variables:
|
||||||
|
CCACHE_DIR: "/tmp/ccache_dir"
|
||||||
|
CCACHE_MAXSIZE: 300M
|
||||||
|
CI_HAS_ARTIFACTS: true
|
||||||
|
UPLOAD_COMMIT_HASH: 51ae32f468089a8169aaf1567de355ff4a3e0842
|
||||||
|
UPLOAD_REPO_FULL_NAME: "RPCS3/rpcs3-binaries-mac"
|
||||||
|
RELEASE_MESSAGE: "../GitHubReleaseMessage.txt"
|
||||||
|
ARTDIR: $(Build.ArtifactStagingDirectory)
|
||||||
|
QT_VER: '6.7.3'
|
||||||
|
QT_VER_MAIN: '6'
|
||||||
|
LLVM_COMPILER_VER: '19'
|
||||||
|
|
||||||
|
pool:
|
||||||
|
vmImage: "macOS-14"
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- task: Cache@2
|
||||||
|
inputs:
|
||||||
|
key: ccache | "$(Agent.OS)" | "$(Agent.OSArchitecture)" | "$(Build.SourceVersion)"
|
||||||
|
path: $(CCACHE_DIR)
|
||||||
|
restoreKeys: |
|
||||||
|
ccache | "$(Agent.OS)" | "$(Agent.OSArchitecture)"
|
||||||
|
displayName: Ccache cache
|
||||||
|
|
||||||
|
- task: Cache@2
|
||||||
|
inputs:
|
||||||
|
key: qt | "$(Agent.OS)" | "$(Agent.OSArchitecture)" | "$(QT_VER)"
|
||||||
|
path: /tmp/Qt
|
||||||
|
restoreKeys: |
|
||||||
|
qt | "$(Agent.OS)" | "$(Agent.OSArchitecture)" | "$(QT_VER)"
|
||||||
|
displayName: Qt cache
|
||||||
|
|
||||||
|
# - task: Cache@2
|
||||||
|
# inputs:
|
||||||
|
# key: brew | "$(Agent.OS)"
|
||||||
|
# path: /Users/runner/Library/Caches/Homebrew
|
||||||
|
# restoreKeys: |
|
||||||
|
# brew | "$(Agent.OS)"
|
||||||
|
# displayName: Homebrew cache
|
||||||
|
|
||||||
|
- bash: |
|
||||||
|
chmod +x ".ci/build-mac.sh"
|
||||||
|
chmod +x ".ci/deploy-mac.sh"
|
||||||
|
chmod +x ".ci/optimize-mac.sh"
|
||||||
|
".ci/build-mac.sh"
|
||||||
|
displayName: Build macOS (x86_64)
|
||||||
|
|
||||||
|
- publish: $(Build.ArtifactStagingDirectory)
|
||||||
|
condition: succeeded()
|
||||||
|
artifact: RPCS3 for Mac (Intel)
|
||||||
|
|
||||||
|
- bash: |
|
||||||
|
source './.ci/export-cirrus-vars.sh'
|
||||||
|
.ci/github-upload.sh
|
||||||
|
condition: and(ne(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.Repository.Name'], 'RPCS3/rpcs3'), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
|
||||||
|
displayName: Push build to GitHub
|
||||||
|
env:
|
||||||
|
RPCS3_TOKEN: $(RPCS3-Token)
|
||||||
|
|
||||||
|
- job: Mac_Build_arm64
|
||||||
|
timeoutInMinutes: 180
|
||||||
|
variables:
|
||||||
|
CCACHE_DIR: "/tmp/ccache_dir"
|
||||||
|
CCACHE_MAXSIZE: 300M
|
||||||
|
CI_HAS_ARTIFACTS: true
|
||||||
|
UPLOAD_COMMIT_HASH: 8e21bdbc40711a3fccd18fbf17b742348b0f4281
|
||||||
|
UPLOAD_REPO_FULL_NAME: "RPCS3/rpcs3-binaries-mac-arm64"
|
||||||
|
RELEASE_MESSAGE: "../GitHubReleaseMessage.txt"
|
||||||
|
ARTDIR: $(Build.ArtifactStagingDirectory)
|
||||||
|
QT_VER: '6.7.3'
|
||||||
|
QT_VER_MAIN: '6'
|
||||||
|
LLVM_COMPILER_VER: '19'
|
||||||
|
|
||||||
|
pool:
|
||||||
|
vmImage: "macOS-14"
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- task: Cache@2
|
||||||
|
inputs:
|
||||||
|
key: ccache | "$(Agent.OS)" | "$(Agent.OSArchitecture)" | "$(Build.SourceVersion)"
|
||||||
|
path: $(CCACHE_DIR)
|
||||||
|
restoreKeys: |
|
||||||
|
ccache | "$(Agent.OS)" | "$(Agent.OSArchitecture)"
|
||||||
|
displayName: Ccache cache
|
||||||
|
|
||||||
|
- task: Cache@2
|
||||||
|
inputs:
|
||||||
|
key: qt | "$(Agent.OS)" | "$(Agent.OSArchitecture)" | "$(QT_VER)"
|
||||||
|
path: /tmp/Qt
|
||||||
|
restoreKeys: |
|
||||||
|
qt | "$(Agent.OS)" | "$(Agent.OSArchitecture)" | "$(QT_VER)"
|
||||||
|
displayName: Qt cache
|
||||||
|
|
||||||
|
# - task: Cache@2
|
||||||
|
# inputs:
|
||||||
|
# key: brew | "$(Agent.OS)"
|
||||||
|
# path: /Users/runner/Library/Caches/Homebrew
|
||||||
|
# restoreKeys: |
|
||||||
|
# brew | "$(Agent.OS)"
|
||||||
|
# displayName: Homebrew cache
|
||||||
|
|
||||||
|
- bash: |
|
||||||
|
chmod +x ".ci/build-mac-arm64.sh"
|
||||||
|
chmod +x ".ci/deploy-mac-arm64.sh"
|
||||||
|
chmod +x ".ci/optimize-mac.sh"
|
||||||
|
".ci/build-mac-arm64.sh"
|
||||||
|
displayName: Build macOS (arm64)
|
||||||
|
|
||||||
|
- publish: $(Build.ArtifactStagingDirectory)
|
||||||
|
condition: succeeded()
|
||||||
|
artifact: RPCS3 for Mac (Apple Silicon)
|
||||||
|
|
||||||
|
- bash: |
|
||||||
|
source './.ci/export-cirrus-vars.sh'
|
||||||
|
.ci/github-upload.sh
|
||||||
|
condition: and(ne(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.Repository.Name'], 'RPCS3/rpcs3'), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
|
||||||
|
displayName: Push build to GitHub
|
||||||
|
env:
|
||||||
|
RPCS3_TOKEN: $(RPCS3-Token)
|
||||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -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");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 |
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue