mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-05 06:21:26 +12:00
Compare commits
No commits in common. "master" and "v0.0.36" have entirely different histories.
469 changed files with 24147 additions and 17433 deletions
|
@ -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/ { 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
|
||||||
|
|
112
.ci/build-mac-arm64.sh
Executable file → Normal file
112
.ci/build-mac-arm64.sh
Executable file → Normal file
|
@ -1,26 +1,66 @@
|
||||||
#!/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
|
||||||
|
|
||||||
/opt/homebrew/bin/brew install -f --overwrite --quiet nasm ninja p7zip ccache pipenv gnutls freetype googletest #create-dmg
|
/usr/local/bin/brew update
|
||||||
/opt/homebrew/bin/brew install -f --quiet ffmpeg@5
|
sudo rm -rf /usr/local/Cellar/curl /usr/local/opt/curl
|
||||||
/opt/homebrew/bin/brew install --quiet "llvm@$LLVM_COMPILER_VER" glew cmake sdl3 vulkan-headers coreutils
|
/usr/local/bin/brew install -f --overwrite curl
|
||||||
/opt/homebrew/bin/brew link -f --quiet "llvm@$LLVM_COMPILER_VER" ffmpeg@5
|
/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.3.0 release
|
export BREW_ARM64_PATH="/opt/homebrew1"
|
||||||
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/7255441cbcafabaa8950f67c7ec55ff499dbb2d3/Formula/m/molten-vk.rb
|
sudo mkdir -p "$BREW_ARM64_PATH"
|
||||||
/opt/homebrew/bin/brew install -f --overwrite --formula --quiet ./molten-vk.rb
|
sudo chmod 777 "$BREW_ARM64_PATH"
|
||||||
|
curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C "$BREW_ARM64_PATH"
|
||||||
|
|
||||||
|
#"$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;
|
||||||
|
@ -32,53 +72,49 @@ 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
|
||||||
# nested Qt 6.9.1 URL workaround
|
# nested Qt 6.8.3 URL workaround
|
||||||
# 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}_{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
|
# sed -i '' "s/'{}\/{}\/qt{}_{}\/'/'{0}\/{1}\/qt{2}_{3}\/qt{2}_{3}\/'/g" qt-downloader
|
||||||
# archived Qt 6.7.3 URL workaround
|
|
||||||
sed -i '' "s/official_releases/archive/g" qt-downloader
|
|
||||||
cd "/tmp/Qt"
|
cd "/tmp/Qt"
|
||||||
arch -arm64 "$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
|
||||||
arch -arm64 "$BREW_PATH/bin/pipenv" run pip3 install py7zr requests semantic_version lxml --no-cache
|
|
||||||
mkdir -p "$QT_VER/macos" ; ln -s "macos" "$QT_VER/clang_64"
|
mkdir -p "$QT_VER/macos" ; ln -s "macos" "$QT_VER/clang_64"
|
||||||
# sed -i '' 's/args\.version \/ derive_toolchain_dir(args) \/ //g' "$WORKDIR/qt-downloader/qt-downloader" # Qt 6.9.1 workaround
|
# sed -i '' 's/args\.version \/ derive_toolchain_dir(args) \/ //g' "$WORKDIR/qt-downloader/qt-downloader" # Qt 6.8.3 workaround
|
||||||
arch -arm64 "$BREW_PATH/bin/pipenv" run "$WORKDIR/qt-downloader/qt-downloader" macos desktop "$QT_VER" clang_64 --opensource --addons qtmultimedia qtimageformats # -o "$QT_VER/clang_64"
|
"$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/ { 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 \
|
||||||
|
@ -101,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
|
||||||
|
|
50
.ci/build-mac.sh
Executable file → Normal file
50
.ci/build-mac.sh
Executable file → Normal file
|
@ -3,24 +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
|
||||||
|
|
||||||
#/usr/sbin/softwareupdate --install-rosetta --agree-to-license
|
#/usr/sbin/softwareupdate --install-rosetta --agree-to-license
|
||||||
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 update
|
arch -x86_64 /usr/local/bin/brew update
|
||||||
arch -x86_64 /usr/local/bin/brew install -f --overwrite --quiet python || arch -x86_64 /usr/local/bin/brew link --overwrite python
|
arch -x86_64 /usr/local/bin/brew install -f --overwrite python || arch -x86_64 /usr/local/bin/brew link --overwrite python
|
||||||
arch -x86_64 /usr/local/bin/brew install -f --overwrite --quiet nasm ninja p7zip ccache pipenv gnutls freetype #create-dmg
|
arch -x86_64 /usr/local/bin/brew uninstall -f --ignore-dependencies ffmpeg
|
||||||
arch -x86_64 /usr/local/bin/brew install -f --quiet ffmpeg@5
|
arch -x86_64 /usr/local/bin/brew install -f --build-from-source ffmpeg@5
|
||||||
arch -x86_64 /usr/local/bin/brew install --quiet "llvm@$LLVM_COMPILER_VER" glew cmake sdl3 vulkan-headers coreutils
|
arch -x86_64 /usr/local/bin/brew reinstall -f --build-from-source gnutls freetype
|
||||||
arch -x86_64 /usr/local/bin/brew link -f --quiet "llvm@$LLVM_COMPILER_VER" ffmpeg@5
|
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.3.0 release
|
# moltenvk based on commit for 1.2.11 release
|
||||||
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/7255441cbcafabaa8950f67c7ec55ff499dbb2d3/Formula/m/molten-vk.rb
|
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/6bfc8950c696d1f952425e8af2a6248603dc0df9/Formula/m/molten-vk.rb
|
||||||
arch -x86_64 /usr/local/bin/brew install -f --overwrite --formula --quiet ./molten-vk.rb
|
arch -x86_64 /usr/local/bin/brew install -f --overwrite ./molten-vk.rb
|
||||||
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"
|
||||||
|
@ -36,16 +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
|
||||||
# nested Qt 6.9.1 URL workaround
|
# nested Qt 6.8.3 URL workaround
|
||||||
# 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}_{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
|
# sed -i '' "s/'{}\/{}\/qt{}_{}\/'/'{0}\/{1}\/qt{2}_{3}\/qt{2}_{3}\/'/g" qt-downloader
|
||||||
# archived Qt 6.7.3 URL workaround
|
|
||||||
sed -i '' "s/official_releases/archive/g" qt-downloader
|
|
||||||
cd "/tmp/Qt"
|
cd "/tmp/Qt"
|
||||||
arch -x86_64 "$BREW_X64_PATH/bin/pipenv" --python "$BREW_X64_PATH/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" # Qt 6.9.1 workaround
|
# sed -i '' 's/args\.version \/ derive_toolchain_dir(args) \/ //g' "$WORKDIR/qt-downloader/qt-downloader" # Qt 6.8.3 workaround
|
||||||
arch -x86_64 "$BREW_X64_PATH/bin/pipenv" --python "$BREW_X64_PATH/bin/python3" run "$WORKDIR/qt-downloader/qt-downloader" macos desktop "$QT_VER" clang_64 --opensource --addons qtmultimedia qtimageformats # -o "$QT_VER/clang_64"
|
"$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"
|
||||||
|
@ -80,8 +81,6 @@ mkdir build && cd build || exit 1
|
||||||
export MACOSX_DEPLOYMENT_TARGET=14.0
|
export MACOSX_DEPLOYMENT_TARGET=14.0
|
||||||
|
|
||||||
"$BREW_X64_PATH/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 \
|
||||||
|
@ -104,21 +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_IGNORE_PATH="$BREW_X64_PATH/lib" \
|
-DCMAKE_IGNORE_PATH="$BREW_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
|
||||||
|
|
||||||
"$BREW_X64_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.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
|
|
|
@ -25,17 +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
|
||||||
|
|
||||||
curl -fsSLo /uruntime "https://github.com/VHSgunzo/uruntime/releases/download/v0.3.4/uruntime-appimage-dwarfs-$CPU_ARCH"
|
linuxdeploy --appimage-extract
|
||||||
chmod +x /uruntime
|
./squashfs-root/plugins/linuxdeploy-plugin-appimage/usr/bin/appimagetool AppDir -g
|
||||||
/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"
|
|
12
.ci/deploy-mac-arm64.sh
Executable file → Normal file
12
.ci/deploy-mac-arm64.sh
Executable file → Normal file
|
@ -16,9 +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/lib/libsharpyuv.0.dylib)" "rpcs3.app/Contents/lib/libsharpyuv.0.dylib"
|
cp "$(realpath /opt/homebrew1/lib/libsharpyuv.0.dylib)" "rpcs3.app/Contents/lib/libsharpyuv.0.dylib"
|
||||||
cp "$(realpath /opt/homebrew/lib/libintl.8.dylib)" "rpcs3.app/Contents/lib/libintl.8.dylib"
|
cp "$(realpath /opt/homebrew1/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" \
|
||||||
|
@ -33,8 +33,10 @@ rm -rf "rpcs3.app/Contents/Frameworks/QtPdf.framework" \
|
||||||
|
|
||||||
# Hack
|
# Hack
|
||||||
install_name_tool \
|
install_name_tool \
|
||||||
|
-delete_rpath /opt/homebrew1/lib \
|
||||||
-delete_rpath /opt/homebrew/lib \
|
-delete_rpath /opt/homebrew/lib \
|
||||||
-delete_rpath /opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/lib RPCS3.app/Contents/MacOS/rpcs3
|
-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
|
#-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
|
||||||
|
@ -65,7 +67,7 @@ echo "IconIndex=0" >> Quickstart.url
|
||||||
#SHA256SUM=$(shasum -a 256 "$DMG_FILEPATH" | awk '{ print $1 }')
|
#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"
|
||||||
"$BREW_PATH/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 }')
|
||||||
|
|
||||||
|
|
0
.ci/deploy-mac.sh
Executable file → Normal file
0
.ci/deploy-mac.sh
Executable file → Normal file
|
@ -1,38 +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
|
|
||||||
|
|
||||||
# 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
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -15,4 +15,4 @@ pkg install "llvm$LLVM_COMPILER_VER"
|
||||||
pkg install git ccache cmake ninja "qt$QT_VER_MAIN-multimedia" "qt$QT_VER_MAIN-svg" glew openal-soft ffmpeg
|
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/"
|
||||||
|
@ -15,8 +20,9 @@ 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,10 +31,11 @@ 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
|
||||||
|
@ -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.6"
|
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.6"
|
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.6"
|
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.6"
|
|
||||||
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: "arch -X86_64 .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.7.3'
|
|
||||||
QT_VER_MAIN: '6'
|
|
||||||
LLVM_COMPILER_VER: '19'
|
|
||||||
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.9.1'
|
QT_VER: '6.8.3'
|
||||||
QT_VER_MSVC: 'msvc2022'
|
QT_VER_MSVC: 'msvc2022'
|
||||||
QT_DATE: '202505291653'
|
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/*
|
||||||
|
|
2
.gitmodules
vendored
2
.gitmodules
vendored
|
@ -106,5 +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
|
ignore = dirty
|
||||||
|
|
82
3rdparty/CMakeLists.txt
vendored
82
3rdparty/CMakeLists.txt
vendored
|
@ -131,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)
|
||||||
|
@ -200,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()
|
||||||
|
|
||||||
|
@ -215,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)
|
||||||
|
@ -252,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(FATAL_ERROR
|
|
||||||
"-- 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()
|
||||||
|
@ -345,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)
|
||||||
|
|
||||||
|
|
2
3rdparty/FAudio
vendored
2
3rdparty/FAudio
vendored
|
@ -1 +1 @@
|
||||||
Subproject commit e6ddfabab2efbc8765750039634fe5e24ac31205
|
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 49b97f2
|
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 dc7d7054a5b4f3bec1dc23a42fd616a0847af948
|
Subproject commit 90191edd20bb877c5cbddfdac7ec0fe49ad93727
|
2
3rdparty/SoundTouch/soundtouch
vendored
2
3rdparty/SoundTouch/soundtouch
vendored
|
@ -1 +1 @@
|
||||||
Subproject commit 3982730833b6daefe77dcfb32b5c282851640c17
|
Subproject commit 394e1f58b23dc80599214d2e9b6a5e0dfd0bbe07
|
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 fdb8a789d2b446b77bd7cdd2eff95f6cbc814cf4
|
Subproject commit 57495c64871d18905a0941db9196ef90bafe9a29
|
71
3rdparty/curl/libcurl.vcxproj
vendored
71
3rdparty/curl/libcurl.vcxproj
vendored
|
@ -62,8 +62,8 @@
|
||||||
<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" />
|
||||||
|
@ -76,18 +76,6 @@
|
||||||
<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\inet_pton.c" />
|
|
||||||
<ClCompile Include="curl\lib\curlx\multibyte.c" />
|
|
||||||
<ClCompile Include="curl\lib\curlx\nonblock.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\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_des.c" />
|
||||||
<ClCompile Include="curl\lib\curl_endian.c" />
|
<ClCompile Include="curl\lib\curl_endian.c" />
|
||||||
|
@ -96,6 +84,7 @@
|
||||||
<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" />
|
||||||
|
@ -105,16 +94,14 @@
|
||||||
<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\fopen.c" />
|
||||||
|
@ -127,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" />
|
||||||
|
@ -145,10 +134,10 @@
|
||||||
<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_ntop.c" />
|
||||||
|
<ClCompile Include="curl\lib\inet_pton.c" />
|
||||||
<ClCompile Include="curl\lib\krb5.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" />
|
||||||
|
@ -156,8 +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\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" />
|
||||||
|
@ -185,20 +174,21 @@
|
||||||
<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_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" />
|
||||||
|
@ -208,6 +198,7 @@
|
||||||
<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" />
|
||||||
|
@ -269,20 +260,9 @@
|
||||||
<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\curlx.h" />
|
|
||||||
<ClInclude Include="curl\lib\curlx\dynbuf.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\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\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_des.h" />
|
||||||
<ClInclude Include="curl\lib\curl_endian.h" />
|
<ClInclude Include="curl\lib\curl_endian.h" />
|
||||||
|
@ -297,6 +277,7 @@
|
||||||
<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_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" />
|
||||||
|
@ -310,15 +291,14 @@
|
||||||
<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\fopen.h" />
|
||||||
|
@ -346,15 +326,15 @@
|
||||||
<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_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\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" />
|
||||||
|
@ -384,19 +364,19 @@
|
||||||
<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_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" />
|
||||||
|
@ -409,6 +389,7 @@
|
||||||
<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" />
|
||||||
|
|
213
3rdparty/curl/libcurl.vcxproj.filters
vendored
213
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>
|
||||||
|
@ -63,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>
|
||||||
|
@ -123,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>
|
||||||
|
@ -132,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>
|
||||||
|
@ -162,6 +177,9 @@
|
||||||
<ClCompile Include="curl\lib\inet_ntop.c">
|
<ClCompile Include="curl\lib\inet_ntop.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="curl\lib\inet_pton.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="curl\lib\krb5.c">
|
<ClCompile Include="curl\lib\krb5.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -192,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>
|
||||||
|
@ -270,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>
|
||||||
|
@ -279,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>
|
||||||
|
@ -291,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>
|
||||||
|
@ -369,9 +402,15 @@
|
||||||
<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>
|
||||||
|
@ -405,6 +444,9 @@
|
||||||
<ClCompile Include="curl\lib\headers.c">
|
<ClCompile Include="curl\lib\headers.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="curl\lib\timediff.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="curl\lib\fopen.c">
|
<ClCompile Include="curl\lib\fopen.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -468,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>
|
||||||
|
@ -477,78 +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>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="curl\include\curl\curl.h">
|
<ClInclude Include="curl\include\curl\curl.h">
|
||||||
|
@ -620,9 +593,15 @@
|
||||||
<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>
|
||||||
|
@ -662,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>
|
||||||
|
@ -761,6 +743,9 @@
|
||||||
<ClInclude Include="curl\lib\inet_ntop.h">
|
<ClInclude Include="curl\lib\inet_ntop.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</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>
|
||||||
|
@ -779,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>
|
||||||
|
@ -872,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>
|
||||||
|
@ -884,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>
|
||||||
|
@ -926,12 +920,18 @@
|
||||||
<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>
|
||||||
|
@ -962,6 +962,9 @@
|
||||||
<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>
|
||||||
|
@ -1034,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>
|
||||||
|
@ -1049,69 +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>
|
|
||||||
</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
|
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>
|
||||||
|
|
2
3rdparty/hidapi/hidapi
vendored
2
3rdparty/hidapi/hidapi
vendored
|
@ -1 +1 @@
|
||||||
Subproject commit f42423643ec9011c98cccc0bb790722bbbd3f30b
|
Subproject commit 6bfdcf7368169efe1b745cd4468d45cda05ef8de
|
2
3rdparty/libpng/libpng
vendored
2
3rdparty/libpng/libpng
vendored
|
@ -1 +1 @@
|
||||||
Subproject commit 2b978915d82377df13fcbb1fb56660195ded868a
|
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 c9a6709bd21750f1ad9597be21abace78c6378c9
|
Subproject commit f6864924f76e1a0b4abaefc76ae2ed22b1a8916e
|
2
3rdparty/libsdl-org/SDL.vcxproj
vendored
2
3rdparty/libsdl-org/SDL.vcxproj
vendored
|
@ -532,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" />
|
||||||
|
|
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()
|
||||||
|
|
||||||
|
|
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 50fb5e701d8b0d3fe8262ed84668a94cc8cbf0b1
|
Subproject commit f76628fb5b25746fcb75a7ce85be0d8c6439fc57
|
3
3rdparty/qt6.cmake
vendored
3
3rdparty/qt6.cmake
vendored
|
@ -32,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
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
|
18
BUILDING.md
18
BUILDING.md
|
@ -19,26 +19,26 @@ The following tools are required to build RPCS3 on Windows 10 or later:
|
||||||
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.9.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.9.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.9.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.9.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)
|
||||||
|
|
||||||
|
@ -121,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.9.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**)
|
||||||
|
|
||||||
|
@ -129,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)
|
||||||
|
@ -29,27 +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_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_MVK "Prefer system MoltenVK instead of the builtin one" OFF)
|
|
||||||
option(USE_SYSTEM_OPENAL "Prefer system OpenAL instead of the prebuild one" ON)
|
|
||||||
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_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_WOLFSSL "Prefer system MoltenVK instead of the builtin one" OFF)
|
option(USE_SYSTEM_FFMPEG "Prefer system ffmpeg instead of the prebuild one" OFF)
|
||||||
option(USE_SYSTEM_ZLIB "Prefer system ZLIB instead of the builtin one" ON)
|
option(USE_SYSTEM_OPENAL "Prefer system OpenAL instead of the prebuild one" ON)
|
||||||
|
option(USE_SYSTEM_CURL "Prefer system Curl instead of the prebuild one" ON)
|
||||||
|
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)
|
|
||||||
|
|
||||||
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/buildfiles/cmake")
|
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/buildfiles/cmake")
|
||||||
|
|
||||||
|
@ -123,6 +105,11 @@ 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()
|
endif()
|
||||||
|
|
||||||
|
find_program(CCACHE_FOUND ccache)
|
||||||
|
if(CCACHE_FOUND)
|
||||||
|
set(CMAKE_CXX_COMPILER_LAUNCHER ccache)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(APPLE AND CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
|
if(APPLE AND CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
|
||||||
include_directories(/opt/homebrew/include)
|
include_directories(/opt/homebrew/include)
|
||||||
link_directories(/opt/homebrew/lib)
|
link_directories(/opt/homebrew/lib)
|
||||||
|
@ -157,9 +144,6 @@ 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
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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,7 +393,7 @@ 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();
|
[[noreturn]] ~throw_exception();
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
|
@ -39,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)
|
||||||
|
@ -75,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)
|
||||||
|
@ -106,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)
|
||||||
|
@ -133,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>
|
||||||
|
@ -192,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)
|
||||||
|
|
|
@ -2490,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);
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
1
bin/git/README.md
Normal file
1
bin/git/README.md
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Cached data from GitHub API.
|
13533
bin/git/commits.lst
Normal file
13533
bin/git/commits.lst
Normal file
File diff suppressed because one or more lines are too long
|
@ -5,12 +5,13 @@ if(MSVC)
|
||||||
add_compile_definitions(
|
add_compile_definitions(
|
||||||
_CRT_SECURE_NO_DEPRECATE=1 _CRT_NON_CONFORMING_SWPRINTFS=1 _SCL_SECURE_NO_WARNINGS=1
|
_CRT_SECURE_NO_DEPRECATE=1 _CRT_NON_CONFORMING_SWPRINTFS=1 _SCL_SECURE_NO_WARNINGS=1
|
||||||
NOMINMAX _ENABLE_EXTENDED_ALIGNED_STORAGE=1 _HAS_EXCEPTIONS=0)
|
NOMINMAX _ENABLE_EXTENDED_ALIGNED_STORAGE=1 _HAS_EXCEPTIONS=0)
|
||||||
add_link_options(/DYNAMICBASE:YES)
|
add_link_options(/DYNAMICBASE:NO /BASE:0x10000 /FIXED)
|
||||||
|
|
||||||
#TODO: Some of these could be cleaned up
|
#TODO: Some of these could be cleaned up
|
||||||
add_compile_options(/wd4805) # Comparing boolean and int
|
add_compile_options(/wd4805) # Comparing boolean and int
|
||||||
add_compile_options(/wd4804) # Using integer operators with booleans
|
add_compile_options(/wd4804) # Using integer operators with booleans
|
||||||
add_compile_options(/wd4200) # Zero-sized array in struct/union
|
add_compile_options(/wd4200) # Zero-sized array in struct/union
|
||||||
|
add_link_options(/ignore:4281) # Undesirable base address 0x10000
|
||||||
|
|
||||||
# MSVC 2017 uses iterator as base class internally, causing a lot of warning spam
|
# MSVC 2017 uses iterator as base class internally, causing a lot of warning spam
|
||||||
add_compile_definitions(_SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING=1)
|
add_compile_definitions(_SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING=1)
|
||||||
|
@ -18,6 +19,8 @@ if(MSVC)
|
||||||
# Increase stack limit to 8 MB
|
# Increase stack limit to 8 MB
|
||||||
add_link_options(/STACK:8388608,1048576)
|
add_link_options(/STACK:8388608,1048576)
|
||||||
else()
|
else()
|
||||||
|
# Some distros have the compilers set to use PIE by default, but RPCS3 doesn't work with PIE, so we need to disable it.
|
||||||
|
check_cxx_compiler_flag("-no-pie" HAS_NO_PIE)
|
||||||
check_cxx_compiler_flag("-march=native" COMPILER_SUPPORTS_MARCH_NATIVE)
|
check_cxx_compiler_flag("-march=native" COMPILER_SUPPORTS_MARCH_NATIVE)
|
||||||
check_cxx_compiler_flag("-msse -msse2 -mcx16" COMPILER_X86)
|
check_cxx_compiler_flag("-msse -msse2 -mcx16" COMPILER_X86)
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
|
@ -90,12 +93,18 @@ else()
|
||||||
add_compile_options(-Wno-class-memaccess)
|
add_compile_options(-Wno-class-memaccess)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Note that this refers to binary size optimization during linking, it differs from optimization compiler level
|
|
||||||
add_link_options(-Wl,-O2)
|
|
||||||
|
|
||||||
if(NOT APPLE AND NOT WIN32)
|
if(NOT APPLE AND NOT WIN32)
|
||||||
# This hides our LLVM from mesa's LLVM, otherwise we get some unresolvable conflicts.
|
# This hides our LLVM from mesa's LLVM, otherwise we get some unresolvable conflicts.
|
||||||
add_link_options(-Wl,--exclude-libs,ALL)
|
add_link_options(-Wl,--exclude-libs,ALL)
|
||||||
|
|
||||||
|
if(HAS_NO_PIE)
|
||||||
|
add_link_options(-no-pie)
|
||||||
|
endif()
|
||||||
|
elseif(APPLE)
|
||||||
|
if (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64")
|
||||||
|
add_link_options(-Wl,-image_base,0x10000 -Wl,-pagezero_size,0x10000)
|
||||||
|
add_link_options(-Wl,-no_pie)
|
||||||
|
endif()
|
||||||
elseif(WIN32)
|
elseif(WIN32)
|
||||||
add_compile_definitions(__STDC_FORMAT_MACROS=1)
|
add_compile_definitions(__STDC_FORMAT_MACROS=1)
|
||||||
|
|
||||||
|
@ -104,6 +113,11 @@ else()
|
||||||
|
|
||||||
# Increase stack limit to 8 MB
|
# Increase stack limit to 8 MB
|
||||||
add_link_options(-Wl,--stack -Wl,8388608)
|
add_link_options(-Wl,--stack -Wl,8388608)
|
||||||
|
|
||||||
|
# For arm64 windows, the image base cannot be below 4GB or the OS rejects the binary without much explanation.
|
||||||
|
if(COMPILER_X86)
|
||||||
|
add_link_options(-Wl,--image-base,0x10000)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Specify C++ library to use as standard C++ when using clang (not required on linux due to GNU)
|
# Specify C++ library to use as standard C++ when using clang (not required on linux due to GNU)
|
||||||
|
|
|
@ -1,51 +0,0 @@
|
||||||
# Copy remaining DLLS
|
|
||||||
|
|
||||||
cmake_path(GET exe PARENT_PATH exe_dir)
|
|
||||||
cmake_path(CONVERT "${MSYS2_CLANG_BIN}" TO_CMAKE_PATH_LIST msys2_clang_bin)
|
|
||||||
cmake_path(CONVERT "${MSYS2_USR_BIN}" TO_CMAKE_PATH_LIST msys2_usr_bin)
|
|
||||||
|
|
||||||
message(STATUS "Getting runtime dependencies for '${exe}' in '${exe_dir}'")
|
|
||||||
message(STATUS "Dependency dirs: '${msys2_clang_bin}', '${msys2_usr_bin}'")
|
|
||||||
|
|
||||||
file(GET_RUNTIME_DEPENDENCIES EXECUTABLES ${exe}
|
|
||||||
RESOLVED_DEPENDENCIES_VAR resolved_deps
|
|
||||||
UNRESOLVED_DEPENDENCIES_VAR unresolved_deps
|
|
||||||
DIRECTORIES ${msys2_clang_bin} ${msys2_usr_bin})
|
|
||||||
|
|
||||||
foreach(dep IN LISTS resolved_deps)
|
|
||||||
cmake_path(GET dep FILENAME dep_filename)
|
|
||||||
cmake_path(GET dep PARENT_PATH dep_dir_raw)
|
|
||||||
cmake_path(CONVERT "${dep_dir_raw}" TO_CMAKE_PATH_LIST dep_dir)
|
|
||||||
|
|
||||||
string(COMPARE EQUAL "${dep_dir}" "${msys2_clang_bin}" is_clang_path)
|
|
||||||
string(COMPARE EQUAL "${dep_dir}" "${msys2_usr_bin}" is_usr_path)
|
|
||||||
|
|
||||||
set(same_path FALSE)
|
|
||||||
if(is_clang_path OR is_usr_path)
|
|
||||||
set(same_path TRUE)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(same_path)
|
|
||||||
set(dest "${exe_dir}/${dep_filename}")
|
|
||||||
if(NOT EXISTS "${dest}")
|
|
||||||
file(COPY "${dep}" DESTINATION "${exe_dir}")
|
|
||||||
message(STATUS "Copied '${dep_filename}' to '${exe_dir}'")
|
|
||||||
else()
|
|
||||||
message(STATUS "Already exists: '${dest}', skipping.")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
message(STATUS "Found and ignored '${dep}' in '${dep_dir}'. Is clang path: ${is_clang_path}, is usr path: ${is_usr_path}")
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
# Warn about unresolved dependencies
|
|
||||||
if(unresolved_deps)
|
|
||||||
message(WARNING "Unresolved dependencies:")
|
|
||||||
foreach(dep IN LISTS unresolved_deps)
|
|
||||||
cmake_path(GET dep PARENT_PATH dep_dir)
|
|
||||||
string(TOLOWER "${dep_dir}" dep_dir_lower)
|
|
||||||
if(NOT dep_dir_lower MATCHES ".*(windows[/\\]system32|windows[/\\]winsxs|program files).*")
|
|
||||||
message(STATUS " - ${dep_dir}/${dep}")
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
endif()
|
|
|
@ -21,7 +21,7 @@
|
||||||
if (FFMPEG_LIBRARIES AND FFMPEG_INCLUDE_DIR)
|
if (FFMPEG_LIBRARIES AND FFMPEG_INCLUDE_DIR)
|
||||||
# in cache already
|
# in cache already
|
||||||
set(FFMPEG_FOUND TRUE)
|
set(FFMPEG_FOUND TRUE)
|
||||||
else ()
|
else (FFMPEG_LIBRARIES AND FFMPEG_INCLUDE_DIR)
|
||||||
# use pkg-config to get the directories and then use these values
|
# use pkg-config to get the directories and then use these values
|
||||||
# in the FIND_PATH() and FIND_LIBRARY() calls
|
# in the FIND_PATH() and FIND_LIBRARY() calls
|
||||||
find_package(PkgConfig)
|
find_package(PkgConfig)
|
||||||
|
@ -31,7 +31,7 @@ else ()
|
||||||
pkg_check_modules(_FFMPEG_AVUTIL libavutil)
|
pkg_check_modules(_FFMPEG_AVUTIL libavutil)
|
||||||
pkg_check_modules(_FFMPEG_SWSCALE libswscale)
|
pkg_check_modules(_FFMPEG_SWSCALE libswscale)
|
||||||
pkg_check_modules(_FFMPEG_SWRESAMPLE libswresample)
|
pkg_check_modules(_FFMPEG_SWRESAMPLE libswresample)
|
||||||
endif ()
|
endif (PKG_CONFIG_FOUND)
|
||||||
|
|
||||||
find_path(FFMPEG_AVCODEC_INCLUDE_DIR
|
find_path(FFMPEG_AVCODEC_INCLUDE_DIR
|
||||||
NAMES libavcodec/avcodec.h
|
NAMES libavcodec/avcodec.h
|
||||||
|
@ -64,10 +64,9 @@ else ()
|
||||||
PATHS ${_FFMPEG_SWRESAMPLE_LIBRARY_DIRS} /usr/lib /usr/local/lib /opt/local/lib /sw/lib
|
PATHS ${_FFMPEG_SWRESAMPLE_LIBRARY_DIRS} /usr/lib /usr/local/lib /opt/local/lib /sw/lib
|
||||||
)
|
)
|
||||||
|
|
||||||
find_package_handle_standard_args(FFMPEG
|
if (FFMPEG_LIBAVCODEC AND FFMPEG_LIBAVFORMAT AND FFMPEG_LIBSWSCALE AND FFMPEG_LIBSWRESAMPLE)
|
||||||
DEFAULT_MSG
|
set(FFMPEG_FOUND TRUE)
|
||||||
FFMPEG_LIBAVCODEC FFMPEG_LIBAVFORMAT FFMPEG_LIBSWSCALE FFMPEG_LIBSWRESAMPLE
|
endif()
|
||||||
)
|
|
||||||
|
|
||||||
if (FFMPEG_FOUND)
|
if (FFMPEG_FOUND)
|
||||||
set(FFMPEG_INCLUDE_DIR ${FFMPEG_AVCODEC_INCLUDE_DIR})
|
set(FFMPEG_INCLUDE_DIR ${FFMPEG_AVCODEC_INCLUDE_DIR})
|
||||||
|
@ -80,6 +79,17 @@ else ()
|
||||||
${FFMPEG_LIBSWRESAMPLE}
|
${FFMPEG_LIBSWRESAMPLE}
|
||||||
)
|
)
|
||||||
|
|
||||||
endif ()
|
endif (FFMPEG_FOUND)
|
||||||
|
|
||||||
|
if (FFMPEG_FOUND)
|
||||||
|
if (NOT FFMPEG_FIND_QUIETLY)
|
||||||
|
message(STATUS "Found FFMPEG or Libav: ${FFMPEG_LIBRARIES}, ${FFMPEG_INCLUDE_DIR}")
|
||||||
|
endif (NOT FFMPEG_FIND_QUIETLY)
|
||||||
|
else (FFMPEG_FOUND)
|
||||||
|
if (FFMPEG_FIND_REQUIRED)
|
||||||
|
message(FATAL_ERROR "Could not find libavcodec or libavformat or libavutil or libswscale or libswresample")
|
||||||
|
endif (FFMPEG_FIND_REQUIRED)
|
||||||
|
endif (FFMPEG_FOUND)
|
||||||
|
|
||||||
|
endif (FFMPEG_LIBRARIES AND FFMPEG_INCLUDE_DIR)
|
||||||
|
|
||||||
endif ()
|
|
||||||
|
|
|
@ -49,11 +49,11 @@ IF (NOT WIN32)
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLAND_CLIENT REQUIRED_VARS WAYLAND_CLIENT_LIBRARIES WAYLAND_CLIENT_INCLUDE_DIR NAME_MISMATCHED)
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLAND_CLIENT DEFAULT_MSG WAYLAND_CLIENT_LIBRARIES WAYLAND_CLIENT_INCLUDE_DIR)
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLAND_SERVER REQUIRED_VARS WAYLAND_SERVER_LIBRARIES WAYLAND_SERVER_INCLUDE_DIR NAME_MISMATCHED)
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLAND_SERVER DEFAULT_MSG WAYLAND_SERVER_LIBRARIES WAYLAND_SERVER_INCLUDE_DIR)
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLAND_EGL REQUIRED_VARS WAYLAND_EGL_LIBRARIES WAYLAND_EGL_INCLUDE_DIR NAME_MISMATCHED)
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLAND_EGL DEFAULT_MSG WAYLAND_EGL_LIBRARIES WAYLAND_EGL_INCLUDE_DIR)
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLAND_CURSOR REQUIRED_VARS WAYLAND_CURSOR_LIBRARIES WAYLAND_CURSOR_INCLUDE_DIR NAME_MISMATCHED)
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLAND_CURSOR DEFAULT_MSG WAYLAND_CURSOR_LIBRARIES WAYLAND_CURSOR_INCLUDE_DIR)
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLAND REQUIRED_VARS WAYLAND_LIBRARIES WAYLAND_INCLUDE_DIR NAME_MISMATCHED)
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLAND DEFAULT_MSG WAYLAND_LIBRARIES WAYLAND_INCLUDE_DIR)
|
||||||
|
|
||||||
MARK_AS_ADVANCED(
|
MARK_AS_ADVANCED(
|
||||||
WAYLAND_INCLUDE_DIR WAYLAND_LIBRARIES
|
WAYLAND_INCLUDE_DIR WAYLAND_LIBRARIES
|
||||||
|
|
2
buildfiles/cmake/TCDarwinARM64.cmake
Normal file
2
buildfiles/cmake/TCDarwinARM64.cmake
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
set(CMAKE_SYSTEM_NAME Darwin)
|
||||||
|
set(CMAKE_SYSTEM_PROCESSOR arm64)
|
|
@ -3,12 +3,10 @@
|
||||||
<ImportGroup Label="PropertySheets" />
|
<ImportGroup Label="PropertySheets" />
|
||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<IncludePath>.\;..\;$(SolutionDir)3rdparty\asmjit\asmjit\src;$(SolutionDir)3rdparty\yaml-cpp\yaml-cpp\include;$(SolutionDir)3rdparty\ffmpeg\include;$(VC_IncludePath);$(WindowsSDK_IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)3rdparty\libpng\libpng;$(SolutionDir)3rdparty\GL;$(SolutionDir)3rdparty\stblib\stb;$(SolutionDir)3rdparty\openal\openal-soft\include\AL;$(SolutionDir)3rdparty\pugixml\src;$(SolutionDir)3rdparty\hidapi\hidapi</IncludePath>
|
<IncludePath>.\;..\;..\3rdparty\asmjit\asmjit\src;..\..\3rdparty\yaml-cpp\yaml-cpp\include;..\3rdparty\ffmpeg\include;$(VC_IncludePath);$(WindowsSDK_IncludePath);$(UniversalCRT_IncludePath);..\3rdparty\libpng\libpng;..\3rdparty\GL;..\3rdparty\stblib\stb;..\3rdparty\openal\openal-soft\include\AL;..\3rdparty\pugixml\src;..\3rdparty\hidapi\hidapi</IncludePath>
|
||||||
<OutDir>$(SolutionDir)build\lib\$(Configuration)-$(Platform)\</OutDir>
|
<OutDir>$(SolutionDir)build\lib\$(Configuration)-$(Platform)\</OutDir>
|
||||||
<LibraryPath>$(SolutionDir)build\lib\$(Configuration)-$(Platform)\;$(UniversalCRT_LibraryPath_x64);$(LibraryPath)</LibraryPath>
|
<LibraryPath>$(SolutionDir)build\lib\$(Configuration)-$(Platform)\;$(UniversalCRT_LibraryPath_x64);$(LibraryPath)</LibraryPath>
|
||||||
<IntDir>$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)\</IntDir>
|
<IntDir>$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)\</IntDir>
|
||||||
<GTestPath>$(SolutionDir)packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.1.8.1.7\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.targets</GTestPath>
|
|
||||||
<GTestInstalled Condition="Exists('$(GTestPath)')">true</GTestInstalled>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup>
|
<ItemDefinitionGroup>
|
||||||
<Lib>
|
<Lib>
|
||||||
|
@ -132,7 +130,7 @@
|
||||||
LLVMX86TargetMCA.lib;
|
LLVMX86TargetMCA.lib;
|
||||||
LLVMXRay.lib;
|
LLVMXRay.lib;
|
||||||
</AdditionalDependencies>
|
</AdditionalDependencies>
|
||||||
<AdditionalLibraryDirectories>$(SolutionDir)3rdparty\ffmpeg\lib\windows\x86_64</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>..\3rdparty\ffmpeg\lib\windows\x86_64</AdditionalLibraryDirectories>
|
||||||
<StackReserveSize>8388608</StackReserveSize>
|
<StackReserveSize>8388608</StackReserveSize>
|
||||||
<StackCommitSize>1048576</StackCommitSize>
|
<StackCommitSize>1048576</StackCommitSize>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
16
rpcs3.sln
16
rpcs3.sln
|
@ -107,13 +107,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openal-soft", "3rdparty\ope
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fusion", "3rdparty\fusion\fusion.vcxproj", "{3C67A2FF-4710-402A-BE3E-31B0CB0576DF}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fusion", "3rdparty\fusion\fusion.vcxproj", "{3C67A2FF-4710-402A-BE3E-31B0CB0576DF}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "rpcs3.test", "rpcs3.test", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rpcs3_test", "rpcs3\tests\rpcs3_test.vcxproj", "{D1CBF84E-07F8-4ACB-9CD2-BD205FDEEE1E}"
|
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
|
||||||
{70CD65B0-91D6-4FAE-9A7B-4AF55D0D1B12} = {70CD65B0-91D6-4FAE-9A7B-4AF55D0D1B12}
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|x64 = Debug|x64
|
Debug|x64 = Debug|x64
|
||||||
|
@ -151,9 +144,7 @@ Global
|
||||||
{60F89955-91C6-3A36-8000-13C592FEC2DF}.Release|x64.ActiveCfg = Release|x64
|
{60F89955-91C6-3A36-8000-13C592FEC2DF}.Release|x64.ActiveCfg = Release|x64
|
||||||
{60F89955-91C6-3A36-8000-13C592FEC2DF}.Release|x64.Build.0 = Release|x64
|
{60F89955-91C6-3A36-8000-13C592FEC2DF}.Release|x64.Build.0 = Release|x64
|
||||||
{8F85B6CC-250F-4ACA-A617-E820A74E3E3C}.Debug|x64.ActiveCfg = Debug|x64
|
{8F85B6CC-250F-4ACA-A617-E820A74E3E3C}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{8F85B6CC-250F-4ACA-A617-E820A74E3E3C}.Debug|x64.Build.0 = Debug|x64
|
|
||||||
{8F85B6CC-250F-4ACA-A617-E820A74E3E3C}.Release|x64.ActiveCfg = Release|x64
|
{8F85B6CC-250F-4ACA-A617-E820A74E3E3C}.Release|x64.ActiveCfg = Release|x64
|
||||||
{8F85B6CC-250F-4ACA-A617-E820A74E3E3C}.Release|x64.Build.0 = Release|x64
|
|
||||||
{3EE5F075-B546-42C4-B6A8-E3CCEF38B78D}.Debug|x64.ActiveCfg = Debug|x64
|
{3EE5F075-B546-42C4-B6A8-E3CCEF38B78D}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{3EE5F075-B546-42C4-B6A8-E3CCEF38B78D}.Debug|x64.Build.0 = Debug|x64
|
{3EE5F075-B546-42C4-B6A8-E3CCEF38B78D}.Debug|x64.Build.0 = Debug|x64
|
||||||
{3EE5F075-B546-42C4-B6A8-E3CCEF38B78D}.Release|x64.ActiveCfg = Release|x64
|
{3EE5F075-B546-42C4-B6A8-E3CCEF38B78D}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
@ -228,10 +219,6 @@ Global
|
||||||
{3C67A2FF-4710-402A-BE3E-31B0CB0576DF}.Debug|x64.Build.0 = Debug|x64
|
{3C67A2FF-4710-402A-BE3E-31B0CB0576DF}.Debug|x64.Build.0 = Debug|x64
|
||||||
{3C67A2FF-4710-402A-BE3E-31B0CB0576DF}.Release|x64.ActiveCfg = Release|x64
|
{3C67A2FF-4710-402A-BE3E-31B0CB0576DF}.Release|x64.ActiveCfg = Release|x64
|
||||||
{3C67A2FF-4710-402A-BE3E-31B0CB0576DF}.Release|x64.Build.0 = Release|x64
|
{3C67A2FF-4710-402A-BE3E-31B0CB0576DF}.Release|x64.Build.0 = Release|x64
|
||||||
{D1CBF84E-07F8-4ACB-9CD2-BD205FDEEE1E}.Debug|x64.ActiveCfg = Debug|x64
|
|
||||||
{D1CBF84E-07F8-4ACB-9CD2-BD205FDEEE1E}.Debug|x64.Build.0 = Debug|x64
|
|
||||||
{D1CBF84E-07F8-4ACB-9CD2-BD205FDEEE1E}.Release|x64.ActiveCfg = Release|x64
|
|
||||||
{D1CBF84E-07F8-4ACB-9CD2-BD205FDEEE1E}.Release|x64.Build.0 = Release|x64
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
@ -245,7 +232,7 @@ Global
|
||||||
{EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
{EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
||||||
{D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
{D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
||||||
{60F89955-91C6-3A36-8000-13C592FEC2DF} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
{60F89955-91C6-3A36-8000-13C592FEC2DF} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
||||||
{8F85B6CC-250F-4ACA-A617-E820A74E3E3C} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
{8F85B6CC-250F-4ACA-A617-E820A74E3E3C} = {B0AC29FD-7B01-4B5E-9C8D-0A081E4C5668}
|
||||||
{3EE5F075-B546-42C4-B6A8-E3CCEF38B78D} = {10FBF193-D532-4CCF-B875-4C7091A7F6C2}
|
{3EE5F075-B546-42C4-B6A8-E3CCEF38B78D} = {10FBF193-D532-4CCF-B875-4C7091A7F6C2}
|
||||||
{FDC361C5-7734-493B-8CFB-037308B35122} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
{FDC361C5-7734-493B-8CFB-037308B35122} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
||||||
{A107C21C-418A-4697-BB10-20C3AA60E2E4} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
{A107C21C-418A-4697-BB10-20C3AA60E2E4} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
||||||
|
@ -265,7 +252,6 @@ Global
|
||||||
{5B146DEA-9ACE-4D32-A7FD-3F42464DD69C} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
{5B146DEA-9ACE-4D32-A7FD-3F42464DD69C} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
||||||
{8846A9AA-5539-4C91-8301-F54260E1A07A} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
{8846A9AA-5539-4C91-8301-F54260E1A07A} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
||||||
{3C67A2FF-4710-402A-BE3E-31B0CB0576DF} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
{3C67A2FF-4710-402A-BE3E-31B0CB0576DF} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
||||||
{D1CBF84E-07F8-4ACB-9CD2-BD205FDEEE1E} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {06CC7920-E085-4B81-9582-8DE8AAD42510}
|
SolutionGuid = {06CC7920-E085-4B81-9582-8DE8AAD42510}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Define GNU standard installation directories
|
# Define GNU standard installation directories
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
# Generate git-version.h at build time.
|
# Generate git-version.h at build time.
|
||||||
|
@ -13,23 +13,23 @@ set(CMAKE_CXX_STANDARD 20)
|
||||||
set(ADDITIONAL_LIBS "")
|
set(ADDITIONAL_LIBS "")
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
#on some Linux distros shm_unlink and similar functions are in librt only
|
#on some Linux distros shm_unlink and similar functions are in librt only
|
||||||
list(APPEND ADDITIONAL_LIBS "rt")
|
set(ADDITIONAL_LIBS ${ADDITIONAL_LIBS} "rt")
|
||||||
elseif(NOT WIN32 AND NOT CMAKE_CXX_FLAGS MATCHES "LIBICONV_PLUG")
|
elseif(NOT WIN32 AND NOT CMAKE_CXX_FLAGS MATCHES "LIBICONV_PLUG")
|
||||||
#it seems like glibc includes the iconv functions we use but other libc
|
#it seems like glibc includes the iconv functions we use but other libc
|
||||||
#implementations like the one on OSX don't seem implement them
|
#implementations like the one on OSX don't seem implement them
|
||||||
list(APPEND ADDITIONAL_LIBS "iconv")
|
set(ADDITIONAL_LIBS ${ADDITIONAL_LIBS} "iconv")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(UNIX AND NOT APPLE AND NOT ANDROID)
|
if(UNIX AND NOT APPLE AND NOT ANDROID)
|
||||||
add_compile_definitions(DATADIR="${CMAKE_INSTALL_FULL_DATADIR}/rpcs3")
|
add_definitions(-DDATADIR="${CMAKE_INSTALL_FULL_DATADIR}/rpcs3")
|
||||||
# Optionally enable X11 for window management
|
# Optionally enable X11 for window management
|
||||||
find_package(X11)
|
find_package(X11)
|
||||||
if(X11_FOUND)
|
if(X11_FOUND)
|
||||||
add_compile_definitions(HAVE_X11)
|
add_definitions(-DHAVE_X11)
|
||||||
endif()
|
endif()
|
||||||
find_package(Wayland)
|
find_package(Wayland)
|
||||||
if(WAYLAND_FOUND)
|
if(WAYLAND_FOUND)
|
||||||
add_compile_definitions(HAVE_WAYLAND)
|
add_definitions(-DHAVE_WAYLAND)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -51,61 +51,6 @@ endif()
|
||||||
gen_git_version(${CMAKE_CURRENT_SOURCE_DIR})
|
gen_git_version(${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
|
||||||
if (NOT ANDROID)
|
if (NOT ANDROID)
|
||||||
# Build rpcs3_lib
|
|
||||||
add_library(rpcs3_lib STATIC)
|
|
||||||
|
|
||||||
if(WIN32)
|
|
||||||
target_compile_definitions(rpcs3_lib PRIVATE UNICODE _UNICODE)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set_target_properties(rpcs3_lib
|
|
||||||
PROPERTIES
|
|
||||||
AUTOMOC ON
|
|
||||||
AUTOUIC ON)
|
|
||||||
|
|
||||||
target_link_libraries(rpcs3_lib
|
|
||||||
PUBLIC
|
|
||||||
3rdparty::stblib
|
|
||||||
3rdparty::libevdev
|
|
||||||
rpcs3_emu
|
|
||||||
PRIVATE
|
|
||||||
rpcs3_ui
|
|
||||||
3rdparty::discordRPC
|
|
||||||
3rdparty::qt6
|
|
||||||
3rdparty::hidapi
|
|
||||||
3rdparty::libusb
|
|
||||||
3rdparty::wolfssl
|
|
||||||
3rdparty::libcurl
|
|
||||||
3rdparty::zlib
|
|
||||||
3rdparty::opencv
|
|
||||||
3rdparty::fusion
|
|
||||||
${ADDITIONAL_LIBS})
|
|
||||||
|
|
||||||
# Unix display manager
|
|
||||||
if(X11_FOUND)
|
|
||||||
target_link_libraries(rpcs3_lib PRIVATE X11::X11)
|
|
||||||
elseif(USE_VULKAN AND UNIX AND NOT WAYLAND_FOUND AND NOT APPLE AND NOT ANDROID)
|
|
||||||
# Wayland has been checked in 3rdparty/CMakeLists.txt already.
|
|
||||||
message(FATAL_ERROR "RPCS3 requires either X11 or Wayland (or both) for Vulkan.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(UNIX)
|
|
||||||
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
|
||||||
find_package(Threads REQUIRED)
|
|
||||||
target_link_libraries(rpcs3_lib PRIVATE Threads::Threads)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WIN32)
|
|
||||||
target_link_libraries(rpcs3_lib PRIVATE ws2_32 Iphlpapi Winmm Psapi gdi32 setupapi)
|
|
||||||
else()
|
|
||||||
target_link_libraries(rpcs3_lib PRIVATE ${CMAKE_DL_LIBS})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(USE_PRECOMPILED_HEADERS)
|
|
||||||
target_precompile_headers(rpcs3_lib PRIVATE stdafx.h)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Build rpcs3 executable
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
add_executable(rpcs3 WIN32)
|
add_executable(rpcs3 WIN32)
|
||||||
target_sources(rpcs3 PRIVATE rpcs3.rc)
|
target_sources(rpcs3 PRIVATE rpcs3.rc)
|
||||||
|
@ -123,18 +68,84 @@ if (NOT ANDROID)
|
||||||
|
|
||||||
target_sources(rpcs3
|
target_sources(rpcs3
|
||||||
PRIVATE
|
PRIVATE
|
||||||
main.cpp
|
display_sleep_control.cpp
|
||||||
|
headless_application.cpp
|
||||||
|
main.cpp
|
||||||
|
main_application.cpp
|
||||||
|
module_verifier.cpp
|
||||||
|
rpcs3_version.cpp
|
||||||
|
stb_image.cpp
|
||||||
|
stdafx.cpp
|
||||||
|
|
||||||
|
Input/basic_keyboard_handler.cpp
|
||||||
|
Input/basic_mouse_handler.cpp
|
||||||
|
Input/ds3_pad_handler.cpp
|
||||||
|
Input/ds4_pad_handler.cpp
|
||||||
|
Input/dualsense_pad_handler.cpp
|
||||||
|
Input/evdev_joystick_handler.cpp
|
||||||
|
Input/evdev_gun_handler.cpp
|
||||||
|
Input/gui_pad_thread.cpp
|
||||||
|
Input/hid_pad_handler.cpp
|
||||||
|
Input/keyboard_pad_handler.cpp
|
||||||
|
Input/mm_joystick_handler.cpp
|
||||||
|
Input/pad_thread.cpp
|
||||||
|
Input/product_info.cpp
|
||||||
|
Input/ps_move_calibration.cpp
|
||||||
|
Input/ps_move_config.cpp
|
||||||
|
Input/ps_move_handler.cpp
|
||||||
|
Input/ps_move_tracker.cpp
|
||||||
|
Input/raw_mouse_config.cpp
|
||||||
|
Input/raw_mouse_handler.cpp
|
||||||
|
Input/sdl_pad_handler.cpp
|
||||||
|
Input/skateboard_pad_handler.cpp
|
||||||
|
Input/xinput_pad_handler.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
set_target_properties(rpcs3
|
||||||
|
PROPERTIES
|
||||||
|
AUTOMOC ON
|
||||||
|
AUTOUIC ON)
|
||||||
|
|
||||||
target_link_libraries(rpcs3
|
target_link_libraries(rpcs3
|
||||||
PRIVATE
|
PRIVATE
|
||||||
rpcs3_lib
|
rpcs3_emu
|
||||||
)
|
rpcs3_ui
|
||||||
|
3rdparty::discordRPC
|
||||||
|
3rdparty::qt6
|
||||||
|
3rdparty::hidapi
|
||||||
|
3rdparty::libusb
|
||||||
|
3rdparty::wolfssl
|
||||||
|
3rdparty::libcurl
|
||||||
|
3rdparty::zlib
|
||||||
|
3rdparty::opencv
|
||||||
|
3rdparty::fusion
|
||||||
|
${ADDITIONAL_LIBS})
|
||||||
|
|
||||||
|
# Unix display manager
|
||||||
|
if(X11_FOUND)
|
||||||
|
target_link_libraries(rpcs3 PRIVATE X11::X11)
|
||||||
|
elseif(USE_VULKAN AND UNIX AND NOT WAYLAND_FOUND AND NOT APPLE AND NOT ANDROID)
|
||||||
|
# Wayland has been checked in 3rdparty/CMakeLists.txt already.
|
||||||
|
message(FATAL_ERROR "RPCS3 requires either X11 or Wayland (or both) for Vulkan.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(UNIX)
|
||||||
|
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
||||||
|
find_package(Threads REQUIRED)
|
||||||
|
target_link_libraries(rpcs3 PRIVATE Threads::Threads)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
target_link_libraries(rpcs3 PRIVATE bcrypt ws2_32 Iphlpapi Winmm Psapi gdi32 setupapi pdh)
|
||||||
|
else()
|
||||||
|
target_link_libraries(rpcs3 PRIVATE ${CMAKE_DL_LIBS})
|
||||||
|
endif()
|
||||||
|
|
||||||
if(USE_PRECOMPILED_HEADERS)
|
if(USE_PRECOMPILED_HEADERS)
|
||||||
target_precompile_headers(rpcs3 PRIVATE stdafx.h)
|
target_precompile_headers(rpcs3 PRIVATE stdafx.h)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
# Copy icons to executable directory
|
# Copy icons to executable directory
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
if (CMAKE_BUILD_TYPE MATCHES "Debug" OR CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo")
|
if (CMAKE_BUILD_TYPE MATCHES "Debug" OR CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo")
|
||||||
|
@ -147,18 +158,21 @@ if (NOT ANDROID)
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/rpcs3.icns $<TARGET_FILE_DIR:rpcs3>/../Resources/rpcs3.icns
|
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/rpcs3.icns $<TARGET_FILE_DIR:rpcs3>/../Resources/rpcs3.icns
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/bin/Icons $<TARGET_FILE_DIR:rpcs3>/../Resources/Icons
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/bin/Icons $<TARGET_FILE_DIR:rpcs3>/../Resources/Icons
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/bin/GuiConfigs $<TARGET_FILE_DIR:rpcs3>/../Resources/GuiConfigs
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/bin/GuiConfigs $<TARGET_FILE_DIR:rpcs3>/../Resources/GuiConfigs
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/bin/git $<TARGET_FILE_DIR:rpcs3>/../Resources/git
|
||||||
COMMAND "${MACDEPLOYQT_EXECUTABLE}" "${PROJECT_BINARY_DIR}/bin/rpcs3.app" "${QT_DEPLOY_FLAGS}")
|
COMMAND "${MACDEPLOYQT_EXECUTABLE}" "${PROJECT_BINARY_DIR}/bin/rpcs3.app" "${QT_DEPLOY_FLAGS}")
|
||||||
elseif(UNIX)
|
elseif(UNIX)
|
||||||
add_custom_command(TARGET rpcs3 POST_BUILD
|
add_custom_command(TARGET rpcs3 POST_BUILD
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/bin/Icons $<TARGET_FILE_DIR:rpcs3>/Icons
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/bin/Icons $<TARGET_FILE_DIR:rpcs3>/Icons
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/bin/GuiConfigs $<TARGET_FILE_DIR:rpcs3>/GuiConfigs)
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/bin/GuiConfigs $<TARGET_FILE_DIR:rpcs3>/GuiConfigs
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/bin/git $<TARGET_FILE_DIR:rpcs3>/git)
|
||||||
elseif(WIN32)
|
elseif(WIN32)
|
||||||
add_custom_command(TARGET rpcs3 POST_BUILD
|
add_custom_command(TARGET rpcs3 POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:OpenAL::OpenAL> $<TARGET_FILE_DIR:rpcs3>
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/bin/Icons $<TARGET_FILE_DIR:rpcs3>/Icons
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/bin/Icons $<TARGET_FILE_DIR:rpcs3>/Icons
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/bin/GuiConfigs $<TARGET_FILE_DIR:rpcs3>/GuiConfigs
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/bin/GuiConfigs $<TARGET_FILE_DIR:rpcs3>/GuiConfigs
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/bin/test $<TARGET_FILE_DIR:rpcs3>/test
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/bin/git $<TARGET_FILE_DIR:rpcs3>/git
|
||||||
COMMAND "${WINDEPLOYQT_EXECUTABLE}" --no-compiler-runtime --no-opengl-sw --no-patchqt
|
COMMAND "${WINDEPLOYQT_EXECUTABLE}" --no-compiler-runtime --no-opengl-sw --no-patchqt
|
||||||
--no-translations --no-system-d3d-compiler --no-system-dxc-compiler --no-quick-import
|
--no-translations --no-system-d3d-compiler --no-system-dxc-compiler --no-ffmpeg --no-quick-import
|
||||||
--plugindir "$<IF:$<CXX_COMPILER_ID:MSVC>,$<TARGET_FILE_DIR:rpcs3>/plugins,$<TARGET_FILE_DIR:rpcs3>/share/qt6/plugins>"
|
--plugindir "$<IF:$<CXX_COMPILER_ID:MSVC>,$<TARGET_FILE_DIR:rpcs3>/plugins,$<TARGET_FILE_DIR:rpcs3>/share/qt6/plugins>"
|
||||||
--verbose 0 "$<TARGET_FILE:rpcs3>")
|
--verbose 0 "$<TARGET_FILE:rpcs3>")
|
||||||
endif()
|
endif()
|
||||||
|
@ -181,48 +195,9 @@ if (NOT ANDROID)
|
||||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/rpcs3)
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/rpcs3)
|
||||||
install(DIRECTORY ../bin/GuiConfigs
|
install(DIRECTORY ../bin/GuiConfigs
|
||||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/rpcs3)
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/rpcs3)
|
||||||
|
install(DIRECTORY ../bin/git
|
||||||
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/rpcs3)
|
||||||
install(DIRECTORY ../bin/test
|
install(DIRECTORY ../bin/test
|
||||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/rpcs3)
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/rpcs3)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Unit tests
|
|
||||||
if(BUILD_RPCS3_TESTS)
|
|
||||||
find_package(GTest REQUIRED)
|
|
||||||
|
|
||||||
message(STATUS "Building unit tests...")
|
|
||||||
|
|
||||||
add_executable(rpcs3_test)
|
|
||||||
|
|
||||||
target_sources(rpcs3_test
|
|
||||||
PRIVATE
|
|
||||||
tests/test.cpp
|
|
||||||
tests/test_fmt.cpp
|
|
||||||
tests/test_simple_array.cpp
|
|
||||||
tests/test_address_range.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
target_link_libraries(rpcs3_test
|
|
||||||
PRIVATE
|
|
||||||
rpcs3_lib
|
|
||||||
rpcs3_emu
|
|
||||||
GTest::gtest
|
|
||||||
)
|
|
||||||
|
|
||||||
target_include_directories(rpcs3_test
|
|
||||||
PUBLIC
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/..
|
|
||||||
)
|
|
||||||
|
|
||||||
include(GoogleTest)
|
|
||||||
gtest_discover_tests(rpcs3_test)
|
|
||||||
|
|
||||||
if(RUN_RPCS3_TESTS)
|
|
||||||
add_custom_target(run_tests
|
|
||||||
ALL
|
|
||||||
COMMAND ${CMAKE_CTEST_COMMAND} -j -VV --output-on-failure
|
|
||||||
DEPENDS rpcs3_test
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
|
@ -1336,19 +1336,17 @@ static fs::file CheckDebugSelf(const fs::file& s)
|
||||||
// Get the real elf offset.
|
// Get the real elf offset.
|
||||||
s.seek(0x10);
|
s.seek(0x10);
|
||||||
|
|
||||||
// Read the real elf offset.
|
// Start at the real elf offset.
|
||||||
usz read_pos = key_version == 0x80 ? +s.read<be_t<u64>>() : +s.read<le_t<u64>>();
|
s.seek(key_version == 0x80 ? +s.read<be_t<u64>>() : +s.read<le_t<u64>>());
|
||||||
|
|
||||||
// Write the real ELF file back.
|
// Write the real ELF file back.
|
||||||
fs::file e = fs::make_stream<std::vector<u8>>();
|
fs::file e = fs::make_stream<std::vector<u8>>();
|
||||||
|
|
||||||
// Copy the data.
|
// Copy the data.
|
||||||
std::vector<u8> buf(std::min<usz>(s.size(), 4096));
|
char buf[2048];
|
||||||
|
while (const u64 size = s.read(buf, 2048))
|
||||||
while (const u64 size = s.read_at(read_pos, buf.data(), buf.size()))
|
|
||||||
{
|
{
|
||||||
e.write(buf.data(), size);
|
e.write(buf, size);
|
||||||
read_pos += size;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return e;
|
return e;
|
||||||
|
@ -1373,10 +1371,7 @@ fs::file decrypt_self(const fs::file& elf_or_self, const u8* klic_key, SelfAddit
|
||||||
elf_or_self.seek(0);
|
elf_or_self.seek(0);
|
||||||
|
|
||||||
// Check SELF header first. Check for a debug SELF.
|
// Check SELF header first. Check for a debug SELF.
|
||||||
u32 file_type = umax;
|
if (elf_or_self.size() >= 4 && elf_or_self.read<u32>() == "SCE\0"_u32)
|
||||||
elf_or_self.read_at(0, &file_type, sizeof(file_type));
|
|
||||||
|
|
||||||
if (file_type == "SCE\0"_u32)
|
|
||||||
{
|
{
|
||||||
if (fs::file res = CheckDebugSelf(elf_or_self))
|
if (fs::file res = CheckDebugSelf(elf_or_self))
|
||||||
{
|
{
|
||||||
|
@ -1414,23 +1409,6 @@ fs::file decrypt_self(const fs::file& elf_or_self, const u8* klic_key, SelfAddit
|
||||||
// Make a new ELF file from this SELF.
|
// Make a new ELF file from this SELF.
|
||||||
return self_dec.MakeElf(isElf32);
|
return self_dec.MakeElf(isElf32);
|
||||||
}
|
}
|
||||||
else if (Emu.GetBoot().ends_with(".elf") || Emu.GetBoot().ends_with(".ELF"))
|
|
||||||
{
|
|
||||||
// Write the file back if the main executable is not signed
|
|
||||||
fs::file e = fs::make_stream<std::vector<u8>>();
|
|
||||||
|
|
||||||
// Copy the data.
|
|
||||||
std::vector<u8> buf(std::min<usz>(elf_or_self.size(), 4096));
|
|
||||||
|
|
||||||
usz read_pos = 0;
|
|
||||||
while (const u64 size = elf_or_self.read_at(read_pos, buf.data(), buf.size()))
|
|
||||||
{
|
|
||||||
e.write(buf.data(), size);
|
|
||||||
read_pos += size;
|
|
||||||
}
|
|
||||||
|
|
||||||
return e;
|
|
||||||
}
|
|
||||||
|
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
|
@ -337,7 +337,7 @@ f64 XAudio2Backend::GetCallbackFrameLen()
|
||||||
return std::max<f64>(min_latency, _10ms); // 10ms is the minimum for XAudio
|
return std::max<f64>(min_latency, _10ms); // 10ms is the minimum for XAudio
|
||||||
}
|
}
|
||||||
|
|
||||||
void XAudio2Backend::OnVoiceProcessingPassStart(UINT32 BytesRequired) noexcept
|
void XAudio2Backend::OnVoiceProcessingPassStart(UINT32 BytesRequired)
|
||||||
{
|
{
|
||||||
std::unique_lock lock(m_cb_mutex, std::defer_lock);
|
std::unique_lock lock(m_cb_mutex, std::defer_lock);
|
||||||
if (BytesRequired && !m_reset_req.observe() && lock.try_lock_for(std::chrono::microseconds{50}) && m_write_callback && m_playing)
|
if (BytesRequired && !m_reset_req.observe() && lock.try_lock_for(std::chrono::microseconds{50}) && m_write_callback && m_playing)
|
||||||
|
@ -366,7 +366,7 @@ void XAudio2Backend::OnVoiceProcessingPassStart(UINT32 BytesRequired) noexcept
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void XAudio2Backend::OnCriticalError(HRESULT Error) noexcept
|
void XAudio2Backend::OnCriticalError(HRESULT Error)
|
||||||
{
|
{
|
||||||
XAudio.error("OnCriticalError() called: %s (0x%08x)", std::system_category().message(Error), static_cast<u32>(Error));
|
XAudio.error("OnCriticalError() called: %s (0x%08x)", std::system_category().message(Error), static_cast<u32>(Error));
|
||||||
|
|
||||||
|
|
|
@ -54,18 +54,18 @@ private:
|
||||||
atomic_t<bool> m_reset_req = false;
|
atomic_t<bool> m_reset_req = false;
|
||||||
|
|
||||||
// XAudio voice callbacks
|
// XAudio voice callbacks
|
||||||
void OnVoiceProcessingPassStart(UINT32 BytesRequired) noexcept override;
|
void OnVoiceProcessingPassStart(UINT32 BytesRequired) override;
|
||||||
void OnVoiceProcessingPassEnd() noexcept override {}
|
void OnVoiceProcessingPassEnd() override {}
|
||||||
void OnStreamEnd() noexcept override {}
|
void OnStreamEnd() override {}
|
||||||
void OnBufferStart(void* /* pBufferContext */) noexcept override {}
|
void OnBufferStart(void* /* pBufferContext */) override {}
|
||||||
void OnBufferEnd(void* /* pBufferContext*/) noexcept override {}
|
void OnBufferEnd(void* /* pBufferContext*/) override {}
|
||||||
void OnLoopEnd(void* /* pBufferContext */) noexcept override {}
|
void OnLoopEnd(void* /* pBufferContext */) override {}
|
||||||
void OnVoiceError(void* /* pBufferContext */, HRESULT /* Error */) noexcept override {}
|
void OnVoiceError(void* /* pBufferContext */, HRESULT /* Error */) override {}
|
||||||
|
|
||||||
// XAudio engine callbacks
|
// XAudio engine callbacks
|
||||||
void OnProcessingPassStart() noexcept override {};
|
void OnProcessingPassStart() override {};
|
||||||
void OnProcessingPassEnd() noexcept override {};
|
void OnProcessingPassEnd() override {};
|
||||||
void OnCriticalError(HRESULT Error) noexcept override;
|
void OnCriticalError(HRESULT Error) override;
|
||||||
|
|
||||||
// IMMNotificationClient callbacks
|
// IMMNotificationClient callbacks
|
||||||
IFACEMETHODIMP_(ULONG) AddRef() override { return 1; };
|
IFACEMETHODIMP_(ULONG) AddRef() override { return 1; };
|
||||||
|
|
|
@ -5,7 +5,6 @@ add_library(rpcs3_emu STATIC
|
||||||
localized_string.cpp
|
localized_string.cpp
|
||||||
savestate_utils.cpp
|
savestate_utils.cpp
|
||||||
scoped_progress_dialog.cpp
|
scoped_progress_dialog.cpp
|
||||||
stb_image.cpp
|
|
||||||
System.cpp
|
System.cpp
|
||||||
system_config.cpp
|
system_config.cpp
|
||||||
system_config_types.cpp
|
system_config_types.cpp
|
||||||
|
@ -29,14 +28,21 @@ if(USE_ASAN)
|
||||||
set_source_files_properties(../../Utilities/Thread.cpp PROPERTIES COMPILE_DEFINITIONS USE_ASAN)
|
set_source_files_properties(../../Utilities/Thread.cpp PROPERTIES COMPILE_DEFINITIONS USE_ASAN)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT USE_SYSTEM_OPENAL)
|
|
||||||
target_compile_definitions(rpcs3_emu PUBLIC AL_LIBTYPE_STATIC)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(HAS_MEMORY_BREAKPOINTS)
|
if(HAS_MEMORY_BREAKPOINTS)
|
||||||
target_compile_definitions(rpcs3_emu PRIVATE RPCS3_HAS_MEMORY_BREAKPOINTS)
|
target_compile_definitions(rpcs3_emu PRIVATE RPCS3_HAS_MEMORY_BREAKPOINTS)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
target_link_libraries(rpcs3_emu
|
||||||
|
PRIVATE
|
||||||
|
3rdparty::zlib 3rdparty::yaml-cpp 3rdparty::zstd
|
||||||
|
PUBLIC
|
||||||
|
3rdparty::libevdev 3rdparty::flatbuffers)
|
||||||
|
|
||||||
|
|
||||||
|
find_package(Threads REQUIRED)
|
||||||
|
target_link_libraries(rpcs3_emu
|
||||||
|
PUBLIC Threads::Threads)
|
||||||
|
|
||||||
# For stdafx.h
|
# For stdafx.h
|
||||||
target_include_directories(rpcs3_emu
|
target_include_directories(rpcs3_emu
|
||||||
PUBLIC
|
PUBLIC
|
||||||
|
@ -89,6 +95,10 @@ endif()
|
||||||
|
|
||||||
target_include_directories(rpcs3_emu PUBLIC "${CMAKE_SOURCE_DIR}")
|
target_include_directories(rpcs3_emu PUBLIC "${CMAKE_SOURCE_DIR}")
|
||||||
|
|
||||||
|
target_link_libraries(rpcs3_emu
|
||||||
|
PUBLIC
|
||||||
|
3rdparty::pugixml)
|
||||||
|
|
||||||
set_source_files_properties("../../Utilities/JITLLVM.cpp" "../../Utilities/JITASM.cpp" PROPERTIES
|
set_source_files_properties("../../Utilities/JITLLVM.cpp" "../../Utilities/JITASM.cpp" PROPERTIES
|
||||||
COMPILE_FLAGS "$<IF:$<CXX_COMPILER_ID:MSVC>,/GR-,-fno-rtti>"
|
COMPILE_FLAGS "$<IF:$<CXX_COMPILER_ID:MSVC>,/GR-,-fno-rtti>"
|
||||||
SKIP_PRECOMPILE_HEADERS ON
|
SKIP_PRECOMPILE_HEADERS ON
|
||||||
|
@ -159,9 +169,24 @@ if(WIN32)
|
||||||
Audio/XAudio2/xaudio2_enumerator.cpp
|
Audio/XAudio2/xaudio2_enumerator.cpp
|
||||||
)
|
)
|
||||||
target_compile_definitions(rpcs3_emu PRIVATE UNICODE _UNICODE _WIN32_WINNT=0x0A00)
|
target_compile_definitions(rpcs3_emu PRIVATE UNICODE _UNICODE _WIN32_WINNT=0x0A00)
|
||||||
target_link_libraries(rpcs3_emu PRIVATE pdh bcrypt)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
target_link_libraries(rpcs3_emu
|
||||||
|
PUBLIC
|
||||||
|
3rdparty::openal)
|
||||||
|
|
||||||
|
target_link_libraries(rpcs3_emu
|
||||||
|
PUBLIC
|
||||||
|
3rdparty::cubeb)
|
||||||
|
|
||||||
|
target_link_libraries(rpcs3_emu
|
||||||
|
PUBLIC
|
||||||
|
3rdparty::soundtouch)
|
||||||
|
|
||||||
|
target_link_libraries(rpcs3_emu
|
||||||
|
PUBLIC
|
||||||
|
3rdparty::miniupnpc)
|
||||||
|
|
||||||
# Cell
|
# Cell
|
||||||
target_sources(rpcs3_emu PRIVATE
|
target_sources(rpcs3_emu PRIVATE
|
||||||
Cell/ErrorCodes.cpp
|
Cell/ErrorCodes.cpp
|
||||||
|
@ -375,6 +400,11 @@ if(NOT MSVC)
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
target_link_libraries(rpcs3_emu
|
||||||
|
PRIVATE
|
||||||
|
3rdparty::stblib 3rdparty::libpng)
|
||||||
|
|
||||||
|
|
||||||
# CPU
|
# CPU
|
||||||
target_sources(rpcs3_emu PRIVATE
|
target_sources(rpcs3_emu PRIVATE
|
||||||
CPU/CPUThread.cpp
|
CPU/CPUThread.cpp
|
||||||
|
@ -390,13 +420,15 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64|arm64|aarch64")
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
target_link_libraries(rpcs3_emu
|
||||||
|
PUBLIC 3rdparty::llvm 3rdparty::asmjit)
|
||||||
|
|
||||||
|
|
||||||
# Io
|
# Io
|
||||||
target_sources(rpcs3_emu PRIVATE
|
target_sources(rpcs3_emu PRIVATE
|
||||||
Io/Buzz.cpp
|
Io/Buzz.cpp
|
||||||
Io/camera_config.cpp
|
Io/camera_config.cpp
|
||||||
Io/Dimensions.cpp
|
Io/Dimensions.cpp
|
||||||
Io/evdev_gun_handler.cpp
|
|
||||||
Io/GameTablet.cpp
|
Io/GameTablet.cpp
|
||||||
Io/GHLtar.cpp
|
Io/GHLtar.cpp
|
||||||
Io/GunCon3.cpp
|
Io/GunCon3.cpp
|
||||||
|
@ -422,8 +454,10 @@ target_sources(rpcs3_emu PRIVATE
|
||||||
Io/usb_device.cpp
|
Io/usb_device.cpp
|
||||||
Io/usb_vfs.cpp
|
Io/usb_vfs.cpp
|
||||||
Io/usio.cpp
|
Io/usio.cpp
|
||||||
Io/LogitechG27.cpp
|
)
|
||||||
Io/LogitechG27Config.cpp
|
|
||||||
|
target_link_libraries(rpcs3_emu PRIVATE
|
||||||
|
3rdparty::rtmidi
|
||||||
)
|
)
|
||||||
|
|
||||||
# Np
|
# Np
|
||||||
|
@ -512,10 +546,8 @@ target_sources(rpcs3_emu PRIVATE
|
||||||
RSX/Overlays/overlay_trophy_notification.cpp
|
RSX/Overlays/overlay_trophy_notification.cpp
|
||||||
RSX/Overlays/overlay_user_list_dialog.cpp
|
RSX/Overlays/overlay_user_list_dialog.cpp
|
||||||
RSX/Overlays/overlay_utils.cpp
|
RSX/Overlays/overlay_utils.cpp
|
||||||
RSX/Overlays/overlay_video.cpp
|
|
||||||
RSX/Overlays/Shaders/shader_loading_dialog.cpp
|
RSX/Overlays/Shaders/shader_loading_dialog.cpp
|
||||||
RSX/Overlays/Shaders/shader_loading_dialog_native.cpp
|
RSX/Overlays/Shaders/shader_loading_dialog_native.cpp
|
||||||
RSX/Program/CgBinaryProgram.cpp
|
|
||||||
RSX/Program/CgBinaryFragmentProgram.cpp
|
RSX/Program/CgBinaryFragmentProgram.cpp
|
||||||
RSX/Program/CgBinaryVertexProgram.cpp
|
RSX/Program/CgBinaryVertexProgram.cpp
|
||||||
RSX/Program/FragmentProgramDecompiler.cpp
|
RSX/Program/FragmentProgramDecompiler.cpp
|
||||||
|
@ -594,7 +626,6 @@ if(TARGET 3rdparty_vulkan)
|
||||||
RSX/VK/VKCommonDecompiler.cpp
|
RSX/VK/VKCommonDecompiler.cpp
|
||||||
RSX/VK/VKCommonPipelineLayout.cpp
|
RSX/VK/VKCommonPipelineLayout.cpp
|
||||||
RSX/VK/VKCompute.cpp
|
RSX/VK/VKCompute.cpp
|
||||||
RSX/VK/VKDataHeapManager.cpp
|
|
||||||
RSX/VK/VKDMA.cpp
|
RSX/VK/VKDMA.cpp
|
||||||
RSX/VK/VKDraw.cpp
|
RSX/VK/VKDraw.cpp
|
||||||
RSX/VK/VKFormats.cpp
|
RSX/VK/VKFormats.cpp
|
||||||
|
@ -617,39 +648,17 @@ if(TARGET 3rdparty_vulkan)
|
||||||
RSX/VK/VKVertexBuffers.cpp
|
RSX/VK/VKVertexBuffers.cpp
|
||||||
RSX/VK/VKVertexProgram.cpp
|
RSX/VK/VKVertexProgram.cpp
|
||||||
RSX/VK/VKTextureCache.cpp
|
RSX/VK/VKTextureCache.cpp
|
||||||
RSX/VK/VulkanAPI.cpp
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(Threads REQUIRED)
|
|
||||||
|
|
||||||
target_link_libraries(rpcs3_emu
|
target_link_libraries(rpcs3_emu
|
||||||
PUBLIC
|
PUBLIC
|
||||||
3rdparty::llvm
|
3rdparty::ffmpeg 3rdparty::sdl3
|
||||||
3rdparty::asmjit
|
3rdparty::opengl 3rdparty::stblib
|
||||||
3rdparty::ffmpeg
|
3rdparty::vulkan 3rdparty::glew
|
||||||
3rdparty::sdl3
|
3rdparty::libusb 3rdparty::wolfssl
|
||||||
3rdparty::opengl
|
|
||||||
3rdparty::stblib
|
|
||||||
3rdparty::vulkan
|
|
||||||
3rdparty::glew
|
|
||||||
3rdparty::libusb
|
|
||||||
3rdparty::wolfssl
|
|
||||||
3rdparty::openal
|
|
||||||
3rdparty::cubeb
|
|
||||||
3rdparty::soundtouch
|
|
||||||
3rdparty::miniupnpc
|
|
||||||
3rdparty::libevdev
|
|
||||||
3rdparty::flatbuffers
|
|
||||||
3rdparty::pugixml
|
|
||||||
Threads::Threads
|
|
||||||
PRIVATE
|
PRIVATE
|
||||||
3rdparty::glslang
|
3rdparty::glslang
|
||||||
3rdparty::libpng
|
|
||||||
3rdparty::rtmidi
|
|
||||||
3rdparty::yaml-cpp
|
|
||||||
3rdparty::zlib
|
|
||||||
3rdparty::zstd
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
|
|
|
@ -434,7 +434,7 @@ struct llvm_value_t<T*> : llvm_value_t<T>
|
||||||
|
|
||||||
static llvm::Type* get_type(llvm::LLVMContext& context)
|
static llvm::Type* get_type(llvm::LLVMContext& context)
|
||||||
{
|
{
|
||||||
return llvm::PointerType::getUnqual(context);
|
return llvm_value_t<T>::get_type(context)->getPointerTo();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -301,7 +301,7 @@ void audio_ringbuffer::commit_data(f32* buf, u32 sample_cnt)
|
||||||
if (g_recording_mode != recording_mode::stopped)
|
if (g_recording_mode != recording_mode::stopped)
|
||||||
{
|
{
|
||||||
utils::video_provider& provider = g_fxo->get<utils::video_provider>();
|
utils::video_provider& provider = g_fxo->get<utils::video_provider>();
|
||||||
provider.present_samples(reinterpret_cast<const u8*>(buf), sample_cnt, cfg.audio_channels);
|
provider.present_samples(reinterpret_cast<u8*>(buf), sample_cnt, cfg.audio_channels);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Downmix if necessary
|
// Downmix if necessary
|
||||||
|
|
|
@ -195,7 +195,7 @@ struct audio_port
|
||||||
// Handle copy ctor of atomic var
|
// Handle copy ctor of atomic var
|
||||||
audio_port(const audio_port& r)
|
audio_port(const audio_port& r)
|
||||||
{
|
{
|
||||||
std::memcpy(static_cast<void*>(this), &r, sizeof(r));
|
std::memcpy(this, &r, sizeof(r));
|
||||||
}
|
}
|
||||||
|
|
||||||
ENABLE_BITWISE_SERIALIZATION;
|
ENABLE_BITWISE_SERIALIZATION;
|
||||||
|
|
|
@ -75,7 +75,7 @@ struct CellAudioInDeviceInfo
|
||||||
u8 reserved[12];
|
u8 reserved[12];
|
||||||
be_t<u64> deviceId;
|
be_t<u64> deviceId;
|
||||||
be_t<u64> type;
|
be_t<u64> type;
|
||||||
char name[64]; // Not necessarily null terminated!
|
char name[64];
|
||||||
CellAudioInSoundMode availableModes[16];
|
CellAudioInSoundMode availableModes[16];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -38,17 +38,11 @@ void fmt_class_string<CellAudioInError>::format(std::string& out, u64 arg)
|
||||||
struct avconf_manager
|
struct avconf_manager
|
||||||
{
|
{
|
||||||
shared_mutex mutex;
|
shared_mutex mutex;
|
||||||
|
std::vector<CellAudioInDeviceInfo> devices;
|
||||||
struct device_info
|
|
||||||
{
|
|
||||||
CellAudioInDeviceInfo info {};
|
|
||||||
std::string full_device_name; // The device name may be too long for CellAudioInDeviceInfo, so we additionally save the full name.
|
|
||||||
};
|
|
||||||
std::vector<device_info> devices;
|
|
||||||
CellAudioInDeviceMode inDeviceMode = CELL_AUDIO_IN_SINGLE_DEVICE_MODE; // TODO: use somewhere
|
CellAudioInDeviceMode inDeviceMode = CELL_AUDIO_IN_SINGLE_DEVICE_MODE; // TODO: use somewhere
|
||||||
|
|
||||||
void copy_device_info(u32 num, vm::ptr<CellAudioInDeviceInfo> info) const;
|
void copy_device_info(u32 num, vm::ptr<CellAudioInDeviceInfo> info) const;
|
||||||
std::optional<device_info> get_device_info(vm::cptr<char> name) const;
|
std::optional<CellAudioInDeviceInfo> get_device_info(vm::cptr<char> name) const;
|
||||||
|
|
||||||
avconf_manager();
|
avconf_manager();
|
||||||
|
|
||||||
|
@ -68,89 +62,78 @@ avconf_manager::avconf_manager()
|
||||||
switch (g_cfg.audio.microphone_type)
|
switch (g_cfg.audio.microphone_type)
|
||||||
{
|
{
|
||||||
case microphone_handler::standard:
|
case microphone_handler::standard:
|
||||||
{
|
|
||||||
for (u32 index = 0; index < mic_list.size(); index++)
|
for (u32 index = 0; index < mic_list.size(); index++)
|
||||||
{
|
{
|
||||||
device_info device {};
|
devices.emplace_back();
|
||||||
device.info.portType = CELL_AUDIO_IN_PORT_USB;
|
|
||||||
device.info.availableModeCount = 1;
|
devices[curindex].portType = CELL_AUDIO_IN_PORT_USB;
|
||||||
device.info.state = CELL_AUDIO_IN_DEVICE_STATE_AVAILABLE;
|
devices[curindex].availableModeCount = 1;
|
||||||
device.info.deviceId = 0xE11CC0DE + curindex;
|
devices[curindex].state = CELL_AUDIO_IN_DEVICE_STATE_AVAILABLE;
|
||||||
device.info.type = 0xC0DEE11C;
|
devices[curindex].deviceId = 0xE11CC0DE + curindex;
|
||||||
device.info.availableModes[0].type = CELL_AUDIO_IN_CODING_TYPE_LPCM;
|
devices[curindex].type = 0xC0DEE11C;
|
||||||
device.info.availableModes[0].channel = CELL_AUDIO_IN_CHNUM_2;
|
devices[curindex].availableModes[0].type = CELL_AUDIO_IN_CODING_TYPE_LPCM;
|
||||||
device.info.availableModes[0].fs = CELL_AUDIO_IN_FS_8KHZ | CELL_AUDIO_IN_FS_12KHZ | CELL_AUDIO_IN_FS_16KHZ | CELL_AUDIO_IN_FS_24KHZ | CELL_AUDIO_IN_FS_32KHZ | CELL_AUDIO_IN_FS_48KHZ;
|
devices[curindex].availableModes[0].channel = CELL_AUDIO_IN_CHNUM_2;
|
||||||
device.info.deviceNumber = curindex;
|
devices[curindex].availableModes[0].fs = CELL_AUDIO_IN_FS_8KHZ | CELL_AUDIO_IN_FS_12KHZ | CELL_AUDIO_IN_FS_16KHZ | CELL_AUDIO_IN_FS_24KHZ | CELL_AUDIO_IN_FS_32KHZ | CELL_AUDIO_IN_FS_48KHZ;
|
||||||
device.full_device_name = mic_list[index];
|
devices[curindex].deviceNumber = curindex;
|
||||||
strcpy_trunc(device.info.name, device.full_device_name);
|
strcpy_trunc(devices[curindex].name, mic_list[index]);
|
||||||
|
|
||||||
devices.push_back(std::move(device));
|
|
||||||
curindex++;
|
curindex++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
case microphone_handler::real_singstar:
|
case microphone_handler::real_singstar:
|
||||||
case microphone_handler::singstar:
|
case microphone_handler::singstar:
|
||||||
{
|
|
||||||
// Only one device for singstar device
|
// Only one device for singstar device
|
||||||
device_info device {};
|
devices.emplace_back();
|
||||||
device.info.portType = CELL_AUDIO_IN_PORT_USB;
|
|
||||||
device.info.availableModeCount = 1;
|
devices[curindex].portType = CELL_AUDIO_IN_PORT_USB;
|
||||||
device.info.state = CELL_AUDIO_IN_DEVICE_STATE_AVAILABLE;
|
devices[curindex].availableModeCount = 1;
|
||||||
device.info.deviceId = 0x00000001;
|
devices[curindex].state = CELL_AUDIO_IN_DEVICE_STATE_AVAILABLE;
|
||||||
device.info.type = 0x14150000;
|
devices[curindex].deviceId = 0x00000001;
|
||||||
device.info.availableModes[0].type = CELL_AUDIO_IN_CODING_TYPE_LPCM;
|
devices[curindex].type = 0x14150000;
|
||||||
device.info.availableModes[0].channel = CELL_AUDIO_IN_CHNUM_2;
|
devices[curindex].availableModes[0].type = CELL_AUDIO_IN_CODING_TYPE_LPCM;
|
||||||
device.info.availableModes[0].fs = CELL_AUDIO_IN_FS_8KHZ | CELL_AUDIO_IN_FS_12KHZ | CELL_AUDIO_IN_FS_16KHZ | CELL_AUDIO_IN_FS_24KHZ | CELL_AUDIO_IN_FS_32KHZ | CELL_AUDIO_IN_FS_48KHZ;
|
devices[curindex].availableModes[0].channel = CELL_AUDIO_IN_CHNUM_2;
|
||||||
device.info.deviceNumber = curindex;
|
devices[curindex].availableModes[0].fs = CELL_AUDIO_IN_FS_8KHZ | CELL_AUDIO_IN_FS_12KHZ | CELL_AUDIO_IN_FS_16KHZ | CELL_AUDIO_IN_FS_24KHZ | CELL_AUDIO_IN_FS_32KHZ | CELL_AUDIO_IN_FS_48KHZ;
|
||||||
device.full_device_name = mic_list[0];
|
devices[curindex].deviceNumber = curindex;
|
||||||
strcpy_trunc(device.info.name, device.full_device_name);
|
strcpy_trunc(devices[curindex].name, mic_list[0]);
|
||||||
|
|
||||||
devices.push_back(std::move(device));
|
|
||||||
curindex++;
|
curindex++;
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
case microphone_handler::rocksmith:
|
case microphone_handler::rocksmith:
|
||||||
{
|
devices.emplace_back();
|
||||||
device_info device {};
|
|
||||||
device.info.portType = CELL_AUDIO_IN_PORT_USB;
|
devices[curindex].portType = CELL_AUDIO_IN_PORT_USB;
|
||||||
device.info.availableModeCount = 1;
|
devices[curindex].availableModeCount = 1;
|
||||||
device.info.state = CELL_AUDIO_IN_DEVICE_STATE_AVAILABLE;
|
devices[curindex].state = CELL_AUDIO_IN_DEVICE_STATE_AVAILABLE;
|
||||||
device.info.deviceId = 0x12BA00FF; // Specific to rocksmith usb input
|
devices[curindex].deviceId = 0x12BA00FF; // Specific to rocksmith usb input
|
||||||
device.info.type = 0xC0DE73C4;
|
devices[curindex].type = 0xC0DE73C4;
|
||||||
device.info.availableModes[0].type = CELL_AUDIO_IN_CODING_TYPE_LPCM;
|
devices[curindex].availableModes[0].type = CELL_AUDIO_IN_CODING_TYPE_LPCM;
|
||||||
device.info.availableModes[0].channel = CELL_AUDIO_IN_CHNUM_1;
|
devices[curindex].availableModes[0].channel = CELL_AUDIO_IN_CHNUM_1;
|
||||||
device.info.availableModes[0].fs = CELL_AUDIO_IN_FS_8KHZ | CELL_AUDIO_IN_FS_12KHZ | CELL_AUDIO_IN_FS_16KHZ | CELL_AUDIO_IN_FS_24KHZ | CELL_AUDIO_IN_FS_32KHZ | CELL_AUDIO_IN_FS_48KHZ;
|
devices[curindex].availableModes[0].fs = CELL_AUDIO_IN_FS_8KHZ | CELL_AUDIO_IN_FS_12KHZ | CELL_AUDIO_IN_FS_16KHZ | CELL_AUDIO_IN_FS_24KHZ | CELL_AUDIO_IN_FS_32KHZ | CELL_AUDIO_IN_FS_48KHZ;
|
||||||
device.info.deviceNumber = curindex;
|
devices[curindex].deviceNumber = curindex;
|
||||||
device.full_device_name = mic_list[0];
|
strcpy_trunc(devices[curindex].name, mic_list[0]);
|
||||||
strcpy_trunc(device.info.name, device.full_device_name);
|
|
||||||
|
|
||||||
devices.push_back(std::move(device));
|
|
||||||
curindex++;
|
curindex++;
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
case microphone_handler::null:
|
case microphone_handler::null:
|
||||||
default:
|
default: break;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_cfg.io.camera != camera_handler::null)
|
if (g_cfg.io.camera != camera_handler::null)
|
||||||
{
|
{
|
||||||
device_info device {};
|
devices.emplace_back();
|
||||||
device.info.portType = CELL_AUDIO_IN_PORT_USB;
|
|
||||||
device.info.availableModeCount = 1;
|
devices[curindex].portType = CELL_AUDIO_IN_PORT_USB;
|
||||||
device.info.state = CELL_AUDIO_IN_DEVICE_STATE_AVAILABLE;
|
devices[curindex].availableModeCount = 1;
|
||||||
device.info.deviceId = 0xDEADBEEF;
|
devices[curindex].state = CELL_AUDIO_IN_DEVICE_STATE_AVAILABLE;
|
||||||
device.info.type = 0xBEEFDEAD;
|
devices[curindex].deviceId = 0xDEADBEEF;
|
||||||
device.info.availableModes[0].type = CELL_AUDIO_IN_CODING_TYPE_LPCM;
|
devices[curindex].type = 0xBEEFDEAD;
|
||||||
device.info.availableModes[0].channel = CELL_AUDIO_IN_CHNUM_NONE;
|
devices[curindex].availableModes[0].type = CELL_AUDIO_IN_CODING_TYPE_LPCM;
|
||||||
device.info.availableModes[0].fs = CELL_AUDIO_IN_FS_8KHZ | CELL_AUDIO_IN_FS_12KHZ | CELL_AUDIO_IN_FS_16KHZ | CELL_AUDIO_IN_FS_24KHZ | CELL_AUDIO_IN_FS_32KHZ | CELL_AUDIO_IN_FS_48KHZ;
|
devices[curindex].availableModes[0].channel = CELL_AUDIO_IN_CHNUM_NONE;
|
||||||
device.info.deviceNumber = curindex;
|
devices[curindex].availableModes[0].fs = CELL_AUDIO_IN_FS_8KHZ | CELL_AUDIO_IN_FS_12KHZ | CELL_AUDIO_IN_FS_16KHZ | CELL_AUDIO_IN_FS_24KHZ | CELL_AUDIO_IN_FS_32KHZ | CELL_AUDIO_IN_FS_48KHZ;
|
||||||
device.full_device_name = "USB Camera";
|
devices[curindex].deviceNumber = curindex;
|
||||||
strcpy_trunc(device.info.name, device.full_device_name);
|
strcpy_trunc(devices[curindex].name, "USB Camera");
|
||||||
|
|
||||||
devices.push_back(std::move(device));
|
|
||||||
curindex++;
|
curindex++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -159,14 +142,14 @@ void avconf_manager::copy_device_info(u32 num, vm::ptr<CellAudioInDeviceInfo> in
|
||||||
{
|
{
|
||||||
memset(info.get_ptr(), 0, sizeof(CellAudioInDeviceInfo));
|
memset(info.get_ptr(), 0, sizeof(CellAudioInDeviceInfo));
|
||||||
ensure(num < devices.size());
|
ensure(num < devices.size());
|
||||||
*info = devices[num].info;
|
*info = devices[num];
|
||||||
}
|
}
|
||||||
|
|
||||||
std::optional<avconf_manager::device_info> avconf_manager::get_device_info(vm::cptr<char> name) const
|
std::optional<CellAudioInDeviceInfo> avconf_manager::get_device_info(vm::cptr<char> name) const
|
||||||
{
|
{
|
||||||
for (const device_info& device : devices)
|
for (const CellAudioInDeviceInfo& device : devices)
|
||||||
{
|
{
|
||||||
if (strncmp(device.info.name, name.get_ptr(), sizeof(device.info.name)) == 0)
|
if (strncmp(device.name, name.get_ptr(), sizeof(device.name)) == 0)
|
||||||
{
|
{
|
||||||
return device;
|
return device;
|
||||||
}
|
}
|
||||||
|
@ -237,57 +220,17 @@ error_code cellAudioInGetDeviceInfo(u32 deviceNumber, u32 deviceIndex, vm::ptr<C
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <bool Is_Float, bool Range_Limited>
|
|
||||||
void convert_cursor_color(const u8* src, u8* dst, s32 num, f32 gamma)
|
|
||||||
{
|
|
||||||
for (s32 i = 0; i < num; i++, src += 4, dst += 4)
|
|
||||||
{
|
|
||||||
for (s32 c = 1; c < 4; c++)
|
|
||||||
{
|
|
||||||
if constexpr (Is_Float)
|
|
||||||
{
|
|
||||||
if constexpr (Range_Limited)
|
|
||||||
{
|
|
||||||
const f32 val = (src[c] / 255.0f) * 219.0f + 16.0f;
|
|
||||||
dst[c] = static_cast<u8>(val + 0.5f);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dst[c] = src[c];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
f32 val = std::clamp(std::pow(src[c] / 255.0f, gamma), 0.0f, 1.0f);
|
|
||||||
|
|
||||||
if constexpr (Range_Limited)
|
|
||||||
{
|
|
||||||
val = val * 219.0f + 16.0f;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
val *= 255.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
dst[c] = static_cast<u8>(val + 0.5f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
error_code cellVideoOutConvertCursorColor(u32 videoOut, s32 displaybuffer_format, f32 gamma, s32 source_buffer_format, vm::ptr<void> src_addr, vm::ptr<u32> dest_addr, s32 num)
|
error_code cellVideoOutConvertCursorColor(u32 videoOut, s32 displaybuffer_format, f32 gamma, s32 source_buffer_format, vm::ptr<void> src_addr, vm::ptr<u32> dest_addr, s32 num)
|
||||||
{
|
{
|
||||||
cellAvconfExt.warning("cellVideoOutConvertCursorColor(videoOut=%d, displaybuffer_format=0x%x, gamma=%f, source_buffer_format=0x%x, src_addr=*0x%x, dest_addr=*0x%x, num=0x%x)", videoOut,
|
cellAvconfExt.todo("cellVideoOutConvertCursorColor(videoOut=%d, displaybuffer_format=0x%x, gamma=0x%x, source_buffer_format=0x%x, src_addr=*0x%x, dest_addr=*0x%x, num=0x%x)", videoOut,
|
||||||
displaybuffer_format, gamma, source_buffer_format, src_addr, dest_addr, num);
|
displaybuffer_format, gamma, source_buffer_format, src_addr, dest_addr, num);
|
||||||
|
|
||||||
if (!src_addr || !dest_addr)
|
if (!dest_addr || num == 0)
|
||||||
{
|
{
|
||||||
return CELL_VIDEO_OUT_ERROR_ILLEGAL_PARAMETER;
|
return CELL_VIDEO_OUT_ERROR_ILLEGAL_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (displaybuffer_format < 0 ||
|
if (displaybuffer_format > CELL_VIDEO_OUT_BUFFER_COLOR_FORMAT_R16G16B16X16_FLOAT || src_addr)
|
||||||
displaybuffer_format > CELL_VIDEO_OUT_BUFFER_COLOR_FORMAT_R16G16B16X16_FLOAT ||
|
|
||||||
source_buffer_format != CELL_VIDEO_OUT_BUFFER_COLOR_FORMAT_X8R8G8B8)
|
|
||||||
{
|
{
|
||||||
return CELL_VIDEO_OUT_ERROR_PARAMETER_OUT_OF_RANGE;
|
return CELL_VIDEO_OUT_ERROR_PARAMETER_OUT_OF_RANGE;
|
||||||
}
|
}
|
||||||
|
@ -308,32 +251,6 @@ error_code cellVideoOutConvertCursorColor(u32 videoOut, s32 displaybuffer_format
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
const u8* src = reinterpret_cast<const u8*>(src_addr.get_ptr());
|
|
||||||
u8* dst = reinterpret_cast<u8*>(dest_addr.get_ptr());
|
|
||||||
|
|
||||||
if (displaybuffer_format == CELL_VIDEO_OUT_BUFFER_COLOR_FORMAT_R16G16B16X16_FLOAT)
|
|
||||||
{
|
|
||||||
if (*rgbOutputRange == CELL_VIDEO_OUT_RGB_OUTPUT_RANGE_LIMITED)
|
|
||||||
{
|
|
||||||
convert_cursor_color<true, true>(src, dst, num, gamma);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
convert_cursor_color<true, false>(src, dst, num, gamma);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (*rgbOutputRange == CELL_VIDEO_OUT_RGB_OUTPUT_RANGE_LIMITED)
|
|
||||||
{
|
|
||||||
convert_cursor_color<false, true>(src, dst, num, gamma);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
convert_cursor_color<false, false>(src, dst, num, gamma);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -481,8 +398,8 @@ error_code cellAudioInRegisterDevice(u64 deviceType, vm::cptr<char> name, vm::pt
|
||||||
auto& av_manager = g_fxo->get<avconf_manager>();
|
auto& av_manager = g_fxo->get<avconf_manager>();
|
||||||
const std::lock_guard lock(av_manager.mutex);
|
const std::lock_guard lock(av_manager.mutex);
|
||||||
|
|
||||||
std::optional<avconf_manager::device_info> device = av_manager.get_device_info(name);
|
std::optional<CellAudioInDeviceInfo> info = av_manager.get_device_info(name);
|
||||||
if (!device)
|
if (!info || !memchr(info->name, '\0', sizeof(info->name)))
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
return CELL_AUDIO_IN_ERROR_DEVICE_NOT_FOUND;
|
return CELL_AUDIO_IN_ERROR_DEVICE_NOT_FOUND;
|
||||||
|
@ -490,7 +407,7 @@ error_code cellAudioInRegisterDevice(u64 deviceType, vm::cptr<char> name, vm::pt
|
||||||
|
|
||||||
auto& mic_thr = g_fxo->get<mic_thread>();
|
auto& mic_thr = g_fxo->get<mic_thread>();
|
||||||
const std::lock_guard mic_lock(mic_thr.mutex);
|
const std::lock_guard mic_lock(mic_thr.mutex);
|
||||||
const u32 device_number = mic_thr.register_device(device->full_device_name);
|
const u32 device_number = mic_thr.register_device(info->name);
|
||||||
|
|
||||||
return not_an_error(device_number);
|
return not_an_error(device_number);
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,6 +61,11 @@ void fmt_class_string<CellCameraFormat>::format(std::string& out, u64 arg)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Temporarily
|
||||||
|
#ifndef _MSC_VER
|
||||||
|
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
||||||
|
#endif
|
||||||
|
|
||||||
// **************
|
// **************
|
||||||
// * Prototypes *
|
// * Prototypes *
|
||||||
// **************
|
// **************
|
||||||
|
@ -397,7 +402,7 @@ error_code check_init_and_open(s32 dev_num)
|
||||||
}
|
}
|
||||||
|
|
||||||
// This represents a recurring subfunction throughout libCamera
|
// This represents a recurring subfunction throughout libCamera
|
||||||
error_code check_resolution(s32 /*dev_num*/)
|
error_code check_resolution(s32 dev_num)
|
||||||
{
|
{
|
||||||
// TODO: Some sort of connection check maybe?
|
// TODO: Some sort of connection check maybe?
|
||||||
//if (error == CELL_CAMERA_ERROR_RESOLUTION_UNKNOWN)
|
//if (error == CELL_CAMERA_ERROR_RESOLUTION_UNKNOWN)
|
||||||
|
@ -408,7 +413,7 @@ error_code check_resolution(s32 /*dev_num*/)
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
// This represents an often used sequence in libCamera (usually the beginning of a subfunction).
|
// This represents a oftenly used sequence in libCamera (usually the beginning of a subfunction).
|
||||||
// There also exist common sequences for mutex lock/unlock by the way.
|
// There also exist common sequences for mutex lock/unlock by the way.
|
||||||
error_code check_resolution_ex(s32 dev_num)
|
error_code check_resolution_ex(s32 dev_num)
|
||||||
{
|
{
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue