Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f6ea921e0d | |||
| ba9464c547 |
@@ -13,18 +13,31 @@ 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_ENV_HINTS=1
|
||||||
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
||||||
|
brew update
|
||||||
brew install -f --overwrite --quiet ccache "llvm@$LLVM_COMPILER_VER"
|
brew install -f --overwrite --quiet ccache "llvm@$LLVM_COMPILER_VER"
|
||||||
brew link -f --overwrite --quiet "llvm@$LLVM_COMPILER_VER"
|
brew link -f --overwrite --quiet "llvm@$LLVM_COMPILER_VER"
|
||||||
brew install -f --overwrite --quiet googletest opencv@4 sdl3 vulkan-headers vulkan-loader molten-vk
|
if [ "$AARCH64" -eq 1 ]; then
|
||||||
brew unlink --quiet ffmpeg fmt qtbase qtsvg qtdeclarative protobuf || true
|
brew install -f --overwrite --quiet googletest opencv@4 sdl3 vulkan-headers vulkan-loader molten-vk
|
||||||
|
brew unlink --quiet ffmpeg fmt qtbase qtsvg qtdeclarative protobuf || true
|
||||||
|
else
|
||||||
|
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||||
|
arch -x86_64 /usr/local/bin/brew install -f --overwrite --quiet python@3.14 opencv@4 "llvm@$LLVM_COMPILER_VER" sdl3 vulkan-headers vulkan-loader molten-vk
|
||||||
|
arch -x86_64 /usr/local/bin/brew unlink --quiet ffmpeg qtbase qtsvg qtdeclarative protobuf || true
|
||||||
|
fi
|
||||||
|
|
||||||
export CXX=clang++
|
export CXX=clang++
|
||||||
export CC=clang
|
export CC=clang
|
||||||
|
|
||||||
export BREW_PATH;
|
export BREW_PATH;
|
||||||
BREW_PATH="$(brew --prefix)"
|
if [ "$AARCH64" -eq 1 ]; then
|
||||||
export BREW_BIN="$BREW_PATH/bin"
|
BREW_PATH="$(brew --prefix)"
|
||||||
export BREW_SBIN="$BREW_PATH/sbin"
|
export BREW_BIN="/opt/homebrew/bin"
|
||||||
|
export BREW_SBIN="/opt/homebrew/sbin"
|
||||||
|
else
|
||||||
|
BREW_PATH="$("/usr/local/bin/brew" --prefix)"
|
||||||
|
export BREW_BIN="/usr/local/bin"
|
||||||
|
export BREW_SBIN="/usr/local/sbin"
|
||||||
|
fi
|
||||||
|
|
||||||
export WORKDIR;
|
export WORKDIR;
|
||||||
WORKDIR="$(pwd)"
|
WORKDIR="$(pwd)"
|
||||||
@@ -55,7 +68,7 @@ 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_PATH/opt/sdl3/lib/cmake/SDL3"
|
||||||
|
|
||||||
export PATH="$BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/bin:$PATH"
|
export PATH="/opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/bin:$PATH"
|
||||||
export LDFLAGS="-L$BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/lib/c++ -L$BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/lib/unwind -lunwind"
|
export LDFLAGS="-L$BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/lib/c++ -L$BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/lib/unwind -lunwind"
|
||||||
|
|
||||||
export VULKAN_SDK
|
export VULKAN_SDK
|
||||||
@@ -69,13 +82,12 @@ LLVM_DIR="$BREW_PATH/opt/llvm@$LLVM_COMPILER_VER"
|
|||||||
git submodule -q update --init --depth=1 --jobs=8 $(awk '/path/ && !/llvm/ && !/opencv/ && !/SDL/ && !/feralinteractive/ { print $3 }' .gitmodules)
|
git submodule -q update --init --depth=1 --jobs=8 $(awk '/path/ && !/llvm/ && !/opencv/ && !/SDL/ && !/feralinteractive/ { print $3 }' .gitmodules)
|
||||||
|
|
||||||
mkdir build && cd build || exit 1
|
mkdir build && cd build || exit 1
|
||||||
# The below should be uncommented once bugs with Qt 6 QListWidgets when using the OS 26 visual style are resolved.
|
|
||||||
# sudo xcode-select -switch /Applications/Xcode_26.3.app/Contents/Developer
|
|
||||||
|
|
||||||
|
if [ "$AARCH64" -eq 1 ]; then
|
||||||
cmake .. \
|
cmake .. \
|
||||||
-DBUILD_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
|
-DBUILD_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
|
||||||
-DRUN_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
|
-DRUN_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
|
||||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=15.0 \
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=14.4 \
|
||||||
-DCMAKE_OSX_SYSROOT="$(xcrun --sdk macosx --show-sdk-path)" \
|
-DCMAKE_OSX_SYSROOT="$(xcrun --sdk macosx --show-sdk-path)" \
|
||||||
-DMACOSX_BUNDLE_SHORT_VERSION_STRING="${COMM_TAG}" \
|
-DMACOSX_BUNDLE_SHORT_VERSION_STRING="${COMM_TAG}" \
|
||||||
-DMACOSX_BUNDLE_BUNDLE_VERSION="${COMM_COUNT}" \
|
-DMACOSX_BUNDLE_BUNDLE_VERSION="${COMM_COUNT}" \
|
||||||
@@ -90,8 +102,31 @@ cmake .. \
|
|||||||
-DUSE_SYSTEM_SDL=ON \
|
-DUSE_SYSTEM_SDL=ON \
|
||||||
-DUSE_SYSTEM_OPENCV=ON \
|
-DUSE_SYSTEM_OPENCV=ON \
|
||||||
-G Ninja
|
-G Ninja
|
||||||
|
else
|
||||||
|
cmake .. \
|
||||||
|
-DBUILD_RPCS3_TESTS=OFF \
|
||||||
|
-DRUN_RPCS3_TESTS=OFF \
|
||||||
|
-DCMAKE_OSX_ARCHITECTURES=x86_64 \
|
||||||
|
-DCMAKE_SYSTEM_PROCESSOR=x86_64 \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=buildfiles/cmake/TCDarwinX86_64.cmake \
|
||||||
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=14.4 \
|
||||||
|
-DCMAKE_OSX_SYSROOT="$(xcrun --sdk macosx --show-sdk-path)" \
|
||||||
|
-DMACOSX_BUNDLE_SHORT_VERSION_STRING="${COMM_TAG}" \
|
||||||
|
-DMACOSX_BUNDLE_BUNDLE_VERSION="${COMM_COUNT}"\
|
||||||
|
-DSTATIC_LINK_LLVM=ON \
|
||||||
|
-DUSE_SDL=ON \
|
||||||
|
-DUSE_DISCORD_RPC=ON \
|
||||||
|
-DUSE_AUDIOUNIT=ON \
|
||||||
|
-DUSE_SYSTEM_FFMPEG=OFF \
|
||||||
|
-DUSE_NATIVE_INSTRUCTIONS=OFF \
|
||||||
|
-DUSE_PRECOMPILED_HEADERS=OFF \
|
||||||
|
-DUSE_SYSTEM_MVK=ON \
|
||||||
|
-DUSE_SYSTEM_SDL=ON \
|
||||||
|
-DUSE_SYSTEM_OPENCV=ON \
|
||||||
|
-G Ninja
|
||||||
|
fi
|
||||||
|
|
||||||
ninja -j4; build_status=$?;
|
ninja; build_status=$?;
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
|
|||||||
@@ -4,11 +4,16 @@
|
|||||||
cd build || exit 1
|
cd build || exit 1
|
||||||
|
|
||||||
cd bin
|
cd bin
|
||||||
|
git clone --revision=a075e5e417f87675ea3137b7365f3e5a99608d72 https://github.com/KhronosGroup/MoltenVK.git
|
||||||
|
cd MoltenVK
|
||||||
|
./fetchDependencies --macos
|
||||||
|
sudo xcode-select -switch /Applications/Xcode_16.2.app/Contents/Developer
|
||||||
|
make macos MVK_USE_METAL_PRIVATE_API=1
|
||||||
|
cd ../
|
||||||
|
|
||||||
mkdir -p "rpcs3.app/Contents/Resources/vulkan/icd.d" || true
|
mkdir -p "rpcs3.app/Contents/Resources/vulkan/icd.d" || true
|
||||||
wget https://github.com/KhronosGroup/MoltenVK/releases/download/v1.4.2-rc1/MoltenVK-macos-privateapi.tar
|
cp "MoltenVK/Package/Release/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib" "rpcs3.app/Contents/Frameworks/libMoltenVK.dylib"
|
||||||
tar -xvf MoltenVK-macos-privateapi.tar
|
cp "MoltenVK/Package/Release/MoltenVK/dynamic/dylib/macOS/MoltenVK_icd.json" "rpcs3.app/Contents/Resources/vulkan/icd.d/MoltenVK_icd.json"
|
||||||
cp "MoltenVK/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib" "rpcs3.app/Contents/Frameworks/libMoltenVK.dylib"
|
|
||||||
cp "MoltenVK/MoltenVK/dynamic/dylib/macOS/MoltenVK_icd.json" "rpcs3.app/Contents/Resources/vulkan/icd.d/MoltenVK_icd.json"
|
|
||||||
sed -i '' "s/.\//..\/..\/..\/Frameworks\//g" "rpcs3.app/Contents/Resources/vulkan/icd.d/MoltenVK_icd.json"
|
sed -i '' "s/.\//..\/..\/..\/Frameworks\//g" "rpcs3.app/Contents/Resources/vulkan/icd.d/MoltenVK_icd.json"
|
||||||
|
|
||||||
cp "$(realpath $BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/lib/c++/libc++abi.1.0.dylib)" "rpcs3.app/Contents/Frameworks/libc++abi.1.dylib"
|
cp "$(realpath $BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/lib/c++/libc++abi.1.0.dylib)" "rpcs3.app/Contents/Frameworks/libc++abi.1.dylib"
|
||||||
@@ -79,7 +84,7 @@ echo "[InternetShortcut]" > Quickstart.url
|
|||||||
echo "URL=https://rpcs3.net/quickstart" >> Quickstart.url
|
echo "URL=https://rpcs3.net/quickstart" >> Quickstart.url
|
||||||
echo "IconIndex=0" >> Quickstart.url
|
echo "IconIndex=0" >> Quickstart.url
|
||||||
|
|
||||||
if [ "$(arch)" = "arm64" ]; then
|
if [ "$AARCH64" -eq 1 ]; then
|
||||||
ARCHIVE_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${LVER}_macos_aarch64.7z"
|
ARCHIVE_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${LVER}_macos_aarch64.7z"
|
||||||
else
|
else
|
||||||
ARCHIVE_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${LVER}_macos.7z"
|
ARCHIVE_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${LVER}_macos.7z"
|
||||||
|
|||||||
@@ -123,15 +123,15 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- name: Intel
|
- name: Intel
|
||||||
runs-on: macos-15-intel
|
AARCH64: 0
|
||||||
UPLOAD_COMMIT_HASH: 51ae32f468089a8169aaf1567de355ff4a3e0842
|
UPLOAD_COMMIT_HASH: 51ae32f468089a8169aaf1567de355ff4a3e0842
|
||||||
UPLOAD_REPO_FULL_NAME: rpcs3/rpcs3-binaries-mac
|
UPLOAD_REPO_FULL_NAME: rpcs3/rpcs3-binaries-mac
|
||||||
- name: Apple Silicon
|
- name: Apple Silicon
|
||||||
runs-on: macos-15
|
AARCH64: 1
|
||||||
UPLOAD_COMMIT_HASH: 8e21bdbc40711a3fccd18fbf17b742348b0f4281
|
UPLOAD_COMMIT_HASH: 8e21bdbc40711a3fccd18fbf17b742348b0f4281
|
||||||
UPLOAD_REPO_FULL_NAME: rpcs3/rpcs3-binaries-mac-arm64
|
UPLOAD_REPO_FULL_NAME: rpcs3/rpcs3-binaries-mac-arm64
|
||||||
name: RPCS3 Mac ${{ matrix.name }}
|
name: RPCS3 Mac ${{ matrix.name }}
|
||||||
runs-on: ${{ matrix.runs-on }}
|
runs-on: macos-14
|
||||||
env:
|
env:
|
||||||
CCACHE_DIR: /tmp/ccache_dir
|
CCACHE_DIR: /tmp/ccache_dir
|
||||||
QT_VER: '6.11.1'
|
QT_VER: '6.11.1'
|
||||||
@@ -140,7 +140,8 @@ jobs:
|
|||||||
RELEASE_MESSAGE: ../GitHubReleaseMessage.txt
|
RELEASE_MESSAGE: ../GitHubReleaseMessage.txt
|
||||||
UPLOAD_COMMIT_HASH: ${{ matrix.UPLOAD_COMMIT_HASH }}
|
UPLOAD_COMMIT_HASH: ${{ matrix.UPLOAD_COMMIT_HASH }}
|
||||||
UPLOAD_REPO_FULL_NAME: ${{ matrix.UPLOAD_REPO_FULL_NAME }}
|
UPLOAD_REPO_FULL_NAME: ${{ matrix.UPLOAD_REPO_FULL_NAME }}
|
||||||
RUN_UNIT_TESTS: ${{ matrix.name == 'Apple Silicon' && (github.event_name == 'pull_request' && 'ON') || 'OFF' }}
|
AARCH64: ${{ matrix.AARCH64 }}
|
||||||
|
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
|
||||||
|
|||||||
@@ -72,15 +72,12 @@
|
|||||||
<ClCompile Include="curl\lib\cf-haproxy.c" />
|
<ClCompile Include="curl\lib\cf-haproxy.c" />
|
||||||
<ClCompile Include="curl\lib\cf-https-connect.c" />
|
<ClCompile Include="curl\lib\cf-https-connect.c" />
|
||||||
<ClCompile Include="curl\lib\cf-ip-happy.c" />
|
<ClCompile Include="curl\lib\cf-ip-happy.c" />
|
||||||
<ClCompile Include="curl\lib\cf-recvbuf.c" />
|
|
||||||
<ClCompile Include="curl\lib\cf-setup.c" />
|
|
||||||
<ClCompile Include="curl\lib\cf-socket.c" />
|
<ClCompile Include="curl\lib\cf-socket.c" />
|
||||||
<ClCompile Include="curl\lib\cfilters.c" />
|
<ClCompile Include="curl\lib\cfilters.c" />
|
||||||
<ClCompile Include="curl\lib\conncache.c" />
|
<ClCompile Include="curl\lib\conncache.c" />
|
||||||
<ClCompile Include="curl\lib\connect.c" />
|
<ClCompile Include="curl\lib\connect.c" />
|
||||||
<ClCompile Include="curl\lib\content_encoding.c" />
|
<ClCompile Include="curl\lib\content_encoding.c" />
|
||||||
<ClCompile Include="curl\lib\cookie.c" />
|
<ClCompile Include="curl\lib\cookie.c" />
|
||||||
<ClCompile Include="curl\lib\creds.c" />
|
|
||||||
<ClCompile Include="curl\lib\cshutdn.c" />
|
<ClCompile Include="curl\lib\cshutdn.c" />
|
||||||
<ClCompile Include="curl\lib\curlx\base64.c" />
|
<ClCompile Include="curl\lib\curlx\base64.c" />
|
||||||
<ClCompile Include="curl\lib\curlx\basename.c" />
|
<ClCompile Include="curl\lib\curlx\basename.c" />
|
||||||
@@ -170,14 +167,13 @@
|
|||||||
<ClCompile Include="curl\lib\multi_ev.c" />
|
<ClCompile Include="curl\lib\multi_ev.c" />
|
||||||
<ClCompile Include="curl\lib\multi_ntfy.c" />
|
<ClCompile Include="curl\lib\multi_ntfy.c" />
|
||||||
<ClCompile Include="curl\lib\netrc.c" />
|
<ClCompile Include="curl\lib\netrc.c" />
|
||||||
|
<ClCompile Include="curl\lib\noproxy.c" />
|
||||||
<ClCompile Include="curl\lib\openldap.c" />
|
<ClCompile Include="curl\lib\openldap.c" />
|
||||||
<ClCompile Include="curl\lib\parsedate.c" />
|
<ClCompile Include="curl\lib\parsedate.c" />
|
||||||
<ClCompile Include="curl\lib\peer.c" />
|
|
||||||
<ClCompile Include="curl\lib\pingpong.c" />
|
<ClCompile Include="curl\lib\pingpong.c" />
|
||||||
<ClCompile Include="curl\lib\pop3.c" />
|
<ClCompile Include="curl\lib\pop3.c" />
|
||||||
<ClCompile Include="curl\lib\progress.c" />
|
<ClCompile Include="curl\lib\progress.c" />
|
||||||
<ClCompile Include="curl\lib\protocol.c" />
|
<ClCompile Include="curl\lib\protocol.c" />
|
||||||
<ClCompile Include="curl\lib\proxy.c" />
|
|
||||||
<ClCompile Include="curl\lib\psl.c" />
|
<ClCompile Include="curl\lib\psl.c" />
|
||||||
<ClCompile Include="curl\lib\rand.c" />
|
<ClCompile Include="curl\lib\rand.c" />
|
||||||
<ClCompile Include="curl\lib\ratelimit.c" />
|
<ClCompile Include="curl\lib\ratelimit.c" />
|
||||||
@@ -212,19 +208,13 @@
|
|||||||
<ClCompile Include="curl\lib\urlapi.c" />
|
<ClCompile Include="curl\lib\urlapi.c" />
|
||||||
<ClCompile Include="curl\lib\vauth\gsasl.c" />
|
<ClCompile Include="curl\lib\vauth\gsasl.c" />
|
||||||
<ClCompile Include="curl\lib\version.c" />
|
<ClCompile Include="curl\lib\version.c" />
|
||||||
<ClCompile Include="curl\lib\vquic\capsule.c" />
|
<ClCompile Include="curl\lib\vquic\curl_ngtcp2.c" />
|
||||||
<ClCompile Include="curl\lib\vquic\cf-capsule.c" />
|
<ClCompile Include="curl\lib\vquic\curl_quiche.c" />
|
||||||
<ClCompile Include="curl\lib\vquic\cf-ngtcp2-cmn.c" />
|
|
||||||
<ClCompile Include="curl\lib\vquic\cf-ngtcp2-proxy.c" />
|
|
||||||
<ClCompile Include="curl\lib\vquic\cf-ngtcp2.c" />
|
|
||||||
<ClCompile Include="curl\lib\vquic\cf-quiche.c" />
|
|
||||||
<ClCompile Include="curl\lib\vquic\vquic-tls.c" />
|
|
||||||
<ClCompile Include="curl\lib\vssh\vssh.c" />
|
<ClCompile Include="curl\lib\vssh\vssh.c" />
|
||||||
<ClCompile Include="curl\lib\vtls\apple.c" />
|
<ClCompile Include="curl\lib\vtls\apple.c" />
|
||||||
<ClCompile Include="curl\lib\vtls\cipher_suite.c" />
|
<ClCompile Include="curl\lib\vtls\cipher_suite.c" />
|
||||||
<ClCompile Include="curl\lib\vtls\hostcheck.c" />
|
<ClCompile Include="curl\lib\vtls\hostcheck.c" />
|
||||||
<ClCompile Include="curl\lib\vtls\rustls.c" />
|
<ClCompile Include="curl\lib\vtls\rustls.c" />
|
||||||
<ClCompile Include="curl\lib\vtls\vtls_config.c" />
|
|
||||||
<ClCompile Include="curl\lib\vtls\vtls_scache.c" />
|
<ClCompile Include="curl\lib\vtls\vtls_scache.c" />
|
||||||
<ClCompile Include="curl\lib\vtls\vtls_spack.c" />
|
<ClCompile Include="curl\lib\vtls\vtls_spack.c" />
|
||||||
<ClCompile Include="curl\lib\vtls\x509asn1.c" />
|
<ClCompile Include="curl\lib\vtls\x509asn1.c" />
|
||||||
@@ -275,8 +265,6 @@
|
|||||||
<ClInclude Include="curl\lib\cf-haproxy.h" />
|
<ClInclude Include="curl\lib\cf-haproxy.h" />
|
||||||
<ClInclude Include="curl\lib\cf-https-connect.h" />
|
<ClInclude Include="curl\lib\cf-https-connect.h" />
|
||||||
<ClInclude Include="curl\lib\cf-ip-happy.h" />
|
<ClInclude Include="curl\lib\cf-ip-happy.h" />
|
||||||
<ClInclude Include="curl\lib\cf-recvbuf.h" />
|
|
||||||
<ClInclude Include="curl\lib\cf-setup.h" />
|
|
||||||
<ClInclude Include="curl\lib\cf-socket.h" />
|
<ClInclude Include="curl\lib\cf-socket.h" />
|
||||||
<ClInclude Include="curl\lib\cfilters.h" />
|
<ClInclude Include="curl\lib\cfilters.h" />
|
||||||
<ClInclude Include="curl\lib\config-mac.h" />
|
<ClInclude Include="curl\lib\config-mac.h" />
|
||||||
@@ -288,7 +276,6 @@
|
|||||||
<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\creds.h" />
|
|
||||||
<ClInclude Include="curl\lib\cshutdn.h" />
|
<ClInclude Include="curl\lib\cshutdn.h" />
|
||||||
<ClInclude Include="curl\lib\curlx\base64.h" />
|
<ClInclude Include="curl\lib\curlx\base64.h" />
|
||||||
<ClInclude Include="curl\lib\curlx\basename.h" />
|
<ClInclude Include="curl\lib\curlx\basename.h" />
|
||||||
@@ -381,13 +368,12 @@
|
|||||||
<ClInclude Include="curl\lib\multi_ev.h" />
|
<ClInclude Include="curl\lib\multi_ev.h" />
|
||||||
<ClInclude Include="curl\lib\multi_ntfy.h" />
|
<ClInclude Include="curl\lib\multi_ntfy.h" />
|
||||||
<ClInclude Include="curl\lib\netrc.h" />
|
<ClInclude Include="curl\lib\netrc.h" />
|
||||||
|
<ClInclude Include="curl\lib\noproxy.h" />
|
||||||
<ClInclude Include="curl\lib\parsedate.h" />
|
<ClInclude Include="curl\lib\parsedate.h" />
|
||||||
<ClInclude Include="curl\lib\peer.h" />
|
|
||||||
<ClInclude Include="curl\lib\pingpong.h" />
|
<ClInclude Include="curl\lib\pingpong.h" />
|
||||||
<ClInclude Include="curl\lib\pop3.h" />
|
<ClInclude Include="curl\lib\pop3.h" />
|
||||||
<ClInclude Include="curl\lib\progress.h" />
|
<ClInclude Include="curl\lib\progress.h" />
|
||||||
<ClInclude Include="curl\lib\protocol.h" />
|
<ClInclude Include="curl\lib\protocol.h" />
|
||||||
<ClInclude Include="curl\lib\proxy.h" />
|
|
||||||
<ClInclude Include="curl\lib\psl.h" />
|
<ClInclude Include="curl\lib\psl.h" />
|
||||||
<ClInclude Include="curl\lib\rand.h" />
|
<ClInclude Include="curl\lib\rand.h" />
|
||||||
<ClInclude Include="curl\lib\ratelimit.h" />
|
<ClInclude Include="curl\lib\ratelimit.h" />
|
||||||
@@ -425,13 +411,8 @@
|
|||||||
<ClInclude Include="curl\lib\url.h" />
|
<ClInclude Include="curl\lib\url.h" />
|
||||||
<ClInclude Include="curl\lib\urlapi-int.h" />
|
<ClInclude Include="curl\lib\urlapi-int.h" />
|
||||||
<ClInclude Include="curl\lib\urldata.h" />
|
<ClInclude Include="curl\lib\urldata.h" />
|
||||||
<ClInclude Include="curl\lib\vquic\capsule.h" />
|
<ClInclude Include="curl\lib\vquic\curl_ngtcp2.h" />
|
||||||
<ClInclude Include="curl\lib\vquic\cf-capsule.h" />
|
<ClInclude Include="curl\lib\vquic\curl_quiche.h" />
|
||||||
<ClInclude Include="curl\lib\vquic\cf-ngtcp2-cmn.h" />
|
|
||||||
<ClInclude Include="curl\lib\vquic\cf-ngtcp2-proxy.h" />
|
|
||||||
<ClInclude Include="curl\lib\vquic\cf-ngtcp2.h" />
|
|
||||||
<ClInclude Include="curl\lib\vquic\cf-quiche.h" />
|
|
||||||
<ClInclude Include="curl\lib\vquic\vquic-tls.h" />
|
|
||||||
<ClInclude Include="curl\lib\vquic\vquic_int.h" />
|
<ClInclude Include="curl\lib\vquic\vquic_int.h" />
|
||||||
<ClInclude Include="curl\lib\vssh\vssh.h" />
|
<ClInclude Include="curl\lib\vssh\vssh.h" />
|
||||||
<ClInclude Include="curl\lib\vtls\apple.h" />
|
<ClInclude Include="curl\lib\vtls\apple.h" />
|
||||||
@@ -439,7 +420,6 @@
|
|||||||
<ClInclude Include="curl\lib\vtls\hostcheck.h" />
|
<ClInclude Include="curl\lib\vtls\hostcheck.h" />
|
||||||
<ClInclude Include="curl\lib\vtls\rustls.h" />
|
<ClInclude Include="curl\lib\vtls\rustls.h" />
|
||||||
<ClInclude Include="curl\lib\vtls\schannel_int.h" />
|
<ClInclude Include="curl\lib\vtls\schannel_int.h" />
|
||||||
<ClInclude Include="curl\lib\vtls\vtls_config.h" />
|
|
||||||
<ClInclude Include="curl\lib\vtls\vtls_int.h" />
|
<ClInclude Include="curl\lib\vtls\vtls_int.h" />
|
||||||
<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" />
|
||||||
|
|||||||
@@ -366,6 +366,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\noproxy.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="curl\lib\ws.c">
|
<ClCompile Include="curl\lib\ws.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -381,6 +384,12 @@
|
|||||||
<ClCompile Include="curl\lib\cf-socket.c">
|
<ClCompile Include="curl\lib\cf-socket.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="curl\lib\vquic\curl_ngtcp2.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="curl\lib\vquic\curl_quiche.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="curl\lib\http1.c">
|
<ClCompile Include="curl\lib\http1.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -555,45 +564,6 @@
|
|||||||
<ClCompile Include="curl\lib\thrdqueue.c">
|
<ClCompile Include="curl\lib\thrdqueue.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="curl\lib\vtls\vtls_config.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\vquic\capsule.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\vquic\cf-capsule.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\vquic\cf-ngtcp2.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\vquic\cf-ngtcp2-cmn.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\vquic\cf-ngtcp2-proxy.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\vquic\cf-quiche.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\vquic\vquic-tls.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\cf-recvbuf.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\cf-setup.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\creds.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\peer.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="curl\lib\proxy.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="curl\include\curl\curl.h">
|
<ClInclude Include="curl\include\curl\curl.h">
|
||||||
@@ -974,6 +944,9 @@
|
|||||||
<ClInclude Include="curl\lib\functypes.h">
|
<ClInclude Include="curl\lib\functypes.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="curl\lib\noproxy.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="curl\lib\ws.h">
|
<ClInclude Include="curl\lib\ws.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
@@ -989,6 +962,12 @@
|
|||||||
<ClInclude Include="curl\lib\cf-socket.h">
|
<ClInclude Include="curl\lib\cf-socket.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="curl\lib\vquic\curl_ngtcp2.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="curl\lib\vquic\curl_quiche.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="curl\lib\vquic\vquic_int.h">
|
<ClInclude Include="curl\lib\vquic\vquic_int.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
@@ -1166,45 +1145,6 @@
|
|||||||
<ClInclude Include="curl\lib\thrdqueue.h">
|
<ClInclude Include="curl\lib\thrdqueue.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="curl\lib\vtls\vtls_config.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\vquic\capsule.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\vquic\cf-capsule.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\vquic\cf-ngtcp2.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\vquic\cf-ngtcp2-cmn.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\vquic\cf-ngtcp2-proxy.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\vquic\cf-quiche.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\vquic\vquic-tls.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\cf-recvbuf.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\cf-setup.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\creds.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\peer.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="curl\lib\proxy.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ResourceCompile Include="curl\lib\libcurl.rc">
|
<ResourceCompile Include="curl\lib\libcurl.rc">
|
||||||
|
|||||||
@@ -13,17 +13,17 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="fusion\Fusion\Fusion.h" />
|
<ClInclude Include="fusion\Fusion\Fusion.h" />
|
||||||
<ClInclude Include="fusion\Fusion\FusionAhrs.h" />
|
<ClInclude Include="fusion\Fusion\FusionAhrs.h" />
|
||||||
<ClInclude Include="fusion\Fusion\FusionBias.h" />
|
<ClInclude Include="fusion\Fusion\FusionAxes.h" />
|
||||||
|
<ClInclude Include="fusion\Fusion\FusionCalibration.h" />
|
||||||
<ClInclude Include="fusion\Fusion\FusionCompass.h" />
|
<ClInclude Include="fusion\Fusion\FusionCompass.h" />
|
||||||
<ClInclude Include="fusion\Fusion\FusionConvention.h" />
|
<ClInclude Include="fusion\Fusion\FusionConvention.h" />
|
||||||
<ClInclude Include="fusion\Fusion\FusionMath.h" />
|
<ClInclude Include="fusion\Fusion\FusionMath.h" />
|
||||||
<ClInclude Include="fusion\Fusion\FusionModel.h" />
|
<ClInclude Include="fusion\Fusion\FusionOffset.h" />
|
||||||
<ClInclude Include="fusion\Fusion\FusionRemap.h" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="fusion\Fusion\FusionAhrs.c" />
|
<ClCompile Include="fusion\Fusion\FusionAhrs.c" />
|
||||||
<ClCompile Include="fusion\Fusion\FusionBias.c" />
|
|
||||||
<ClCompile Include="fusion\Fusion\FusionCompass.c" />
|
<ClCompile Include="fusion\Fusion\FusionCompass.c" />
|
||||||
|
<ClCompile Include="fusion\Fusion\FusionOffset.c" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Label="Globals">
|
<PropertyGroup Label="Globals">
|
||||||
<RootNamespace>Fusion</RootNamespace>
|
<RootNamespace>Fusion</RootNamespace>
|
||||||
|
|||||||
@@ -8,12 +8,12 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="fusion\Fusion\Fusion.h" />
|
<ClInclude Include="fusion\Fusion\Fusion.h" />
|
||||||
<ClInclude Include="fusion\Fusion\FusionAhrs.h" />
|
<ClInclude Include="fusion\Fusion\FusionAhrs.h" />
|
||||||
|
<ClInclude Include="fusion\Fusion\FusionAxes.h" />
|
||||||
|
<ClInclude Include="fusion\Fusion\FusionCalibration.h" />
|
||||||
<ClInclude Include="fusion\Fusion\FusionCompass.h" />
|
<ClInclude Include="fusion\Fusion\FusionCompass.h" />
|
||||||
<ClInclude Include="fusion\Fusion\FusionConvention.h" />
|
<ClInclude Include="fusion\Fusion\FusionConvention.h" />
|
||||||
<ClInclude Include="fusion\Fusion\FusionMath.h" />
|
<ClInclude Include="fusion\Fusion\FusionMath.h" />
|
||||||
<ClInclude Include="fusion\Fusion\FusionBias.h" />
|
<ClInclude Include="fusion\Fusion\FusionOffset.h" />
|
||||||
<ClInclude Include="fusion\Fusion\FusionModel.h" />
|
|
||||||
<ClInclude Include="fusion\Fusion\FusionRemap.h" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="fusion\Fusion\FusionAhrs.c">
|
<ClCompile Include="fusion\Fusion\FusionAhrs.c">
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
<ClCompile Include="fusion\Fusion\FusionCompass.c">
|
<ClCompile Include="fusion\Fusion\FusionCompass.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="fusion\Fusion\FusionBias.c">
|
<ClCompile Include="fusion\Fusion\FusionOffset.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@@ -164,17 +164,14 @@ namespace pine
|
|||||||
return IPCBuffer{ 5, MakeFailIPC(ret_buffer) };
|
return IPCBuffer{ 5, MakeFailIPC(ret_buffer) };
|
||||||
};
|
};
|
||||||
|
|
||||||
const auto write_string = [&](std::string_view str)
|
const auto write_string = [&](const std::string& str)
|
||||||
{
|
{
|
||||||
if (!SafetyChecks(buf_cnt, 0, ret_cnt, str.size() + 1 + sizeof(u32), buf_size))
|
if (!SafetyChecks(buf_cnt, 0, ret_cnt, str.size() + 1 + sizeof(u32), buf_size))
|
||||||
return false;
|
return false;
|
||||||
ToArray(ret_buffer, ::narrow<u32>(str.size() + 1), ret_cnt);
|
ToArray(ret_buffer, ::narrow<u32>(str.size() + 1), ret_cnt);
|
||||||
ret_cnt += sizeof(u32);
|
ret_cnt += sizeof(u32);
|
||||||
if (str.size())
|
memcpy(&ret_buffer[ret_cnt], str.data(), str.size());
|
||||||
{
|
ret_cnt += str.size();
|
||||||
std::memcpy(&ret_buffer[ret_cnt], str.data(), str.size());
|
|
||||||
ret_cnt += str.size();
|
|
||||||
}
|
|
||||||
ret_buffer[ret_cnt++] = '\0';
|
ret_buffer[ret_cnt++] = '\0';
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
@@ -515,7 +512,7 @@ namespace pine
|
|||||||
*/
|
*/
|
||||||
static inline bool SafetyChecks(usz command_len, usz command_size, usz reply_len, usz reply_size = 0, usz buf_size = MAX_IPC_SIZE - 1)
|
static inline bool SafetyChecks(usz command_len, usz command_size, usz reply_len, usz reply_size = 0, usz buf_size = MAX_IPC_SIZE - 1)
|
||||||
{
|
{
|
||||||
const bool res = ((command_len + command_size) > buf_size ||
|
bool res = ((command_len + command_size) > buf_size ||
|
||||||
(reply_len + reply_size) >= MAX_IPC_RETURN_SIZE);
|
(reply_len + reply_size) >= MAX_IPC_RETURN_SIZE);
|
||||||
if (res) [[unlikely]]
|
if (res) [[unlikely]]
|
||||||
return false;
|
return false;
|
||||||
@@ -527,8 +524,8 @@ namespace pine
|
|||||||
pine_server() noexcept
|
pine_server() noexcept
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
WSADATA wsa {};
|
WSADATA wsa;
|
||||||
struct sockaddr_in server {};
|
struct sockaddr_in server;
|
||||||
m_sock = INVALID_SOCKET;
|
m_sock = INVALID_SOCKET;
|
||||||
m_msgsock = INVALID_SOCKET;
|
m_msgsock = INVALID_SOCKET;
|
||||||
|
|
||||||
@@ -582,7 +579,7 @@ namespace pine
|
|||||||
fmt::append(m_socket_name, ".%d", slot);
|
fmt::append(m_socket_name, ".%d", slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct sockaddr_un server {};
|
struct sockaddr_un server;
|
||||||
|
|
||||||
m_sock = socket(AF_UNIX, SOCK_STREAM, 0);
|
m_sock = socket(AF_UNIX, SOCK_STREAM, 0);
|
||||||
if (m_sock < 0)
|
if (m_sock < 0)
|
||||||
|
|||||||
@@ -46,9 +46,6 @@
|
|||||||
#define HAVE_AESGCM
|
#define HAVE_AESGCM
|
||||||
#define HAVE_SUPPORTED_CURVES
|
#define HAVE_SUPPORTED_CURVES
|
||||||
#define HAVE_TLS_EXTENSIONS
|
#define HAVE_TLS_EXTENSIONS
|
||||||
#define HAVE_HKDF
|
|
||||||
#define WC_RSA_PSS
|
|
||||||
#define WOLFSSL_TLS13
|
|
||||||
#define HAVE_ECC
|
#define HAVE_ECC
|
||||||
#define ECC_SHAMIR
|
#define ECC_SHAMIR
|
||||||
#define ECC_TIMING_RESISTANT
|
#define ECC_TIMING_RESISTANT
|
||||||
|
|||||||
@@ -71,40 +71,15 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="wolfssl\src\bio.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\conf.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\crl.c" />
|
<ClCompile Include="wolfssl\src\crl.c" />
|
||||||
<ClCompile Include="wolfssl\src\dtls.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\dtls13.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\internal.c" />
|
<ClCompile Include="wolfssl\src\internal.c" />
|
||||||
<ClCompile Include="wolfssl\src\pk.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\pk_ec.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\pk_rsa.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\quic.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\sniffer.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\ssl_api_cert.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\ssl_api_crl_ocsp.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\ssl_api_dtls.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\ssl_api_ext.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\ssl_api_pk.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\ssl_asn1.c" />
|
<ClCompile Include="wolfssl\src\ssl_asn1.c" />
|
||||||
<ClCompile Include="wolfssl\src\ssl_bn.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\ssl_certman.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\ssl_crypto.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\ssl_ech.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\ssl_load.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\ssl_misc.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\ssl_p7p12.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\ssl_sess.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\ssl_sk.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\wolfio.c" />
|
<ClCompile Include="wolfssl\src\wolfio.c" />
|
||||||
<ClCompile Include="wolfssl\src\keys.c" />
|
<ClCompile Include="wolfssl\src\keys.c" />
|
||||||
<ClCompile Include="wolfssl\src\ocsp.c" />
|
<ClCompile Include="wolfssl\src\ocsp.c" />
|
||||||
<ClCompile Include="wolfssl\src\ssl.c" />
|
<ClCompile Include="wolfssl\src\ssl.c" />
|
||||||
<ClCompile Include="wolfssl\src\tls.c" />
|
<ClCompile Include="wolfssl\src\tls.c" />
|
||||||
<ClCompile Include="wolfssl\src\tls13.c" />
|
<ClCompile Include="wolfssl\src\tls13.c" />
|
||||||
<ClCompile Include="wolfssl\src\x509.c" />
|
|
||||||
<ClCompile Include="wolfssl\src\x509_str.c" />
|
|
||||||
<ClCompile Include="wolfssl\wolfcrypt\src\aes.c" />
|
<ClCompile Include="wolfssl\wolfcrypt\src\aes.c" />
|
||||||
<ClCompile Include="wolfssl\wolfcrypt\src\arc4.c" />
|
<ClCompile Include="wolfssl\wolfcrypt\src\arc4.c" />
|
||||||
<ClCompile Include="wolfssl\wolfcrypt\src\asn.c" />
|
<ClCompile Include="wolfssl\wolfcrypt\src\asn.c" />
|
||||||
@@ -164,77 +139,6 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="extra\win32\user_settings.h" />
|
<ClInclude Include="extra\win32\user_settings.h" />
|
||||||
<ClInclude Include="wolfssl\resource.h" />
|
<ClInclude Include="wolfssl\resource.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\callbacks.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\certs_test.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\certs_test_sm.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\crl.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\error-ssl.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\internal.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\ocsp.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\aes.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\asn1.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\asn1t.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\bio.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\bn.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\buffer.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\camellia.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\cmac.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\cms.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\compat_types.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\conf.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\crypto.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\des.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\dh.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\dsa.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\ec.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\ec25519.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\ec448.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\ecdh.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\ecdsa.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\ed25519.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\ed448.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\engine.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\err.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\evp.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\fips_rand.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\hmac.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\kdf.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\lhash.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\md4.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\md5.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\modes.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\objects.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\obj_mac.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\ocsp.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\opensslconf.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\opensslv.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\ossl_typ.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\pem.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\pkcs12.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\pkcs7.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\rand.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\rc4.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\ripemd.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\rsa.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\safestack.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\sha.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\sha3.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\srp.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\ssl.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\ssl23.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\stack.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\tls1.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\txt_db.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\ui.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\x509.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\x509v3.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\openssl\x509_vfy.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\quic.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\sniffer.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\sniffer_error.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\ssl.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\test.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\version.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\aes.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\aes.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\arc4.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\arc4.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\asn.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\asn.h" />
|
||||||
@@ -262,6 +166,8 @@
|
|||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\ed448.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\ed448.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\error-crypt.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\error-crypt.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\ext_kyber.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\ext_kyber.h" />
|
||||||
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\ext_lms.h" />
|
||||||
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\ext_xmss.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\falcon.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\falcon.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\fe_448.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\fe_448.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\fe_operations.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\fe_operations.h" />
|
||||||
@@ -274,6 +180,7 @@
|
|||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\integer.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\integer.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\kdf.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\kdf.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\kyber.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\kyber.h" />
|
||||||
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\lms.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\logging.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\logging.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\md2.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\md2.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\md4.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\md4.h" />
|
||||||
@@ -287,7 +194,6 @@
|
|||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\pkcs12.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\pkcs12.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\pkcs7.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\pkcs7.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\poly1305.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\poly1305.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\puf.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\pwdbased.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\pwdbased.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\random.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\random.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\rc2.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\rc2.h" />
|
||||||
@@ -306,6 +212,7 @@
|
|||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\sm3.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\sm3.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\sm4.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\sm4.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\sp.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\sp.h" />
|
||||||
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\sphincs.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\sp_int.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\sp_int.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\srp.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\srp.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\tfm.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\tfm.h" />
|
||||||
@@ -314,16 +221,12 @@
|
|||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\wc_encrypt.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\wc_encrypt.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\wc_kyber.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\wc_kyber.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\wc_lms.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\wc_lms.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\wc_mldsa.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\wc_mlkem.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\wc_pkcs11.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\wc_pkcs11.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\wc_port.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\wc_port.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\wc_she.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\wc_slhdsa.h" />
|
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\wc_xmss.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\wc_xmss.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\wolfevent.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\wolfevent.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\wolfmath.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\wolfmath.h" />
|
||||||
<ClInclude Include="wolfssl\wolfssl\wolfio.h" />
|
<ClInclude Include="wolfssl\wolfssl\wolfcrypt\xmss.h" />
|
||||||
<CustomBuild Include="wolfssl\wolfcrypt\src\aes_asm.asm">
|
<CustomBuild Include="wolfssl\wolfcrypt\src\aes_asm.asm">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</ExcludedFromBuild>
|
||||||
@@ -344,7 +247,6 @@
|
|||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
<ResourceCompile Include="wolfssl\wolfssl\sniffer_error.rc" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="wolfssl\wolfssl\wolfcrypt\include.am" />
|
<None Include="wolfssl\wolfssl\wolfcrypt\include.am" />
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ The world's first free and open-source PlayStation 3 emulator/debugger, written
|
|||||||
You can find some basic information on our [**website**](https://rpcs3.net/). Game info is being populated on the [**Wiki**](https://wiki.rpcs3.net/).
|
You can find some basic information on our [**website**](https://rpcs3.net/). Game info is being populated on the [**Wiki**](https://wiki.rpcs3.net/).
|
||||||
For discussion about this emulator, PS3 emulation, and game compatibility reports, please visit our [**forums**](https://forums.rpcs3.net) and our [**Discord server**](https://discord.gg/RPCS3).
|
For discussion about this emulator, PS3 emulation, and game compatibility reports, please visit our [**forums**](https://forums.rpcs3.net) and our [**Discord server**](https://discord.gg/RPCS3).
|
||||||
|
|
||||||
[**Support the Lead Developers on Patreon**](https://rpcs3.net/patreon)
|
[**Support Lead Developers Nekotekina and kd-11 on Patreon**](https://www.patreon.com/Nekotekina)
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
|
|||||||
@@ -757,7 +757,7 @@ void cfg::log_entry::from_default()
|
|||||||
|
|
||||||
std::pair<u16, u16> cfg::device_info::get_usb_ids() const
|
std::pair<u16, u16> cfg::device_info::get_usb_ids() const
|
||||||
{
|
{
|
||||||
auto string_to_hex = [](std::string_view str) -> u16
|
auto string_to_hex = [](const std::string& str) -> u16
|
||||||
{
|
{
|
||||||
u16 value = 0x0000;
|
u16 value = 0x0000;
|
||||||
if (!str.empty() && std::from_chars(str.data(), str.data() + str.size(), value, 16).ec != std::errc{})
|
if (!str.empty() && std::from_chars(str.data(), str.data() + str.size(), value, 16).ec != std::errc{})
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ std::string g_android_cache_dir;
|
|||||||
|
|
||||||
#include <cwchar>
|
#include <cwchar>
|
||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
#include <winioctl.h>
|
|
||||||
|
|
||||||
static std::unique_ptr<wchar_t[]> to_wchar(std::string_view source)
|
static std::unique_ptr<wchar_t[]> to_wchar(std::string_view source)
|
||||||
{
|
{
|
||||||
@@ -1964,17 +1963,6 @@ fs::native_handle fs::file::get_handle() const
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool fs::set_sparse([[maybe_unused]] const fs::file& file)
|
|
||||||
{
|
|
||||||
#ifdef _WIN32
|
|
||||||
FILE_SET_SPARSE_BUFFER sparse{TRUE};
|
|
||||||
DWORD returned = 0;
|
|
||||||
return DeviceIoControl(file.get_handle(), FSCTL_SET_SPARSE, &sparse, sizeof(sparse), nullptr, 0, &returned, nullptr) != FALSE;
|
|
||||||
#else
|
|
||||||
return true;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
fs::file_id fs::file::get_id() const
|
fs::file_id fs::file::get_id() const
|
||||||
{
|
{
|
||||||
if (m_file)
|
if (m_file)
|
||||||
|
|||||||
@@ -496,9 +496,6 @@ namespace fs
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Enable sparse-file semantics when required by the host platform.
|
|
||||||
bool set_sparse(const file& file);
|
|
||||||
|
|
||||||
class dir final
|
class dir final
|
||||||
{
|
{
|
||||||
std::unique_ptr<dir_base> m_dir{};
|
std::unique_ptr<dir_base> m_dir{};
|
||||||
|
|||||||
@@ -244,6 +244,7 @@ namespace asmjit
|
|||||||
|
|
||||||
void vec_load_unaligned(u32 esize, const Operand& v, const x86::Mem& src);
|
void vec_load_unaligned(u32 esize, const Operand& v, const x86::Mem& src);
|
||||||
void vec_store_unaligned(u32 esize, const Operand& v, const x86::Mem& dst);
|
void vec_store_unaligned(u32 esize, const Operand& v, const x86::Mem& dst);
|
||||||
|
void vec_partial_move(u32 esize, const Operand& dst, const Operand& src);
|
||||||
|
|
||||||
void _vec_binary_op(x86::Inst::Id sse_op, x86::Inst::Id vex_op, x86::Inst::Id evex_op, const Operand& dst, const Operand& lhs, const Operand& rhs);
|
void _vec_binary_op(x86::Inst::Id sse_op, x86::Inst::Id vex_op, x86::Inst::Id evex_op, const Operand& dst, const Operand& lhs, const Operand& rhs);
|
||||||
|
|
||||||
@@ -433,35 +434,13 @@ namespace asmjit
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __APPLE__
|
|
||||||
struct jit_write_guard
|
|
||||||
{
|
|
||||||
jit_write_guard() noexcept
|
|
||||||
{
|
|
||||||
pthread_jit_write_protect_np(false);
|
|
||||||
|
|
||||||
// Ensure stores are not reordered by the compiler
|
|
||||||
atomic_fence_acq_rel();
|
|
||||||
}
|
|
||||||
|
|
||||||
~jit_write_guard() noexcept
|
|
||||||
{
|
|
||||||
// Ensure stores are not reordered by the compiler
|
|
||||||
atomic_fence_seq_cst();
|
|
||||||
|
|
||||||
pthread_jit_write_protect_np(true);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
#else
|
|
||||||
#define jit_write_guard [[maybe_unused]] int
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Build runtime function with asmjit::X86Assembler
|
// Build runtime function with asmjit::X86Assembler
|
||||||
template <typename FT, typename Asm = native_asm, typename F>
|
template <typename FT, typename Asm = native_asm, typename F>
|
||||||
inline FT build_function_asm(std::string_view name, F&& builder, ::jit_runtime* custom_runtime = nullptr, bool reduced_size = false)
|
inline FT build_function_asm(std::string_view name, F&& builder, ::jit_runtime* custom_runtime = nullptr, bool reduced_size = false)
|
||||||
{
|
{
|
||||||
jit_write_guard jit_guard;
|
#ifdef __APPLE__
|
||||||
|
pthread_jit_write_protect_np(false);
|
||||||
|
#endif
|
||||||
using namespace asmjit;
|
using namespace asmjit;
|
||||||
|
|
||||||
auto& rt = custom_runtime ? *custom_runtime : get_global_runtime();
|
auto& rt = custom_runtime ? *custom_runtime : get_global_runtime();
|
||||||
@@ -546,7 +525,7 @@ class jit_compiler final
|
|||||||
atomic_t<usz> m_disk_space = umax;
|
atomic_t<usz> m_disk_space = umax;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
jit_compiler(const std::unordered_map<std::string, u64>& _link, std::string_view _cpu, u32 flags = 0, std::function<u64(const std::string&)> symbols_cement = {}) noexcept;
|
jit_compiler(const std::unordered_map<std::string, u64>& _link, const std::string& _cpu, u32 flags = 0, std::function<u64(const std::string&)> symbols_cement = {}) noexcept;
|
||||||
jit_compiler& operator=(thread_state) noexcept;
|
jit_compiler& operator=(thread_state) noexcept;
|
||||||
~jit_compiler() noexcept;
|
~jit_compiler() noexcept;
|
||||||
|
|
||||||
@@ -592,7 +571,7 @@ public:
|
|||||||
u64 get(const std::string& name);
|
u64 get(const std::string& name);
|
||||||
|
|
||||||
// Get CPU info
|
// Get CPU info
|
||||||
static std::string cpu(std::string_view _cpu);
|
static std::string cpu(const std::string& _cpu);
|
||||||
|
|
||||||
// Get system triple (PPU)
|
// Get system triple (PPU)
|
||||||
static std::string triple1();
|
static std::string triple1();
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ static u8* get_jit_memory()
|
|||||||
// Reserve 2G memory (magic static)
|
// Reserve 2G memory (magic static)
|
||||||
static void* const s_memory2 = []() -> void*
|
static void* const s_memory2 = []() -> void*
|
||||||
{
|
{
|
||||||
void* ptr = utils::memory_reserve(0x80000000, true);
|
void* ptr = utils::memory_reserve(0x80000000);
|
||||||
#ifdef CAN_OVERCOMMIT
|
#ifdef CAN_OVERCOMMIT
|
||||||
utils::memory_commit(ptr, 0x80000000);
|
utils::memory_commit(ptr, 0x80000000);
|
||||||
utils::memory_protect(ptr, 0x40000000, utils::protection::wx);
|
utils::memory_protect(ptr, 0x40000000, utils::protection::wx);
|
||||||
@@ -316,10 +316,10 @@ void jit_runtime::finalize() noexcept
|
|||||||
#endif
|
#endif
|
||||||
// Reset JIT memory
|
// Reset JIT memory
|
||||||
#ifdef CAN_OVERCOMMIT
|
#ifdef CAN_OVERCOMMIT
|
||||||
utils::memory_reset(get_jit_memory(), 0x80000000, true);
|
utils::memory_reset(get_jit_memory(), 0x80000000);
|
||||||
utils::memory_protect(get_jit_memory(), 0x40000000, utils::protection::wx);
|
utils::memory_protect(get_jit_memory(), 0x40000000, utils::protection::wx);
|
||||||
#else
|
#else
|
||||||
utils::memory_decommit(get_jit_memory(), 0x80000000, true);
|
utils::memory_decommit(get_jit_memory(), 0x80000000);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
s_code_pos = 0;
|
s_code_pos = 0;
|
||||||
@@ -348,7 +348,7 @@ jit_runtime_base& asmjit::get_global_runtime()
|
|||||||
{
|
{
|
||||||
custom_runtime() noexcept
|
custom_runtime() noexcept
|
||||||
{
|
{
|
||||||
ensure(m_pos.raw() = static_cast<uchar*>(utils::memory_reserve(size, true)));
|
ensure(m_pos.raw() = static_cast<uchar*>(utils::memory_reserve(size)));
|
||||||
|
|
||||||
// Initialize "end" pointer
|
// Initialize "end" pointer
|
||||||
m_max = m_pos + size;
|
m_max = m_pos + size;
|
||||||
|
|||||||
@@ -241,7 +241,7 @@ struct MemoryManager1 : llvm::RTDyldMemoryManager
|
|||||||
MemoryManager1(std::function<u64(const std::string&)> symbols_cement = {}) noexcept
|
MemoryManager1(std::function<u64(const std::string&)> symbols_cement = {}) noexcept
|
||||||
: m_symbols_cement(std::move(symbols_cement))
|
: m_symbols_cement(std::move(symbols_cement))
|
||||||
{
|
{
|
||||||
auto ptr = reinterpret_cast<u8*>(utils::memory_reserve(c_max_size * 3, true));
|
auto ptr = reinterpret_cast<u8*>(utils::memory_reserve(c_max_size * 3));
|
||||||
m_code_mems = ptr;
|
m_code_mems = ptr;
|
||||||
// ptr += c_max_size;
|
// ptr += c_max_size;
|
||||||
// m_data_ro_mems = ptr;
|
// m_data_ro_mems = ptr;
|
||||||
@@ -260,7 +260,7 @@ struct MemoryManager1 : llvm::RTDyldMemoryManager
|
|||||||
// utils::memory_decommit(m_code_mems, how_much(code_ptr));
|
// utils::memory_decommit(m_code_mems, how_much(code_ptr));
|
||||||
// utils::memory_decommit(m_data_ro_mems, how_much(data_ro_ptr));
|
// utils::memory_decommit(m_data_ro_mems, how_much(data_ro_ptr));
|
||||||
// utils::memory_decommit(m_data_rw_mems, how_much(data_rw_ptr));
|
// utils::memory_decommit(m_data_rw_mems, how_much(data_rw_ptr));
|
||||||
utils::memory_decommit(m_code_mems, c_max_size * 3, true);
|
utils::memory_decommit(m_code_mems, c_max_size * 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
llvm::JITSymbol findSymbol(const std::string& name) override
|
llvm::JITSymbol findSymbol(const std::string& name) override
|
||||||
@@ -551,9 +551,9 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
std::string jit_compiler::cpu(std::string_view _cpu)
|
std::string jit_compiler::cpu(const std::string& _cpu)
|
||||||
{
|
{
|
||||||
std::string m_cpu = std::string(_cpu);
|
std::string m_cpu = _cpu;
|
||||||
|
|
||||||
if (m_cpu.empty())
|
if (m_cpu.empty())
|
||||||
{
|
{
|
||||||
@@ -681,7 +681,7 @@ bool jit_compiler::add_sub_disk_space(ssz space)
|
|||||||
}).second;
|
}).second;
|
||||||
}
|
}
|
||||||
|
|
||||||
jit_compiler::jit_compiler(const std::unordered_map<std::string, u64>& _link, std::string_view _cpu, u32 flags, std::function<u64(const std::string&)> symbols_cement) noexcept
|
jit_compiler::jit_compiler(const std::unordered_map<std::string, u64>& _link, const std::string& _cpu, u32 flags, std::function<u64(const std::string&)> symbols_cement) noexcept
|
||||||
: m_context(new llvm::LLVMContext)
|
: m_context(new llvm::LLVMContext)
|
||||||
, m_cpu(cpu(_cpu))
|
, m_cpu(cpu(_cpu))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -630,13 +630,6 @@ namespace fmt
|
|||||||
thread_ctrl::emergency_exit(out);
|
thread_ctrl::emergency_exit(out);
|
||||||
}
|
}
|
||||||
|
|
||||||
[[noreturn]] void raw_verify_error(std::source_location loc, std::source_location propagated_loc, const char8_t* msg, usz object)
|
|
||||||
{
|
|
||||||
std::string out;
|
|
||||||
fmt::append(out, "%s (object: 0x%x)%s%s", msg ? msg : u8"Verification failed", object, loc, propagated_loc);
|
|
||||||
thread_ctrl::emergency_exit(out);
|
|
||||||
}
|
|
||||||
|
|
||||||
[[noreturn]] void raw_range_error(std::source_location loc, std::string_view index, usz container_size)
|
[[noreturn]] void raw_range_error(std::source_location loc, std::string_view index, usz container_size)
|
||||||
{
|
{
|
||||||
std::string out;
|
std::string out;
|
||||||
@@ -928,13 +921,6 @@ std::string_view fmt::trim_front_sv(std::string_view source, std::string_view va
|
|||||||
void fmt::trim_back(std::string& source, std::string_view values)
|
void fmt::trim_back(std::string& source, std::string_view values)
|
||||||
{
|
{
|
||||||
const usz index = source.find_last_not_of(values);
|
const usz index = source.find_last_not_of(values);
|
||||||
|
|
||||||
if (index == source.npos)
|
|
||||||
{
|
|
||||||
source.clear();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
source.resize(index + 1);
|
source.resize(index + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2191,37 +2191,6 @@ static void signal_handler(int /*sig*/, siginfo_t* info, void* uct) noexcept
|
|||||||
|
|
||||||
append_thread_name(msg);
|
append_thread_name(msg);
|
||||||
|
|
||||||
#ifdef __APPLE__
|
|
||||||
thread_local bool s_tls_is_attempting_recovery = false;
|
|
||||||
thread_local bool s_tls_last_cause_is_executing = false;
|
|
||||||
|
|
||||||
if (reinterpret_cast<u64>(info->si_addr) < 0x10000)
|
|
||||||
{
|
|
||||||
// Do not recover from the virtual page of 0x0 (such as nullptr)
|
|
||||||
}
|
|
||||||
else if (is_executing || is_writing)
|
|
||||||
{
|
|
||||||
if (s_tls_is_attempting_recovery && s_tls_last_cause_is_executing != is_executing)
|
|
||||||
{
|
|
||||||
// Cause changed, inform recovery
|
|
||||||
s_tls_is_attempting_recovery = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!s_tls_is_attempting_recovery)
|
|
||||||
{
|
|
||||||
s_tls_last_cause_is_executing = is_executing;
|
|
||||||
s_tls_is_attempting_recovery = true;
|
|
||||||
pthread_jit_write_protect_np(is_executing ? true : false);
|
|
||||||
|
|
||||||
sys_log.error("\n%s", msg);
|
|
||||||
sys_log.notice("\n%s", dump_useful_thread_info());
|
|
||||||
sys_log.error("Attempting recovery using pthread_jit_write_protect_np()");
|
|
||||||
logs::listener::sync_all();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
sys_log.fatal("\n%s", msg);
|
sys_log.fatal("\n%s", msg);
|
||||||
sys_log.notice("\n%s", dump_useful_thread_info());
|
sys_log.notice("\n%s", dump_useful_thread_info());
|
||||||
logs::listener::sync_all();
|
logs::listener::sync_all();
|
||||||
@@ -2337,7 +2306,6 @@ void thread_base::start()
|
|||||||
ensure(::ResumeThread(reinterpret_cast<HANDLE>(+m_thread)) != static_cast<DWORD>(-1));
|
ensure(::ResumeThread(reinterpret_cast<HANDLE>(+m_thread)) != static_cast<DWORD>(-1));
|
||||||
#elif defined(__APPLE__)
|
#elif defined(__APPLE__)
|
||||||
pthread_attr_t attrs;
|
pthread_attr_t attrs;
|
||||||
pthread_t thread_id{};
|
|
||||||
struct sched_param sp;
|
struct sched_param sp;
|
||||||
memset(&sp, 0, sizeof(struct sched_param));
|
memset(&sp, 0, sizeof(struct sched_param));
|
||||||
sp.sched_priority=99;
|
sp.sched_priority=99;
|
||||||
@@ -2347,43 +2315,20 @@ void thread_base::start()
|
|||||||
pthread_attr_set_qos_class_np(&attrs, QOS_CLASS_USER_INTERACTIVE, 0);
|
pthread_attr_set_qos_class_np(&attrs, QOS_CLASS_USER_INTERACTIVE, 0);
|
||||||
pthread_attr_setschedpolicy(&attrs, SCHED_RR);
|
pthread_attr_setschedpolicy(&attrs, SCHED_RR);
|
||||||
pthread_attr_setschedparam(&attrs, &sp);
|
pthread_attr_setschedparam(&attrs, &sp);
|
||||||
ensure(pthread_create(&thread_id, &attrs, entry_point, this) == 0);
|
ensure(pthread_create(reinterpret_cast<pthread_t*>(&m_thread.raw()), &attrs, entry_point, this) == 0);
|
||||||
#else
|
#else
|
||||||
pthread_t thread_id{};
|
ensure(pthread_create(reinterpret_cast<pthread_t*>(&m_thread.raw()), nullptr, entry_point, this) == 0);
|
||||||
ensure(pthread_create(&thread_id, nullptr, entry_point, this) == 0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef _WIN32
|
|
||||||
// Update m_thread atomically
|
|
||||||
u64 dest_id = 0;
|
|
||||||
std::memcpy(&dest_id, &thread_id, sizeof(thread_id));
|
|
||||||
|
|
||||||
if (!m_thread && !m_thread.compare_and_swap_test(0, dest_id))
|
|
||||||
{
|
|
||||||
ensure(m_thread == dest_id);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void thread_base::initialize(void (*error_cb)())
|
void thread_base::initialize(void (*error_cb)())
|
||||||
{
|
{
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#ifdef __APPLE__
|
#ifdef ANDROID
|
||||||
while (!m_thread)
|
m_thread.release(pthread_self());
|
||||||
{
|
|
||||||
busy_wait();
|
|
||||||
}
|
|
||||||
[[maybe_unused]] u64 new_tid = 0;
|
|
||||||
#elif defined(ANDROID)
|
|
||||||
const u64 new_tid = pthread_self();
|
|
||||||
#else
|
#else
|
||||||
const u64 new_tid = reinterpret_cast<u64>(pthread_self());
|
m_thread.release(reinterpret_cast<u64>(pthread_self()));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!m_thread && !m_thread.compare_and_swap_test(0, new_tid))
|
|
||||||
{
|
|
||||||
ensure(m_thread == new_tid);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Initialize TLS variables
|
// Initialize TLS variables
|
||||||
@@ -3071,9 +3016,7 @@ void thread_ctrl::set_name(std::string name)
|
|||||||
return false;
|
return false;
|
||||||
}).second)
|
}).second)
|
||||||
{
|
{
|
||||||
#ifndef __APPLE__
|
|
||||||
utils::trap();
|
utils::trap();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3584,26 +3527,15 @@ std::pair<void*, usz> thread_ctrl::get_thread_stack()
|
|||||||
|
|
||||||
u64 thread_ctrl::get_tid()
|
u64 thread_ctrl::get_tid()
|
||||||
{
|
{
|
||||||
static thread_local u64 s_tls_tid = []() -> u64
|
#ifdef _WIN32
|
||||||
{
|
return GetCurrentThreadId();
|
||||||
#ifdef _WIN32
|
#elif defined(ANDROID)
|
||||||
return GetCurrentThreadId();
|
return static_cast<u64>(pthread_self());
|
||||||
#elif defined(ANDROID)
|
#elif defined(__linux__)
|
||||||
return pthread_gettid_np(pthread_self());
|
return syscall(SYS_gettid);
|
||||||
#elif defined(__linux__)
|
#else
|
||||||
return syscall(SYS_gettid);
|
return reinterpret_cast<u64>(pthread_self());
|
||||||
#elif defined(__APPLE__)
|
#endif
|
||||||
u64 tid{};
|
|
||||||
pthread_threadid_np(nullptr, &tid);
|
|
||||||
return tid;
|
|
||||||
#elif defined(__FreeBSD__)
|
|
||||||
return pthread_getthreadid_np();
|
|
||||||
#else
|
|
||||||
return static_cast<u64>(pthread_self());
|
|
||||||
#endif
|
|
||||||
}();
|
|
||||||
|
|
||||||
return s_tls_tid;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool thread_ctrl::is_main()
|
bool thread_ctrl::is_main()
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ void fmt_class_string<cheat_type>::format(std::string& out, u64 arg)
|
|||||||
|
|
||||||
bool cheat_info::from_str(std::string_view cheat_line)
|
bool cheat_info::from_str(std::string_view cheat_line)
|
||||||
{
|
{
|
||||||
auto cheat_vec = fmt::split(cheat_line, {"@@@"}, false);
|
const auto cheat_vec = fmt::split(cheat_line, {"@@@"}, false);
|
||||||
|
|
||||||
s64 val64 = 0;
|
s64 val64 = 0;
|
||||||
if (cheat_vec.size() != 5 || !try_to_int64(&val64, cheat_vec[2], 0, cheat_type_max - 1))
|
if (cheat_vec.size() != 5 || !try_to_int64(&val64, cheat_vec[2], 0, cheat_type_max - 1))
|
||||||
@@ -38,11 +38,11 @@ bool cheat_info::from_str(std::string_view cheat_line)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
game = std::move(cheat_vec[0]);
|
game = cheat_vec[0];
|
||||||
description = std::move(cheat_vec[1]);
|
description = cheat_vec[1];
|
||||||
type = cheat_type{::narrow<u8>(val64)};
|
type = cheat_type{::narrow<u8>(val64)};
|
||||||
offset = std::stoul(cheat_vec[3]);
|
offset = std::stoul(cheat_vec[3]);
|
||||||
red_script = std::move(cheat_vec[4]);
|
red_script = cheat_vec[4];
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,13 +41,7 @@ void semaphore_base::imp_wait()
|
|||||||
// Add waiter
|
// Add waiter
|
||||||
value += c_waiter;
|
value += c_waiter;
|
||||||
}
|
}
|
||||||
else
|
});
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}).first;
|
|
||||||
|
|
||||||
if (value & c_value_mask)
|
if (value & c_value_mask)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -119,18 +119,18 @@ namespace utils
|
|||||||
|
|
||||||
if (sym->NameLen)
|
if (sym->NameLen)
|
||||||
{
|
{
|
||||||
std::string function_name = wstr_to_utf8(sym->Name, static_cast<int>(sym->NameLen));
|
const auto function_name = wstr_to_utf8(sym->Name, static_cast<int>(sym->NameLen));
|
||||||
|
|
||||||
// Attempt to get file and line information if available
|
// Attempt to get file and line information if available
|
||||||
DWORD unused2;
|
DWORD unused2;
|
||||||
if (SymGetLineFromAddrW64(hProcess, reinterpret_cast<DWORD64>(pointer), &unused2, &line_info))
|
if (SymGetLineFromAddrW64(hProcess, reinterpret_cast<DWORD64>(pointer), &unused2, &line_info))
|
||||||
{
|
{
|
||||||
std::string full_path = fmt::format("%s:%u %s", wstr_to_utf8(line_info.FileName, -1), line_info.LineNumber, function_name);
|
const auto full_path = fmt::format("%s:%u %s", wstr_to_utf8(line_info.FileName, -1), line_info.LineNumber, function_name);
|
||||||
result.push_back(std::move(full_path));
|
result.push_back(full_path);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result.push_back(std::move(function_name));
|
result.push_back(function_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ namespace utils
|
|||||||
// Printing utilities
|
// Printing utilities
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
concept Logger = requires (T& t, std::string_view msg)
|
concept Logger = requires (T& t, const std::string& msg)
|
||||||
{
|
{
|
||||||
{ t.print(msg) };
|
{ t.print(msg) };
|
||||||
};
|
};
|
||||||
@@ -28,7 +28,7 @@ namespace utils
|
|||||||
: log(chan)
|
: log(chan)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
void print(std::string_view s)
|
void print(const std::string& s)
|
||||||
{
|
{
|
||||||
log.error("%s", s);
|
log.error("%s", s);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ public:
|
|||||||
std::lock_guard lock(mutex);
|
std::lock_guard lock(mutex);
|
||||||
if (std::shared_ptr<void> new_val = std::invoke(func); new_val)
|
if (std::shared_ptr<void> new_val = std::invoke(func); new_val)
|
||||||
{
|
{
|
||||||
storage.push_back(std::move(new_val));
|
storage.push_back(new_val);
|
||||||
}
|
}
|
||||||
delete_unused();
|
delete_unused();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,27 +24,29 @@ namespace utils
|
|||||||
return (m_hi << 24) | (m_mid << 16) | (m_lo << 8) | ((uint(m_type) & 0xf) << 4) | (m_type_index & 0xf);
|
return (m_hi << 24) | (m_mid << 16) | (m_lo << 8) | ((uint(m_type) & 0xf) << 4) | (m_type_index & 0xf);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string version::to_string(bool simple) const
|
std::string version::to_string() const
|
||||||
{
|
{
|
||||||
std::string version = fmt::format("%d.%d", hi(), mid());
|
std::string version = std::to_string(hi()) + "." + std::to_string(mid());
|
||||||
|
|
||||||
if (lo())
|
if (lo())
|
||||||
{
|
{
|
||||||
fmt::append(version, ".%d", lo());
|
version += '.';
|
||||||
|
version += std::to_string(lo());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!simple && type() != version_type::release)
|
if (type() != version_type::release)
|
||||||
{
|
{
|
||||||
if (!postfix().empty())
|
if (!postfix().empty())
|
||||||
{
|
{
|
||||||
fmt::append(version, "-%s", postfix());
|
version += "-" + postfix();
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt::append(version, " %s", utils::to_string(type()));
|
version += ' ';
|
||||||
|
version += utils::to_string(type());
|
||||||
|
|
||||||
if (type_index() > 1)
|
if (type_index() > 1)
|
||||||
{
|
{
|
||||||
fmt::append(version, " %d", type_index());
|
version += " " + std::to_string(type_index());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,10 +23,10 @@ namespace utils
|
|||||||
uint m_lo;
|
uint m_lo;
|
||||||
version_type m_type = version_type::release;
|
version_type m_type = version_type::release;
|
||||||
uint m_type_index = 1;
|
uint m_type_index = 1;
|
||||||
std::string_view m_postfix;
|
const char* m_postfix;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
constexpr version(uint hi, uint mid, uint lo, version_type type, uint type_index, std::string_view postfix)
|
constexpr version(uint hi, uint mid, uint lo, version_type type, uint type_index, const char* postfix)
|
||||||
: m_hi(hi)
|
: m_hi(hi)
|
||||||
, m_mid(mid)
|
, m_mid(mid)
|
||||||
, m_lo(lo)
|
, m_lo(lo)
|
||||||
@@ -56,7 +56,7 @@ namespace utils
|
|||||||
return m_type;
|
return m_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string_view postfix() const
|
std::string postfix() const
|
||||||
{
|
{
|
||||||
return m_postfix;
|
return m_postfix;
|
||||||
}
|
}
|
||||||
@@ -67,7 +67,7 @@ namespace utils
|
|||||||
}
|
}
|
||||||
|
|
||||||
uint to_hex() const;
|
uint to_hex() const;
|
||||||
std::string to_string(bool simple = false) const;
|
std::string to_string() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Generic version comparison (e.g. 0.0.5 vs 1.3)
|
// Generic version comparison (e.g. 0.0.5 vs 1.3)
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 999 B After Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 484 B After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 504 B After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 503 B After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 399 B After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 477 B After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 380 B After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 8.0 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 8.0 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 402 B After Width: | Height: | Size: 618 B |
|
Before Width: | Height: | Size: 299 B After Width: | Height: | Size: 497 B |
|
Before Width: | Height: | Size: 237 B After Width: | Height: | Size: 360 B |
|
Before Width: | Height: | Size: 334 B After Width: | Height: | Size: 561 B |
|
Before Width: | Height: | Size: 290 B After Width: | Height: | Size: 472 B |
|
Before Width: | Height: | Size: 345 B After Width: | Height: | Size: 473 B |
|
Before Width: | Height: | Size: 337 B After Width: | Height: | Size: 489 B |
|
Before Width: | Height: | Size: 253 B After Width: | Height: | Size: 384 B |
|
Before Width: | Height: | Size: 435 B After Width: | Height: | Size: 721 B |
|
Before Width: | Height: | Size: 270 B After Width: | Height: | Size: 509 B |
|
Before Width: | Height: | Size: 497 B After Width: | Height: | Size: 702 B |
|
Before Width: | Height: | Size: 446 B After Width: | Height: | Size: 672 B |
|
Before Width: | Height: | Size: 276 B After Width: | Height: | Size: 447 B |
|
Before Width: | Height: | Size: 365 B After Width: | Height: | Size: 587 B |
|
Before Width: | Height: | Size: 228 B After Width: | Height: | Size: 332 B |
|
Before Width: | Height: | Size: 423 B After Width: | Height: | Size: 668 B |
|
Before Width: | Height: | Size: 440 B After Width: | Height: | Size: 659 B |
|
Before Width: | Height: | Size: 201 B After Width: | Height: | Size: 354 B |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 358 KiB |
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 873 B After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 3.7 KiB |