Compare commits
445 Commits
vcpkg-preb
...
master
| Author | SHA1 | Date |
|---|---|---|
|
|
36af9f54d3 | |
|
|
1147f47a8a | |
|
|
03a91aa052 | |
|
|
e0cdafddb5 | |
|
|
4c7d19fc69 | |
|
|
061fb5d112 | |
|
|
b1089ab1a3 | |
|
|
812d84e7f4 | |
|
|
103d580d9a | |
|
|
de8552048f | |
|
|
65cd4deb77 | |
|
|
16e41f4492 | |
|
|
711ec69e48 | |
|
|
cf87f24587 | |
|
|
12a3818fcf | |
|
|
d9da5f26c0 | |
|
|
1a3e150a62 | |
|
|
c3db85c68e | |
|
|
2b0456520e | |
|
|
0c455d12c9 | |
|
|
236f783466 | |
|
|
f739ce7323 | |
|
|
3c0558c822 | |
|
|
c38146636a | |
|
|
26b0f822d8 | |
|
|
ee9dc44059 | |
|
|
24745416c5 | |
|
|
fa4e2d1b42 | |
|
|
c2284c962b | |
|
|
757e9a0493 | |
|
|
f7cda4b2b4 | |
|
|
c6ef09500a | |
|
|
26ae6f0902 | |
|
|
1b01a9274c | |
|
|
0f1eadcab0 | |
|
|
1ea3c121fa | |
|
|
2c6d3dde67 | |
|
|
a412e34fa6 | |
|
|
4dc52fde82 | |
|
|
5688573b3d | |
|
|
98a12de256 | |
|
|
43d8518faa | |
|
|
1e6fe1f4ab | |
|
|
93f89b8a74 | |
|
|
8cd241ca10 | |
|
|
8d2f7ae85f | |
|
|
81d657a960 | |
|
|
4183d09a52 | |
|
|
316e01995b | |
|
|
f2913e4692 | |
|
|
d23ea4760b | |
|
|
26fd0510ab | |
|
|
e8e2d4b93d | |
|
|
a7f5514913 | |
|
|
3bed46b844 | |
|
|
e1ec2f58bb | |
|
|
91e19652de | |
|
|
b244c0fa0f | |
|
|
f4ba548748 | |
|
|
856eaac1b6 | |
|
|
8ff3dda5e8 | |
|
|
fa40cef0b1 | |
|
|
65b4bcb027 | |
|
|
5a8ad219ba | |
|
|
ed397c5d67 | |
|
|
13d66f324b | |
|
|
aaaa6feb5a | |
|
|
88a54e2d98 | |
|
|
9d30716aa8 | |
|
|
e20bae3cd7 | |
|
|
aff645272f | |
|
|
27f39d2ac0 | |
|
|
c840c98e9e | |
|
|
adcacc1119 | |
|
|
65458effa6 | |
|
|
0f1d516d9a | |
|
|
3f6529fecb | |
|
|
b76ca8807f | |
|
|
54206c62b3 | |
|
|
67f7119717 | |
|
|
133b19f205 | |
|
|
fce393024a | |
|
|
7d3cf831d5 | |
|
|
dc27047ed4 | |
|
|
b9a9c1af07 | |
|
|
e3f5f2d14e | |
|
|
ff9401303b | |
|
|
2a6f1cf35c | |
|
|
b86b4d15c6 | |
|
|
23ffa4ccdb | |
|
|
cbba687ffa | |
|
|
613d428ced | |
|
|
6489fca16b | |
|
|
3c747b377f | |
|
|
a859e14e19 | |
|
|
6dd37cb2d5 | |
|
|
7e8ed5ecc1 | |
|
|
d396a778b7 | |
|
|
25badf9534 | |
|
|
314b69c7d8 | |
|
|
bc55f7787e | |
|
|
4bda2f9b0f | |
|
|
d822d85ea1 | |
|
|
7001940483 | |
|
|
3c5c74c496 | |
|
|
c80aba2342 | |
|
|
84d5e42896 | |
|
|
53edd410c7 | |
|
|
7f9cc357e8 | |
|
|
e2cbbcf646 | |
|
|
e938b93f48 | |
|
|
4a042ae84f | |
|
|
c48ae344a8 | |
|
|
e09be04df6 | |
|
|
d625c1d004 | |
|
|
cae77784db | |
|
|
14bd6b0cc5 | |
|
|
e11f8df064 | |
|
|
e2da6d36ba | |
|
|
27c2f2ae4d | |
|
|
727f3dd7a1 | |
|
|
7b560e5ffa | |
|
|
50c9a91942 | |
|
|
d9f913016c | |
|
|
a442cb91a1 | |
|
|
41aaa912e7 | |
|
|
6ebdb0c0c1 | |
|
|
914b52cf4a | |
|
|
b451dfe877 | |
|
|
7986ee58de | |
|
|
5a9083e4fc | |
|
|
6a398f9947 | |
|
|
8495a138c6 | |
|
|
2c1d962bdc | |
|
|
0fbd0e8cc7 | |
|
|
5c187f5cda | |
|
|
cb7650240c | |
|
|
9d92e190eb | |
|
|
42d9065c11 | |
|
|
f300832edb | |
|
|
683baf46b2 | |
|
|
89a13b75f7 | |
|
|
7472d95b0c | |
|
|
ecba1d2cb7 | |
|
|
fcff16b6f7 | |
|
|
a3f7c0d67f | |
|
|
98ca15699b | |
|
|
dec6fba68d | |
|
|
e1eb7421fb | |
|
|
ea7183b6bd | |
|
|
d6a36f4b60 | |
|
|
6e11978638 | |
|
|
7f6842705c | |
|
|
9deb6cd4fa | |
|
|
e6d723c675 | |
|
|
400b4e71cf | |
|
|
3c3197d72d | |
|
|
cffc13696d | |
|
|
ff72f944ba | |
|
|
b067688c8e | |
|
|
8ccc30725a | |
|
|
c38b8c6d12 | |
|
|
107d9dc533 | |
|
|
c669a0beb7 | |
|
|
f992ccdcad | |
|
|
e6dc0d98f5 | |
|
|
1250e428a7 | |
|
|
ddecade935 | |
|
|
de914247be | |
|
|
6a51cd9f7f | |
|
|
2042b54d2d | |
|
|
5267c87ca7 | |
|
|
6731feb751 | |
|
|
10f8a49e36 | |
|
|
a6371ef5d3 | |
|
|
2d3e6c6d02 | |
|
|
9b1d39c14e | |
|
|
5893851029 | |
|
|
42177add17 | |
|
|
84fdd2e056 | |
|
|
bc01863654 | |
|
|
cbb4dd8f22 | |
|
|
0439b62257 | |
|
|
a93197cdcb | |
|
|
b8031f4510 | |
|
|
db8437b01c | |
|
|
63f7bcf652 | |
|
|
109abea454 | |
|
|
c7ae97f8ea | |
|
|
d61f4101ad | |
|
|
ec70c9691f | |
|
|
18111ac8bc | |
|
|
5a761c7184 | |
|
|
510ed00b11 | |
|
|
fa06fed86f | |
|
|
871dd729b2 | |
|
|
7e209a7275 | |
|
|
0bb84b374e | |
|
|
92e24a5779 | |
|
|
e48ba283d8 | |
|
|
0bf9ee9fa5 | |
|
|
c60e5cc48a | |
|
|
642005cf1d | |
|
|
b0956a8f74 | |
|
|
2fb8cbda38 | |
|
|
c16278a5ab | |
|
|
bfe54a29ae | |
|
|
265d6643e5 | |
|
|
d87f055bb2 | |
|
|
1af5afdaab | |
|
|
864bb9f0db | |
|
|
1007aaee4c | |
|
|
8126a199f5 | |
|
|
b435deac9d | |
|
|
8a9b15dee3 | |
|
|
c5a54a3d4f | |
|
|
bcdf2ef36f | |
|
|
3df0c8caef | |
|
|
50eb46d294 | |
|
|
ff922f6324 | |
|
|
1e1da422ea | |
|
|
3e5a035046 | |
|
|
6e5338d091 | |
|
|
d73a7e0ff3 | |
|
|
a6c0433a2e | |
|
|
ca5a43a3ab | |
|
|
4710b38505 | |
|
|
9cde97c22b | |
|
|
323f504138 | |
|
|
d7df929ada | |
|
|
2667d5de0f | |
|
|
49548b913d | |
|
|
17c148d90e | |
|
|
17621d2a5e | |
|
|
8984c2b316 | |
|
|
5d906e1da4 | |
|
|
dba48d6387 | |
|
|
0403231a0d | |
|
|
8712414123 | |
|
|
2485a98d4f | |
|
|
cc8929ef4a | |
|
|
ede8382c6a | |
|
|
dc22584f72 | |
|
|
7cb4a68043 | |
|
|
ded91329bc | |
|
|
81f5be30aa | |
|
|
ba2518f862 | |
|
|
3a6c71e523 | |
|
|
8013129c5b | |
|
|
5ea92df4ca | |
|
|
afffd3061a | |
|
|
8ea2109b37 | |
|
|
fa8f35ea38 | |
|
|
50576d044b | |
|
|
3f797b2de3 | |
|
|
9124d08fdb | |
|
|
e4ae5bdce1 | |
|
|
5f37f2c8df | |
|
|
9dc66b46fc | |
|
|
0ca4f85dc7 | |
|
|
9c512849ef | |
|
|
9550d5b67d | |
|
|
dd40f49e5f | |
|
|
90fb81d1d9 | |
|
|
3c401e7b3d | |
|
|
dc53a3ba42 | |
|
|
3c1ebe9f4a | |
|
|
73c984a637 | |
|
|
ae30cb5557 | |
|
|
311e7a9992 | |
|
|
2f86f95c3f | |
|
|
f61aaf83f6 | |
|
|
66920b4d8f | |
|
|
038ee090b7 | |
|
|
6a028b1883 | |
|
|
64e5a8c099 | |
|
|
abad7f2790 | |
|
|
c683b47ac3 | |
|
|
0c4e7fc178 | |
|
|
c4fba680d1 | |
|
|
0d1a05ecd1 | |
|
|
eb453462c1 | |
|
|
5a91ed01eb | |
|
|
2fcd542b0b | |
|
|
146619de91 | |
|
|
41a122a266 | |
|
|
1c0fa2ad58 | |
|
|
a053abfba4 | |
|
|
e5848f4731 | |
|
|
32a18795fb | |
|
|
6b556ca5b0 | |
|
|
a5b5ac1ed5 | |
|
|
1cae72c872 | |
|
|
878bb12a72 | |
|
|
e0249b05d2 | |
|
|
1fa5286c87 | |
|
|
f3f0c7d8da | |
|
|
afb814788f | |
|
|
efa4c6c34e | |
|
|
f3e34e1d44 | |
|
|
ce304f33de | |
|
|
c42fe42787 | |
|
|
20a7297ac4 | |
|
|
21809731e2 | |
|
|
d770c7d7fa | |
|
|
89e1c3ecfa | |
|
|
f76ae4619b | |
|
|
2945ff1016 | |
|
|
51e1ff4976 | |
|
|
87677cfc85 | |
|
|
3ee626ce3c | |
|
|
c4426b0f07 | |
|
|
1a5ec26392 | |
|
|
2275e689ce | |
|
|
10741a97ea | |
|
|
1cc0446bc1 | |
|
|
cec7ace28b | |
|
|
6e4f380e36 | |
|
|
d68e4acb50 | |
|
|
052ebe5acf | |
|
|
128267a236 | |
|
|
b1365a051d | |
|
|
3452aaf5d5 | |
|
|
335f3dbe2f | |
|
|
97620c4e17 | |
|
|
75f759079a | |
|
|
315ffed12f | |
|
|
c347435151 | |
|
|
183acd4196 | |
|
|
1e40081d1f | |
|
|
cd3e4fc8f1 | |
|
|
e860cc9fad | |
|
|
aa119e1413 | |
|
|
33e4b11509 | |
|
|
5911330f8b | |
|
|
e0e0d1ee0b | |
|
|
3188cb4a5a | |
|
|
a3e6bdd8e4 | |
|
|
ecc0fe4678 | |
|
|
a819b9fc2a | |
|
|
a4eccb259a | |
|
|
6e1436f1cd | |
|
|
9e49b9100f | |
|
|
950c7768bc | |
|
|
13bb9a2041 | |
|
|
44e875618f | |
|
|
25fbdfb43a | |
|
|
43c4947cb9 | |
|
|
b18a0830f3 | |
|
|
48bf30aa2d | |
|
|
f05fabdb79 | |
|
|
274fec7bd0 | |
|
|
86b7ccef93 | |
|
|
054000fb37 | |
|
|
76cdcc9f32 | |
|
|
e8aa1caa4e | |
|
|
4141f76105 | |
|
|
23b339d410 | |
|
|
cc01b0f0dc | |
|
|
4d28a14c33 | |
|
|
15178da4e3 | |
|
|
edda8bc490 | |
|
|
41cf61dcf7 | |
|
|
4f8184a6a6 | |
|
|
3017085a44 | |
|
|
506e927df5 | |
|
|
8f776e14a2 | |
|
|
5b3c70fb18 | |
|
|
6fe6c4e0f6 | |
|
|
359163c442 | |
|
|
0b89b1b912 | |
|
|
6451c4d49f | |
|
|
8163c6c041 | |
|
|
29108e1cb4 | |
|
|
6bc690491f | |
|
|
9524211b9a | |
|
|
9d020a3e59 | |
|
|
d92ebf7b31 | |
|
|
1667998b4e | |
|
|
6b87423293 | |
|
|
3e701a743b | |
|
|
ffeb16fe1e | |
|
|
e995511c57 | |
|
|
cc3b1163f1 | |
|
|
335ed8d91b | |
|
|
1a7d702e4e | |
|
|
25925f2680 | |
|
|
0daa6d6fb0 | |
|
|
6106e8f79f | |
|
|
a2a3ce1d7a | |
|
|
c36d01b46b | |
|
|
b3d5493a6b | |
|
|
735588aa1a | |
|
|
0876a7d37e | |
|
|
aca9d28a7a | |
|
|
6911d0b5e1 | |
|
|
eb6d13a8c0 | |
|
|
09f8c6ddcd | |
|
|
f63bb4c7fb | |
|
|
28920f1781 | |
|
|
e457dbdea3 | |
|
|
c76a3366ec | |
|
|
0564842871 | |
|
|
f84df03651 | |
|
|
fc62733d65 | |
|
|
cfe1eca185 | |
|
|
34a9d03d3d | |
|
|
79fa06f9d6 | |
|
|
c7de9053b4 | |
|
|
6d1a85b947 | |
|
|
4800aa9bfc | |
|
|
92a30b4e41 | |
|
|
6b238d847f | |
|
|
3a13da3201 | |
|
|
4332d2151e | |
|
|
e56bc9d15f | |
|
|
ce4edf9cb1 | |
|
|
d72f95677e | |
|
|
d087c86243 | |
|
|
6e7c3362b3 | |
|
|
246519c5e1 | |
|
|
8e34d7885c | |
|
|
1902c5f3f4 | |
|
|
48d3b30204 | |
|
|
f474533447 | |
|
|
bf3501b737 | |
|
|
cda683df63 | |
|
|
e5537c1cb0 | |
|
|
e49a086edf | |
|
|
69bf745246 | |
|
|
2211876b57 | |
|
|
cb5411440d | |
|
|
1b72868abf | |
|
|
9126d617c5 | |
|
|
aa7758a20f | |
|
|
81b33625f9 | |
|
|
daad30b2b3 | |
|
|
e319ca2998 | |
|
|
99b3c45f05 | |
|
|
3fd417e230 | |
|
|
b90bacba48 | |
|
|
7fe3afbbc2 | |
|
|
8b9c9f677a | |
|
|
620997c193 | |
|
|
06f480cb83 |
|
|
@ -6,14 +6,17 @@ export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
|
|||
export HOMEBREW_NO_ENV_HINTS=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
|
||||
/opt/homebrew/bin/brew install -f --quiet ffmpeg@5
|
||||
/opt/homebrew/bin/brew install --quiet "llvm@$LLVM_COMPILER_VER" glew cmake sdl3 vulkan-headers coreutils
|
||||
/opt/homebrew/bin/brew link -f --quiet "llvm@$LLVM_COMPILER_VER" ffmpeg@5
|
||||
brew install -f --overwrite --quiet pipenv googletest opencv@4 ffmpeg@5 "llvm@$LLVM_COMPILER_VER" glew sdl3 vulkan-headers vulkan-loader
|
||||
brew unlink --quiet ffmpeg qtbase qtsvg qtdeclarative
|
||||
|
||||
# moltenvk based on commit for 1.3.0 release
|
||||
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/7255441cbcafabaa8950f67c7ec55ff499dbb2d3/Formula/m/molten-vk.rb
|
||||
brew link -f --quiet "llvm@$LLVM_COMPILER_VER" ffmpeg@5
|
||||
|
||||
# moltenvk based on commit for 1.4.0 release
|
||||
export HOMEBREW_DEVELOPER=1 # Prevents blocking of local formulae
|
||||
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/ea2bec5f1f4384e188d7fc0702ab21a20a2ced08/Formula/m/molten-vk.rb
|
||||
/opt/homebrew/bin/brew install -f --overwrite --formula --quiet ./molten-vk.rb
|
||||
export HOMEBREW_DEVELOPER=0
|
||||
|
||||
export CXX=clang++
|
||||
export CC=clang
|
||||
|
||||
|
|
@ -26,23 +29,25 @@ export CMAKE_EXTRA_OPTS='-DLLVM_TARGETS_TO_BUILD=arm64'
|
|||
export WORKDIR;
|
||||
WORKDIR="$(pwd)"
|
||||
|
||||
# Setup ccache
|
||||
if [ ! -d "$CCACHE_DIR" ]; then
|
||||
mkdir -p "$CCACHE_DIR"
|
||||
fi
|
||||
|
||||
# Get Qt
|
||||
if [ ! -d "/tmp/Qt/$QT_VER" ]; then
|
||||
mkdir -p "/tmp/Qt"
|
||||
git clone https://github.com/engnr/qt-downloader.git
|
||||
cd qt-downloader
|
||||
git checkout f52efee0f18668c6d6de2dec0234b8c4bc54c597
|
||||
# nested Qt 6.9.1 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}\/{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
|
||||
sed -i '' "s/'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/'qt{0}_{0}{1}{2}'.format(major, minor, patch), 'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/g" qt-downloader
|
||||
sed -i '' "s/'{}\/{}\/qt{}_{}\/'/'{0}\/{1}\/qt{2}_{3}\/qt{2}_{3}\/'/g" qt-downloader
|
||||
cd "/tmp/Qt"
|
||||
arch -arm64 "$BREW_PATH/bin/pipenv" run pip3 uninstall py7zr requests semantic_version lxml
|
||||
arch -arm64 "$BREW_PATH/bin/pipenv" run pip3 install py7zr requests semantic_version lxml --no-cache
|
||||
"$BREW_PATH/bin/pipenv" run pip3 uninstall py7zr requests semantic_version lxml
|
||||
"$BREW_PATH/bin/pipenv" run pip3 install py7zr requests semantic_version lxml --no-cache
|
||||
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
|
||||
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"
|
||||
sed -i '' 's/args\.version \/ derive_toolchain_dir(args) \/ //g' "$WORKDIR/qt-downloader/qt-downloader"
|
||||
"$BREW_PATH/bin/pipenv" run "$WORKDIR/qt-downloader/qt-downloader" macos desktop "$QT_VER" clang_64 --opensource --addons qtmultimedia qtimageformats -o "$QT_VER/clang_64"
|
||||
fi
|
||||
|
||||
cd "$WORKDIR"
|
||||
|
|
@ -53,15 +58,14 @@ export SDL3_DIR="$BREW_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 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 CPPFLAGS="-I$BREW_PATH/include -I$BREW_PATH/include -no-pie -D__MAC_OS_X_VERSION_MIN_REQUIRED=140000"
|
||||
export CFLAGS="-D__MAC_OS_X_VERSION_MIN_REQUIRED=140000"
|
||||
export CPPFLAGS="-I$BREW_PATH/include -no-pie -D__MAC_OS_X_VERSION_MIN_REQUIRED=144000"
|
||||
export CFLAGS="-D__MAC_OS_X_VERSION_MIN_REQUIRED=144000"
|
||||
export LIBRARY_PATH="$BREW_PATH/lib"
|
||||
export LD_LIBRARY_PATH="$BREW_PATH/lib"
|
||||
|
||||
export VULKAN_SDK
|
||||
VULKAN_SDK="$BREW_PATH/opt/molten-vk"
|
||||
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"
|
||||
ln -s "$BREW_PATH/opt/vulkan-loader/lib/libvulkan.dylib" "$VULKAN_SDK/lib/libvulkan.dylib" || true
|
||||
|
||||
export LLVM_DIR
|
||||
LLVM_DIR="$BREW_PATH/opt/llvm@$LLVM_COMPILER_VER"
|
||||
|
|
@ -74,7 +78,7 @@ sed -i '' "s/extern const double NSAppKitVersionNumber;/const double NSAppKitVer
|
|||
|
||||
mkdir build && cd build || exit 1
|
||||
|
||||
export MACOSX_DEPLOYMENT_TARGET=14.0
|
||||
export MACOSX_DEPLOYMENT_TARGET=14.4
|
||||
|
||||
"$BREW_PATH/bin/cmake" .. \
|
||||
-DBUILD_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
|
||||
|
|
@ -106,7 +110,7 @@ export MACOSX_DEPLOYMENT_TARGET=14.0
|
|||
-DCMAKE_OSX_ARCHITECTURES=arm64 \
|
||||
-DCMAKE_IGNORE_PATH="$BREW_PATH/lib" \
|
||||
-DCMAKE_IGNORE_PREFIX_PATH=/opt/homebrew/opt \
|
||||
-DCMAKE_CXX_FLAGS="-D__MAC_OS_X_VERSION_MIN_REQUIRED=140000" \
|
||||
-DCMAKE_CXX_FLAGS="-D__MAC_OS_X_VERSION_MIN_REQUIRED=144000" \
|
||||
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
|
||||
-DCMAKE_OSX_SYSROOT="$(xcrun --sdk macosx --show-sdk-path)" \
|
||||
-G Ninja
|
||||
|
|
|
|||
|
|
@ -6,18 +6,21 @@ export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
|
|||
export HOMEBREW_NO_ENV_HINTS=1
|
||||
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
||||
|
||||
#/usr/sbin/softwareupdate --install-rosetta --agree-to-license
|
||||
brew install -f --overwrite --quiet ccache pipenv "llvm@$LLVM_COMPILER_VER"
|
||||
brew link -f --overwrite --quiet "llvm@$LLVM_COMPILER_VER"
|
||||
# shellcheck disable=SC3009
|
||||
rm /usr/local/bin/{idle3.14,pip3.14,pydoc3.14,python3.14,python3.14-config} && \
|
||||
rm /usr/local/bin/{idle3,pip3,pydoc3,python3,python3-config}
|
||||
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
arch -x86_64 /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 --quiet nasm ninja p7zip ccache pipenv gnutls freetype #create-dmg
|
||||
arch -x86_64 /usr/local/bin/brew install -f --quiet ffmpeg@5
|
||||
arch -x86_64 /usr/local/bin/brew install --quiet "llvm@$LLVM_COMPILER_VER" glew cmake sdl3 vulkan-headers coreutils
|
||||
arch -x86_64 /usr/local/bin/brew link -f --quiet "llvm@$LLVM_COMPILER_VER" ffmpeg@5
|
||||
arch -x86_64 /usr/local/bin/brew install -f --overwrite --quiet opencv@4 ffmpeg@5 "llvm@$LLVM_COMPILER_VER" glew sdl3 vulkan-headers vulkan-loader
|
||||
arch -x86_64 /usr/local/bin/brew unlink --quiet ffmpeg qtbase qtsvg qtdeclarative
|
||||
arch -x86_64 /usr/local/bin/brew link -f --overwrite --quiet "llvm@$LLVM_COMPILER_VER" ffmpeg@5
|
||||
|
||||
# moltenvk based on commit for 1.3.0 release
|
||||
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/7255441cbcafabaa8950f67c7ec55ff499dbb2d3/Formula/m/molten-vk.rb
|
||||
# moltenvk based on commit for 1.4.0 release
|
||||
export HOMEBREW_DEVELOPER=1 # Prevents blocking of local formulae
|
||||
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/ea2bec5f1f4384e188d7fc0702ab21a20a2ced08/Formula/m/molten-vk.rb
|
||||
arch -x86_64 /usr/local/bin/brew install -f --overwrite --formula --quiet ./molten-vk.rb
|
||||
export HOMEBREW_DEVELOPER=0
|
||||
export CXX=clang++
|
||||
export CC=clang
|
||||
|
||||
|
|
@ -36,16 +39,13 @@ if [ ! -d "/tmp/Qt/$QT_VER" ]; then
|
|||
git clone https://github.com/engnr/qt-downloader.git
|
||||
cd qt-downloader
|
||||
git checkout f52efee0f18668c6d6de2dec0234b8c4bc54c597
|
||||
# nested Qt 6.9.1 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}\/{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
|
||||
sed -i '' "s/'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/'qt{0}_{0}{1}{2}'.format(major, minor, patch), 'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/g" qt-downloader
|
||||
sed -i '' "s/'{}\/{}\/qt{}_{}\/'/'{0}\/{1}\/qt{2}_{3}\/qt{2}_{3}\/'/g" qt-downloader
|
||||
cd "/tmp/Qt"
|
||||
arch -x86_64 "$BREW_X64_PATH/bin/pipenv" --python "$BREW_X64_PATH/bin/python3" run pip3 install py7zr requests semantic_version lxml
|
||||
"/opt/homebrew/bin/pipenv" --python "/opt/homebrew/bin/python3" run pip3 install py7zr requests semantic_version lxml
|
||||
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
|
||||
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"
|
||||
sed -i '' 's/args\.version \/ derive_toolchain_dir(args) \/ //g' "$WORKDIR/qt-downloader/qt-downloader"
|
||||
"/opt/homebrew/bin/pipenv" --python "/opt/homebrew/bin/python3" run "$WORKDIR/qt-downloader/qt-downloader" macos desktop "$QT_VER" clang_64 --opensource --addons qtmultimedia qtimageformats -o "$QT_VER/clang_64"
|
||||
fi
|
||||
|
||||
cd "$WORKDIR"
|
||||
|
|
@ -54,20 +54,20 @@ 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 SDL3_DIR="$BREW_X64_PATH/opt/sdl3/lib/cmake/SDL3"
|
||||
|
||||
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_X64_PATH/lib -Wl,-rpath,$BREW_X64_PATH/lib"
|
||||
export CPPFLAGS="-I$BREW_X64_PATH/include -msse -msse2 -mcx16 -no-pie -D__MAC_OS_X_VERSION_MIN_REQUIRED=140000"
|
||||
export CFLAGS="-D__MAC_OS_X_VERSION_MIN_REQUIRED=140000"
|
||||
export LIBRARY_PATH="$BREW_X64_PATH/lib"
|
||||
export LD_LIBRARY_PATH="$BREW_X64_PATH/lib"
|
||||
export PATH="/opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/bin:$WORKDIR/qt-downloader/$QT_VER/clang_64/bin:$BREW_BIN:$BREW_SBIN:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Apple/usr/bin:$PATH"
|
||||
# shellcheck disable=SC2155
|
||||
export LDFLAGS="-L$BREW_X64_PATH/lib -Wl,-rpath,$BREW_X64_PATH/lib,-L$(brew --prefix llvm)/lib/c++"
|
||||
export CPPFLAGS="-I$BREW_X64_PATH/include -msse -msse2 -mcx16 -no-pie -D__MAC_OS_X_VERSION_MIN_REQUIRED=144000"
|
||||
export CFLAGS="-D__MAC_OS_X_VERSION_MIN_REQUIRED=144000"
|
||||
export LIBRARY_PATH="$BREW_X64_PATH/opt/llvm@$LLVM_COMPILER_VER/lib:$BREW_X64_PATH/lib"
|
||||
export LD_LIBRARY_PATH="$BREW_X64_PATH/opt/llvm@$LLVM_COMPILER_VER/lib:$BREW_X64_PATH/lib"
|
||||
|
||||
export VULKAN_SDK
|
||||
VULKAN_SDK="$BREW_X64_PATH/opt/molten-vk"
|
||||
ln -s "$VULKAN_SDK/lib/libMoltenVK.dylib" "$VULKAN_SDK/lib/libvulkan.dylib"
|
||||
export VK_ICD_FILENAMES="$VULKAN_SDK/share/vulkan/icd.d/MoltenVK_icd.json"
|
||||
ln -s "$BREW_X64_PATH/opt/vulkan-loader/lib/libvulkan.dylib" "$VULKAN_SDK/lib/libvulkan.dylib"
|
||||
|
||||
export LLVM_DIR
|
||||
LLVM_DIR="BREW_X64_PATH/opt/llvm@$LLVM_COMPILER_VER"
|
||||
LLVM_DIR="$BREW_X64_PATH/opt/llvm@$LLVM_COMPILER_VER"
|
||||
# exclude ffmpeg, LLVM, opencv, and sdl from submodule update
|
||||
# shellcheck disable=SC2046
|
||||
git submodule -q update --init --depth=1 --jobs=8 $(awk '/path/ && !/ffmpeg/ && !/llvm/ && !/opencv/ && !/SDL/ && !/feralinteractive/ { print $3 }' .gitmodules)
|
||||
|
|
@ -77,9 +77,9 @@ sed -i '' "s/extern const double NSAppKitVersionNumber;/const double NSAppKitVer
|
|||
|
||||
mkdir build && cd build || exit 1
|
||||
|
||||
export MACOSX_DEPLOYMENT_TARGET=14.0
|
||||
export MACOSX_DEPLOYMENT_TARGET=14.4
|
||||
|
||||
"$BREW_X64_PATH/bin/cmake" .. \
|
||||
"/opt/homebrew/bin/cmake" .. \
|
||||
-DBUILD_RPCS3_TESTS=OFF \
|
||||
-DRUN_RPCS3_TESTS=OFF \
|
||||
-DUSE_SDL=ON \
|
||||
|
|
@ -107,14 +107,16 @@ export MACOSX_DEPLOYMENT_TARGET=14.0
|
|||
"$CMAKE_EXTRA_OPTS" \
|
||||
-DLLVM_TARGET_ARCH=X86_64 \
|
||||
-DCMAKE_OSX_ARCHITECTURES=x86_64 \
|
||||
-DCMAKE_SYSTEM_PROCESSOR=x86_64 \
|
||||
-DCMAKE_TOOLCHAIN_FILE=buildfiles/cmake/TCDarwinX86_64.cmake \
|
||||
-DCMAKE_IGNORE_PATH="$BREW_X64_PATH/lib" \
|
||||
-DCMAKE_IGNORE_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=144000" \
|
||||
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
|
||||
-DCMAKE_OSX_SYSROOT="$(xcrun --sdk macosx --show-sdk-path)" \
|
||||
-G Ninja
|
||||
|
||||
"$BREW_X64_PATH/bin/ninja"; build_status=$?;
|
||||
"/opt/homebrew/bin/ninja"; build_status=$?;
|
||||
|
||||
cd ..
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ if [ "$DEPLOY_APPIMAGE" = "true" ]; then
|
|||
curl -fsSLo linuxdeploy-plugin-checkrt.sh https://github.com/darealshinji/linuxdeploy-plugin-checkrt/releases/download/continuous/linuxdeploy-plugin-checkrt.sh
|
||||
chmod +x ./linuxdeploy-plugin-checkrt.sh
|
||||
|
||||
export EXTRA_PLATFORM_PLUGINS="libqwayland-egl.so;libqwayland-generic.so"
|
||||
export EXTRA_PLATFORM_PLUGINS="libqwayland.so"
|
||||
export EXTRA_QT_PLUGINS="svg;wayland-decoration-client;wayland-graphics-integration-client;wayland-shell-integration;waylandcompositor"
|
||||
|
||||
APPIMAGE_EXTRACT_AND_RUN=1 linuxdeploy --appdir AppDir --plugin qt --plugin checkrt
|
||||
|
|
@ -32,6 +32,25 @@ if [ "$DEPLOY_APPIMAGE" = "true" ]; then
|
|||
# Remove git directory containing local commit history file
|
||||
rm -rf ./AppDir/usr/share/rpcs3/git
|
||||
|
||||
# Download translations
|
||||
mkdir -p "./AppDir/usr/translations"
|
||||
ZIP_URL=$(curl -fsSL "https://api.github.com/repos/RPCS3/rpcs3_translations/releases/latest" \
|
||||
| grep "browser_download_url" \
|
||||
| grep "RPCS3-languages.zip" \
|
||||
| cut -d '"' -f 4)
|
||||
if [ -z "$ZIP_URL" ]; then
|
||||
echo "Failed to find RPCS3-languages.zip in the latest release. Continuing without translations."
|
||||
else
|
||||
echo "Downloading translations from: $ZIP_URL"
|
||||
curl -L -o translations.zip "$ZIP_URL" || {
|
||||
echo "Failed to download translations.zip. Continuing without translations."
|
||||
exit 0
|
||||
}
|
||||
unzip -o translations.zip -d "./AppDir/usr/translations" >/dev/null 2>&1 || \
|
||||
echo "Failed to extract translations.zip. Continuing without translations."
|
||||
rm -f translations.zip
|
||||
fi
|
||||
|
||||
curl -fsSLo /uruntime "https://github.com/VHSgunzo/uruntime/releases/download/v0.3.4/uruntime-appimage-dwarfs-$CPU_ARCH"
|
||||
chmod +x /uruntime
|
||||
/uruntime --appimage-mkdwarfs -f --set-owner 0 --set-group 0 --no-history --no-create-timestamp \
|
||||
|
|
|
|||
|
|
@ -15,8 +15,15 @@ echo "AVVER=$AVVER" >> ../.ci/ci-vars.env
|
|||
|
||||
cd bin
|
||||
mkdir "rpcs3.app/Contents/lib/" || true
|
||||
mkdir -p "rpcs3.app/Contents/Resources/vulkan/icd.d" || true
|
||||
wget https://github.com/KhronosGroup/MoltenVK/releases/download/v1.4.1/MoltenVK-macos-privateapi.tar
|
||||
tar -xvf MoltenVK-macos-privateapi.tar
|
||||
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"
|
||||
|
||||
cp "$(realpath /opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/lib/c++/libc++abi.1.0.dylib)" "rpcs3.app/Contents/Frameworks/libc++abi.1.dylib"
|
||||
cp "$(realpath /opt/homebrew/opt/gcc/lib/gcc/current/libgcc_s.1.1.dylib)" "rpcs3.app/Contents/Frameworks/libgcc_s.1.1.dylib"
|
||||
cp "$(realpath /opt/homebrew/lib/libsharpyuv.0.dylib)" "rpcs3.app/Contents/lib/libsharpyuv.0.dylib"
|
||||
cp "$(realpath /opt/homebrew/lib/libintl.8.dylib)" "rpcs3.app/Contents/lib/libintl.8.dylib"
|
||||
|
||||
|
|
@ -31,11 +38,28 @@ rm -rf "rpcs3.app/Contents/Frameworks/QtPdf.framework" \
|
|||
|
||||
../../.ci/optimize-mac.sh rpcs3.app
|
||||
|
||||
# Download translations
|
||||
mkdir -p "rpcs3.app/Contents/translations"
|
||||
ZIP_URL=$(curl -fsSL "https://api.github.com/repos/RPCS3/rpcs3_translations/releases/latest" \
|
||||
| grep "browser_download_url" \
|
||||
| grep "RPCS3-languages.zip" \
|
||||
| cut -d '"' -f 4)
|
||||
if [ -z "$ZIP_URL" ]; then
|
||||
echo "Failed to find RPCS3-languages.zip in the latest release. Continuing without translations."
|
||||
else
|
||||
echo "Downloading translations from: $ZIP_URL"
|
||||
curl -L -o translations.zip "$ZIP_URL" || {
|
||||
echo "Failed to download translations.zip. Continuing without translations."
|
||||
exit 0
|
||||
}
|
||||
unzip -o translations.zip -d "rpcs3.app/Contents/translations" >/dev/null 2>&1 || \
|
||||
echo "Failed to extract translations.zip. Continuing without translations."
|
||||
rm -f translations.zip
|
||||
fi
|
||||
|
||||
# Hack
|
||||
install_name_tool \
|
||||
-delete_rpath /opt/homebrew/lib \
|
||||
-delete_rpath /opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/lib RPCS3.app/Contents/MacOS/rpcs3
|
||||
#-delete_rpath /opt/homebrew1/Cellar/sdl3/3.2.8/lib
|
||||
install_name_tool -delete_rpath /opt/homebrew/lib RPCS3.app/Contents/MacOS/rpcs3 || echo "Hack for deleting rpath /opt/homebrew/lib not needed"
|
||||
install_name_tool -delete_rpath /opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/lib RPCS3.app/Contents/MacOS/rpcs3 || echo "Hack for deleting rpath /opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/lib not needed"
|
||||
|
||||
# Need to do this rename hack due to case insensitive filesystem
|
||||
mv rpcs3.app RPCS3_.app
|
||||
|
|
@ -48,24 +72,8 @@ echo "[InternetShortcut]" > Quickstart.url
|
|||
echo "URL=https://rpcs3.net/quickstart" >> Quickstart.url
|
||||
echo "IconIndex=0" >> Quickstart.url
|
||||
|
||||
#DMG_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${COMM_TAG}-${COMM_COUNT}-${COMM_HASH}_macos_arm64.dmg"
|
||||
#"$BREW_X64_PATH/bin/create-dmg" --volname RPCS3 \
|
||||
#--window-size 800 400 \
|
||||
#--icon-size 100 \
|
||||
#--icon rpcs3.app 200 190 \
|
||||
#--add-file Quickstart.url Quickstart.url 400 20 \
|
||||
#--hide-extension rpcs3.app \
|
||||
#--hide-extension Quickstart.url \
|
||||
#--app-drop-link 600 185 \
|
||||
#--skip-jenkins \
|
||||
#--format ULMO \
|
||||
#"$DMG_FILEPATH" \
|
||||
#RPCS3.app
|
||||
#FILESIZE=$(stat -f %z "$DMG_FILEPATH")
|
||||
#SHA256SUM=$(shasum -a 256 "$DMG_FILEPATH" | awk '{ print $1 }')
|
||||
|
||||
ARCHIVE_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${COMM_TAG}-${COMM_COUNT}-${COMM_HASH}_macos_arm64.7z"
|
||||
"$BREW_PATH/bin/7z" a -mx9 "$ARCHIVE_FILEPATH" RPCS3.app Quickstart.url
|
||||
"/opt/homebrew/bin/7z" a -mx9 "$ARCHIVE_FILEPATH" RPCS3.app Quickstart.url
|
||||
FILESIZE=$(stat -f %z "$ARCHIVE_FILEPATH")
|
||||
SHA256SUM=$(shasum -a 256 "$ARCHIVE_FILEPATH" | awk '{ print $1 }')
|
||||
|
||||
|
|
|
|||
|
|
@ -14,9 +14,17 @@ AVVER="${COMM_TAG}-${COMM_COUNT}"
|
|||
echo "AVVER=$AVVER" >> ../.ci/ci-vars.env
|
||||
|
||||
cd bin
|
||||
mkdir "rpcs3.app/Contents/lib/"
|
||||
mkdir "rpcs3.app/Contents/lib/" || true
|
||||
mkdir -p "rpcs3.app/Contents/Resources/vulkan/icd.d" || true
|
||||
wget https://github.com/KhronosGroup/MoltenVK/releases/download/v1.4.1/MoltenVK-macos-privateapi.tar
|
||||
tar -xvf MoltenVK-macos-privateapi.tar
|
||||
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"
|
||||
|
||||
cp "/usr/local/opt/llvm@$LLVM_COMPILER_VER/lib/c++/libc++abi.1.0.dylib" "rpcs3.app/Contents/lib/libc++abi.1.dylib"
|
||||
cp "$(realpath /usr/local/opt/llvm@$LLVM_COMPILER_VER/lib/c++/libc++abi.1.0.dylib)" "rpcs3.app/Contents/Frameworks/libc++abi.1.dylib"
|
||||
cp "$(realpath /usr/local/opt/llvm@$LLVM_COMPILER_VER/lib/unwind/libunwind.1.dylib)" "rpcs3.app/Contents/Frameworks/libunwind.1.dylib"
|
||||
cp "$(realpath /usr/local/opt/gcc/lib/gcc/current/libgcc_s.1.1.dylib)" "rpcs3.app/Contents/Frameworks/libgcc_s.1.1.dylib"
|
||||
cp "$(realpath /usr/local/lib/libsharpyuv.0.dylib)" "rpcs3.app/Contents/lib/libsharpyuv.0.dylib"
|
||||
cp "$(realpath /usr/local/lib/libintl.8.dylib)" "rpcs3.app/Contents/lib/libintl.8.dylib"
|
||||
|
||||
|
|
@ -31,14 +39,31 @@ rm -rf "rpcs3.app/Contents/Frameworks/QtPdf.framework" \
|
|||
|
||||
../../.ci/optimize-mac.sh rpcs3.app
|
||||
|
||||
# Download translations
|
||||
mkdir -p "rpcs3.app/Contents/translations"
|
||||
ZIP_URL=$(curl -fsSL "https://api.github.com/repos/RPCS3/rpcs3_translations/releases/latest" \
|
||||
| grep "browser_download_url" \
|
||||
| grep "RPCS3-languages.zip" \
|
||||
| cut -d '"' -f 4)
|
||||
if [ -z "$ZIP_URL" ]; then
|
||||
echo "Failed to find RPCS3-languages.zip in the latest release. Continuing without translations."
|
||||
else
|
||||
echo "Downloading translations from: $ZIP_URL"
|
||||
curl -L -o translations.zip "$ZIP_URL" || {
|
||||
echo "Failed to download translations.zip. Continuing without translations."
|
||||
exit 0
|
||||
}
|
||||
unzip -o translations.zip -d "rpcs3.app/Contents/translations" >/dev/null 2>&1 || \
|
||||
echo "Failed to extract translations.zip. Continuing without translations."
|
||||
rm -f translations.zip
|
||||
fi
|
||||
|
||||
# Need to do this rename hack due to case insensitive filesystem
|
||||
mv rpcs3.app RPCS3_.app
|
||||
mv RPCS3_.app RPCS3.app
|
||||
|
||||
# Hack
|
||||
install_name_tool \
|
||||
-delete_rpath /usr/local/lib \
|
||||
-delete_rpath /usr/local/opt/llvm@$LLVM_COMPILER_VER/lib RPCS3.app/Contents/MacOS/rpcs3
|
||||
install_name_tool -delete_rpath /usr/local/lib RPCS3.app/Contents/MacOS/rpcs3
|
||||
#-delete_rpath /usr/local/Cellar/sdl3/3.2.8/lib
|
||||
|
||||
# NOTE: "--deep" is deprecated
|
||||
|
|
@ -48,24 +73,8 @@ echo "[InternetShortcut]" > Quickstart.url
|
|||
echo "URL=https://rpcs3.net/quickstart" >> Quickstart.url
|
||||
echo "IconIndex=0" >> Quickstart.url
|
||||
|
||||
#DMG_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${COMM_TAG}-${COMM_COUNT}-${COMM_HASH}_macos.dmg"
|
||||
#"$BREW_X64_PATH/bin/create-dmg" --volname RPCS3 \
|
||||
#--window-size 800 400 \
|
||||
#--icon-size 100 \
|
||||
#--icon rpcs3.app 200 190 \
|
||||
#--add-file Quickstart.url Quickstart.url 400 20 \
|
||||
#--hide-extension rpcs3.app \
|
||||
#--hide-extension Quickstart.url \
|
||||
#--app-drop-link 600 185 \
|
||||
#--skip-jenkins \
|
||||
#--format ULMO \
|
||||
#"$DMG_FILEPATH" \
|
||||
#RPCS3.app
|
||||
#FILESIZE=$(stat -f %z "$DMG_FILEPATH")
|
||||
#SHA256SUM=$(shasum -a 256 "$DMG_FILEPATH" | awk '{ print $1 }')
|
||||
|
||||
ARCHIVE_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${COMM_TAG}-${COMM_COUNT}-${COMM_HASH}_macos.7z"
|
||||
"$BREW_X64_PATH/bin/7z" a -mx9 "$ARCHIVE_FILEPATH" RPCS3.app Quickstart.url
|
||||
"/opt/homebrew/bin/7z" a -mx9 "$ARCHIVE_FILEPATH" RPCS3.app Quickstart.url
|
||||
FILESIZE=$(stat -f %z "$ARCHIVE_FILEPATH")
|
||||
SHA256SUM=$(shasum -a 256 "$ARCHIVE_FILEPATH" | awk '{ print $1 }')
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,25 @@ mkdir ./bin/config/input_configs
|
|||
curl -fsSL 'https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt' 1> ./bin/config/input_configs/gamecontrollerdb.txt
|
||||
curl -fsSL 'https://rpcs3.net/compatibility?api=v1&export' | iconv -t UTF-8 1> ./bin/GuiConfigs/compat_database.dat
|
||||
|
||||
# Download translations
|
||||
mkdir -p ./bin/share/qt6/translations
|
||||
ZIP_URL=$(curl -fsSL "https://api.github.com/repos/RPCS3/rpcs3_translations/releases/latest" \
|
||||
| grep "browser_download_url" \
|
||||
| grep "RPCS3-languages.zip" \
|
||||
| cut -d '"' -f 4)
|
||||
if [ -z "$ZIP_URL" ]; then
|
||||
echo "Failed to find RPCS3-languages.zip in the latest release. Continuing without translations."
|
||||
else
|
||||
echo "Downloading translations from: $ZIP_URL"
|
||||
curl -L -o translations.zip "$ZIP_URL" || {
|
||||
echo "Failed to download translations.zip. Continuing without translations."
|
||||
exit 0
|
||||
}
|
||||
unzip -o translations.zip -d "./bin/share/qt6/translations" >/dev/null 2>&1 || \
|
||||
echo "Failed to extract translations.zip. Continuing without translations."
|
||||
rm -f translations.zip
|
||||
fi
|
||||
|
||||
# Package artifacts
|
||||
7z a -m0=LZMA2 -mx9 "$BUILD" ./bin/*
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,25 @@ mkdir ./bin/config/input_configs
|
|||
curl -fsSL 'https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt' 1> ./bin/config/input_configs/gamecontrollerdb.txt
|
||||
curl -fsSL 'https://rpcs3.net/compatibility?api=v1&export' | iconv -t UTF-8 1> ./bin/GuiConfigs/compat_database.dat
|
||||
|
||||
# Download translations
|
||||
mkdir -p ./bin/qt6/translations
|
||||
ZIP_URL=$(curl -fsSL "https://api.github.com/repos/RPCS3/rpcs3_translations/releases/latest" \
|
||||
| grep "browser_download_url" \
|
||||
| grep "RPCS3-languages.zip" \
|
||||
| cut -d '"' -f 4)
|
||||
if [ -z "$ZIP_URL" ]; then
|
||||
echo "Failed to find RPCS3-languages.zip in the latest release. Continuing without translations."
|
||||
else
|
||||
echo "Downloading translations from: $ZIP_URL"
|
||||
curl -L -o translations.zip "$ZIP_URL" || {
|
||||
echo "Failed to download translations.zip. Continuing without translations."
|
||||
exit 0
|
||||
}
|
||||
unzip -o translations.zip -d "./bin/qt6/translations" >/dev/null 2>&1 || \
|
||||
echo "Failed to extract translations.zip. Continuing without translations."
|
||||
rm -f translations.zip
|
||||
fi
|
||||
|
||||
# Download SSL certificate (not needed with CURLSSLOPT_NATIVE_CA)
|
||||
#curl -fsSL 'https://curl.haxx.se/ca/cacert.pem' 1> ./bin/cacert.pem
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ pkg info # debug
|
|||
pkg install "llvm$LLVM_COMPILER_VER"
|
||||
|
||||
# Mandatory dependencies (qtX-base is pulled via qtX-multimedia)
|
||||
pkg install git ccache cmake ninja "qt$QT_VER_MAIN-multimedia" "qt$QT_VER_MAIN-svg" glew openal-soft ffmpeg
|
||||
pkg install git ccache cmake ninja "qt$QT_VER_MAIN-multimedia" "qt$QT_VER_MAIN-svg" glew openal-soft ffmpeg pcre2
|
||||
|
||||
# Optional dependencies (libevdev is pulled by qtX-base)
|
||||
pkg install pkgconf alsa-lib pulseaudio sdl3 evdev-proto vulkan-headers vulkan-loader opencv
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ QT_URL_VER=$(echo "$QT_VER" | sed "s/\.//g")
|
|||
QT_VER_MSVC_UP=$(echo "${QT_VER_MSVC}" | tr '[:lower:]' '[:upper:]')
|
||||
QT_PREFIX="online/qtsdkrepository/windows_x86/desktop/qt${QT_VER_MAIN}_${QT_URL_VER}/qt${QT_VER_MAIN}_${QT_URL_VER}/qt.qt${QT_VER_MAIN}.${QT_URL_VER}."
|
||||
QT_PREFIX_2="win64_${QT_VER_MSVC}_64/${QT_VER}-0-${QT_DATE}"
|
||||
QT_SUFFIX="-Windows-Windows_11_23H2-${QT_VER_MSVC_UP}-Windows-Windows_11_23H2-X86_64.7z"
|
||||
QT_SUFFIX="-Windows-Windows_11_24H2-${QT_VER_MSVC_UP}-Windows-Windows_11_24H2-X86_64.7z"
|
||||
QT_BASE_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qtbase${QT_SUFFIX}"
|
||||
QT_DECL_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qtdeclarative${QT_SUFFIX}"
|
||||
QT_TOOL_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qttools${QT_SUFFIX}"
|
||||
|
|
|
|||
|
|
@ -30,23 +30,23 @@ jobs:
|
|||
matrix:
|
||||
include:
|
||||
- os: ubuntu-24.04
|
||||
docker_img: "rpcs3/rpcs3-ci-jammy:1.6"
|
||||
docker_img: "rpcs3/rpcs3-ci-jammy:1.7"
|
||||
build_sh: "/rpcs3/.ci/build-linux.sh"
|
||||
compiler: clang
|
||||
UPLOAD_COMMIT_HASH: d812f1254a1157c80fd402f94446310560f54e5f
|
||||
UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-linux"
|
||||
- os: ubuntu-24.04
|
||||
docker_img: "rpcs3/rpcs3-ci-jammy:1.6"
|
||||
docker_img: "rpcs3/rpcs3-ci-jammy:1.7"
|
||||
build_sh: "/rpcs3/.ci/build-linux.sh"
|
||||
compiler: gcc
|
||||
- os: ubuntu-24.04-arm
|
||||
docker_img: "rpcs3/rpcs3-ci-jammy-aarch64:1.6"
|
||||
docker_img: "rpcs3/rpcs3-ci-jammy-aarch64:1.7"
|
||||
build_sh: "/rpcs3/.ci/build-linux-aarch64.sh"
|
||||
compiler: clang
|
||||
UPLOAD_COMMIT_HASH: a1d35836e8d45bfc6f63c26f0a3e5d46ef622fe1
|
||||
UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-linux-arm64"
|
||||
- os: ubuntu-24.04-arm
|
||||
docker_img: "rpcs3/rpcs3-ci-jammy-aarch64:1.6"
|
||||
docker_img: "rpcs3/rpcs3-ci-jammy-aarch64:1.7"
|
||||
build_sh: "/rpcs3/.ci/build-linux-aarch64.sh"
|
||||
compiler: gcc
|
||||
name: RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }}
|
||||
|
|
@ -123,7 +123,7 @@ jobs:
|
|||
matrix:
|
||||
include:
|
||||
- name: Intel
|
||||
build_sh: "arch -X86_64 .ci/build-mac.sh"
|
||||
build_sh: .ci/build-mac.sh
|
||||
UPLOAD_COMMIT_HASH: 51ae32f468089a8169aaf1567de355ff4a3e0842
|
||||
UPLOAD_REPO_FULL_NAME: rpcs3/rpcs3-binaries-mac
|
||||
- name: Apple Silicon
|
||||
|
|
@ -134,9 +134,9 @@ jobs:
|
|||
runs-on: macos-14
|
||||
env:
|
||||
CCACHE_DIR: /tmp/ccache_dir
|
||||
QT_VER: '6.7.3'
|
||||
QT_VER: '6.10.1'
|
||||
QT_VER_MAIN: '6'
|
||||
LLVM_COMPILER_VER: '19'
|
||||
LLVM_COMPILER_VER: '21'
|
||||
RELEASE_MESSAGE: ../GitHubReleaseMessage.txt
|
||||
UPLOAD_COMMIT_HASH: ${{ matrix.UPLOAD_COMMIT_HASH }}
|
||||
UPLOAD_REPO_FULL_NAME: ${{ matrix.UPLOAD_REPO_FULL_NAME }}
|
||||
|
|
@ -212,9 +212,9 @@ jobs:
|
|||
env:
|
||||
COMPILER: msvc
|
||||
QT_VER_MAIN: '6'
|
||||
QT_VER: '6.9.1'
|
||||
QT_VER: '6.10.1'
|
||||
QT_VER_MSVC: 'msvc2022'
|
||||
QT_DATE: '202505291653'
|
||||
QT_DATE: '202511161843'
|
||||
LLVM_VER: '19.1.7'
|
||||
VULKAN_VER: '1.3.268.0'
|
||||
VULKAN_SDK_SHA: '8459ef49bd06b697115ddd3d97c9aec729e849cd775f5be70897718a9b3b9db5'
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
ignore = dirty
|
||||
[submodule "3rdparty/hidapi"]
|
||||
path = 3rdparty/hidapi/hidapi
|
||||
url = ../../RPCS3/hidapi.git
|
||||
url = ../../libusb/hidapi.git
|
||||
branch = master
|
||||
ignore = dirty
|
||||
[submodule "3rdparty/pugixml"]
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 395149956d696e6e3099d8b76d797437f94a6942
|
||||
Subproject commit 5e96a8279489832924056b1fa82f29d5837c9469
|
||||
|
|
@ -51,6 +51,14 @@ else()
|
|||
add_subdirectory(pugixml EXCLUDE_FROM_ALL)
|
||||
endif()
|
||||
|
||||
if (USE_SYSTEM_VULKAN_MEMORY_ALLOCATOR)
|
||||
find_package(VulkanMemoryAllocator REQUIRED GLOBAL)
|
||||
add_library(3rdparty::vulkanmemoryallocator ALIAS GPUOpen::VulkanMemoryAllocator)
|
||||
else()
|
||||
add_library(3rdparty_vulkanmemoryallocator INTERFACE)
|
||||
target_include_directories(3rdparty_vulkanmemoryallocator INTERFACE GPUOpen/VulkanMemoryAllocator/include)
|
||||
add_library(3rdparty::vulkanmemoryallocator ALIAS 3rdparty_vulkanmemoryallocator)
|
||||
endif()
|
||||
|
||||
# libusb
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "DragonFly|FreeBSD")
|
||||
|
|
@ -92,9 +100,6 @@ add_subdirectory(hidapi)
|
|||
|
||||
# glslang
|
||||
add_subdirectory(glslang EXCLUDE_FROM_ALL)
|
||||
add_library(3rdparty_glslang INTERFACE)
|
||||
target_link_libraries(3rdparty_glslang INTERFACE SPIRV)
|
||||
|
||||
|
||||
# yaml-cpp
|
||||
add_subdirectory(yaml-cpp)
|
||||
|
|
@ -273,7 +278,7 @@ if(USE_FAUDIO)
|
|||
target_compile_definitions(FAudio-static INTERFACE -DHAVE_FAUDIO)
|
||||
set(FAUDIO_TARGET FAudio-static)
|
||||
else()
|
||||
message(FATAL_ERROR
|
||||
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)
|
||||
|
|
@ -388,7 +393,7 @@ add_library(3rdparty::wolfssl ALIAS wolfssl)
|
|||
add_library(3rdparty::libcurl ALIAS 3rdparty_libcurl)
|
||||
add_library(3rdparty::soundtouch ALIAS soundtouch)
|
||||
add_library(3rdparty::sdl3 ALIAS ${SDL3_TARGET})
|
||||
add_library(3rdparty::miniupnpc ALIAS libminiupnpc-static)
|
||||
add_library(3rdparty::miniupnpc ALIAS 3rdparty_miniupnpc)
|
||||
add_library(3rdparty::rtmidi ALIAS rtmidi)
|
||||
add_library(3rdparty::opencv ALIAS ${OPENCV_TARGET})
|
||||
add_library(3rdparty::fusion ALIAS Fusion)
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit e6ddfabab2efbc8765750039634fe5e24ac31205
|
||||
Subproject commit 4ea8afea6ba857c24e40877f487d000d559b196d
|
||||
|
|
@ -3,7 +3,7 @@ include(ExternalProject)
|
|||
|
||||
ExternalProject_Add(moltenvk
|
||||
GIT_REPOSITORY https://github.com/KhronosGroup/MoltenVK.git
|
||||
GIT_TAG 49b97f2
|
||||
GIT_TAG 4588705
|
||||
BUILD_IN_SOURCE 1
|
||||
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK
|
||||
CONFIGURE_COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/fetchDependencies" --macos
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit dc7d7054a5b4f3bec1dc23a42fd616a0847af948
|
||||
Subproject commit 0e5e98e4ac8adae92e4f7653dd6eee17aa9c8791
|
||||
|
|
@ -49,11 +49,11 @@
|
|||
<PropertyGroup Label="UserMacros">
|
||||
<CmakeReleaseCLI>call vsdevcmd.bat -arch=amd64
|
||||
cd "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)"
|
||||
cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE="Release" -DCMAKE_INSTALL_PREFIX="./Release" -DCMAKE_SYSTEM_VERSION=10.0 -DLIBTYPE=STATIC -DFORCE_STATIC_VCRT=true -DALSOFT_UTILS=false -DALSOFT_EXAMPLES=false -DALSOFT_INSTALL=false -DALSOFT_INSTALL_CONFIG=false -DALSOFT_INSTALL_HRTF_DATA=false -DALSOFT_INSTALL_AMBDEC_PRESETS=false -DALSOFT_INSTALL_EXAMPLES=false -DALSOFT_INSTALL_UTILS=false "$(SolutionDir)3rdparty\OpenAL\openal-soft"
|
||||
cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE="Release" -DCMAKE_INSTALL_PREFIX="./Release" -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DCMAKE_SYSTEM_VERSION=10.0 -DLIBTYPE=STATIC -DFORCE_STATIC_VCRT=true -DALSOFT_UTILS=false -DALSOFT_EXAMPLES=false -DALSOFT_INSTALL=false -DALSOFT_INSTALL_CONFIG=false -DALSOFT_INSTALL_HRTF_DATA=false -DALSOFT_INSTALL_AMBDEC_PRESETS=false -DALSOFT_INSTALL_EXAMPLES=false -DALSOFT_INSTALL_UTILS=false "$(SolutionDir)3rdparty\OpenAL\openal-soft"
|
||||
</CmakeReleaseCLI>
|
||||
<CmakeDebugCLI>call vsdevcmd.bat -arch=amd64
|
||||
cd "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)"
|
||||
cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE="Debug" -DCMAKE_INSTALL_PREFIX="./Debug" -DCMAKE_SYSTEM_VERSION=10.0 -DLIBTYPE=STATIC -DALSOFT_UTILS=false -DALSOFT_EXAMPLES=false -DALSOFT_INSTALL=false -DALSOFT_INSTALL_CONFIG=false -DALSOFT_INSTALL_HRTF_DATA=false -DALSOFT_INSTALL_AMBDEC_PRESETS=false -DALSOFT_INSTALL_EXAMPLES=false -DALSOFT_INSTALL_UTILS=false "$(SolutionDir)3rdparty\OpenAL\openal-soft"
|
||||
cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE="Debug" -DCMAKE_INSTALL_PREFIX="./Debug" -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebug -DCMAKE_SYSTEM_VERSION=10.0 -DLIBTYPE=STATIC -DALSOFT_UTILS=false -DALSOFT_EXAMPLES=false -DALSOFT_INSTALL=false -DALSOFT_INSTALL_CONFIG=false -DALSOFT_INSTALL_HRTF_DATA=false -DALSOFT_INSTALL_AMBDEC_PRESETS=false -DALSOFT_INSTALL_EXAMPLES=false -DALSOFT_INSTALL_UTILS=false "$(SolutionDir)3rdparty\OpenAL\openal-soft"
|
||||
</CmakeDebugCLI>
|
||||
<CmakeCopyCLI>
|
||||
echo Copying..
|
||||
|
|
@ -106,4 +106,4 @@
|
|||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 70b4e3db7822de4d534959885cda109d6edbee36
|
||||
Subproject commit e495bee4cd630c9f99907a764e16edba37a4b564
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit fdb8a789d2b446b77bd7cdd2eff95f6cbc814cf4
|
||||
Subproject commit 400fffa90f30c7a2dc762fa33009d24851bd2016
|
||||
|
|
@ -70,6 +70,7 @@
|
|||
<ClCompile Include="curl\lib\cf-h2-proxy.c" />
|
||||
<ClCompile Include="curl\lib\cf-haproxy.c" />
|
||||
<ClCompile Include="curl\lib\cf-https-connect.c" />
|
||||
<ClCompile Include="curl\lib\cf-ip-happy.c" />
|
||||
<ClCompile Include="curl\lib\cf-socket.c" />
|
||||
<ClCompile Include="curl\lib\cfilters.c" />
|
||||
<ClCompile Include="curl\lib\conncache.c" />
|
||||
|
|
@ -79,19 +80,23 @@
|
|||
<ClCompile Include="curl\lib\cshutdn.c" />
|
||||
<ClCompile Include="curl\lib\curlx\base64.c" />
|
||||
<ClCompile Include="curl\lib\curlx\dynbuf.c" />
|
||||
<ClCompile Include="curl\lib\curlx\fopen.c" />
|
||||
<ClCompile Include="curl\lib\curlx\inet_ntop.c" />
|
||||
<ClCompile Include="curl\lib\curlx\inet_pton.c" />
|
||||
<ClCompile Include="curl\lib\curlx\multibyte.c" />
|
||||
<ClCompile Include="curl\lib\curlx\nonblock.c" />
|
||||
<ClCompile Include="curl\lib\curlx\strerr.c" />
|
||||
<ClCompile Include="curl\lib\curlx\strparse.c" />
|
||||
<ClCompile Include="curl\lib\curlx\timediff.c" />
|
||||
<ClCompile Include="curl\lib\curlx\timeval.c" />
|
||||
<ClCompile Include="curl\lib\curlx\version_win32.c" />
|
||||
<ClCompile Include="curl\lib\curlx\wait.c" />
|
||||
<ClCompile Include="curl\lib\curlx\warnless.c" />
|
||||
<ClCompile Include="curl\lib\curlx\winapi.c" />
|
||||
<ClCompile Include="curl\lib\curl_addrinfo.c" />
|
||||
<ClCompile Include="curl\lib\curl_des.c" />
|
||||
<ClCompile Include="curl\lib\curl_endian.c" />
|
||||
<ClCompile Include="curl\lib\curl_fnmatch.c" />
|
||||
<ClCompile Include="curl\lib\curl_fopen.c" />
|
||||
<ClCompile Include="curl\lib\curl_gethostname.c" />
|
||||
<ClCompile Include="curl\lib\curl_get_line.c" />
|
||||
<ClCompile Include="curl\lib\curl_gssapi.c" />
|
||||
|
|
@ -117,7 +122,6 @@
|
|||
<ClCompile Include="curl\lib\fake_addrinfo.c" />
|
||||
<ClCompile Include="curl\lib\file.c" />
|
||||
<ClCompile Include="curl\lib\fileinfo.c" />
|
||||
<ClCompile Include="curl\lib\fopen.c" />
|
||||
<ClCompile Include="curl\lib\formdata.c" />
|
||||
<ClCompile Include="curl\lib\ftp.c" />
|
||||
<ClCompile Include="curl\lib\ftplistparser.c" />
|
||||
|
|
@ -144,8 +148,6 @@
|
|||
<ClCompile Include="curl\lib\idn.c" />
|
||||
<ClCompile Include="curl\lib\if2ip.c" />
|
||||
<ClCompile Include="curl\lib\imap.c" />
|
||||
<ClCompile Include="curl\lib\inet_ntop.c" />
|
||||
<ClCompile Include="curl\lib\krb5.c" />
|
||||
<ClCompile Include="curl\lib\ldap.c" />
|
||||
<ClCompile Include="curl\lib\llist.c" />
|
||||
<ClCompile Include="curl\lib\macos.c" />
|
||||
|
|
@ -157,6 +159,7 @@
|
|||
<ClCompile Include="curl\lib\mqtt.c" />
|
||||
<ClCompile Include="curl\lib\multi.c" />
|
||||
<ClCompile Include="curl\lib\multi_ev.c" />
|
||||
<ClCompile Include="curl\lib\multi_ntfy.c" />
|
||||
<ClCompile Include="curl\lib\netrc.c" />
|
||||
<ClCompile Include="curl\lib\noproxy.c" />
|
||||
<ClCompile Include="curl\lib\openldap.c" />
|
||||
|
|
@ -199,9 +202,9 @@
|
|||
<ClCompile Include="curl\lib\urlapi.c" />
|
||||
<ClCompile Include="curl\lib\vauth\gsasl.c" />
|
||||
<ClCompile Include="curl\lib\version.c" />
|
||||
<ClCompile Include="curl\lib\vquic\curl_msh3.c" />
|
||||
<ClCompile Include="curl\lib\vquic\curl_ngtcp2.c" />
|
||||
<ClCompile Include="curl\lib\vquic\curl_quiche.c" />
|
||||
<ClCompile Include="curl\lib\vtls\apple.c" />
|
||||
<ClCompile Include="curl\lib\vtls\cipher_suite.c" />
|
||||
<ClCompile Include="curl\lib\vtls\hostcheck.c" />
|
||||
<ClCompile Include="curl\lib\vtls\rustls.c" />
|
||||
|
|
@ -224,8 +227,6 @@
|
|||
<ClCompile Include="curl\lib\vssh\curl_path.c" />
|
||||
<ClCompile Include="curl\lib\vssh\libssh.c" />
|
||||
<ClCompile Include="curl\lib\vssh\libssh2.c" />
|
||||
<ClCompile Include="curl\lib\vssh\wolfssh.c" />
|
||||
<ClCompile Include="curl\lib\vtls\bearssl.c" />
|
||||
<ClCompile Include="curl\lib\vtls\gtls.c" />
|
||||
<ClCompile Include="curl\lib\vtls\keylog.c" />
|
||||
<ClCompile Include="curl\lib\vtls\mbedtls.c" />
|
||||
|
|
@ -233,7 +234,6 @@
|
|||
<ClCompile Include="curl\lib\vtls\openssl.c" />
|
||||
<ClCompile Include="curl\lib\vtls\schannel.c" />
|
||||
<ClCompile Include="curl\lib\vtls\schannel_verify.c" />
|
||||
<ClCompile Include="curl\lib\vtls\sectransp.c" />
|
||||
<ClCompile Include="curl\lib\vtls\vtls.c" />
|
||||
<ClCompile Include="curl\lib\vtls\wolfssl.c" />
|
||||
<ClCompile Include="curl\lib\ws.c" />
|
||||
|
|
@ -258,6 +258,7 @@
|
|||
<ClInclude Include="curl\lib\cf-h2-proxy.h" />
|
||||
<ClInclude Include="curl\lib\cf-haproxy.h" />
|
||||
<ClInclude Include="curl\lib\cf-https-connect.h" />
|
||||
<ClInclude Include="curl\lib\cf-ip-happy.h" />
|
||||
<ClInclude Include="curl\lib\cf-socket.h" />
|
||||
<ClInclude Include="curl\lib\cfilters.h" />
|
||||
<ClInclude Include="curl\lib\config-mac.h" />
|
||||
|
|
@ -271,32 +272,37 @@
|
|||
<ClInclude Include="curl\lib\cookie.h" />
|
||||
<ClInclude Include="curl\lib\cshutdn.h" />
|
||||
<ClInclude Include="curl\lib\curlx\base64.h" />
|
||||
<ClInclude Include="curl\lib\curlx\binmode.h" />
|
||||
<ClInclude Include="curl\lib\curlx\curlx.h" />
|
||||
<ClInclude Include="curl\lib\curlx\dynbuf.h" />
|
||||
<ClInclude Include="curl\lib\curlx\fopen.h" />
|
||||
<ClInclude Include="curl\lib\curlx\inet_ntop.h" />
|
||||
<ClInclude Include="curl\lib\curlx\inet_pton.h" />
|
||||
<ClInclude Include="curl\lib\curlx\multibyte.h" />
|
||||
<ClInclude Include="curl\lib\curlx\nonblock.h" />
|
||||
<ClInclude Include="curl\lib\curlx\strerr.h" />
|
||||
<ClInclude Include="curl\lib\curlx\strparse.h" />
|
||||
<ClInclude Include="curl\lib\curlx\timediff.h" />
|
||||
<ClInclude Include="curl\lib\curlx\timeval.h" />
|
||||
<ClInclude Include="curl\lib\curlx\version_win32.h" />
|
||||
<ClInclude Include="curl\lib\curlx\wait.h" />
|
||||
<ClInclude Include="curl\lib\curlx\warnless.h" />
|
||||
<ClInclude Include="curl\lib\curlx\winapi.h" />
|
||||
<ClInclude Include="curl\lib\curl_addrinfo.h" />
|
||||
<ClInclude Include="curl\lib\curl_ctype.h" />
|
||||
<ClInclude Include="curl\lib\curl_des.h" />
|
||||
<ClInclude Include="curl\lib\curl_endian.h" />
|
||||
<ClInclude Include="curl\lib\curl_fnmatch.h" />
|
||||
<ClInclude Include="curl\lib\curl_fopen.h" />
|
||||
<ClInclude Include="curl\lib\curl_gethostname.h" />
|
||||
<ClInclude Include="curl\lib\curl_get_line.h" />
|
||||
<ClInclude Include="curl\lib\curl_gssapi.h" />
|
||||
<ClInclude Include="curl\lib\curl_hmac.h" />
|
||||
<ClInclude Include="curl\lib\curl_krb5.h" />
|
||||
<ClInclude Include="curl\lib\curl_ldap.h" />
|
||||
<ClInclude Include="curl\lib\curl_md4.h" />
|
||||
<ClInclude Include="curl\lib\curl_md5.h" />
|
||||
<ClInclude Include="curl\lib\curl_memory.h" />
|
||||
<ClInclude Include="curl\lib\curl_memrchr.h" />
|
||||
<ClInclude Include="curl\lib\curl_mem_undef.h" />
|
||||
<ClInclude Include="curl\lib\curl_ntlm_core.h" />
|
||||
<ClInclude Include="curl\lib\curl_printf.h" />
|
||||
<ClInclude Include="curl\lib\curl_range.h" />
|
||||
|
|
@ -321,7 +327,6 @@
|
|||
<ClInclude Include="curl\lib\fake_addrinfo.h" />
|
||||
<ClInclude Include="curl\lib\file.h" />
|
||||
<ClInclude Include="curl\lib\fileinfo.h" />
|
||||
<ClInclude Include="curl\lib\fopen.h" />
|
||||
<ClInclude Include="curl\lib\formdata.h" />
|
||||
<ClInclude Include="curl\lib\ftp.h" />
|
||||
<ClInclude Include="curl\lib\ftplistparser.h" />
|
||||
|
|
@ -345,7 +350,6 @@
|
|||
<ClInclude Include="curl\lib\idn.h" />
|
||||
<ClInclude Include="curl\lib\if2ip.h" />
|
||||
<ClInclude Include="curl\lib\imap.h" />
|
||||
<ClInclude Include="curl\lib\inet_ntop.h" />
|
||||
<ClInclude Include="curl\lib\llist.h" />
|
||||
<ClInclude Include="curl\lib\macos.h" />
|
||||
<ClInclude Include="curl\lib\memdebug.h" />
|
||||
|
|
@ -354,6 +358,7 @@
|
|||
<ClInclude Include="curl\lib\multihandle.h" />
|
||||
<ClInclude Include="curl\lib\multiif.h" />
|
||||
<ClInclude Include="curl\lib\multi_ev.h" />
|
||||
<ClInclude Include="curl\lib\multi_ntfy.h" />
|
||||
<ClInclude Include="curl\lib\netrc.h" />
|
||||
<ClInclude Include="curl\lib\noproxy.h" />
|
||||
<ClInclude Include="curl\lib\parsedate.h" />
|
||||
|
|
@ -397,10 +402,10 @@
|
|||
<ClInclude Include="curl\lib\url.h" />
|
||||
<ClInclude Include="curl\lib\urlapi-int.h" />
|
||||
<ClInclude Include="curl\lib\urldata.h" />
|
||||
<ClInclude Include="curl\lib\vquic\curl_msh3.h" />
|
||||
<ClInclude Include="curl\lib\vquic\curl_ngtcp2.h" />
|
||||
<ClInclude Include="curl\lib\vquic\curl_quiche.h" />
|
||||
<ClInclude Include="curl\lib\vquic\vquic_int.h" />
|
||||
<ClInclude Include="curl\lib\vtls\apple.h" />
|
||||
<ClInclude Include="curl\lib\vtls\cipher_suite.h" />
|
||||
<ClInclude Include="curl\lib\vtls\hostcheck.h" />
|
||||
<ClInclude Include="curl\lib\vtls\rustls.h" />
|
||||
|
|
@ -415,14 +420,12 @@
|
|||
<ClInclude Include="curl\lib\vquic\vquic.h" />
|
||||
<ClInclude Include="curl\lib\vssh\curl_path.h" />
|
||||
<ClInclude Include="curl\lib\vssh\ssh.h" />
|
||||
<ClInclude Include="curl\lib\vtls\bearssl.h" />
|
||||
<ClInclude Include="curl\lib\vtls\gtls.h" />
|
||||
<ClInclude Include="curl\lib\vtls\keylog.h" />
|
||||
<ClInclude Include="curl\lib\vtls\mbedtls.h" />
|
||||
<ClInclude Include="curl\lib\vtls\mbedtls_threadlock.h" />
|
||||
<ClInclude Include="curl\lib\vtls\openssl.h" />
|
||||
<ClInclude Include="curl\lib\vtls\schannel.h" />
|
||||
<ClInclude Include="curl\lib\vtls\sectransp.h" />
|
||||
<ClInclude Include="curl\lib\vtls\vtls.h" />
|
||||
<ClInclude Include="curl\lib\vtls\wolfssl.h" />
|
||||
<ClInclude Include="curl\lib\ws.h" />
|
||||
|
|
|
|||
|
|
@ -42,9 +42,6 @@
|
|||
<ClCompile Include="curl\lib\curl_addrinfo.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\curl_des.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\curl_endian.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -159,12 +156,6 @@
|
|||
<ClCompile Include="curl\lib\imap.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\inet_ntop.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\krb5.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\ldap.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -336,12 +327,6 @@
|
|||
<ClCompile Include="curl\lib\vssh\libssh2.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\vssh\wolfssh.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\vtls\bearssl.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\vtls\gtls.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -360,9 +345,6 @@
|
|||
<ClCompile Include="curl\lib\vtls\schannel_verify.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\vtls\sectransp.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\vtls\vtls.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -405,9 +387,6 @@
|
|||
<ClCompile Include="curl\lib\headers.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\fopen.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\noproxy.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -426,9 +405,6 @@
|
|||
<ClCompile Include="curl\lib\cf-socket.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\vquic\curl_msh3.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\vquic\curl_ngtcp2.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -549,6 +525,30 @@
|
|||
<ClCompile Include="curl\lib\curlx\winapi.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\curlx\inet_ntop.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\curlx\wait.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\cf-ip-happy.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\curl_fopen.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\multi_ntfy.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\vtls\apple.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\curlx\fopen.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\curlx\strerr.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="curl\include\curl\curl.h">
|
||||
|
|
@ -626,9 +626,6 @@
|
|||
<ClInclude Include="curl\lib\curl_ctype.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\curl_des.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\curl_endian.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -758,9 +755,6 @@
|
|||
<ClInclude Include="curl\lib\imap.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\inet_ntop.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\llist.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -899,9 +893,6 @@
|
|||
<ClInclude Include="curl\lib\vssh\ssh.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\vtls\bearssl.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\vtls\gtls.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -917,9 +908,6 @@
|
|||
<ClInclude Include="curl\lib\vtls\schannel.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\vtls\sectransp.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\vtls\vtls.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -938,9 +926,6 @@
|
|||
<ClInclude Include="curl\lib\vtls\keylog.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\curl_krb5.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\easyoptions.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -965,9 +950,6 @@
|
|||
<ClInclude Include="curl\lib\easy_lock.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\fopen.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\functypes.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -989,9 +971,6 @@
|
|||
<ClInclude Include="curl\lib\cf-socket.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\vquic\curl_msh3.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\vquic\curl_ngtcp2.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -1112,6 +1091,36 @@
|
|||
<ClInclude Include="curl\lib\curlx\winapi.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\curlx\binmode.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\curlx\inet_ntop.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\curlx\wait.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\cf-ip-happy.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\curl_mem_undef.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\curl_fopen.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\multi_ntfy.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\vtls\apple.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\curlx\fopen.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\curlx\strerr.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="curl\lib\libcurl.rc">
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 595bf0007ab1929570c7671f091313c8fc20644e
|
||||
Subproject commit 187240970746d00bbd26b0f5873ed54d2477f9f3
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit 066d4a63b2c714b20b0a8073a01fda7c5c6763f6
|
||||
Subproject commit 008e03eac0ac1d5f85e16f5fcaefdda3fee75cb8
|
||||
|
|
@ -1,11 +1,23 @@
|
|||
#glslang
|
||||
|
||||
set(ENABLE_PCH OFF CACHE BOOL "Enables Precompiled header" FORCE)
|
||||
set(BUILD_EXTERNAL OFF CACHE BOOL "Build external dependencies in /External" FORCE)
|
||||
set(SKIP_GLSLANG_INSTALL ON CACHE BOOL "Skip installation" FORCE)
|
||||
set(ENABLE_SPVREMAPPER OFF CACHE BOOL "Enables building of SPVRemapper" FORCE)
|
||||
set(ENABLE_GLSLANG_BINARIES OFF CACHE BOOL "Builds glslangValidator and spirv-remap" FORCE)
|
||||
set(ENABLE_HLSL OFF CACHE BOOL "Enables HLSL input support" FORCE)
|
||||
set(ENABLE_OPT OFF CACHE BOOL "Enables spirv-opt capability if present" FORCE)
|
||||
set(ENABLE_CTEST OFF CACHE BOOL "Enables testing" FORCE)
|
||||
add_subdirectory(glslang)
|
||||
if(USE_SYSTEM_GLSLANG)
|
||||
message(STATUS "RPCS3: using shared glslang")
|
||||
find_package(glslang REQUIRED GLOBAL)
|
||||
add_library(3rdparty_glslang INTERFACE)
|
||||
target_link_libraries(3rdparty_glslang INTERFACE glslang::SPIRV)
|
||||
get_target_property(SPIRV_INCLUDE_DIRS glslang::SPIRV INTERFACE_INCLUDE_DIRECTORIES)
|
||||
list(TRANSFORM SPIRV_INCLUDE_DIRS APPEND "/glslang")
|
||||
target_include_directories(3rdparty_glslang INTERFACE ${SPIRV_INCLUDE_DIRS})
|
||||
else()
|
||||
set(ENABLE_PCH OFF CACHE BOOL "Enables Precompiled header" FORCE)
|
||||
set(BUILD_EXTERNAL OFF CACHE BOOL "Build external dependencies in /External" FORCE)
|
||||
set(SKIP_GLSLANG_INSTALL ON CACHE BOOL "Skip installation" FORCE)
|
||||
set(ENABLE_SPVREMAPPER OFF CACHE BOOL "Enables building of SPVRemapper" FORCE)
|
||||
set(ENABLE_GLSLANG_BINARIES OFF CACHE BOOL "Builds glslangValidator and spirv-remap" FORCE)
|
||||
set(ENABLE_HLSL OFF CACHE BOOL "Enables HLSL input support" FORCE)
|
||||
set(ENABLE_OPT OFF CACHE BOOL "Enables spirv-opt capability if present" FORCE)
|
||||
set(ENABLE_CTEST OFF CACHE BOOL "Enables testing" FORCE)
|
||||
add_subdirectory(glslang)
|
||||
add_library(3rdparty_glslang INTERFACE)
|
||||
target_link_libraries(3rdparty_glslang INTERFACE SPIRV)
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -1,22 +1,30 @@
|
|||
# hidapi
|
||||
set(BUILD_SHARED_LIBS FALSE CACHE BOOL "Don't build shared libs")
|
||||
set(HIDAPI_INSTALL_TARGETS FALSE CACHE BOOL "Don't install anything")
|
||||
|
||||
if(CMAKE_SYSTEM MATCHES "Linux")
|
||||
set(HIDAPI_WITH_LIBUSB FALSE CACHE BOOL "Don't build with libusb for linux")
|
||||
endif()
|
||||
|
||||
add_library(3rdparty_hidapi INTERFACE)
|
||||
add_subdirectory(hidapi EXCLUDE_FROM_ALL)
|
||||
|
||||
if(APPLE)
|
||||
target_link_libraries(3rdparty_hidapi INTERFACE hidapi_darwin "-framework CoreFoundation" "-framework IOKit")
|
||||
elseif(CMAKE_SYSTEM MATCHES "Linux")
|
||||
target_link_libraries(3rdparty_hidapi INTERFACE hidapi-hidraw udev)
|
||||
elseif(WIN32)
|
||||
target_link_libraries(3rdparty_hidapi INTERFACE hidapi::hidapi hidapi::include Shlwapi.lib)
|
||||
elseif(ANDROID)
|
||||
target_link_libraries(3rdparty_hidapi INTERFACE hidapi::libusb)
|
||||
if(USE_SYSTEM_HIDAPI)
|
||||
message(STATUS "RPCS3: using shared hidapi")
|
||||
pkg_check_modules(hidapi-hidraw REQUIRED IMPORTED_TARGET hidapi-hidraw)
|
||||
add_library(3rdparty_hidapi INTERFACE)
|
||||
target_link_libraries(3rdparty_hidapi INTERFACE PkgConfig::hidapi-hidraw)
|
||||
target_include_directories(3rdparty_hidapi INTERFACE PkgConfig::hidapi-hidraw)
|
||||
else()
|
||||
target_link_libraries(3rdparty_hidapi INTERFACE hidapi-libusb usb)
|
||||
set(BUILD_SHARED_LIBS FALSE CACHE BOOL "Don't build shared libs")
|
||||
set(HIDAPI_INSTALL_TARGETS FALSE CACHE BOOL "Don't install anything")
|
||||
|
||||
if(CMAKE_SYSTEM MATCHES "Linux")
|
||||
set(HIDAPI_WITH_LIBUSB FALSE CACHE BOOL "Don't build with libusb for linux")
|
||||
endif()
|
||||
|
||||
add_library(3rdparty_hidapi INTERFACE)
|
||||
add_subdirectory(hidapi EXCLUDE_FROM_ALL)
|
||||
|
||||
if(APPLE)
|
||||
target_link_libraries(3rdparty_hidapi INTERFACE hidapi_darwin "-framework CoreFoundation" "-framework IOKit")
|
||||
elseif(CMAKE_SYSTEM MATCHES "Linux")
|
||||
target_link_libraries(3rdparty_hidapi INTERFACE hidapi-hidraw udev)
|
||||
elseif(WIN32)
|
||||
target_link_libraries(3rdparty_hidapi INTERFACE hidapi::hidapi hidapi::include Shlwapi.lib)
|
||||
elseif(ANDROID)
|
||||
target_link_libraries(3rdparty_hidapi INTERFACE hidapi::libusb)
|
||||
else()
|
||||
target_link_libraries(3rdparty_hidapi INTERFACE hidapi-libusb usb)
|
||||
endif()
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit f42423643ec9011c98cccc0bb790722bbbd3f30b
|
||||
Subproject commit d6b2a974608dec3b76fb1e36c189f22b9cf3650c
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit 2b978915d82377df13fcbb1fb56660195ded868a
|
||||
Subproject commit 49363adcfaf098748d7a4c8c624ad8c45a8c3a86
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit c9a6709bd21750f1ad9597be21abace78c6378c9
|
||||
Subproject commit 7f3ae3d57459e59943a4ecfefc8f6277ec6bf540
|
||||
|
|
@ -384,7 +384,6 @@
|
|||
<ClCompile Include="SDL\src\render\opengl\SDL_shaders_gl.c" />
|
||||
<ClCompile Include="SDL\src\render\opengles2\SDL_render_gles2.c" />
|
||||
<ClCompile Include="SDL\src\render\opengles2\SDL_shaders_gles2.c" />
|
||||
<ClCompile Include="SDL\src\render\SDL_d3dmath.c" />
|
||||
<ClCompile Include="SDL\src\render\SDL_render.c" />
|
||||
<ClCompile Include="SDL\src\render\SDL_render_unsupported.c" />
|
||||
<ClCompile Include="SDL\src\render\SDL_yuv_sw.c" />
|
||||
|
|
|
|||
|
|
@ -172,9 +172,6 @@
|
|||
<Filter Include="render\direct3d12">
|
||||
<UniqueIdentifier>{f48c2b17-1bee-4fec-a7c8-24cf619abe08}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="video\intrin">
|
||||
<UniqueIdentifier>{653672cc-90ae-4eba-a256-6479f2c31804}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="main">
|
||||
<UniqueIdentifier>{00001967ea2801028a046a722a070000}</UniqueIdentifier>
|
||||
</Filter>
|
||||
|
|
@ -1460,9 +1457,6 @@
|
|||
<ClCompile Include="SDL\src\sensor\windows\SDL_windowssensor.c">
|
||||
<Filter>sensor\windows</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SDL\src\render\SDL_d3dmath.c">
|
||||
<Filter>render</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SDL\src\render\SDL_render.c">
|
||||
<Filter>render</Filter>
|
||||
</ClCompile>
|
||||
|
|
|
|||
|
|
@ -1,8 +1,21 @@
|
|||
option (UPNPC_BUILD_STATIC "Build static library" TRUE)
|
||||
option (UPNPC_BUILD_SHARED "Build shared library" FALSE)
|
||||
option (UPNPC_BUILD_TESTS "Build test executables" FALSE)
|
||||
option (UPNPC_BUILD_SAMPLE "Build sample executables" FALSE)
|
||||
option (NO_GETADDRINFO "Define NO_GETADDRINFO" FALSE)
|
||||
option (UPNPC_NO_INSTALL "Disable installation" TRUE)
|
||||
if(USE_SYSTEM_MINIUPNPC)
|
||||
message(STATUS "RPCS3: using shared MiniUPnPc")
|
||||
pkg_check_modules(MiniUPnPc REQUIRED IMPORTED_TARGET miniupnpc>=2.3.3)
|
||||
add_library(3rdparty_miniupnpc INTERFACE)
|
||||
target_link_libraries(3rdparty_miniupnpc INTERFACE PkgConfig::MiniUPnPc)
|
||||
target_include_directories(3rdparty_miniupnpc INTERFACE PkgConfig::MiniUPnPc)
|
||||
list(TRANSFORM MiniUPnPc_INCLUDE_DIRS APPEND "/miniupnpc")
|
||||
target_include_directories(3rdparty_miniupnpc INTERFACE ${MiniUPnPc_INCLUDE_DIRS})
|
||||
else()
|
||||
option (UPNPC_BUILD_STATIC "Build static library" TRUE)
|
||||
option (UPNPC_BUILD_SHARED "Build shared library" FALSE)
|
||||
option (UPNPC_BUILD_TESTS "Build test executables" FALSE)
|
||||
option (UPNPC_BUILD_SAMPLE "Build sample executables" FALSE)
|
||||
option (NO_GETADDRINFO "Define NO_GETADDRINFO" FALSE)
|
||||
option (UPNPC_NO_INSTALL "Disable installation" TRUE)
|
||||
|
||||
add_subdirectory(miniupnp/miniupnpc EXCLUDE_FROM_ALL)
|
||||
add_subdirectory(miniupnp/miniupnpc EXCLUDE_FROM_ALL)
|
||||
add_library(3rdparty_miniupnpc INTERFACE)
|
||||
target_link_libraries(3rdparty_miniupnpc INTERFACE libminiupnpc-static)
|
||||
target_include_directories(3rdparty_miniupnpc INTERFACE libminiupnpc-static)
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 50fb5e701d8b0d3fe8262ed84668a94cc8cbf0b1
|
||||
Subproject commit 67f53c26a701c2aeefd8033ec2f2079e04c438ca
|
||||
|
|
@ -6,14 +6,15 @@ find_package(Qt6 ${QT_MIN_VER} CONFIG COMPONENTS Widgets Concurrent Multimedia M
|
|||
if(WIN32)
|
||||
target_link_libraries(3rdparty_qt6 INTERFACE Qt6::Widgets Qt6::Concurrent Qt6::Multimedia Qt6::MultimediaWidgets Qt6::Svg Qt6::SvgWidgets)
|
||||
else()
|
||||
find_package(Qt6 ${QT_MIN_VER} COMPONENTS DBus Gui)
|
||||
set(QT_NO_PRIVATE_MODULE_WARNING ON)
|
||||
find_package(Qt6 ${QT_MIN_VER} COMPONENTS DBus Gui GuiPrivate)
|
||||
if(Qt6DBus_FOUND)
|
||||
target_link_libraries(3rdparty_qt6 INTERFACE Qt6::Widgets Qt6::DBus Qt6::Concurrent Qt6::Multimedia Qt6::MultimediaWidgets Qt6::Svg Qt6::SvgWidgets)
|
||||
target_compile_definitions(3rdparty_qt6 INTERFACE -DHAVE_QTDBUS)
|
||||
else()
|
||||
target_link_libraries(3rdparty_qt6 INTERFACE Qt6::Widgets Qt6::Concurrent Qt6::Multimedia Qt6::MultimediaWidgets Qt6::Svg Qt6::SvgWidgets)
|
||||
endif()
|
||||
target_include_directories(3rdparty_qt6 INTERFACE ${Qt6Gui_PRIVATE_INCLUDE_DIRS})
|
||||
target_link_libraries(3rdparty_qt6 INTERFACE Qt6::GuiPrivate)
|
||||
endif()
|
||||
|
||||
if(Qt6Widgets_FOUND)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,12 @@
|
|||
option(RTMIDI_API_JACK "Compile with JACK support." OFF)
|
||||
option(RTMIDI_BUILD_TESTING "Build test programs" OFF)
|
||||
set(RTMIDI_TARGETNAME_UNINSTALL "uninstall-rpcs3-rtmidi")
|
||||
add_subdirectory(rtmidi EXCLUDE_FROM_ALL)
|
||||
if(USE_SYSTEM_RTMIDI)
|
||||
message(STATUS "RPCS3: using shared RtMidi")
|
||||
pkg_check_modules(RtMidi REQUIRED IMPORTED_TARGET rtmidi>=6.0.0)
|
||||
add_library(rtmidi INTERFACE)
|
||||
target_link_libraries(rtmidi INTERFACE PkgConfig::RtMidi)
|
||||
target_include_directories(rtmidi INTERFACE PkgConfig::RtMidi)
|
||||
else()
|
||||
option(RTMIDI_API_JACK "Compile with JACK support." OFF)
|
||||
option(RTMIDI_BUILD_TESTING "Build test programs" OFF)
|
||||
set(RTMIDI_TARGETNAME_UNINSTALL "uninstall-rpcs3-rtmidi")
|
||||
add_subdirectory(rtmidi EXCLUDE_FROM_ALL)
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -1,8 +1,16 @@
|
|||
option(ZSTD_BUILD_PROGRAMS "BUILD PROGRAMS" OFF)
|
||||
option(ZSTD_BUILD_SHARED "BUILD SHARED LIBRARIES" OFF)
|
||||
option(ZSTD_BUILD_STATIC "BUILD STATIC LIBRARIES" ON)
|
||||
option(ZSTD_BUILD_TESTS "BUILD TESTS" OFF)
|
||||
if(USE_SYSTEM_ZSTD)
|
||||
message(STATUS "RPCS3: using shared zstd")
|
||||
pkg_check_modules(zstd REQUIRED IMPORTED_TARGET libzstd)
|
||||
add_library(3rdparty_zstd INTERFACE)
|
||||
target_link_libraries(3rdparty_zstd INTERFACE PkgConfig::zstd)
|
||||
target_include_directories(3rdparty_zstd INTERFACE PkgConfig::RtMidi)
|
||||
else()
|
||||
option(ZSTD_BUILD_PROGRAMS "BUILD PROGRAMS" OFF)
|
||||
option(ZSTD_BUILD_SHARED "BUILD SHARED LIBRARIES" OFF)
|
||||
option(ZSTD_BUILD_STATIC "BUILD STATIC LIBRARIES" ON)
|
||||
option(ZSTD_BUILD_TESTS "BUILD TESTS" OFF)
|
||||
|
||||
add_subdirectory(zstd/build/cmake EXLUDE_FROM_ALL)
|
||||
add_library(3rdparty_zstd INTERFACE)
|
||||
target_link_libraries(3rdparty_zstd INTERFACE libzstd_static)
|
||||
add_subdirectory(zstd/build/cmake EXCLUDE_FROM_ALL)
|
||||
add_library(3rdparty_zstd INTERFACE)
|
||||
target_link_libraries(3rdparty_zstd INTERFACE libzstd_static)
|
||||
endif()
|
||||
|
|
|
|||
15
BUILDING.md
|
|
@ -8,37 +8,38 @@ Other instructions may be found [here](https://wiki.rpcs3.net/index.php?title=Bu
|
|||
### Windows 10 or later
|
||||
|
||||
The following tools are required to build RPCS3 on Windows 10 or later:
|
||||
- [Visual Studio 2022](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community)
|
||||
- [Visual Studio 2022/2026](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community)
|
||||
- **Optional** - [CMake 3.28.0+](https://www.cmake.org/download/) (add to PATH)
|
||||
|
||||
**NOTES:**
|
||||
- **Visual Studio 2022** integrates **CMake 3.29+** and it also supports both the `sln` solution (`.sln`, `.vcxproj`) and `CMake` solution (`CMakeLists.txt`, `CMakePresets.json`).
|
||||
- **Visual Studio 2026** needs at least **CMake 4.2.0+**.
|
||||
- **Visual Studio 2022/2026** integrates **CMake 3.29+** and it also supports both the `sln` solution (`.sln`, `.vcxproj`) and `CMake` solution (`CMakeLists.txt`, `CMakePresets.json`).
|
||||
See sections [Building with Visual Studio sln solution](#building-with-visual-studio-sln-solution) and [Building with Visual Studio CMake solution](#building-with-visual-studio-cmake-solution)
|
||||
on how to build the project with **Visual Studio**.
|
||||
- Install and use this standalone **CMake** tool just in case of your preference. See section [Building with standalone CMake tool](#building-with-standalone-cmake-tool) on how to build the project
|
||||
with standalone **CMake** tool.
|
||||
|
||||
- [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.10.1](https://www.qt.io/download-qt-installer) In case you can't download from the official installer, you can use [Another Qt installer](https://github.com/miurahr/aqtinstall) (In that case you will need to manually add the "qtmultimedia" module when installing Qt)
|
||||
- [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.
|
||||
|
||||
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.10.1\msvc2022_64\`
|
||||
- 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.
|
||||
|
||||
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.10.1\msvc2022_64\`
|
||||
|
||||
### Linux
|
||||
|
||||
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+
|
||||
- [CMake 3.28.0+](https://www.cmake.org/download/)
|
||||
- [Qt 6.9.1](https://www.qt.io/download-qt-installer)
|
||||
- [Qt 6.10.1](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.
|
||||
- [SDL3](https://github.com/libsdl-org/SDL/releases) (for the FAudio backend)
|
||||
|
||||
|
|
@ -121,7 +122,7 @@ Start **Visual Studio**, click on `Open a project or solution` and select the `r
|
|||
##### Configuring the Qt Plugin (if used)
|
||||
|
||||
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.10.1\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**)
|
||||
4) set `Build: Run pre-build setup` to `true`. (Only available in the **Legacy Qt Plugin**)
|
||||
|
||||
|
|
|
|||
|
|
@ -22,6 +22,12 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|||
endif()
|
||||
endif()
|
||||
|
||||
if(APPLE OR WIN32)
|
||||
set(USE_SYSTEM_OPENAL_DEFAULT OFF)
|
||||
else()
|
||||
set(USE_SYSTEM_OPENAL_DEFAULT ON)
|
||||
endif()
|
||||
|
||||
option(USE_NATIVE_INSTRUCTIONS "USE_NATIVE_INSTRUCTIONS makes rpcs3 compile with -march=native, which is useful for local builds, but not good for packages." ON)
|
||||
option(WITH_LLVM "Enable usage of LLVM library" ON)
|
||||
option(BUILD_LLVM "Build LLVM from git submodule" OFF)
|
||||
|
|
@ -37,19 +43,26 @@ option(USE_SYSTEM_CURL "Prefer system Curl instead of the prebuild one" ON)
|
|||
option(USE_SYSTEM_FAUDIO "Prefer system FAudio instead of the builtin one" OFF)
|
||||
option(USE_SYSTEM_FFMPEG "Prefer system ffmpeg instead of the prebuild one" OFF)
|
||||
option(USE_SYSTEM_FLATBUFFERS "Prefer system flatbuffers instead of the builtin one" OFF)
|
||||
option(USE_SYSTEM_GLSLANG "Prefer system glslang instead of the builtin one" OFF)
|
||||
option(USE_SYSTEM_HIDAPI "Prefer system hidapi instead of the builtin one" OFF)
|
||||
option(USE_SYSTEM_LIBPNG "Prefer system libpng instead of the builtin one" OFF)
|
||||
option(USE_SYSTEM_LIBUSB "Prefer system libusb instead of the builtin one" OFF)
|
||||
option(USE_SYSTEM_MINIUPNPC "Prefer system MiniUPnPc instead of the builtin one" OFF)
|
||||
option(USE_SYSTEM_MVK "Prefer system MoltenVK instead of the builtin one" OFF)
|
||||
option(USE_SYSTEM_OPENAL "Prefer system OpenAL instead of the prebuild one" ON)
|
||||
option(USE_SYSTEM_OPENAL "Prefer system OpenAL instead of the prebuild one" ${USE_SYSTEM_OPENAL_DEFAULT})
|
||||
option(USE_SYSTEM_OPENCV "Prefer system OpenCV instead of the builtin one" ON)
|
||||
option(USE_SYSTEM_PUGIXML "Prefer system pugixml instead of the builtin one" OFF)
|
||||
option(USE_SYSTEM_RTMIDI "Prefer system RtMidi instead of the builtin one" OFF)
|
||||
option(USE_SYSTEM_SDL "Prefer system SDL instead of the builtin one" ON)
|
||||
option(USE_SYSTEM_WOLFSSL "Prefer system MoltenVK instead of the builtin one" OFF)
|
||||
option(USE_SYSTEM_VULKAN_MEMORY_ALLOCATOR "Prefer system Vulkan Memory Allocator instead of the builtin one" OFF)
|
||||
option(USE_SYSTEM_WOLFSSL "Prefer system wolfSSL instead of the builtin one" OFF)
|
||||
option(USE_SYSTEM_ZLIB "Prefer system ZLIB instead of the builtin one" ON)
|
||||
option(USE_SYSTEM_ZSTD "Prefer system zstd instead of the builtin one" OFF)
|
||||
option(HAS_MEMORY_BREAKPOINTS "Add support for memory breakpoints to the interpreter" OFF)
|
||||
option(USE_LTO "Use LTO for building" ON)
|
||||
option(BUILD_RPCS3_TESTS "Build RPCS3 unit tests." OFF)
|
||||
option(RUN_RPCS3_TESTS "Run RPCS3 unit tests. Requires BUILD_RPCS3_TESTS" OFF)
|
||||
option(USE_GAMEMODE "Choose whether to enable GameMode features or not." ON)
|
||||
|
||||
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/buildfiles/cmake")
|
||||
|
||||
|
|
@ -120,7 +133,7 @@ if(MSVC)
|
|||
endif()
|
||||
|
||||
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()
|
||||
|
||||
if(APPLE AND CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
|
||||
|
|
@ -154,11 +167,10 @@ endif()
|
|||
|
||||
## Look for Gamemode if its installed on Linux
|
||||
if(LINUX)
|
||||
find_program(GAMEMODE_FOUND gamemoded) ## Only works if gamemode is installed on system (might include lib32 case)
|
||||
if(GAMEMODE_FOUND)
|
||||
## User chooses whether to Enable GameMode features or not
|
||||
if(USE_GAMEMODE)
|
||||
add_compile_definitions(GAMEMODE_AVAILABLE)
|
||||
endif()
|
||||
message(GAMEMODE_AVAILABLE="${GAMEMODE_AVAILABLE}")
|
||||
endif()
|
||||
|
||||
# TODO: do real installation, including copying directory structure
|
||||
|
|
|
|||
|
|
@ -166,6 +166,55 @@ bool try_to_uint64(u64* out, std::string_view value, u64 min, u64 max)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool try_to_uint128(u128* out, std::string_view value)
|
||||
{
|
||||
if (value.empty())
|
||||
{
|
||||
if (out) cfg_log.error("cfg::try_to_uint128(): called with an empty string");
|
||||
return false;
|
||||
}
|
||||
|
||||
u64 result_low = 0, result_high = 0;
|
||||
const char* start_high64 = value.data();
|
||||
const char* end = value.data() + value.size();
|
||||
|
||||
if (start_high64[0] == '0' && value.size() >= 2 && (start_high64[1] == 'x' || start_high64[1] == 'X'))
|
||||
{
|
||||
// Hex support
|
||||
start_high64 += 2;
|
||||
}
|
||||
|
||||
const char* start_low64 = end - std::min<usz>(end - start_high64, 16);
|
||||
|
||||
// Hexadecimal-only
|
||||
constexpr int base = 16;
|
||||
|
||||
auto ret = std::from_chars(start_low64, end, result_low, base);
|
||||
|
||||
if (ret.ec != std::errc() || ret.ptr != end)
|
||||
{
|
||||
if (out) cfg_log.error("cfg::try_to_uint128('%s'): invalid integer", value);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (start_high64 == start_low64)
|
||||
{
|
||||
if (out) *out = result_low;
|
||||
return true;
|
||||
}
|
||||
|
||||
ret = std::from_chars(start_high64, start_low64, result_high, base);
|
||||
|
||||
if (ret.ec != std::errc() || ret.ptr != start_low64)
|
||||
{
|
||||
if (out) cfg_log.error("cfg::try_to_uint128('%s'): invalid integer", value);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (out) *out = result_low + (u128{result_high} << 64);
|
||||
return true;
|
||||
}
|
||||
|
||||
std::vector<std::string> cfg::make_float_range(f64 min, f64 max)
|
||||
{
|
||||
return {std::to_string(min), std::to_string(max)};
|
||||
|
|
@ -278,6 +327,19 @@ bool cfg::try_to_enum_value(u64* out, decltype(&fmt_class_string<int>::format) f
|
|||
return true;
|
||||
}
|
||||
|
||||
std::string cfg::uint128::to_string(u128 value) noexcept
|
||||
{
|
||||
std::string result = "0x";
|
||||
result.resize(result.size() + 32);
|
||||
|
||||
for (u32 i = 0; i < 32; i++)
|
||||
{
|
||||
result[result.size() - 1 - i] = "0123456789ABCDEF"[static_cast<u64>(value >> (i * 4)) % 16];
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
std::vector<std::string> cfg::try_to_enum_list(decltype(&fmt_class_string<int>::format) func)
|
||||
{
|
||||
std::vector<std::string> result;
|
||||
|
|
@ -553,19 +615,12 @@ void cfg::node::from_default()
|
|||
}
|
||||
}
|
||||
|
||||
void cfg::_bool::from_default()
|
||||
void cfg::node::restore_defaults()
|
||||
{
|
||||
m_value = def;
|
||||
}
|
||||
|
||||
void cfg::string::from_default()
|
||||
{
|
||||
m_value = def;
|
||||
}
|
||||
|
||||
void cfg::set_entry::from_default()
|
||||
{
|
||||
m_set = {};
|
||||
for (auto& node : m_nodes)
|
||||
{
|
||||
node->restore_defaults();
|
||||
}
|
||||
}
|
||||
|
||||
std::string cfg::map_entry::get_value(std::string_view key)
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ namespace cfg
|
|||
_enum, // cfg::_enum type
|
||||
_int, // cfg::_int type
|
||||
uint, // cfg::uint type
|
||||
uint128, // cfg::uint128 type
|
||||
string, // cfg::string type
|
||||
set, // cfg::set_entry type
|
||||
map, // cfg::map_entry type
|
||||
|
|
@ -90,6 +91,9 @@ namespace cfg
|
|||
// Reset defaults
|
||||
virtual void from_default() = 0;
|
||||
|
||||
// Restore default members
|
||||
virtual void restore_defaults() = 0;
|
||||
|
||||
// Convert to string (optional)
|
||||
virtual std::string to_string() const
|
||||
{
|
||||
|
|
@ -151,11 +155,15 @@ namespace cfg
|
|||
|
||||
// Set default values
|
||||
void from_default() override;
|
||||
|
||||
// Restore default members
|
||||
void restore_defaults() override;
|
||||
};
|
||||
|
||||
class _bool final : public _base
|
||||
{
|
||||
atomic_t<bool> m_value;
|
||||
bool original_def;
|
||||
|
||||
public:
|
||||
bool def;
|
||||
|
|
@ -163,6 +171,7 @@ namespace cfg
|
|||
_bool(node* owner, std::string name, bool def = false, bool dynamic = false)
|
||||
: _base(type::_bool, owner, std::move(name), dynamic)
|
||||
, m_value(def)
|
||||
, original_def(def)
|
||||
, def(def)
|
||||
{
|
||||
}
|
||||
|
|
@ -177,7 +186,15 @@ namespace cfg
|
|||
return m_value;
|
||||
}
|
||||
|
||||
void from_default() override;
|
||||
void from_default() override
|
||||
{
|
||||
m_value = def;
|
||||
}
|
||||
|
||||
void restore_defaults() override
|
||||
{
|
||||
def = original_def;
|
||||
}
|
||||
|
||||
std::string to_string() const override
|
||||
{
|
||||
|
|
@ -220,14 +237,16 @@ namespace cfg
|
|||
class _enum : public _base
|
||||
{
|
||||
atomic_t<T> m_value;
|
||||
T original_def;
|
||||
|
||||
public:
|
||||
const T def;
|
||||
T def;
|
||||
|
||||
_enum(node* owner, const std::string& name, T value = {}, bool dynamic = false)
|
||||
_enum(node* owner, const std::string& name, T def = {}, bool dynamic = false)
|
||||
: _base(type::_enum, owner, name, dynamic)
|
||||
, m_value(value)
|
||||
, def(value)
|
||||
, m_value(def)
|
||||
, original_def(def)
|
||||
, def(def)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -256,6 +275,11 @@ namespace cfg
|
|||
m_value = def;
|
||||
}
|
||||
|
||||
void restore_defaults() override
|
||||
{
|
||||
def = original_def;
|
||||
}
|
||||
|
||||
std::string to_string() const override
|
||||
{
|
||||
std::string result;
|
||||
|
|
@ -300,6 +324,7 @@ namespace cfg
|
|||
using int_type = std::conditional_t<Min >= s32{smin} && Max <= s32{smax}, s32, s64>;
|
||||
|
||||
atomic_t<int_type> m_value;
|
||||
int_type original_def;
|
||||
|
||||
public:
|
||||
int_type def;
|
||||
|
|
@ -311,6 +336,7 @@ namespace cfg
|
|||
_int(node* owner, const std::string& name, int_type def = std::min<int_type>(Max, std::max<int_type>(Min, 0)), bool dynamic = false)
|
||||
: _base(type::_int, owner, name, dynamic)
|
||||
, m_value(def)
|
||||
, original_def(def)
|
||||
, def(def)
|
||||
{
|
||||
}
|
||||
|
|
@ -330,6 +356,11 @@ namespace cfg
|
|||
m_value = def;
|
||||
}
|
||||
|
||||
void restore_defaults() override
|
||||
{
|
||||
def = original_def;
|
||||
}
|
||||
|
||||
std::string to_string() const override
|
||||
{
|
||||
return std::to_string(m_value);
|
||||
|
|
@ -372,6 +403,7 @@ namespace cfg
|
|||
|
||||
using float_type = f64;
|
||||
atomic_t<float_type> m_value;
|
||||
float_type original_def;
|
||||
|
||||
public:
|
||||
float_type def;
|
||||
|
|
@ -383,6 +415,7 @@ namespace cfg
|
|||
_float(node* owner, const std::string& name, float_type def = std::min<float_type>(Max, std::max<float_type>(Min, 0)), bool dynamic = false)
|
||||
: _base(type::_int, owner, name, dynamic)
|
||||
, m_value(def)
|
||||
, original_def(def)
|
||||
, def(def)
|
||||
{
|
||||
}
|
||||
|
|
@ -402,6 +435,11 @@ namespace cfg
|
|||
m_value = def;
|
||||
}
|
||||
|
||||
void restore_defaults() override
|
||||
{
|
||||
def = original_def;
|
||||
}
|
||||
|
||||
std::string to_string() const override
|
||||
{
|
||||
std::string result;
|
||||
|
|
@ -464,6 +502,7 @@ namespace cfg
|
|||
using int_type = std::conditional_t<Max <= u32{umax}, u32, u64>;
|
||||
|
||||
atomic_t<int_type> m_value;
|
||||
int_type original_def;
|
||||
|
||||
public:
|
||||
int_type def;
|
||||
|
|
@ -475,6 +514,7 @@ namespace cfg
|
|||
uint(node* owner, const std::string& name, int_type def = std::max<int_type>(Min, 0), bool dynamic = false)
|
||||
: _base(type::uint, owner, name, dynamic)
|
||||
, m_value(def)
|
||||
, original_def(def)
|
||||
, def(def)
|
||||
{
|
||||
}
|
||||
|
|
@ -494,6 +534,11 @@ namespace cfg
|
|||
m_value = def;
|
||||
}
|
||||
|
||||
void restore_defaults() override
|
||||
{
|
||||
def = original_def;
|
||||
}
|
||||
|
||||
std::string to_string() const override
|
||||
{
|
||||
return std::to_string(m_value);
|
||||
|
|
@ -534,10 +579,91 @@ namespace cfg
|
|||
// Alias for 64 bit int
|
||||
using uint64 = uint<0, u64{umax}>;
|
||||
|
||||
// Unsigned 128-bit integer entry.
|
||||
class uint128 final : public _base
|
||||
{
|
||||
using int_type = u128;
|
||||
|
||||
atomic_t<int_type> m_value{};
|
||||
int_type original_def = 0;
|
||||
|
||||
public:
|
||||
int_type def;
|
||||
|
||||
uint128(node* owner, const std::string& name, int_type def = 0, bool dynamic = false)
|
||||
: _base(type::uint128, owner, name, dynamic)
|
||||
, m_value(def)
|
||||
, original_def(def)
|
||||
, def(def)
|
||||
{
|
||||
}
|
||||
|
||||
operator int_type() const
|
||||
{
|
||||
return m_value;
|
||||
}
|
||||
|
||||
operator ullong() const
|
||||
{
|
||||
return static_cast<ullong>(m_value.load());
|
||||
}
|
||||
|
||||
int_type get() const
|
||||
{
|
||||
return m_value;
|
||||
}
|
||||
|
||||
void from_default() override
|
||||
{
|
||||
m_value = def;
|
||||
}
|
||||
|
||||
void restore_defaults() override
|
||||
{
|
||||
def = original_def;
|
||||
}
|
||||
|
||||
static std::string to_string(u128 value) noexcept;
|
||||
|
||||
std::string to_string() const override
|
||||
{
|
||||
return to_string(m_value.load());
|
||||
}
|
||||
|
||||
std::string def_to_string() const override
|
||||
{
|
||||
return to_string(def);
|
||||
}
|
||||
|
||||
bool from_string(std::string_view value, bool /*dynamic*/ = false) override
|
||||
{
|
||||
u128 result;
|
||||
if (try_to_uint128(&result, value))
|
||||
{
|
||||
m_value = result;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void set(u128 value)
|
||||
{
|
||||
m_value = value;
|
||||
}
|
||||
|
||||
std::vector<std::string> to_list() const override
|
||||
{
|
||||
// Should not be used
|
||||
return make_uint_range(0, 1);
|
||||
}
|
||||
};
|
||||
|
||||
// Simple string entry with mutex
|
||||
class string : public _base
|
||||
{
|
||||
atomic_ptr<std::string> m_value;
|
||||
std::string original_def;
|
||||
|
||||
public:
|
||||
std::string def;
|
||||
|
|
@ -545,6 +671,7 @@ namespace cfg
|
|||
string(node* owner, std::string name, std::string def = {}, bool dynamic = false)
|
||||
: _base(type::string, owner, std::move(name), dynamic)
|
||||
, m_value(def)
|
||||
, original_def(def)
|
||||
, def(std::move(def))
|
||||
{
|
||||
}
|
||||
|
|
@ -554,7 +681,15 @@ namespace cfg
|
|||
return *m_value.load().get();
|
||||
}
|
||||
|
||||
void from_default() override;
|
||||
void from_default() override
|
||||
{
|
||||
m_value = def;
|
||||
}
|
||||
|
||||
void restore_defaults() override
|
||||
{
|
||||
def = original_def;
|
||||
}
|
||||
|
||||
std::string to_string() const override
|
||||
{
|
||||
|
|
@ -595,7 +730,14 @@ namespace cfg
|
|||
m_set = std::move(set);
|
||||
}
|
||||
|
||||
void from_default() override;
|
||||
void from_default() override
|
||||
{
|
||||
m_set = {};
|
||||
}
|
||||
|
||||
void restore_defaults() override
|
||||
{
|
||||
}
|
||||
|
||||
std::vector<std::string> to_list() const override
|
||||
{
|
||||
|
|
@ -636,6 +778,10 @@ namespace cfg
|
|||
void erase(std::string_view key);
|
||||
|
||||
void from_default() override;
|
||||
|
||||
void restore_defaults() override
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
class node_map_entry final : public map_entry
|
||||
|
|
@ -665,6 +811,10 @@ namespace cfg
|
|||
void set_map(map_of_type<logs::level>&& map);
|
||||
|
||||
void from_default() override;
|
||||
|
||||
void restore_defaults() override
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
struct device_info
|
||||
|
|
@ -702,5 +852,9 @@ namespace cfg
|
|||
void set_map(map_of_type<device_info>&& map);
|
||||
|
||||
void from_default() override;
|
||||
|
||||
void restore_defaults() override
|
||||
{
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -658,7 +658,11 @@ jit_compiler::jit_compiler(const std::unordered_map<std::string, u64>& _link, co
|
|||
std::string result;
|
||||
|
||||
auto null_mod = std::make_unique<llvm::Module> ("null_", *m_context);
|
||||
#if LLVM_VERSION_MAJOR >= 21 && (LLVM_VERSION_MINOR >= 1 || LLVM_VERSION_MAJOR >= 22)
|
||||
null_mod->setTargetTriple(llvm::Triple(jit_compiler::triple1()));
|
||||
#else
|
||||
null_mod->setTargetTriple(jit_compiler::triple1());
|
||||
#endif
|
||||
|
||||
std::unique_ptr<llvm::RTDyldMemoryManager> mem;
|
||||
|
||||
|
|
@ -672,7 +676,11 @@ jit_compiler::jit_compiler(const std::unordered_map<std::string, u64>& _link, co
|
|||
else
|
||||
{
|
||||
mem = std::make_unique<MemoryManager2>(std::move(symbols_cement));
|
||||
#if LLVM_VERSION_MAJOR >= 21 && (LLVM_VERSION_MINOR >= 1 || LLVM_VERSION_MAJOR >= 22)
|
||||
null_mod->setTargetTriple(llvm::Triple(jit_compiler::triple2()));
|
||||
#else
|
||||
null_mod->setTargetTriple(jit_compiler::triple2());
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -83,7 +83,8 @@ std::string fmt::win_error_to_string(unsigned long error, void* module_handle)
|
|||
if (FormatMessageW((module_handle ? FORMAT_MESSAGE_FROM_HMODULE : FORMAT_MESSAGE_FROM_SYSTEM) | FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
module_handle, error, 0, reinterpret_cast<LPWSTR>(&message_buffer), 0, nullptr))
|
||||
{
|
||||
message = fmt::format("%s (0x%x)", fmt::trim(wchar_to_utf8(message_buffer), " \t\n\r\f\v"), error);
|
||||
const std::string utf8 = wchar_to_utf8(message_buffer);
|
||||
message = fmt::format("%s (0x%x)", fmt::trim_sv(utf8, " \t\n\r\f\v"), error);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -823,6 +824,50 @@ std::vector<std::string> fmt::split(std::string_view source, std::initializer_li
|
|||
return result;
|
||||
}
|
||||
|
||||
std::vector<std::string_view> fmt::split_sv(std::string_view source, std::initializer_list<std::string_view> separators, bool is_skip_empty)
|
||||
{
|
||||
std::vector<std::string_view> result;
|
||||
|
||||
for (usz index = 0; index < source.size();)
|
||||
{
|
||||
usz pos = -1;
|
||||
usz sep_size = 0;
|
||||
|
||||
for (auto& separator : separators)
|
||||
{
|
||||
if (usz pos0 = source.find(separator, index); pos0 < pos)
|
||||
{
|
||||
pos = pos0;
|
||||
sep_size = separator.size();
|
||||
}
|
||||
}
|
||||
|
||||
if (!sep_size)
|
||||
{
|
||||
result.emplace_back(&source[index], source.size() - index);
|
||||
return result;
|
||||
}
|
||||
|
||||
std::string_view piece = {&source[index], pos - index};
|
||||
|
||||
index = pos + sep_size;
|
||||
|
||||
if (piece.empty() && is_skip_empty)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
result.emplace_back(std::move(piece));
|
||||
}
|
||||
|
||||
if (result.empty() && !is_skip_empty)
|
||||
{
|
||||
result.emplace_back();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
std::string fmt::trim(const std::string& source, std::string_view values)
|
||||
{
|
||||
const usz begin = source.find_first_not_of(values);
|
||||
|
|
@ -838,6 +883,21 @@ std::string fmt::trim(const std::string& source, std::string_view values)
|
|||
return source.substr(begin, end + 1 - begin);
|
||||
}
|
||||
|
||||
std::string_view fmt::trim_sv(std::string_view source, std::string_view values)
|
||||
{
|
||||
const usz begin = source.find_first_not_of(values);
|
||||
|
||||
if (begin == source.npos)
|
||||
return {};
|
||||
|
||||
const usz end = source.find_last_not_of(values);
|
||||
|
||||
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)
|
||||
{
|
||||
const usz begin = source.find_first_not_of(values);
|
||||
|
|
@ -848,12 +908,32 @@ std::string fmt::trim_front(const std::string& source, std::string_view values)
|
|||
return source.substr(begin);
|
||||
}
|
||||
|
||||
std::string_view fmt::trim_front_sv(std::string_view source, std::string_view values)
|
||||
{
|
||||
const usz begin = source.find_first_not_of(values);
|
||||
|
||||
if (begin == source.npos)
|
||||
return {};
|
||||
|
||||
return source.substr(begin);
|
||||
}
|
||||
|
||||
void fmt::trim_back(std::string& source, std::string_view values)
|
||||
{
|
||||
const usz index = source.find_last_not_of(values);
|
||||
source.resize(index + 1);
|
||||
}
|
||||
|
||||
std::string_view fmt::trim_back_sv(std::string_view source, std::string_view values)
|
||||
{
|
||||
const usz index = source.find_last_not_of(values);
|
||||
if (index == std::string_view::npos)
|
||||
return {};
|
||||
|
||||
source.remove_suffix(source.size() - (index + 1));
|
||||
return source;
|
||||
}
|
||||
|
||||
std::string fmt::to_upper(std::string_view string)
|
||||
{
|
||||
std::string result;
|
||||
|
|
|
|||
|
|
@ -394,7 +394,7 @@ namespace fmt
|
|||
}
|
||||
|
||||
#if !defined(_MSC_VER) || defined(__clang__)
|
||||
[[noreturn]] ~throw_exception();
|
||||
[[noreturn]] ~throw_exception() = default;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -28,6 +28,9 @@ bool try_to_int64(s64* out, std::string_view value, s64 min, s64 max);
|
|||
// Convert string to unsigned integer
|
||||
bool try_to_uint64(u64* out, std::string_view value, u64 min, u64 max);
|
||||
|
||||
// Convert string to unsigned int128_t
|
||||
bool try_to_uint128(u128* out, std::string_view value);
|
||||
|
||||
// Convert string to float
|
||||
bool try_to_float(f64* out, std::string_view value, f64 min, f64 max);
|
||||
|
||||
|
|
@ -136,57 +139,90 @@ namespace fmt
|
|||
// 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);
|
||||
|
||||
// Splits the string_view into a vector of string_views using the separators. The vector may contain empty string_views unless is_skip_empty is true.
|
||||
std::vector<std::string_view> split_sv(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");
|
||||
|
||||
// Removes all preceding and trailing characters specified by 'values' from 'source' and returns the result.
|
||||
std::string_view trim_sv(std::string_view 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");
|
||||
|
||||
// Removes all preceding characters specified by 'values' from 'source' and returns the result.
|
||||
std::string_view trim_front_sv(std::string_view 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");
|
||||
|
||||
// Removes all trailing characters specified by 'values' from 'source' and returns the result.
|
||||
std::string_view trim_back_sv(std::string_view source, std::string_view values = " \t");
|
||||
|
||||
template <typename T>
|
||||
std::string merge(const T& source, const std::string& separator)
|
||||
std::string merge(const T& source, std::string_view separator)
|
||||
{
|
||||
if (source.empty())
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
usz total = (source.size() - 1) * separator.size();
|
||||
for (const auto& s : source)
|
||||
{
|
||||
total += s.size();
|
||||
}
|
||||
|
||||
std::string result;
|
||||
result.reserve(total);
|
||||
|
||||
auto it = source.begin();
|
||||
auto end = source.end();
|
||||
|
||||
for (--end; it != end; ++it)
|
||||
{
|
||||
result += std::string{*it} + separator;
|
||||
result.append(*it);
|
||||
|
||||
if (!separator.empty())
|
||||
result.append(separator);
|
||||
}
|
||||
|
||||
return result + std::string{source.back()};
|
||||
return result.append(source.back());
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
std::string merge(std::initializer_list<T> sources, const std::string& separator)
|
||||
std::string merge(std::initializer_list<T> sources, std::string_view separator)
|
||||
{
|
||||
if (!sources.size())
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
usz total = (sources.size() - 1) * separator.size();
|
||||
for (const auto& s : sources)
|
||||
{
|
||||
if (s.empty()) continue;
|
||||
total += s.size() + (s.size() - 1) * separator.size();
|
||||
}
|
||||
|
||||
std::string result;
|
||||
result.reserve(total);
|
||||
|
||||
bool first = true;
|
||||
|
||||
for (const auto& v : sources)
|
||||
{
|
||||
if (first)
|
||||
{
|
||||
result = fmt::merge(v, separator);
|
||||
first = false;
|
||||
first = false;
|
||||
}
|
||||
else
|
||||
else if (!separator.empty())
|
||||
{
|
||||
result += separator + fmt::merge(v, separator);
|
||||
result.append(separator);
|
||||
}
|
||||
|
||||
result.append(fmt::merge(v, separator));
|
||||
}
|
||||
|
||||
return result;
|
||||
|
|
|
|||
|
|
@ -106,6 +106,11 @@ thread_local u64 g_tls_wait_fail = 0;
|
|||
thread_local bool g_tls_access_violation_recovered = false;
|
||||
extern thread_local std::string(*g_tls_log_prefix)();
|
||||
|
||||
namespace stx
|
||||
{
|
||||
atomic_t<u32> g_launch_retainer{0};
|
||||
}
|
||||
|
||||
// Report error and call std::abort(), defined in main.cpp
|
||||
[[noreturn]] void report_fatal_error(std::string_view text, bool is_html = false, bool include_help_text = true);
|
||||
|
||||
|
|
|
|||
|
|
@ -465,6 +465,8 @@ public:
|
|||
namespace stx
|
||||
{
|
||||
struct launch_retainer;
|
||||
|
||||
extern atomic_t<u32> g_launch_retainer;
|
||||
}
|
||||
|
||||
// Derived from the callable object Context, possibly a lambda
|
||||
|
|
@ -481,6 +483,11 @@ class named_thread final : public Context, result_storage<Context>, thread_base
|
|||
|
||||
u64 entry_point2()
|
||||
{
|
||||
while (u32 value = stx::g_launch_retainer)
|
||||
{
|
||||
stx::g_launch_retainer.wait(value);
|
||||
}
|
||||
|
||||
thread::initialize([]()
|
||||
{
|
||||
if constexpr (!result::empty)
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ Intersection (&) and symmetric difference (^) is also available.
|
|||
|
||||
#include "util/types.hpp"
|
||||
#include "util/atomic.hpp"
|
||||
#include "Utilities/StrFmt.h"
|
||||
|
||||
template <typename T>
|
||||
concept BitSetEnum = std::is_enum_v<T> && requires(T x)
|
||||
|
|
@ -384,6 +383,9 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
struct fmt_unveil;
|
||||
|
||||
template <typename T>
|
||||
struct fmt_unveil<bs_t<T>>
|
||||
{
|
||||
|
|
|
|||
|
|
@ -27,9 +27,9 @@ void fmt_class_string<cheat_type>::format(std::string& out, u64 arg)
|
|||
});
|
||||
}
|
||||
|
||||
bool cheat_info::from_str(const std::string& 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;
|
||||
if (cheat_vec.size() != 5 || !try_to_int64(&val64, cheat_vec[2], 0, cheat_type_max - 1))
|
||||
|
|
|
|||
|
|
@ -28,6 +28,6 @@ struct cheat_info
|
|||
u32 offset{};
|
||||
std::string red_script{};
|
||||
|
||||
bool from_str(const std::string& cheat_line);
|
||||
bool from_str(std::string_view cheat_line);
|
||||
std::string to_str() const;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
#pragma once
|
||||
|
||||
// Generic deferred routine wrapper
|
||||
// Use-case is similar to "defer" statement in other languages, just invokes a callback when the object goes out of scope
|
||||
|
||||
#include <functional>
|
||||
|
||||
namespace utils
|
||||
{
|
||||
template <typename F>
|
||||
requires std::is_invocable_v<F>
|
||||
class deferred_op
|
||||
{
|
||||
public:
|
||||
deferred_op(F&& callback)
|
||||
: m_callback(callback)
|
||||
{}
|
||||
|
||||
~deferred_op()
|
||||
{
|
||||
m_callback();
|
||||
}
|
||||
|
||||
private:
|
||||
F m_callback;
|
||||
};
|
||||
}
|
||||
|
|
@ -81,16 +81,26 @@ inline int futex(volatile void* uaddr, int futex_op, uint val, const timespec* t
|
|||
{
|
||||
struct waiter
|
||||
{
|
||||
uint val;
|
||||
uint mask;
|
||||
std::condition_variable cv;
|
||||
uint val;
|
||||
uint mask;
|
||||
std::condition_variable cv;
|
||||
};
|
||||
|
||||
std::mutex mutex;
|
||||
std::unordered_multimap<volatile void*, waiter*> map;
|
||||
struct bucket_t
|
||||
{
|
||||
std::mutex mutex;
|
||||
std::unordered_multimap<volatile void*, waiter*> map;
|
||||
};
|
||||
|
||||
// Not a power of 2 on purpose (for alignment optimiations)
|
||||
bucket_t bucks[63];
|
||||
|
||||
int operator()(volatile void* uaddr, int futex_op, uint val, const timespec* timeout, uint mask)
|
||||
{
|
||||
auto& bucket = bucks[(reinterpret_cast<u64>(uaddr) / 8) % std::size(bucks)];
|
||||
auto& mutex = bucket.mutex;
|
||||
auto& map = bucket.map;
|
||||
|
||||
std::unique_lock lock(mutex);
|
||||
|
||||
switch (futex_op)
|
||||
|
|
@ -111,7 +121,9 @@ inline int futex(volatile void* uaddr, int futex_op, uint val, const timespec* t
|
|||
waiter rec;
|
||||
rec.val = val;
|
||||
rec.mask = mask;
|
||||
const auto& ref = *map.emplace(uaddr, &rec);
|
||||
|
||||
// Announce the waiter
|
||||
map.emplace(uaddr, &rec);
|
||||
|
||||
int res = 0;
|
||||
|
||||
|
|
@ -127,6 +139,16 @@ inline int futex(volatile void* uaddr, int futex_op, uint val, const timespec* t
|
|||
{
|
||||
res = -1;
|
||||
errno = ETIMEDOUT;
|
||||
|
||||
// Cleanup
|
||||
for (auto range = map.equal_range(uaddr); range.first != range.second; range.first++)
|
||||
{
|
||||
if (range.first->second == &rec)
|
||||
{
|
||||
map.erase(range.first);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -134,7 +156,6 @@ inline int futex(volatile void* uaddr, int futex_op, uint val, const timespec* t
|
|||
// TODO: absolute timeout
|
||||
}
|
||||
|
||||
map.erase(std::find(map.find(uaddr), map.end(), ref));
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
@ -153,13 +174,29 @@ inline int futex(volatile void* uaddr, int futex_op, uint val, const timespec* t
|
|||
|
||||
if (entry.mask & mask)
|
||||
{
|
||||
entry.cv.notify_one();
|
||||
entry.mask = 0;
|
||||
entry.cv.notify_one();
|
||||
res++;
|
||||
val--;
|
||||
}
|
||||
}
|
||||
|
||||
if (res)
|
||||
{
|
||||
// Cleanup
|
||||
for (auto range = map.equal_range(uaddr); range.first != range.second;)
|
||||
{
|
||||
if (range.first->second->mask == 0)
|
||||
{
|
||||
map.erase(range.first);
|
||||
range = map.equal_range(uaddr);
|
||||
continue;
|
||||
}
|
||||
|
||||
range.first++;
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,24 +4,28 @@ by Ani @ https://github.com/AniLeo
|
|||
r1 (2018.02.27)
|
||||
r2 (2021.08.28)
|
||||
r3 (2022.08.20)
|
||||
r4 (2025.09.14)
|
||||
*/
|
||||
|
||||
/*
|
||||
Color Scheme
|
||||
|
||||
- Pod Programs
|
||||
8c806a
|
||||
bd9d86
|
||||
c1b398
|
||||
eadfb1
|
||||
ebe4d2
|
||||
#8c806a
|
||||
#bd9d86
|
||||
#c1b398
|
||||
#eadfb1
|
||||
#ebe4d2
|
||||
|
||||
- Light
|
||||
b3ac98
|
||||
aea993
|
||||
#b3ac98
|
||||
#aea993
|
||||
|
||||
- Dark
|
||||
4d4940
|
||||
#4d4940
|
||||
|
||||
- Disabled
|
||||
#828790
|
||||
*/
|
||||
|
||||
|
||||
|
|
@ -55,31 +59,6 @@ QTextEdit, QPlainTextEdit {
|
|||
font-size: 8.50pt;
|
||||
}
|
||||
|
||||
/*
|
||||
QListWidget, QTreeWidget: Style checkboxes and rows
|
||||
|
||||
RPCS3: LLE/HLE Selector, Debugger
|
||||
*/
|
||||
QListWidget::item {
|
||||
margin-top: 0.05em;
|
||||
margin-bottom: 0.05em;
|
||||
}
|
||||
QListWidget::indicator, QTreeWidget::indicator {
|
||||
border: 0.05em solid #4d4940;
|
||||
}
|
||||
QListWidget::indicator::unchecked, QTreeWidget::indicator::unchecked {
|
||||
background-color: #b3ac98;
|
||||
}
|
||||
QListWidget::indicator::checked, QTreeWidget::indicator::checked {
|
||||
background-color: #4d4940;
|
||||
}
|
||||
QListWidget::indicator::disabled, QTreeWidget::indicator::disabled {
|
||||
background-color: #828790;
|
||||
}
|
||||
QListWidget::item::selected, QTreeWidget::item::selected {
|
||||
background-color: #4d4940;
|
||||
}
|
||||
|
||||
/*
|
||||
QTableView: Style selected row
|
||||
|
||||
|
|
@ -141,31 +120,38 @@ QTabBar::tab::selected {
|
|||
color: #aea993;
|
||||
}
|
||||
|
||||
/* Checkboxes */
|
||||
QCheckBox::indicator {
|
||||
/* Checkboxes
|
||||
Radio Buttons
|
||||
|
||||
QListWidget, QTreeWidget: Style indicators (checkboxes) and selected rows
|
||||
|
||||
RPCS3: LLE/HLE Selector, Debugger, Game Patches
|
||||
*/
|
||||
QCheckBox::indicator, QListWidget::indicator, QTreeWidget::indicator {
|
||||
border-radius: 0.1em;
|
||||
}
|
||||
/* Radio Buttons */
|
||||
QRadioButton::indicator {
|
||||
border-radius: 0.4em;
|
||||
}
|
||||
/* Checkboxes and Radio Buttons */
|
||||
QCheckBox::indicator, QRadioButton::indicator {
|
||||
QCheckBox::indicator, QRadioButton::indicator, QListWidget::indicator, QTreeWidget::indicator {
|
||||
border: 0.05em solid #4d4940;
|
||||
margin-top: 0.05em;
|
||||
margin-bottom: 0.05em;
|
||||
width: 0.8em;
|
||||
height: 0.8em;
|
||||
}
|
||||
QCheckBox::indicator:checked, QRadioButton::indicator:checked {
|
||||
QCheckBox::indicator:checked, QRadioButton::indicator:checked, QListWidget::indicator::checked, QTreeWidget::indicator::checked{
|
||||
background-color: #4d4940; /* Dark */
|
||||
}
|
||||
QCheckBox::indicator:unchecked, QRadioButton::indicator:unchecked {
|
||||
QCheckBox::indicator:unchecked, QRadioButton::indicator:unchecked, QListWidget::indicator::unchecked, QTreeWidget::indicator::unchecked {
|
||||
background-color: #b3ac98; /* Light */
|
||||
}
|
||||
QCheckBox::indicator::disabled, QRadioButton::indicator::disabled {
|
||||
QCheckBox::indicator::disabled, QRadioButton::indicator::disabled, QListWidget::indicator::disabled, QTreeWidget::indicator::disabled {
|
||||
background-color: #828790; /* Gray */
|
||||
}
|
||||
QListWidget::item::selected, QTreeWidget::item::selected {
|
||||
background-color: #4d4940;
|
||||
}
|
||||
|
||||
/* Combo Boxes, Datetime dropdown */
|
||||
QComboBox, QDateTimeEdit, QLineEdit {
|
||||
|
|
@ -215,6 +201,7 @@ QPushButton::disabled {
|
|||
/* QSpinBox (Settings -> Emulator -> width/height) */
|
||||
/* QDoubleSpinBox (Pads -> Mouse Acceleration -> x/y) */
|
||||
QSpinBox, QDoubleSpinBox {
|
||||
height: 1.50em;
|
||||
background-color: #b3ac98;
|
||||
}
|
||||
QSpinBox::disabled, QDoubleSpinBox::disabled {
|
||||
|
|
@ -247,6 +234,7 @@ QDockWidget {
|
|||
QDockWidget::title {
|
||||
background: #4d4940;
|
||||
padding-top: 0.2em;
|
||||
padding-left: 0.2em;
|
||||
}
|
||||
QDockWidget::close-button, QDockWidget::float-button {
|
||||
background-color: #b3ac98;
|
||||
|
|
@ -262,7 +250,7 @@ QTabWidget::tab-bar {
|
|||
}
|
||||
|
||||
/* Top menu bar */
|
||||
QMenuBar {
|
||||
QMenuBar#menuBar {
|
||||
height:1.50em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
|
@ -314,12 +302,27 @@ QCalendarWidget QWidget{
|
|||
color: #4d4940;
|
||||
}
|
||||
|
||||
/* Scrollbars */
|
||||
QScrollBar::handle, QTableView QScrollBar::handle {
|
||||
background: #4d4940;
|
||||
}
|
||||
QScrollBar::handle:disabled {
|
||||
background: #828790;
|
||||
}
|
||||
QScrollBar::add-page, QScrollBar::sub-page {
|
||||
background: #8c806a;
|
||||
}
|
||||
QScrollBar::up-arrow, QScrollBar::down-arrow, QScrollBar::up-button:vertical, QScrollBar::down-button, QScrollBar::sub-line, QScrollBar::add-line {
|
||||
background: transparent;
|
||||
color: transparent;
|
||||
}
|
||||
|
||||
|
||||
/*** RPCS3 Specifics ***/
|
||||
|
||||
|
||||
/* Main Window, Dialogs and some Dialogs that are actually widgets */
|
||||
QWidget#trophy_manager, QWidget#cg_disasm, QWidget#log_viewer, QMainWindow#main_window {
|
||||
QWidget#trophy_manager, QWidget#cg_disasm, QWidget#log_viewer, QWidget#savestate_manager, QMainWindow#main_window {
|
||||
border-image: url("GuiConfigs/YoRHa-background.jpg");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M10.793 4.04298C11.1835 3.65246 11.8165 3.65246 12.207 4.04298C12.5975 4.43351 12.5975 5.06654 12.207 5.45704L7.70708 9.95704C7.31658 10.3475 6.68355 10.3475 6.29302 9.95704L1.79302 5.45704C1.40249 5.06652 1.40249 4.43351 1.79302 4.04298C2.18354 3.65246 2.81656 3.65246 3.20708 4.04298L7.00005 7.83595L10.793 4.04298Z" fill="#7E7E7E"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 448 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M10.793 4.04298C11.1835 3.65246 11.8165 3.65246 12.207 4.04298C12.5975 4.43351 12.5975 5.06654 12.207 5.45704L7.70708 9.95704C7.31658 10.3475 6.68355 10.3475 6.29302 9.95704L1.79302 5.45704C1.40249 5.06652 1.40249 4.43351 1.79302 4.04298C2.18354 3.65246 2.81656 3.65246 3.20708 4.04298L7.00005 7.83595L10.793 4.04298Z" fill="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 446 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M9.95698 10.793C10.3475 11.1835 10.3475 11.8165 9.95698 12.207C9.56645 12.5975 8.93343 12.5975 8.54293 12.207L4.04293 7.70706C3.65243 7.31656 3.65248 6.68353 4.04293 6.293L8.54293 1.793C8.93345 1.40248 9.56646 1.40248 9.95698 1.793C10.3475 2.18352 10.3475 2.81654 9.95698 3.20706L6.16402 7.00003L9.95698 10.793Z" fill="#7E7E7E"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 442 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M9.95698 10.793C10.3475 11.1835 10.3475 11.8165 9.95698 12.207C9.56645 12.5975 8.93343 12.5975 8.54293 12.207L4.04293 7.70706C3.65243 7.31656 3.65248 6.68353 4.04293 6.293L8.54293 1.793C8.93345 1.40248 9.56646 1.40248 9.95698 1.793C10.3475 2.18352 10.3475 2.81654 9.95698 3.20706L6.16402 7.00003L9.95698 10.793Z" fill="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 440 B |
|
|
@ -0,0 +1,10 @@
|
|||
<svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_47_46)">
|
||||
<path d="M8.70711 0.792985C8.31659 0.402461 7.68357 0.402461 7.29305 0.792985C6.9026 1.18351 6.90255 1.81655 7.29305 2.20705L11.586 6.50002H1.00008C0.447775 6.50006 7.53403e-05 6.94776 7.53403e-05 7.50002C7.53403e-05 8.05224 0.447875 8.49998 1.00008 8.50002H11.586L7.29305 12.7929C6.9026 13.1835 6.90255 13.8165 7.29305 14.207C7.68355 14.5975 8.31658 14.5975 8.70711 14.207L14.7071 8.20705C15.0976 7.81652 15.0976 7.18351 14.7071 6.79299L8.70711 0.792985Z" fill="white"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_47_46">
|
||||
<rect width="15" height="15" fill="white" transform="matrix(-1 0 0 1 15 0)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 747 B |
|
|
@ -0,0 +1,10 @@
|
|||
<svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_47_43)">
|
||||
<path d="M6.29289 0.792985C6.68341 0.402461 7.31643 0.402461 7.70695 0.792985C8.0974 1.18351 8.09745 1.81655 7.70695 2.20705L3.41398 6.50002H13.9999C14.5522 6.50006 14.9999 6.94776 14.9999 7.50002C14.9999 8.05224 14.5521 8.49998 13.9999 8.50002H3.41398L7.70695 12.7929C8.0974 13.1835 8.09745 13.8165 7.70695 14.207C7.31645 14.5975 6.68342 14.5975 6.29289 14.207L0.292893 8.20705C-0.0976311 7.81652 -0.0976311 7.18351 0.292893 6.79299L6.29289 0.792985Z" fill="white"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_47_43">
|
||||
<rect width="15" height="15" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 709 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M4.04302 10.793C3.65249 11.1835 3.65249 11.8165 4.04302 12.207C4.43355 12.5975 5.06657 12.5975 5.45707 12.207L9.95707 7.70706C10.3476 7.31656 10.3475 6.68353 9.95707 6.293L5.45707 1.793C5.06655 1.40248 4.43354 1.40248 4.04302 1.793C3.65249 2.18352 3.65249 2.81654 4.04302 3.20706L7.83598 7.00003L4.04302 10.793Z" fill="#7E7E7E"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 442 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M4.04302 10.793C3.65249 11.1835 3.65249 11.8165 4.04302 12.207C4.43355 12.5975 5.06657 12.5975 5.45707 12.207L9.95707 7.70706C10.3476 7.31656 10.3475 6.68353 9.95707 6.293L5.45707 1.793C5.06655 1.40248 4.43354 1.40248 4.04302 1.793C3.65249 2.18352 3.65249 2.81654 4.04302 3.20706L7.83598 7.00003L4.04302 10.793Z" fill="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 440 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M10.793 9.95702C11.1835 10.3475 11.8165 10.3475 12.207 9.95702C12.5975 9.56649 12.5975 8.93346 12.207 8.54296L7.70708 4.04296C7.31658 3.65246 6.68355 3.65251 6.29302 4.04296L1.79302 8.54296C1.40249 8.93348 1.40249 9.56649 1.79302 9.95702C2.18354 10.3475 2.81656 10.3475 3.20708 9.95702L7.00005 6.16405L10.793 9.95702Z" fill="#7E7E7E"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 448 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M10.793 9.95702C11.1835 10.3475 11.8165 10.3475 12.207 9.95702C12.5975 9.56649 12.5975 8.93346 12.207 8.54296L7.70708 4.04296C7.31658 3.65246 6.68355 3.65251 6.29302 4.04296L1.79302 8.54296C1.40249 8.93348 1.40249 9.56649 1.79302 9.95702C2.18354 10.3475 2.81656 10.3475 3.20708 9.95702L7.00005 6.16405L10.793 9.95702Z" fill="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 446 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M11.7929 2.29289C12.1834 1.90237 12.8164 1.90237 13.207 2.29289C13.5974 2.68342 13.5975 3.31645 13.207 3.70695L5.70695 11.207C5.31645 11.5975 4.68342 11.5974 4.29289 11.207L0.792893 7.70695C0.402369 7.31643 0.402369 6.68341 0.792893 6.29289C1.18342 5.90237 1.81643 5.90237 2.20695 6.29289L4.99992 9.08586L11.7929 2.29289Z" fill="#7E7E7E"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 452 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M11.7929 2.29289C12.1834 1.90237 12.8164 1.90237 13.207 2.29289C13.5974 2.68342 13.5975 3.31645 13.207 3.70695L5.70695 11.207C5.31645 11.5975 4.68342 11.5974 4.29289 11.207L0.792893 7.70695C0.402369 7.31643 0.402369 6.68341 0.792893 6.29289C1.18342 5.90237 1.81643 5.90237 2.20695 6.29289L4.99992 9.08586L11.7929 2.29289Z" fill="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 450 B |
|
|
@ -0,0 +1,11 @@
|
|||
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="25" height="25" rx="6" fill="#343434"/>
|
||||
<g clip-path="url(#clip0_43_2)">
|
||||
<path d="M17.2929 7.79289C17.6834 7.40237 18.3164 7.40237 18.7069 7.79289C19.0974 8.18342 19.0974 8.81645 18.7069 9.20695L11.207 16.707C10.8165 17.0975 10.1834 17.0974 9.79289 16.707L6.29289 13.207C5.90237 12.8164 5.90237 12.1834 6.29289 11.7929C6.68342 11.4024 7.31643 11.4024 7.70695 11.7929L10.4999 14.5859L17.2929 7.79289Z" fill="#7E7E7E"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_43_2">
|
||||
<rect width="13" height="10" fill="white" transform="translate(6 7.5)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 666 B |
|
|
@ -0,0 +1,11 @@
|
|||
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="25" height="25" rx="6" fill="#48B2E9"/>
|
||||
<g clip-path="url(#clip0_4_14)">
|
||||
<path d="M17.2929 7.79289C17.6834 7.40237 18.3164 7.40237 18.7069 7.79289C19.0974 8.18342 19.0974 8.81645 18.7069 9.20695L11.207 16.707C10.8165 17.0975 10.1834 17.0974 9.79289 16.707L6.29289 13.207C5.90237 12.8164 5.90237 12.1834 6.29289 11.7929C6.68342 11.4024 7.31643 11.4024 7.70695 11.7929L10.4999 14.5859L17.2929 7.79289Z" fill="black"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_4_14">
|
||||
<rect width="13" height="10" fill="white" transform="translate(6 7.5)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 664 B |
|
|
@ -0,0 +1,11 @@
|
|||
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="25" height="25" rx="6" fill="#45A4D5"/>
|
||||
<g clip-path="url(#clip0_4_80)">
|
||||
<path d="M17.2929 7.79289C17.6834 7.40237 18.3164 7.40237 18.7069 7.79289C19.0974 8.18342 19.0974 8.81645 18.7069 9.20695L11.207 16.707C10.8165 17.0975 10.1834 17.0974 9.79289 16.707L6.29289 13.207C5.90237 12.8164 5.90237 12.1834 6.29289 11.7929C6.68342 11.4024 7.31643 11.4024 7.70695 11.7929L10.4999 14.5859L17.2929 7.79289Z" fill="#22526A"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_4_80">
|
||||
<rect width="13" height="10" fill="white" transform="translate(6 7.5)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 666 B |
|
|
@ -0,0 +1,11 @@
|
|||
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="25" height="25" rx="6" fill="#4CC2FF"/>
|
||||
<g clip-path="url(#clip0_4_17)">
|
||||
<path d="M17.2929 7.79289C17.6834 7.40237 18.3164 7.40237 18.7069 7.79289C19.0974 8.18342 19.0974 8.81645 18.7069 9.20695L11.207 16.707C10.8165 17.0975 10.1834 17.0974 9.79289 16.707L6.29289 13.207C5.90237 12.8164 5.90237 12.1834 6.29289 11.7929C6.68342 11.4024 7.31643 11.4024 7.70695 11.7929L10.4999 14.5859L17.2929 7.79289Z" fill="black"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_4_17">
|
||||
<rect width="13" height="10" fill="white" transform="translate(6 7.5)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 664 B |
|
|
@ -0,0 +1,4 @@
|
|||
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect x="1" y="1" width="23" height="23" rx="5" fill="#2B2B2B"/>
|
||||
<rect x="1" y="1" width="23" height="23" rx="5" stroke="#4D4D4D" stroke-width="2"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 252 B |
|
|
@ -0,0 +1,11 @@
|
|||
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="25" height="25" rx="6" fill="#343434"/>
|
||||
<g clip-path="url(#clip0_43_5)">
|
||||
<path d="M18 11.5C18.5523 11.5 19 11.9477 19 12.5C19 13.0523 18.5523 13.5 18 13.5H7C6.44771 13.5 6 13.0523 6 12.5C6 11.9477 6.44771 11.5 7 11.5H18Z" fill="#7E7E7E"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_43_5">
|
||||
<rect width="13" height="2" fill="white" transform="translate(6 11.5)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 487 B |
|
|
@ -0,0 +1,11 @@
|
|||
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="25" height="25" rx="6" fill="#48B2E9"/>
|
||||
<g clip-path="url(#clip0_4_32)">
|
||||
<path d="M18 11.5C18.5523 11.5 19 11.9477 19 12.5C19 13.0523 18.5523 13.5 18 13.5H7C6.44771 13.5 6 13.0523 6 12.5C6 11.9477 6.44771 11.5 7 11.5H18Z" fill="black"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_4_32">
|
||||
<rect width="13" height="2" fill="white" transform="translate(6 11.5)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 485 B |
|
|
@ -0,0 +1,11 @@
|
|||
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="25" height="25" rx="6" fill="#45A4D5"/>
|
||||
<g clip-path="url(#clip0_4_83)">
|
||||
<path d="M18 11.5C18.5523 11.5 19 11.9477 19 12.5C19 13.0523 18.5523 13.5 18 13.5H7C6.44771 13.5 6 13.0523 6 12.5C6 11.9477 6.44771 11.5 7 11.5H18Z" fill="#22526A"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_4_83">
|
||||
<rect width="13" height="2" fill="white" transform="translate(6 11.5)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 487 B |
|
|
@ -0,0 +1,11 @@
|
|||
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="25" height="25" rx="6" fill="#4CC2FF"/>
|
||||
<g clip-path="url(#clip0_4_35)">
|
||||
<path d="M18 11.5C18.5523 11.5 19 11.9477 19 12.5C19 13.0523 18.5523 13.5 18 13.5H7C6.44771 13.5 6 13.0523 6 12.5C6 11.9477 6.44771 11.5 7 11.5H18Z" fill="black"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_4_35">
|
||||
<rect width="13" height="2" fill="white" transform="translate(6 11.5)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 485 B |
|
|
@ -0,0 +1,4 @@
|
|||
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect x="1" y="1" width="23" height="23" rx="5" fill="#343434"/>
|
||||
<rect x="1" y="1" width="23" height="23" rx="5" stroke="#9E9E9E" stroke-width="2"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 252 B |
|
|
@ -0,0 +1,4 @@
|
|||
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect x="1" y="1" width="23" height="23" rx="5" fill="#3A3A3A"/>
|
||||
<rect x="1" y="1" width="23" height="23" rx="5" stroke="#525252" stroke-width="2"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 252 B |
|
|
@ -0,0 +1,4 @@
|
|||
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect x="1" y="1" width="23" height="23" rx="5" fill="#272727"/>
|
||||
<rect x="1" y="1" width="23" height="23" rx="5" stroke="#9E9E9E" stroke-width="2"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 252 B |
|
|
@ -0,0 +1,2 @@
|
|||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 103 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M5.40772 9.05172C5.19743 9.26295 5.19743 9.60535 5.40772 9.81658C5.61801 10.0278 5.95888 10.0278 6.16915 9.81658L8.5923 7.38247C8.80259 7.17124 8.80254 6.82882 8.5923 6.61758L6.16915 4.18344C5.95887 3.9722 5.618 3.9722 5.40772 4.18344C5.19743 4.39468 5.19743 4.73709 5.40772 4.94833L7.45014 7.00003L5.40772 9.05172Z" fill="#7E7E7E"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 446 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M5.40772 9.05172C5.19743 9.26295 5.19743 9.60535 5.40772 9.81658C5.61801 10.0278 5.95888 10.0278 6.16915 9.81658L8.5923 7.38247C8.80259 7.17124 8.80254 6.82882 8.5923 6.61757L6.16915 4.18343C5.95887 3.97219 5.618 3.97219 5.40772 4.18343C5.19743 4.39467 5.19743 4.73709 5.40772 4.94833L7.45014 7.00002L5.40772 9.05172Z" fill="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 446 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M4.94826 5.40772C4.73703 5.19743 4.39463 5.19743 4.1834 5.40772C3.97217 5.61801 3.97217 5.95888 4.1834 6.16916L6.61751 8.59231C6.82874 8.8026 7.17116 8.80254 7.3824 8.59231L9.81655 6.16916C10.0278 5.95887 10.0278 5.61801 9.81655 5.40772C9.6053 5.19743 9.26289 5.19743 9.05165 5.40772L6.99996 7.45015L4.94826 5.40772Z" fill="#7E7E7E"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 447 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M4.94826 5.40772C4.73703 5.19743 4.39463 5.19743 4.1834 5.40772C3.97217 5.61801 3.97217 5.95888 4.1834 6.16915L6.61751 8.5923C6.82874 8.80259 7.17116 8.80254 7.3824 8.5923L9.81655 6.16915C10.0278 5.95887 10.0278 5.618 9.81655 5.40772C9.6053 5.19743 9.26289 5.19743 9.05165 5.40772L6.99996 7.45014L4.94826 5.40772Z" fill="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 442 B |
|
|
@ -0,0 +1,4 @@
|
|||
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect x="3" y="3" width="19" height="19" rx="9.5" fill="#7E7E7E"/>
|
||||
<rect x="3" y="3" width="19" height="19" rx="9.5" stroke="#343434" stroke-width="6"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 256 B |
|
|
@ -0,0 +1,4 @@
|
|||
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect x="2" y="2" width="21" height="21" rx="10.5" fill="black"/>
|
||||
<rect x="2" y="2" width="21" height="21" rx="10.5" stroke="#48B2E9" stroke-width="4"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 256 B |
|
|
@ -0,0 +1,5 @@
|
|||
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect x="3.5" y="3.5" width="18" height="18" rx="9" fill="black"/>
|
||||
<rect x="3.5" y="3.5" width="18" height="18" rx="9" stroke="#45A4D5" stroke-width="7"/>
|
||||
<circle cx="12.5" cy="12.5" r="9" fill="black" stroke="#45A4D5" stroke-width="7"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 341 B |
|
|
@ -0,0 +1,4 @@
|
|||
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect x="3" y="3" width="19" height="19" rx="9.5" fill="black"/>
|
||||
<rect x="3" y="3" width="19" height="19" rx="9.5" stroke="#4CC2FF" stroke-width="6"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 254 B |
|
|
@ -0,0 +1,4 @@
|
|||
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect x="1" y="1" width="23" height="23" rx="11.5" fill="#2B2B2B"/>
|
||||
<rect x="1" y="1" width="23" height="23" rx="11.5" stroke="#4D4D4D" stroke-width="2"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 258 B |
|
|
@ -0,0 +1,4 @@
|
|||
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect x="1" y="1" width="23" height="23" rx="11.5" fill="#343434"/>
|
||||
<rect x="1" y="1" width="23" height="23" rx="11.5" stroke="#9E9E9E" stroke-width="2"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 258 B |
|
|
@ -0,0 +1,5 @@
|
|||
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect x="1" y="1" width="23" height="23" rx="11.5" fill="#3A3A3A"/>
|
||||
<rect x="1" y="1" width="23" height="23" rx="11.5" stroke="#484848" stroke-width="2"/>
|
||||
<circle cx="12.5" cy="12.5" r="6.5" fill="black"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 309 B |
|
|
@ -0,0 +1,4 @@
|
|||
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect x="1" y="1" width="23" height="23" rx="11.5" fill="#272727"/>
|
||||
<rect x="1" y="1" width="23" height="23" rx="11.5" stroke="#9E9E9E" stroke-width="2"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 258 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="29" height="28" viewBox="0 0 29 28" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="14.5" cy="14" r="11" fill="#626262" stroke="#454545" stroke-width="6"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 187 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="29" height="28" viewBox="0 0 29 28" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="14.5" cy="14" r="11" fill="#4BB5EC" stroke="#454545" stroke-width="6"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 187 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="29" height="28" viewBox="0 0 29 28" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="14.5" cy="14" r="9.5" fill="#4AA9DA" stroke="#454545" stroke-width="9"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 188 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="29" height="28" viewBox="0 0 29 28" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="14.5" cy="14" r="10" fill="#4CC2FF" stroke="#454545" stroke-width="8"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 187 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.0815 11.9176L6.50035 6.49999M0.919184 1.08236L6.50035 6.49999M6.50035 6.49999L1.08273 12.0811M6.50035 6.49999L11.918 0.918823" stroke="white" stroke-linecap="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 283 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M3.5 1H9C10.6569 1 12 2.34315 12 4V9.5M10 11V4C10 3.44772 9.55228 3 9 3H2C1.44772 3 1 3.44772 1 4V11C1 11.5523 1.44772 12 2 12H9C9.55228 12 10 11.5523 10 11Z" stroke="white" stroke-linecap="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 311 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M10.7929 4.04289C11.1834 3.65237 11.8164 3.65237 12.2069 4.04289C12.5974 4.43342 12.5974 5.06645 12.2069 5.45695L7.70696 9.95695C7.31646 10.3474 6.68343 10.3474 6.2929 9.95695L1.7929 5.45695C1.40237 5.06643 1.40237 4.43342 1.7929 4.04289C2.18342 3.65237 2.81644 3.65237 3.20696 4.04289L6.99993 7.83586L10.7929 4.04289Z" fill="#A0A0A0"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 449 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M10.7929 4.04289C11.1834 3.65237 11.8164 3.65237 12.2069 4.04289C12.5974 4.43342 12.5974 5.06645 12.2069 5.45695L7.70696 9.95695C7.31646 10.3474 6.68343 10.3474 6.2929 9.95695L1.7929 5.45695C1.40237 5.06643 1.40237 4.43342 1.7929 4.04289C2.18342 3.65237 2.81644 3.65237 3.20696 4.04289L6.99993 7.83586L10.7929 4.04289Z" fill="#1B1B1B"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 449 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M9.95691 10.7929C10.3474 11.1834 10.3474 11.8164 9.95691 12.2069C9.56638 12.5974 8.93336 12.5974 8.54286 12.2069L4.04286 7.70695C3.65236 7.31645 3.65241 6.68342 4.04286 6.29289L8.54286 1.79289C8.93338 1.40237 9.56639 1.40237 9.95691 1.79289C10.3474 2.18341 10.3474 2.81643 9.95691 3.20695L6.16395 6.99992L9.95691 10.7929Z" fill="#A0A0A0"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 452 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M9.95691 10.7929C10.3474 11.1834 10.3474 11.8164 9.95691 12.2069C9.56638 12.5974 8.93336 12.5974 8.54286 12.2069L4.04286 7.70695C3.65236 7.31645 3.65241 6.68342 4.04286 6.29289L8.54286 1.79289C8.93338 1.40237 9.56639 1.40237 9.95691 1.79289C10.3474 2.18341 10.3474 2.81643 9.95691 3.20695L6.16395 6.99992L9.95691 10.7929Z" fill="#1B1B1B"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 452 B |