Compare commits
366 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 466788c006 | |||
| 19e2dba35a | |||
| 0634b4a278 | |||
| ee428deb1e | |||
| 07bc77c7e7 | |||
| 72973fe582 | |||
| c263b6af6f | |||
| e46576b4c3 | |||
| 89bcb73d47 | |||
| 7d81a724ef | |||
| 634686d59b | |||
| d0af14632e | |||
| c87986b276 | |||
| b600b90d53 | |||
| 2b979024cb | |||
| 5f676a6a55 | |||
| 2ab5b37137 | |||
| f6547fac8c | |||
| 9c685c1449 | |||
| aaf1a597ef | |||
| 850fc372b7 | |||
| bad9d8043b | |||
| 8e8e66f880 | |||
| fec5ac2298 | |||
| 19494bc7ac | |||
| 28a78d76fe | |||
| 6b3f8e1b62 | |||
| aacc40254c | |||
| efd26c3e4d | |||
| a8093c2a3c | |||
| 0f8b35c4cd | |||
| 866881d0e3 | |||
| a56b8d3de8 | |||
| e544cb3cf6 | |||
| ca9f2d43be | |||
| e10f55d9db | |||
| 71e035f83b | |||
| 16f2564478 | |||
| 75fda70db2 | |||
| b9e052b3a7 | |||
| 69aff83ef4 | |||
| e07e269bd7 | |||
| 08232ce642 | |||
| d536a66010 | |||
| 8907523ee4 | |||
| 9b1f6801a5 | |||
| ff03ef657a | |||
| 5acddfde16 | |||
| 913a74dbd3 | |||
| cbb92e75d3 | |||
| bd7d0e0466 | |||
| cce77b8d11 | |||
| c2f4449b1c | |||
| 48ba1f3f24 | |||
| d59fcf01bf | |||
| b8456394f1 | |||
| a467dd1ba6 | |||
| c156f4760f | |||
| 13f11ebf49 | |||
| 6065e9aa09 | |||
| 8ed0ed5828 | |||
| 33067af283 | |||
| d0a054270e | |||
| 2a3507c2b9 | |||
| f71f43561d | |||
| ecbfad4193 | |||
| d76b2b5d26 | |||
| cd9527072d | |||
| ffdaf7369a | |||
| 5113f503d1 | |||
| a5f1c2bcb0 | |||
| 2e432c9d17 | |||
| 6637810fe6 | |||
| 8118557c17 | |||
| 1925726b96 | |||
| acf7deea95 | |||
| 84fdbbaaa1 | |||
| 638663b28e | |||
| df838a57fd | |||
| b2b73ecb62 | |||
| 2b7b44c3e4 | |||
| 385b7cad77 | |||
| 7b537f6b72 | |||
| 81367e6e33 | |||
| 68aaab5947 | |||
| 8b55a15808 | |||
| a692986bd7 | |||
| 979ea5563b | |||
| 643f11d972 | |||
| 025bc799f7 | |||
| 54af7abac4 | |||
| b2b98ac83a | |||
| 9cf3a04af3 | |||
| 55ab6f1472 | |||
| 84839dec38 | |||
| 3b81d2e333 | |||
| c974f3e0fb | |||
| 4624b16cc6 | |||
| 5e2c536a86 | |||
| 283b94056d | |||
| 770be31030 | |||
| acda082f40 | |||
| 00193de0da | |||
| 0d996e1df9 | |||
| 998460b78b | |||
| 52f6984347 | |||
| 2f1f9be7a4 | |||
| c59d12b0cd | |||
| 4a5bec1cfc | |||
| 4f6195881c | |||
| 7396149ab1 | |||
| eb7f74ce97 | |||
| 64ff59e82f | |||
| 6504c7cc4c | |||
| ddbb6f2219 | |||
| 29fad5a89e | |||
| f74c590a8e | |||
| de449d2caa | |||
| 1d13f7a666 | |||
| ea932fbf40 | |||
| 6afe209b60 | |||
| 338ea4e9d5 | |||
| 368a8f9e3d | |||
| a3fa666510 | |||
| cb40b310f5 | |||
| 9dbb8c33e2 | |||
| 16c7c03b33 | |||
| 9aa8e9b0a1 | |||
| 4510e9ff7f | |||
| f61f0a28c6 | |||
| cb26ea154c | |||
| 8663913510 | |||
| 872e03c9a6 | |||
| 651585963a | |||
| 30e073b02b | |||
| b9da45cb1f | |||
| 8663d7fa41 | |||
| 30cbec7ad5 | |||
| 1fbace438c | |||
| 1ae084e87b | |||
| 323e946d06 | |||
| cb4239829f | |||
| 023a4bceca | |||
| 4025925539 | |||
| f45491e128 | |||
| 84e11a52ba | |||
| d72553f519 | |||
| 291b5febec | |||
| ed0276582e | |||
| 5406a153e1 | |||
| 4ea8311113 | |||
| 1a9b4b37e1 | |||
| 51cc1bc6be | |||
| 6ec6ca7c37 | |||
| 833a38b443 | |||
| 8df41f06c7 | |||
| 4a7772f104 | |||
| 170f113453 | |||
| ae501e256e | |||
| b7417f68ce | |||
| 83a28dc251 | |||
| 5768600c8b | |||
| 6f9fb83a1d | |||
| a82cf247fd | |||
| 8d9607ec60 | |||
| 89f72d286a | |||
| ecd01e13fd | |||
| f544004b5d | |||
| 9c5203d922 | |||
| b1daffad19 | |||
| 3bae47cd94 | |||
| 2f0dc4e0ba | |||
| 1da0a380da | |||
| 91596c6d1b | |||
| dceeccd04b | |||
| 1cb8bcf531 | |||
| a27d35362d | |||
| a2236c1a43 | |||
| fafded39ef | |||
| 6b36c6deb6 | |||
| c21f92340b | |||
| ea29f169e6 | |||
| 4d7b51d798 | |||
| cad77dfac6 | |||
| 87d4c67386 | |||
| 1370f23675 | |||
| 8440c2074d | |||
| 5edcdea78f | |||
| 4cacf56cec | |||
| c28b5ffc7d | |||
| f52ff56e70 | |||
| 82f9d489e7 | |||
| 9c3f2d2af5 | |||
| 6f045383c5 | |||
| 73f2535edc | |||
| d9874fa4bc | |||
| 7234875a53 | |||
| 14951348bf | |||
| b0cd47c005 | |||
| 18af560a43 | |||
| 8f430d25a6 | |||
| e6ff711613 | |||
| 966fcc0c30 | |||
| 80327312dd | |||
| 742622a98d | |||
| 011278b6a8 | |||
| 76be55bc2f | |||
| a79eab9564 | |||
| 46b32b7688 | |||
| 55646657e1 | |||
| 2b4d13c205 | |||
| 8ad1d0c317 | |||
| fb1600b7d1 | |||
| 8d31484f64 | |||
| e12a73e8a0 | |||
| e4cbcec2f1 | |||
| 006f97f207 | |||
| 6d80a5f823 | |||
| 29717da45b | |||
| 28f08e43f1 | |||
| b53aa06505 | |||
| b95c4d2d5d | |||
| d76edfc683 | |||
| 3bc714a392 | |||
| 1d629fe83c | |||
| ba3eda83d3 | |||
| e6850cbad5 | |||
| cfae726289 | |||
| bb94cff886 | |||
| 370997f42e | |||
| 5213cc5689 | |||
| bc9af86269 | |||
| 00ec67d65b | |||
| fbd28a9d34 | |||
| 3413fbd9da | |||
| bccc46a325 | |||
| f0fe283038 | |||
| b78390551c | |||
| 62ea689949 | |||
| 8c6a612062 | |||
| df3b9400a6 | |||
| c5bd7dc047 | |||
| 557876b222 | |||
| 22dfc560e0 | |||
| 1d869e8495 | |||
| 959f72297d | |||
| 057d566ff4 | |||
| be592f0ab3 | |||
| bf68eede05 | |||
| 1eed7efd09 | |||
| 50f8d4130d | |||
| e4dccd5a5c | |||
| b9530ae80f | |||
| 5130185d12 | |||
| db1dfc9755 | |||
| d7de298948 | |||
| 363d861011 | |||
| 30d75d4e52 | |||
| 06b83a58a6 | |||
| 1e06c6f752 | |||
| adc41bff70 | |||
| 4edb70c8f0 | |||
| 9da38715fe | |||
| 7157d5167e | |||
| 77d83b008a | |||
| 69a84ee0a6 | |||
| 5b019a81a7 | |||
| 83332316aa | |||
| 3141019fcd | |||
| 4cc9aa691d | |||
| d96ab0df6a | |||
| c03f7cf284 | |||
| 750fecda18 | |||
| 1f422a8f70 | |||
| 90877dfc85 | |||
| f882ff72eb | |||
| 55cc4d5ede | |||
| 09f03f5640 | |||
| 7a98ee4ead | |||
| dfd042c809 | |||
| 16ca7851c5 | |||
| 0eed5100f9 | |||
| 8d3b33c3aa | |||
| e3c942b209 | |||
| 1b1e186a58 | |||
| e75ecfd4a0 | |||
| 18135424df | |||
| 1d2b9de496 | |||
| fe8017734b | |||
| 33ee9de85a | |||
| e22756160c | |||
| a33956f738 | |||
| 4642e82ca7 | |||
| 97054357d2 | |||
| 941caf31ce | |||
| c72144abad | |||
| d656e347c8 | |||
| 8859809ebd | |||
| 318998cbb5 | |||
| f58097e814 | |||
| 1efef85352 | |||
| ea0e5d630c | |||
| 9e610ea098 | |||
| 41af6ea645 | |||
| 91b0432591 | |||
| 46239dafa1 | |||
| bf23921f07 | |||
| e63f71c787 | |||
| 027085e5ba | |||
| f40025fd9b | |||
| ed39ec4738 | |||
| fe13539d72 | |||
| be218cc020 | |||
| c3cbe2d4d0 | |||
| 79b162a37c | |||
| f3fbb3812f | |||
| d8caa74233 | |||
| 17fe74ef11 | |||
| 73713737c6 | |||
| 61f3ce643c | |||
| f7f6a4cde4 | |||
| 65fa1a37e2 | |||
| 41192e6e3d | |||
| d8f2e22bf8 | |||
| 51506ef836 | |||
| 0d3cef65ad | |||
| c2794985b2 | |||
| 2e1af92852 | |||
| b9655669b3 | |||
| 6b01977005 | |||
| 91d41d1c34 | |||
| 2e4ee8d9a4 | |||
| 92274ff280 | |||
| d1ac5b2e50 | |||
| c160d6b752 | |||
| eb2d9ea574 | |||
| 4f389338bd | |||
| 227a007413 | |||
| 74d6eaf721 | |||
| 9807fa02ed | |||
| 7d239df065 | |||
| b690813196 | |||
| b9f54f4979 | |||
| 7e730a121b | |||
| 680384f7b8 | |||
| a27914f0f4 | |||
| 3f226678dd | |||
| e9d84d098d | |||
| 32db6c1877 | |||
| 8eaa7c28ce | |||
| 3edfcabdea | |||
| 450c483de0 | |||
| 66db2613b5 | |||
| 9a046190c7 | |||
| cfbef5c487 | |||
| f51d61e4a4 | |||
| ba9e03a612 | |||
| 7832afc5dd | |||
| 028765867f | |||
| d89df63a28 | |||
| 87c4f658ce | |||
| b7584cb2c3 | |||
| f32f356c40 | |||
| 7ca657d22f | |||
| 7764cdd57e | |||
| 42863027e2 |
@@ -1,21 +1,137 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/sh -e
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
export NDK_CCACHE=$(which ccache)
|
NUM_JOBS=$(nproc 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null || echo 2)
|
||||||
|
export CMAKE_BUILD_PARALLEL_LEVEL="${NUM_JOBS}"
|
||||||
|
ARTIFACTS_DIR="$PWD/artifacts"
|
||||||
|
|
||||||
if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then
|
: "${CCACHE:=false}"
|
||||||
|
RETURN=0
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $0 [-t|--target FLAVOR] [-b|--build-type BUILD_TYPE]
|
||||||
|
[-h|--help] [-r|--release] [extra options]
|
||||||
|
|
||||||
|
Build script for Android.
|
||||||
|
Associated variables can be set outside the script,
|
||||||
|
and will apply both to this script and the packaging script.
|
||||||
|
bool values are "true" or "false"
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-r, --release Enable update checker. If set, sets the DEVEL bool variable to false.
|
||||||
|
By default, DEVEL is true.
|
||||||
|
-t, --target <FLAVOR> Build flavor (variable: TARGET)
|
||||||
|
Valid values are: legacy, optimized, standard, chromeos
|
||||||
|
Default: standard
|
||||||
|
-b, --build-type <TYPE> Build type (variable: TYPE)
|
||||||
|
Valid values are: Release, RelWithDebInfo, Debug
|
||||||
|
Default: Debug
|
||||||
|
-n, --nightly Create a nightly build.
|
||||||
|
|
||||||
|
Extra arguments are passed to CMake (e.g. -DCMAKE_OPTION_NAME=VALUE)
|
||||||
|
Set the CCACHE variable to "true" to enable build caching.
|
||||||
|
The APK and AAB will be output into "artifacts".
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
exit "$RETURN"
|
||||||
|
}
|
||||||
|
|
||||||
|
die() {
|
||||||
|
echo "-- ! $*" >&2
|
||||||
|
RETURN=1 usage
|
||||||
|
}
|
||||||
|
|
||||||
|
target() {
|
||||||
|
[ -z "$1" ] && die "You must specify a valid target."
|
||||||
|
|
||||||
|
TARGET="$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
type() {
|
||||||
|
[ -z "$1" ] && die "You must specify a valid type."
|
||||||
|
|
||||||
|
TYPE="$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
case "$1" in
|
||||||
|
-r|--release) DEVEL=false ;;
|
||||||
|
-t|--target) target "$2"; shift ;;
|
||||||
|
-b|--build-type) type "$2"; shift ;;
|
||||||
|
-n|--nightly) NIGHTLY=true ;;
|
||||||
|
-h|--help) usage ;;
|
||||||
|
*) break ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
: "${TARGET:=standard}"
|
||||||
|
: "${TYPE:=Release}"
|
||||||
|
: "${DEVEL:=true}"
|
||||||
|
|
||||||
|
TARGET_LOWER=$(echo "$TARGET" | tr '[:upper:]' '[:lower:]')
|
||||||
|
|
||||||
|
case "$TARGET_LOWER" in
|
||||||
|
legacy) FLAVOR=Legacy ;;
|
||||||
|
optimized) FLAVOR=GenshinSpoof ;;
|
||||||
|
standard) FLAVOR=Mainline ;;
|
||||||
|
chromeos) FLAVOR=ChromeOS ;;
|
||||||
|
*) die "Invalid build flavor $TARGET."
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$TYPE" in
|
||||||
|
RelWithDebInfo|Release|Debug) ;;
|
||||||
|
*) die "Invalid build type $TYPE."
|
||||||
|
esac
|
||||||
|
|
||||||
|
LOWER_FLAVOR=$(echo "$FLAVOR" | sed 's/./\L&/')
|
||||||
|
LOWER_TYPE=$(echo "$TYPE" | sed 's/./\L&/')
|
||||||
|
|
||||||
|
if [ -n "${ANDROID_KEYSTORE_B64}" ]; then
|
||||||
export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks"
|
export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks"
|
||||||
base64 --decode <<< "${ANDROID_KEYSTORE_B64}" > "${ANDROID_KEYSTORE_FILE}"
|
echo "${ANDROID_KEYSTORE_B64}" | base64 --decode > "${ANDROID_KEYSTORE_FILE}"
|
||||||
|
SHA1SUM=$(keytool -list -v -storepass "${ANDROID_KEYSTORE_PASS}" -keystore "${ANDROID_KEYSTORE_FILE}" | grep SHA1 | cut -d " " -f3)
|
||||||
|
echo "-- Keystore SHA1 is ${SHA1SUM}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd src/android
|
cd src/android
|
||||||
chmod +x ./gradlew
|
chmod +x ./gradlew
|
||||||
|
|
||||||
./gradlew assembleMainlineRelease
|
set -- "$@" -DUSE_CCACHE="${CCACHE}"
|
||||||
./gradlew bundleMainlineRelease
|
|
||||||
|
|
||||||
if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then
|
nightly() {
|
||||||
|
[ "$NIGHTLY" = "true" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
if nightly || [ "$DEVEL" != "true" ]; then
|
||||||
|
set -- "$@" -DENABLE_UPDATE_CHECKER=ON
|
||||||
|
fi
|
||||||
|
|
||||||
|
if nightly; then
|
||||||
|
NIGHTLY=true
|
||||||
|
else
|
||||||
|
NIGHTLY=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "-- building..."
|
||||||
|
|
||||||
|
./gradlew "copy${FLAVOR}${TYPE}Outputs" \
|
||||||
|
-Dorg.gradle.caching="${CCACHE}" \
|
||||||
|
-Dorg.gradle.parallel="${CCACHE}" \
|
||||||
|
-Dorg.gradle.workers.max="${NUM_JOBS}" \
|
||||||
|
-PYUZU_ANDROID_ARGS="$*" \
|
||||||
|
-Pnightly="$NIGHTLY" \
|
||||||
|
--info
|
||||||
|
|
||||||
|
if [ -n "${ANDROID_KEYSTORE_B64}" ]; then
|
||||||
rm "${ANDROID_KEYSTORE_FILE}"
|
rm "${ANDROID_KEYSTORE_FILE}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo "-- Done! APK and AAB artifacts are in ${ARTIFACTS_DIR}"
|
||||||
|
|
||||||
|
ls -l "${ARTIFACTS_DIR}/"
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
GITDATE="$(git show -s --date=short --format='%ad' | sed 's/-//g')"
|
|
||||||
GITREV="$(git show -s --format='%h')"
|
|
||||||
ARTIFACTS_DIR="$PWD/artifacts"
|
|
||||||
mkdir -p "${ARTIFACTS_DIR}/"
|
|
||||||
|
|
||||||
REV_NAME="eden-android-${GITDATE}-${GITREV}"
|
|
||||||
BUILD_FLAVOR="mainline"
|
|
||||||
BUILD_TYPE_LOWER="release"
|
|
||||||
BUILD_TYPE_UPPER="Release"
|
|
||||||
|
|
||||||
cp src/android/app/build/outputs/apk/"${BUILD_FLAVOR}/${BUILD_TYPE_LOWER}/app-${BUILD_FLAVOR}-${BUILD_TYPE_LOWER}.apk" \
|
|
||||||
"${ARTIFACTS_DIR}/${REV_NAME}.apk" || echo "APK not found"
|
|
||||||
|
|
||||||
cp src/android/app/build/outputs/bundle/"${BUILD_FLAVOR}${BUILD_TYPE_UPPER}"/"app-${BUILD_FLAVOR}-${BUILD_TYPE_LOWER}.aab" \
|
|
||||||
"${ARTIFACTS_DIR}/${REV_NAME}.aab" || echo "AAB not found"
|
|
||||||
|
|
||||||
ls -la "${ARTIFACTS_DIR}/"
|
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# specify full path if dupes may exist
|
# specify full path if dupes may exist
|
||||||
EXCLUDE_FILES="CPM.cmake CPMUtil.cmake GetSCMRev.cmake renderdoc_app.h tools/cpm tools/shellcheck.sh tools/update-cpm.sh externals/stb externals/glad externals/getopt externals/gamemode externals/FidelityFX-FSR externals/demangle externals/bc_decoder"
|
EXCLUDE_FILES="CPM.cmake CPMUtil.cmake GetSCMRev.cmake renderdoc_app.h tools/cpm tools/shellcheck.sh tools/update-cpm.sh tools/windows/vcvarsall.sh externals/stb externals/glad externals/getopt externals/gamemode externals/FidelityFX-FSR externals/demangle externals/bc_decoder externals/cmake-modules"
|
||||||
|
|
||||||
# license header constants, please change when needed :))))
|
# license header constants, please change when needed :))))
|
||||||
YEAR=2025
|
YEAR=2026
|
||||||
HOLDER="Eden Emulator Project"
|
HOLDER="Eden Emulator Project"
|
||||||
LICENSE="GPL-3.0-or-later"
|
LICENSE="GPL-3.0-or-later"
|
||||||
|
|
||||||
@@ -41,9 +41,8 @@ EOF
|
|||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
(-uc) UPDATE=true; COMMIT=true ;;
|
|
||||||
(-u|--update) UPDATE=true ;;
|
(-u|--update) UPDATE=true ;;
|
||||||
(-c|--commit) COMMIT=true ;;
|
(-c|--commit) UPDATE=true; COMMIT=true ;;
|
||||||
("$0") break ;;
|
("$0") break ;;
|
||||||
("") break ;;
|
("") break ;;
|
||||||
(*) usage ;;
|
(*) usage ;;
|
||||||
@@ -113,7 +112,7 @@ for file in $FILES; do
|
|||||||
[ "$excluded" = "true" ] && continue
|
[ "$excluded" = "true" ] && continue
|
||||||
|
|
||||||
case "$file" in
|
case "$file" in
|
||||||
*.cmake|*.sh|CMakeLists.txt)
|
*.cmake|*.sh|*CMakeLists.txt)
|
||||||
begin="#"
|
begin="#"
|
||||||
;;
|
;;
|
||||||
*.kt*|*.cpp|*.h)
|
*.kt*|*.cpp|*.h)
|
||||||
@@ -186,7 +185,7 @@ if [ "$UPDATE" = "true" ]; then
|
|||||||
|
|
||||||
for file in $SRC_FILES $OTHER_FILES; do
|
for file in $SRC_FILES $OTHER_FILES; do
|
||||||
case $(basename -- "$file") in
|
case $(basename -- "$file") in
|
||||||
*.cmake|CMakeLists.txt)
|
*.cmake|*CMakeLists.txt)
|
||||||
begin="#"
|
begin="#"
|
||||||
shell="false"
|
shell="false"
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
@@ -104,8 +104,7 @@ cmake .. -G Ninja \
|
|||||||
-DYUZU_USE_QT_MULTIMEDIA=$MULTIMEDIA \
|
-DYUZU_USE_QT_MULTIMEDIA=$MULTIMEDIA \
|
||||||
-DYUZU_USE_QT_WEB_ENGINE=$WEBENGINE \
|
-DYUZU_USE_QT_WEB_ENGINE=$WEBENGINE \
|
||||||
-DYUZU_USE_FASTER_LD=ON \
|
-DYUZU_USE_FASTER_LD=ON \
|
||||||
-DYUZU_ENABLE_LTO=ON \
|
-DENABLE_LTO=ON \
|
||||||
-DDYNARMIC_ENABLE_LTO=ON \
|
|
||||||
"${EXTRA_CMAKE_FLAGS[@]}"
|
"${EXTRA_CMAKE_FLAGS[@]}"
|
||||||
|
|
||||||
ninja -j${NPROC}
|
ninja -j${NPROC}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash -ex
|
#!/bin/bash -ex
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
if [ "$COMPILER" == "clang" ]
|
if [ "$COMPILER" == "clang" ]
|
||||||
@@ -32,9 +32,8 @@ cmake .. -G Ninja \
|
|||||||
-DYUZU_ROOM_STANDALONE=OFF \
|
-DYUZU_ROOM_STANDALONE=OFF \
|
||||||
-DYUZU_USE_QT_MULTIMEDIA=${USE_MULTIMEDIA:-false} \
|
-DYUZU_USE_QT_MULTIMEDIA=${USE_MULTIMEDIA:-false} \
|
||||||
-DYUZU_USE_QT_WEB_ENGINE=${USE_WEBENGINE:-false} \
|
-DYUZU_USE_QT_WEB_ENGINE=${USE_WEBENGINE:-false} \
|
||||||
-DYUZU_ENABLE_LTO=ON \
|
-DENABLE_LTO=ON \
|
||||||
-DCMAKE_EXE_LINKER_FLAGS=" /LTCG" \
|
-DCMAKE_EXE_LINKER_FLAGS=" /LTCG" \
|
||||||
-DDYNARMIC_ENABLE_LTO=ON \
|
|
||||||
-DYUZU_USE_BUNDLED_QT=${BUNDLE_QT:-false} \
|
-DYUZU_USE_BUNDLED_QT=${BUNDLE_QT:-false} \
|
||||||
-DUSE_CCACHE=${CCACHE:-false} \
|
-DUSE_CCACHE=${CCACHE:-false} \
|
||||||
-DENABLE_UPDATE_CHECKER=${DEVEL:-true} \
|
-DENABLE_UPDATE_CHECKER=${DEVEL:-true} \
|
||||||
|
|||||||
@@ -1,8 +1,4 @@
|
|||||||
blank_issues_enabled: false
|
blank_issues_enabled: false
|
||||||
contact_links:
|
contact_links:
|
||||||
- name: yuzu Discord
|
- name: Eden Discord
|
||||||
url: https://discord.com/invite/u77vRWY
|
url: https://discord.gg/HstXbPch7X
|
||||||
about: If you are experiencing an issue with yuzu, and you need tech support, or if you have a general question, try asking in the official yuzu Discord linked here. Piracy is not allowed.
|
|
||||||
- name: Community forums
|
|
||||||
url: https://community.citra-emu.org
|
|
||||||
about: This is an alternative place for tech support, however helpers there are not as active.
|
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
name: tx-src
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
sources:
|
||||||
|
runs-on: source
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Push New Sources
|
||||||
|
run: |
|
||||||
|
export PATH=/usr/lib/qt6/bin:$PATH
|
||||||
|
./tools/translations/qt-source.sh
|
||||||
|
tx-cli push -s
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
name: Check Strings
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check-strings:
|
||||||
|
runs-on: source
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Find Unused Strings
|
||||||
|
run: ./tools/unused-strings.sh
|
||||||
|
|
||||||
|
- name: Find Stale Translations
|
||||||
|
run: ./tools/stale-translations.sh
|
||||||
|
|
||||||
|
- name: Diff
|
||||||
|
run: git --no-pager diff --exit-code HEAD
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
name: tx-pull
|
||||||
|
|
||||||
|
on:
|
||||||
|
# monday, wednesday, saturday at 2pm
|
||||||
|
schedule:
|
||||||
|
cron:
|
||||||
|
- '0 14 * * 1,3,6'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
tx-update:
|
||||||
|
runs-on: source
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Get New Translations
|
||||||
|
run: tx-cli pull -t -f
|
||||||
|
|
||||||
|
- name: Push branch
|
||||||
|
run: |
|
||||||
|
git config --local user.name "Eden CI"
|
||||||
|
git config --local user.email "ci@eden-emu.dev"
|
||||||
|
git config --local user.signingkey "D57652791BB25D2A"
|
||||||
|
git config --local push.autoSetupRemote true
|
||||||
|
|
||||||
|
git remote set-url origin ci:eden-emu/eden.git
|
||||||
|
|
||||||
|
TIMESTAMP=$(date +"%s")
|
||||||
|
echo "TIMESTAMP=$TIMESTAMP" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
|
git switch -c update-translations-$TIMESTAMP
|
||||||
|
git add dist src/android/app/src/main/res
|
||||||
|
|
||||||
|
git commit -sS -m "[dist, android] Update translations from Transifex"
|
||||||
|
git push
|
||||||
|
|
||||||
|
- name: Create PR
|
||||||
|
run: |
|
||||||
|
DATE=$(date +"%b %d")
|
||||||
|
TITLE="[dist, android] Update translations from Transifex for $DATE"
|
||||||
|
BODY="Automatic translation update for $DATE"
|
||||||
|
BASE=master
|
||||||
|
HEAD=update-translations-$TIMESTAMP
|
||||||
|
|
||||||
|
cat << EOF > data.json
|
||||||
|
{
|
||||||
|
"base": "$BASE",
|
||||||
|
"body": "$BODY",
|
||||||
|
"head": "$HEAD",
|
||||||
|
"title": "$TITLE"
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
curl -X 'POST' \
|
||||||
|
'https://git.eden-emu.dev/api/v1/repos/eden-emu/eden/pulls' \
|
||||||
|
-H 'accept: application/json' \
|
||||||
|
-H 'Authorization: Bearer ${{ secrets.CI_FJ_TOKEN }}' \
|
||||||
|
-H 'Content-Type: application/json' \
|
||||||
|
-d "@data.json" --fail
|
||||||
|
|
||||||
@@ -7,6 +7,7 @@
|
|||||||
# Build directory
|
# Build directory
|
||||||
/[Bb]uild*/
|
/[Bb]uild*/
|
||||||
doc-build/
|
doc-build/
|
||||||
|
out/
|
||||||
AppDir/
|
AppDir/
|
||||||
uruntime
|
uruntime
|
||||||
|
|
||||||
@@ -36,6 +37,8 @@ CMakeLists.txt.user*
|
|||||||
# *nix related
|
# *nix related
|
||||||
# Common convention for backup or temporary files
|
# Common convention for backup or temporary files
|
||||||
*~
|
*~
|
||||||
|
*.core
|
||||||
|
dtrace-out/
|
||||||
|
|
||||||
# Visual Studio CMake settings
|
# Visual Studio CMake settings
|
||||||
CMakeSettings.json
|
CMakeSettings.json
|
||||||
@@ -59,3 +62,4 @@ eden-windows-msvc
|
|||||||
artifacts
|
artifacts
|
||||||
*.AppImage*
|
*.AppImage*
|
||||||
/install*
|
/install*
|
||||||
|
vulkansdk*.exe
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
--- a/libs/context/CMakeLists.txt 2025-09-08 00:42:31.303651800 -0400
|
|
||||||
+++ b/libs/context/CMakeLists.txt 2025-09-08 00:42:40.592184300 -0400
|
|
||||||
@@ -146,7 +146,7 @@
|
|
||||||
set(ASM_LANGUAGE ASM)
|
|
||||||
endif()
|
|
||||||
elseif(BOOST_CONTEXT_ASSEMBLER STREQUAL armasm)
|
|
||||||
- set(ASM_LANGUAGE ASM_ARMASM)
|
|
||||||
+ set(ASM_LANGUAGE ASM_MARMASM)
|
|
||||||
else()
|
|
||||||
set(ASM_LANGUAGE ASM_MASM)
|
|
||||||
endif()
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
diff --git a/libs/context/CMakeLists.txt b/libs/context/CMakeLists.txt
|
|
||||||
index 8210f65..0e59dd7 100644
|
|
||||||
--- a/libs/context/CMakeLists.txt
|
|
||||||
+++ b/libs/context/CMakeLists.txt
|
|
||||||
@@ -186,7 +186,8 @@ if(BOOST_CONTEXT_IMPLEMENTATION STREQUAL "fcontext")
|
|
||||||
set_property(SOURCE ${ASM_SOURCES} APPEND PROPERTY COMPILE_OPTIONS "/safeseh")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
- else() # masm
|
|
||||||
+ # armasm doesn't support most of these options
|
|
||||||
+ elseif(NOT BOOST_CONTEXT_ASSEMBLER STREQUAL armasm) # masm
|
|
||||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
||||||
set_property(SOURCE ${ASM_SOURCES} APPEND PROPERTY COMPILE_OPTIONS "-x" "assembler-with-cpp")
|
|
||||||
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
From ce992811fe8eb5ea7ad37e5b255bfecb0c313928 Mon Sep 17 00:00:00 2001
|
||||||
|
From: crueter <crueter@crueter.xyz>
|
||||||
|
Date: Sun, 7 Sep 2025 23:43:57 -0400
|
||||||
|
Subject: [PATCH] [algorithm] fix missing declaration error
|
||||||
|
|
||||||
|
Projects with restrictive error options won't compile without this
|
||||||
|
|
||||||
|
Signed-off-by: crueter <crueter@crueter.xyz>
|
||||||
|
---
|
||||||
|
include/jwt/algorithm.hpp | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/include/jwt/algorithm.hpp b/include/jwt/algorithm.hpp
|
||||||
|
index 0e3b843..35347fe 100644
|
||||||
|
--- a/include/jwt/algorithm.hpp
|
||||||
|
+++ b/include/jwt/algorithm.hpp
|
||||||
|
@@ -63,6 +63,8 @@ using sign_func_t = sign_result_t (*) (const jwt::string_view key,
|
||||||
|
using verify_func_t = verify_result_t (*) (const jwt::string_view key,
|
||||||
|
const jwt::string_view head,
|
||||||
|
const jwt::string_view jwt_sign);
|
||||||
|
+
|
||||||
|
+verify_result_t is_secret_a_public_key(const jwt::string_view secret);
|
||||||
|
|
||||||
|
namespace algo {
|
||||||
|
|
||||||
@@ -1,52 +1,62 @@
|
|||||||
From e1a946ffb79022d38351a0623f819a5419965c3e Mon Sep 17 00:00:00 2001
|
From 436fc1978c78edd085d99b33275b24be0ac96aa0 Mon Sep 17 00:00:00 2001
|
||||||
From: crueter <crueter@eden-emu.dev>
|
From: crueter <crueter@eden-emu.dev>
|
||||||
Date: Fri, 24 Oct 2025 23:41:09 -0700
|
Date: Sun, 1 Feb 2026 16:21:10 -0500
|
||||||
Subject: [PATCH] [build] Fix MinGW missing GetAddrInfoExCancel definition
|
Subject: [PATCH] Fix build on MinGW
|
||||||
|
|
||||||
MinGW does not define GetAddrInfoExCancel in its wstcpi whatever header,
|
MinGW doesn't define GetAddrInfoExCancel.
|
||||||
so to get around this we can just load it with GetProcAddress et al.
|
|
||||||
|
|
||||||
Signed-off-by: crueter <crueter@eden-emu.dev>
|
Signed-off-by: crueter <crueter@eden-emu.dev>
|
||||||
---
|
---
|
||||||
httplib.h | 14 ++++++++++++--
|
httplib.h | 18 ++++++++++++++++--
|
||||||
1 file changed, 12 insertions(+), 2 deletions(-)
|
1 file changed, 16 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
diff --git a/httplib.h b/httplib.h
|
diff --git a/httplib.h b/httplib.h
|
||||||
index e15ba44..90a76dc 100644
|
index ec8d2a2..5f9a510 100644
|
||||||
--- a/httplib.h
|
--- a/httplib.h
|
||||||
+++ b/httplib.h
|
+++ b/httplib.h
|
||||||
@@ -203,11 +203,13 @@
|
@@ -203,14 +203,17 @@
|
||||||
#error Sorry, Visual Studio versions prior to 2015 are not supported
|
#error Sorry, Visual Studio versions prior to 2015 are not supported
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
-#pragma comment(lib, "ws2_32.lib")
|
-#pragma comment(lib, "ws2_32.lib")
|
||||||
-
|
-
|
||||||
|
#ifndef _SSIZE_T_DEFINED
|
||||||
using ssize_t = __int64;
|
using ssize_t = __int64;
|
||||||
|
#define _SSIZE_T_DEFINED
|
||||||
|
#endif
|
||||||
#endif // _MSC_VER
|
#endif // _MSC_VER
|
||||||
|
|
||||||
+#if defined(_MSC_VER) || defined(__MINGW32__)
|
+#if defined(_MSC_VER) || defined(__MINGW32__)
|
||||||
+#pragma comment(lib, "ws2_32.lib")
|
+#pragma comment(lib, "ws2_32.lib")
|
||||||
+#endif
|
+#endif
|
||||||
|
+
|
||||||
+
|
+
|
||||||
#ifndef S_ISREG
|
#ifndef S_ISREG
|
||||||
#define S_ISREG(m) (((m) & S_IFREG) == S_IFREG)
|
#define S_ISREG(m) (((m) & S_IFREG) == S_IFREG)
|
||||||
#endif // S_ISREG
|
#endif // S_ISREG
|
||||||
@@ -3557,7 +3559,15 @@ inline int getaddrinfo_with_timeout(const char *node, const char *service,
|
@@ -4528,7 +4531,17 @@ inline int getaddrinfo_with_timeout(const char *node, const char *service,
|
||||||
auto wait_result =
|
auto wait_result =
|
||||||
::WaitForSingleObject(event, static_cast<DWORD>(timeout_sec * 1000));
|
::WaitForSingleObject(event, static_cast<DWORD>(timeout_sec * 1000));
|
||||||
if (wait_result == WAIT_TIMEOUT) {
|
if (wait_result == WAIT_TIMEOUT) {
|
||||||
+#ifdef __MINGW32__
|
+#ifdef __MINGW32__
|
||||||
+ typedef INT(WSAAPI * PFN_GETADDRINFOEXCANCEL)(HANDLE * CancelHandle);
|
+ typedef INT(WSAAPI * PFN_GETADDRINFOEXCANCEL)(HANDLE * CancelHandle);
|
||||||
+ auto wsdll = LoadLibraryW((wchar_t *)"ws2_32.lib");
|
+ auto wsdll = LoadLibraryW((wchar_t *)"ws2_32.lib");
|
||||||
+ PFN_GETADDRINFOEXCANCEL GetAddrInfoExCancel = (PFN_GETADDRINFOEXCANCEL) GetProcAddress(wsdll, "GetAddrInfoExCancel");
|
+ PFN_GETADDRINFOEXCANCEL GetAddrInfoExCancel =
|
||||||
|
+ (PFN_GETADDRINFOEXCANCEL)GetProcAddress(wsdll, "GetAddrInfoExCancel");
|
||||||
+
|
+
|
||||||
+ if (cancel_handle) { GetAddrInfoExCancel(&cancel_handle); }
|
+ if (cancel_handle) { GetAddrInfoExCancel(&cancel_handle); }
|
||||||
+#else
|
+#else
|
||||||
if (cancel_handle) { ::GetAddrInfoExCancel(&cancel_handle); }
|
if (cancel_handle) { ::GetAddrInfoExCancel(&cancel_handle); }
|
||||||
+#endif
|
+#endif
|
||||||
|
+
|
||||||
::CloseHandle(event);
|
::CloseHandle(event);
|
||||||
return EAI_AGAIN;
|
return EAI_AGAIN;
|
||||||
}
|
}
|
||||||
--
|
@@ -13952,3 +13965,4 @@ inline SSL_CTX *Client::ssl_context() const {
|
||||||
2.51.0
|
} // namespace httplib
|
||||||
|
|
||||||
|
#endif // CPPHTTPLIB_HTTPLIB_H
|
||||||
|
+
|
||||||
|
--
|
||||||
|
2.51.2
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,16 @@
|
|||||||
|
diff --git a/library/aesni.h b/library/aesni.h
|
||||||
|
index 754c984c79..59e27afd3e 100644
|
||||||
|
--- a/library/aesni.h
|
||||||
|
+++ b/library/aesni.h
|
||||||
|
@@ -35,7 +35,7 @@
|
||||||
|
/* GCC-like compilers: currently, we only support intrinsics if the requisite
|
||||||
|
* target flag is enabled when building the library (e.g. `gcc -mpclmul -msse2`
|
||||||
|
* or `clang -maes -mpclmul`). */
|
||||||
|
-#if (defined(__GNUC__) || defined(__clang__)) && defined(__AES__) && defined(__PCLMUL__)
|
||||||
|
+#if defined(__GNUC__) || defined(__clang__)
|
||||||
|
#define MBEDTLS_AESNI_HAVE_INTRINSICS
|
||||||
|
#endif
|
||||||
|
/* For 32-bit, we only support intrinsics */
|
||||||
diff --git a/library/aesni.c b/library/aesni.c
|
diff --git a/library/aesni.c b/library/aesni.c
|
||||||
index 2857068..3e104ab 100644
|
index 2857068..3e104ab 100644
|
||||||
--- a/library/aesni.c
|
--- a/library/aesni.c
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
||||||
index 1811c42..bac9098 100644
|
|
||||||
--- a/CMakeLists.txt
|
|
||||||
+++ b/CMakeLists.txt
|
|
||||||
@@ -1,4 +1,4 @@
|
|
||||||
-cmake_minimum_required(VERSION 2.6)
|
|
||||||
+cmake_minimum_required(VERSION 3.5)
|
|
||||||
if(TEST_CPP)
|
|
||||||
project("mbed TLS" C CXX)
|
|
||||||
else()
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
diff --git a/library/aesni.h b/library/aesni.h
|
|
||||||
index 754c984c79..59e27afd3e 100644
|
|
||||||
--- a/library/aesni.h
|
|
||||||
+++ b/library/aesni.h
|
|
||||||
@@ -35,7 +35,7 @@
|
|
||||||
/* GCC-like compilers: currently, we only support intrinsics if the requisite
|
|
||||||
* target flag is enabled when building the library (e.g. `gcc -mpclmul -msse2`
|
|
||||||
* or `clang -maes -mpclmul`). */
|
|
||||||
-#if (defined(__GNUC__) || defined(__clang__)) && defined(__AES__) && defined(__PCLMUL__)
|
|
||||||
+#if defined(__GNUC__) || defined(__clang__)
|
|
||||||
#define MBEDTLS_AESNI_HAVE_INTRINSICS
|
|
||||||
#endif
|
|
||||||
/* For 32-bit, we only support intrinsics */
|
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
diff --git a/library/common.h b/library/common.h
|
||||||
|
index 50f2a29..c60d9dc 100644
|
||||||
|
--- a/library/common.h
|
||||||
|
+++ b/library/common.h
|
||||||
|
@@ -19,11 +19,11 @@
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
-#if defined(__ARM_NEON)
|
||||||
|
-#include <arm_neon.h>
|
||||||
|
+#if defined(MBEDTLS_PLATFORM_IS_WINDOWS_ON_ARM64)
|
||||||
|
+#include <arm64_neon.h>
|
||||||
|
#define MBEDTLS_HAVE_NEON_INTRINSICS
|
||||||
|
-#elif defined(MBEDTLS_PLATFORM_IS_WINDOWS_ON_ARM64)
|
||||||
|
-#include <arm64_neon.h>
|
||||||
|
+#elif (defined(__ANDROID__) && defined(__ARM_FP)) || defined(__ARM_NEON)
|
||||||
|
+#include <arm_neon.h>
|
||||||
|
#define MBEDTLS_HAVE_NEON_INTRINSICS
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
From cc15da16e533b2a801934eab2dfeaf3c3949a1dc Mon Sep 17 00:00:00 2001
|
||||||
|
From: crueter <crueter@eden-emu.dev>
|
||||||
|
Date: Mon, 8 Sep 2025 12:28:55 -0400
|
||||||
|
Subject: [PATCH] [cmake] disable NEON runtime check on clang-cl
|
||||||
|
|
||||||
|
When enabling runtime NEON checking for clang-cl, the linker would error out with `undefined symbol: __emit`, since clang doesn't actually implement this instruction. Therefore it makes sense to disable the runtime check by default on this platform, until either this is fixed or a clang-cl compatible intrinsic check is added (I don't have enough knowledge of MSVC to do this)
|
||||||
|
---
|
||||||
|
cmake/OpusConfig.cmake | 7 ++++++-
|
||||||
|
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/cmake/OpusConfig.cmake b/cmake/OpusConfig.cmake
|
||||||
|
index e9319fbad..d0f459e88 100644
|
||||||
|
--- a/cmake/OpusConfig.cmake
|
||||||
|
+++ b/cmake/OpusConfig.cmake
|
||||||
|
@@ -71,7 +71,12 @@ elseif(OPUS_CPU_ARM AND NOT OPUS_DISABLE_INTRINSICS)
|
||||||
|
opus_detect_neon(COMPILER_SUPPORT_NEON)
|
||||||
|
if(COMPILER_SUPPORT_NEON)
|
||||||
|
option(OPUS_USE_NEON "Option to enable NEON" ON)
|
||||||
|
- option(OPUS_MAY_HAVE_NEON "Does runtime check for neon support" ON)
|
||||||
|
+ if (MSVC AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||||
|
+ set(NEON_RUNTIME_CHECK_DEFAULT OFF)
|
||||||
|
+ else()
|
||||||
|
+ set(NEON_RUNTIME_CHECK_DEFAULT ON)
|
||||||
|
+ endif()
|
||||||
|
+ option(OPUS_MAY_HAVE_NEON "Does runtime check for neon support" ${NEON_RUNTIME_CHECK_DEFAULT})
|
||||||
|
option(OPUS_PRESUME_NEON "Assume target CPU has NEON support" OFF)
|
||||||
|
if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
|
||||||
|
set(OPUS_PRESUME_NEON ON)
|
||||||
@@ -0,0 +1,153 @@
|
|||||||
|
From bf455b67b4eaa446ffae5d25410b141b7b1b1082 Mon Sep 17 00:00:00 2001
|
||||||
|
From: crueter <crueter@eden-emu.dev>
|
||||||
|
Date: Mon, 8 Sep 2025 12:08:20 -0400
|
||||||
|
Subject: [PATCH] [cmake] `OPUS_INSTALL` option; only default install if root
|
||||||
|
project
|
||||||
|
|
||||||
|
Signed-off-by: crueter <crueter@eden-emu.dev>
|
||||||
|
---
|
||||||
|
CMakeLists.txt | 112 ++++++++++++++++++++++++++++---------------------
|
||||||
|
1 file changed, 64 insertions(+), 48 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index fcf034b19..08b5e16f8 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -4,6 +4,13 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||||
|
include(OpusPackageVersion)
|
||||||
|
get_package_version(PACKAGE_VERSION PROJECT_VERSION)
|
||||||
|
|
||||||
|
+# root project detection
|
||||||
|
+if(DEFINED PROJECT_NAME)
|
||||||
|
+ set(root_project OFF)
|
||||||
|
+else()
|
||||||
|
+ set(root_project ON)
|
||||||
|
+endif()
|
||||||
|
+
|
||||||
|
project(Opus LANGUAGES C VERSION ${PROJECT_VERSION})
|
||||||
|
|
||||||
|
include(OpusFunctions)
|
||||||
|
@@ -83,12 +90,16 @@ set(OPUS_DNN_FLOAT_DEBUG_HELP_STR "Run DNN computations as float for debugging p
|
||||||
|
option(OPUS_DNN_FLOAT_DEBUG ${OPUS_DNN_FLOAT_DEBUG_HELP_STR} OFF)
|
||||||
|
add_feature_info(OPUS_DNN_FLOAT_DEBUG OPUS_DNN_FLOAT_DEBUG ${OPUS_DNN_FLOAT_DEBUG_HELP_STR})
|
||||||
|
|
||||||
|
+set(OPUS_INSTALL_HELP_STR "Install Opus targets")
|
||||||
|
+option(OPUS_INSTALL ${OPUS_INSTALL_HELP_STR} ${root_project})
|
||||||
|
+add_feature_info(OPUS_INSTALL OPUS_INSTALL ${OPUS_INSTALL_HELP_STR})
|
||||||
|
+
|
||||||
|
set(OPUS_INSTALL_PKG_CONFIG_MODULE_HELP_STR "install pkg-config module.")
|
||||||
|
-option(OPUS_INSTALL_PKG_CONFIG_MODULE ${OPUS_INSTALL_PKG_CONFIG_MODULE_HELP_STR} ON)
|
||||||
|
+option(OPUS_INSTALL_PKG_CONFIG_MODULE ${OPUS_INSTALL_PKG_CONFIG_MODULE_HELP_STR} ${OPUS_INSTALL})
|
||||||
|
add_feature_info(OPUS_INSTALL_PKG_CONFIG_MODULE OPUS_INSTALL_PKG_CONFIG_MODULE ${OPUS_INSTALL_PKG_CONFIG_MODULE_HELP_STR})
|
||||||
|
|
||||||
|
set(OPUS_INSTALL_CMAKE_CONFIG_MODULE_HELP_STR "install CMake package config module.")
|
||||||
|
-option(OPUS_INSTALL_CMAKE_CONFIG_MODULE ${OPUS_INSTALL_CMAKE_CONFIG_MODULE_HELP_STR} ON)
|
||||||
|
+option(OPUS_INSTALL_CMAKE_CONFIG_MODULE ${OPUS_INSTALL_CMAKE_CONFIG_MODULE_HELP_STR} ${OPUS_INSTALL})
|
||||||
|
add_feature_info(OPUS_INSTALL_CMAKE_CONFIG_MODULE OPUS_INSTALL_CMAKE_CONFIG_MODULE ${OPUS_INSTALL_CMAKE_CONFIG_MODULE_HELP_STR})
|
||||||
|
|
||||||
|
set(OPUS_DRED_HELP_STR "enable DRED.")
|
||||||
|
@@ -613,53 +624,58 @@ if(OPUS_BUILD_FRAMEWORK)
|
||||||
|
OUTPUT_NAME Opus)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
-install(TARGETS opus
|
||||||
|
- EXPORT OpusTargets
|
||||||
|
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
|
- FRAMEWORK DESTINATION ${CMAKE_INSTALL_PREFIX}
|
||||||
|
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/opus)
|
||||||
|
-
|
||||||
|
-if(OPUS_INSTALL_PKG_CONFIG_MODULE)
|
||||||
|
- set(prefix ${CMAKE_INSTALL_PREFIX})
|
||||||
|
- set(exec_prefix ${CMAKE_INSTALL_PREFIX})
|
||||||
|
- set(libdir ${CMAKE_INSTALL_FULL_LIBDIR})
|
||||||
|
- set(includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR})
|
||||||
|
- set(VERSION ${PACKAGE_VERSION})
|
||||||
|
- if(HAVE_LIBM)
|
||||||
|
- set(LIBM "-lm")
|
||||||
|
+if (OPUS_INSTALL)
|
||||||
|
+ install(TARGETS opus
|
||||||
|
+ EXPORT OpusTargets
|
||||||
|
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
|
+ FRAMEWORK DESTINATION ${CMAKE_INSTALL_PREFIX}
|
||||||
|
+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/opus)
|
||||||
|
+
|
||||||
|
+ if(OPUS_INSTALL_PKG_CONFIG_MODULE)
|
||||||
|
+ set(prefix ${CMAKE_INSTALL_PREFIX})
|
||||||
|
+ set(exec_prefix ${CMAKE_INSTALL_PREFIX})
|
||||||
|
+ set(libdir ${CMAKE_INSTALL_FULL_LIBDIR})
|
||||||
|
+ set(includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR})
|
||||||
|
+ set(VERSION ${PACKAGE_VERSION})
|
||||||
|
+ if(HAVE_LIBM)
|
||||||
|
+ set(LIBM "-lm")
|
||||||
|
+ endif()
|
||||||
|
+ configure_file(opus.pc.in opus.pc)
|
||||||
|
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/opus.pc
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||||
|
+ endif()
|
||||||
|
+
|
||||||
|
+ if(OPUS_INSTALL_CMAKE_CONFIG_MODULE)
|
||||||
|
+ set(CPACK_GENERATOR TGZ)
|
||||||
|
+ include(CPack)
|
||||||
|
+ set(CMAKE_INSTALL_PACKAGEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
|
||||||
|
+ install(EXPORT OpusTargets
|
||||||
|
+ NAMESPACE Opus::
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_PACKAGEDIR})
|
||||||
|
+
|
||||||
|
+ include(CMakePackageConfigHelpers)
|
||||||
|
+
|
||||||
|
+ set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
|
+ configure_package_config_file(
|
||||||
|
+ ${PROJECT_SOURCE_DIR}/cmake/OpusConfig.cmake.in
|
||||||
|
+ OpusConfig.cmake
|
||||||
|
+ INSTALL_DESTINATION
|
||||||
|
+ ${CMAKE_INSTALL_PACKAGEDIR}
|
||||||
|
+ PATH_VARS
|
||||||
|
+ INCLUDE_INSTALL_DIR
|
||||||
|
+ INSTALL_PREFIX
|
||||||
|
+ ${CMAKE_INSTALL_PREFIX})
|
||||||
|
+
|
||||||
|
+ write_basic_package_version_file(OpusConfigVersion.cmake
|
||||||
|
+ VERSION ${PROJECT_VERSION}
|
||||||
|
+ COMPATIBILITY SameMajorVersion)
|
||||||
|
+
|
||||||
|
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/OpusConfig.cmake
|
||||||
|
+ ${CMAKE_CURRENT_BINARY_DIR}/OpusConfigVersion.cmake
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_PACKAGEDIR})
|
||||||
|
endif()
|
||||||
|
- configure_file(opus.pc.in opus.pc)
|
||||||
|
- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/opus.pc
|
||||||
|
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||||
|
-endif()
|
||||||
|
-
|
||||||
|
-if(OPUS_INSTALL_CMAKE_CONFIG_MODULE)
|
||||||
|
- set(CPACK_GENERATOR TGZ)
|
||||||
|
- include(CPack)
|
||||||
|
- set(CMAKE_INSTALL_PACKAGEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
|
||||||
|
- install(EXPORT OpusTargets
|
||||||
|
- NAMESPACE Opus::
|
||||||
|
- DESTINATION ${CMAKE_INSTALL_PACKAGEDIR})
|
||||||
|
-
|
||||||
|
- include(CMakePackageConfigHelpers)
|
||||||
|
-
|
||||||
|
- set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
|
- configure_package_config_file(${PROJECT_SOURCE_DIR}/cmake/OpusConfig.cmake.in
|
||||||
|
- OpusConfig.cmake
|
||||||
|
- INSTALL_DESTINATION
|
||||||
|
- ${CMAKE_INSTALL_PACKAGEDIR}
|
||||||
|
- PATH_VARS
|
||||||
|
- INCLUDE_INSTALL_DIR
|
||||||
|
- INSTALL_PREFIX
|
||||||
|
- ${CMAKE_INSTALL_PREFIX})
|
||||||
|
- write_basic_package_version_file(OpusConfigVersion.cmake
|
||||||
|
- VERSION ${PROJECT_VERSION}
|
||||||
|
- COMPATIBILITY SameMajorVersion)
|
||||||
|
- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/OpusConfig.cmake
|
||||||
|
- ${CMAKE_CURRENT_BINARY_DIR}/OpusConfigVersion.cmake
|
||||||
|
- DESTINATION ${CMAKE_INSTALL_PACKAGEDIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(OPUS_BUILD_PROGRAMS)
|
||||||
@@ -0,0 +1,287 @@
|
|||||||
|
From 67bf3d1381b1faf59e87001d6156ba4e21cada14 Mon Sep 17 00:00:00 2001
|
||||||
|
From: crueter <crueter@eden-emu.dev>
|
||||||
|
Date: Mon, 29 Dec 2025 21:22:36 -0500
|
||||||
|
Subject: [PATCH] [cmake] refactor: shared/static handling
|
||||||
|
|
||||||
|
This significantly redoes the way shared and static libraries are
|
||||||
|
handled. Now, it's controlled by two options: `SPIRV_TOOLS_BUILD_STATIC`
|
||||||
|
and `SPIRV_TOOLS_BUILD_SHARED`.
|
||||||
|
|
||||||
|
The default configuration (no `BUILD_SHARED_LIBS` set, options left at
|
||||||
|
default) is to build shared ONLY if this is the master project, or
|
||||||
|
static ONLY if this is a subproject (e.g. FetchContent, CPM.cmake). Also
|
||||||
|
I should note that static-only (i.e. no shared) is now a supported
|
||||||
|
target, this is done because projects including it as a submodule e.g.
|
||||||
|
on Android or Windows may prefer this.
|
||||||
|
|
||||||
|
Now the shared/static handling:
|
||||||
|
- static ON, shared OFF: Only generates `.a` libraries.
|
||||||
|
- static ON, shared ON: Generates `.a` libraries, but also
|
||||||
|
`libSPIRV-Tools.so`
|
||||||
|
- static OFF, shared ON: Only generates `.so` libraries.
|
||||||
|
|
||||||
|
Notable TODOs:
|
||||||
|
- SPIRV-Tools-shared.pc seems redundant--how should we handle which one
|
||||||
|
to use in the case of distributions that distribute both types (MSYS2
|
||||||
|
for instance)?
|
||||||
|
* *Note: pkgconfig sucks at this and usually just leaves it up to the
|
||||||
|
user, so the optimal solution may indeed be doing absolutely
|
||||||
|
nothing.* CMake is unaffected :)
|
||||||
|
- use namespaces in the CMake config files pleaaaaase
|
||||||
|
|
||||||
|
This is going to change things a good bit for package maintainers, but
|
||||||
|
cest la vie. It's for the greater good, I promise.
|
||||||
|
|
||||||
|
Signed-off-by: crueter <crueter@eden-emu.dev>
|
||||||
|
---
|
||||||
|
CMakeLists.txt | 108 +++++++++++++++++++++++++-----------------
|
||||||
|
source/CMakeLists.txt | 62 ++++++++++++------------
|
||||||
|
2 files changed, 94 insertions(+), 76 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index 4d843b4d2f..07201f690f 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -14,6 +14,15 @@
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 3.22.1)
|
||||||
|
|
||||||
|
+# master project detection--useful for FetchContent/submodule inclusion
|
||||||
|
+set(master_project OFF)
|
||||||
|
+set(subproject ON)
|
||||||
|
+
|
||||||
|
+if (NOT DEFINED PROJECT_NAME)
|
||||||
|
+ set(master_project ON)
|
||||||
|
+ set(subproject OFF)
|
||||||
|
+endif()
|
||||||
|
+
|
||||||
|
project(spirv-tools)
|
||||||
|
|
||||||
|
# Avoid a bug in CMake 3.22.1. By default it will set -std=c++11 for
|
||||||
|
@@ -135,46 +144,49 @@ if (DEFINED SPIRV_TOOLS_EXTRA_DEFINITIONS)
|
||||||
|
add_definitions(${SPIRV_TOOLS_EXTRA_DEFINITIONS})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
-# Library build setting definitions:
|
||||||
|
-#
|
||||||
|
-# * SPIRV_TOOLS_BUILD_STATIC - ON or OFF - Defaults to ON.
|
||||||
|
-# If enabled the following targets will be created:
|
||||||
|
-# ${SPIRV_TOOLS}-static - STATIC library.
|
||||||
|
-# Has full public symbol visibility.
|
||||||
|
-# ${SPIRV_TOOLS}-shared - SHARED library.
|
||||||
|
-# Has default-hidden symbol visibility.
|
||||||
|
-# ${SPIRV_TOOLS} - will alias to one of above, based on BUILD_SHARED_LIBS.
|
||||||
|
-# If disabled the following targets will be created:
|
||||||
|
-# ${SPIRV_TOOLS} - either STATIC or SHARED based on SPIRV_TOOLS_LIBRARY_TYPE.
|
||||||
|
-# Has full public symbol visibility.
|
||||||
|
-# ${SPIRV_TOOLS}-shared - SHARED library.
|
||||||
|
-# Has default-hidden symbol visibility.
|
||||||
|
-#
|
||||||
|
-# * SPIRV_TOOLS_LIBRARY_TYPE - SHARED or STATIC.
|
||||||
|
-# Specifies the library type used for building SPIRV-Tools libraries.
|
||||||
|
-# Defaults to SHARED when BUILD_SHARED_LIBS=1, otherwise STATIC.
|
||||||
|
-#
|
||||||
|
-# * SPIRV_TOOLS_FULL_VISIBILITY - "${SPIRV_TOOLS}-static" or "${SPIRV_TOOLS}"
|
||||||
|
-# Evaluates to the SPIRV_TOOLS target library name that has no hidden symbols.
|
||||||
|
-# This is used by internal targets for accessing symbols that are non-public.
|
||||||
|
-# Note this target provides no API stability guarantees.
|
||||||
|
-#
|
||||||
|
-# Ideally, all of these will go away - see https://github.com/KhronosGroup/SPIRV-Tools/issues/3909.
|
||||||
|
-option(ENABLE_EXCEPTIONS_ON_MSVC "Build SPIRV-TOOLS with c++ exceptions enabled in MSVC" ON)
|
||||||
|
-option(SPIRV_TOOLS_BUILD_STATIC "Build ${SPIRV_TOOLS}-static target. ${SPIRV_TOOLS} will alias to ${SPIRV_TOOLS}-static or ${SPIRV_TOOLS}-shared based on BUILD_SHARED_LIBS" ON)
|
||||||
|
-if(SPIRV_TOOLS_BUILD_STATIC)
|
||||||
|
- set(SPIRV_TOOLS_FULL_VISIBILITY ${SPIRV_TOOLS}-static)
|
||||||
|
+# If BUILD_SHARED_LIBS is undefined, set it based on whether we are
|
||||||
|
+# the master project or a subproject
|
||||||
|
+if (NOT DEFINED BUILD_SHARED_LIBS)
|
||||||
|
+ set(BUILD_SHARED_LIBS ${master_project})
|
||||||
|
+endif()
|
||||||
|
+
|
||||||
|
+if (BUILD_SHARED_LIBS)
|
||||||
|
+ set(static_default OFF)
|
||||||
|
+else()
|
||||||
|
+ set(static_default ON)
|
||||||
|
+endif()
|
||||||
|
+
|
||||||
|
+option(SPIRV_TOOLS_BUILD_SHARED "Build ${SPIRV_TOOLS} as a shared library"
|
||||||
|
+ ${BUILD_SHARED_LIBS})
|
||||||
|
+option(SPIRV_TOOLS_BUILD_STATIC "Build ${SPIRV_TOOLS} as a static library"
|
||||||
|
+ ${static_default})
|
||||||
|
+
|
||||||
|
+# Avoid conflict between the dll import library and
|
||||||
|
+# the static library (thanks microsoft)
|
||||||
|
+if(CMAKE_STATIC_LIBRARY_PREFIX STREQUAL "" AND
|
||||||
|
+ CMAKE_STATIC_LIBRARY_SUFFIX STREQUAL ".lib")
|
||||||
|
+ set(SPIRV_TOOLS_STATIC_LIBNAME "${SPIRV_TOOLS}-static")
|
||||||
|
+else()
|
||||||
|
+ set(SPIRV_TOOLS_STATIC_LIBNAME "${SPIRV_TOOLS}")
|
||||||
|
+endif()
|
||||||
|
+
|
||||||
|
+if (SPIRV_TOOLS_BUILD_STATIC)
|
||||||
|
+ # If building a static library at all, always build other libraries as static,
|
||||||
|
+ # and link to the static SPIRV-Tools library.
|
||||||
|
set(SPIRV_TOOLS_LIBRARY_TYPE "STATIC")
|
||||||
|
-else(SPIRV_TOOLS_BUILD_STATIC)
|
||||||
|
- set(SPIRV_TOOLS_FULL_VISIBILITY ${SPIRV_TOOLS})
|
||||||
|
- if (NOT DEFINED SPIRV_TOOLS_LIBRARY_TYPE)
|
||||||
|
- if(BUILD_SHARED_LIBS)
|
||||||
|
- set(SPIRV_TOOLS_LIBRARY_TYPE "SHARED")
|
||||||
|
- else()
|
||||||
|
- set(SPIRV_TOOLS_LIBRARY_TYPE "STATIC")
|
||||||
|
- endif()
|
||||||
|
- endif()
|
||||||
|
-endif(SPIRV_TOOLS_BUILD_STATIC)
|
||||||
|
+ set(SPIRV_TOOLS_FULL_VISIBILITY ${SPIRV_TOOLS}-static)
|
||||||
|
+elseif (SPIRV_TOOLS_BUILD_SHARED)
|
||||||
|
+ # If only building a shared library, link other libraries to the
|
||||||
|
+ # shared library. Also, other libraries should be shared
|
||||||
|
+ set(SPIRV_TOOLS_LIBRARY_TYPE "SHARED")
|
||||||
|
+ set(SPIRV_TOOLS_FULL_VISIBILITY ${SPIRV_TOOLS}-shared)
|
||||||
|
+else()
|
||||||
|
+ message(FATAL_ERROR "You must set one of "
|
||||||
|
+ "SPIRV_TOOLS_BUILD_STATIC or SPIRV_TOOLS_BUILD_SHARED!")
|
||||||
|
+endif()
|
||||||
|
+
|
||||||
|
+option(ENABLE_EXCEPTIONS_ON_MSVC
|
||||||
|
+ "Build SPIRV-TOOLS with C++ exceptions enabled in MSVC" ON)
|
||||||
|
|
||||||
|
function(spvtools_default_compile_options TARGET)
|
||||||
|
target_compile_options(${TARGET} PRIVATE ${SPIRV_WARNINGS})
|
||||||
|
@@ -372,7 +384,7 @@ if (NOT "${SPIRV_SKIP_TESTS}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(SPIRV_LIBRARIES "-lSPIRV-Tools-opt -lSPIRV-Tools -lSPIRV-Tools-link")
|
||||||
|
-set(SPIRV_SHARED_LIBRARIES "-lSPIRV-Tools-shared")
|
||||||
|
+set(SPIRV_SHARED_LIBRARIES "-lSPIRV-Tools")
|
||||||
|
|
||||||
|
# Build pkg-config file
|
||||||
|
# Use a first-class target so it's regenerated when relevant files are updated.
|
||||||
|
@@ -388,7 +400,12 @@ add_custom_command(
|
||||||
|
-DSPIRV_LIBRARIES=${SPIRV_LIBRARIES}
|
||||||
|
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/write_pkg_config.cmake
|
||||||
|
DEPENDS "CHANGES" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/SPIRV-Tools.pc.in" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/write_pkg_config.cmake")
|
||||||
|
-add_custom_command(
|
||||||
|
+
|
||||||
|
+set(pc_files ${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools.pc)
|
||||||
|
+
|
||||||
|
+# TODO(crueter): remove?
|
||||||
|
+if (SPIRV_TOOLS_BUILD_SHARED)
|
||||||
|
+ add_custom_command(
|
||||||
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools-shared.pc
|
||||||
|
COMMAND ${CMAKE_COMMAND}
|
||||||
|
-DCHANGES_FILE=${CMAKE_CURRENT_SOURCE_DIR}/CHANGES
|
||||||
|
@@ -400,9 +417,12 @@ add_custom_command(
|
||||||
|
-DSPIRV_SHARED_LIBRARIES=${SPIRV_SHARED_LIBRARIES}
|
||||||
|
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/write_pkg_config.cmake
|
||||||
|
DEPENDS "CHANGES" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/SPIRV-Tools-shared.pc.in" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/write_pkg_config.cmake")
|
||||||
|
-add_custom_target(spirv-tools-pkg-config
|
||||||
|
- ALL
|
||||||
|
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools-shared.pc ${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools.pc)
|
||||||
|
+ set(pc_files ${pc_files} ${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools-shared.pc)
|
||||||
|
+endif()
|
||||||
|
+
|
||||||
|
+add_custom_target(spirv-tools-pkg-config
|
||||||
|
+ ALL
|
||||||
|
+ DEPENDS ${pc_files})
|
||||||
|
|
||||||
|
# Install pkg-config file
|
||||||
|
if (ENABLE_SPIRV_TOOLS_INSTALL)
|
||||||
|
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
|
||||||
|
index bfa1e661bc..fd3712c70c 100644
|
||||||
|
--- a/source/CMakeLists.txt
|
||||||
|
+++ b/source/CMakeLists.txt
|
||||||
|
@@ -337,49 +337,44 @@ function(spirv_tools_default_target_options target)
|
||||||
|
)
|
||||||
|
set_property(TARGET ${target} PROPERTY FOLDER "SPIRV-Tools libraries")
|
||||||
|
spvtools_check_symbol_exports(${target})
|
||||||
|
- add_dependencies(${target} spirv-tools-build-version core_tables extinst_tables)
|
||||||
|
+ add_dependencies(${target}
|
||||||
|
+ spirv-tools-build-version core_tables extinst_tables)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
-# Always build ${SPIRV_TOOLS}-shared. This is expected distro packages, and
|
||||||
|
-# unlike the other SPIRV_TOOLS target, defaults to hidden symbol visibility.
|
||||||
|
-add_library(${SPIRV_TOOLS}-shared SHARED ${SPIRV_SOURCES})
|
||||||
|
-if (SPIRV_TOOLS_USE_MIMALLOC)
|
||||||
|
- target_link_libraries(${SPIRV_TOOLS}-shared PRIVATE mimalloc-static)
|
||||||
|
+if (SPIRV_TOOLS_BUILD_SHARED)
|
||||||
|
+ add_library(${SPIRV_TOOLS}-shared SHARED ${SPIRV_SOURCES})
|
||||||
|
+ if (SPIRV_TOOLS_USE_MIMALLOC)
|
||||||
|
+ target_link_libraries(${SPIRV_TOOLS}-shared PRIVATE mimalloc-static)
|
||||||
|
+ endif()
|
||||||
|
+
|
||||||
|
+ set_target_properties(${SPIRV_TOOLS}-shared PROPERTIES
|
||||||
|
+ OUTPUT_NAME "${SPIRV_TOOLS}")
|
||||||
|
+ spirv_tools_default_target_options(${SPIRV_TOOLS}-shared)
|
||||||
|
+
|
||||||
|
+ target_compile_definitions(${SPIRV_TOOLS}-shared
|
||||||
|
+ PRIVATE SPIRV_TOOLS_IMPLEMENTATION
|
||||||
|
+ PUBLIC SPIRV_TOOLS_SHAREDLIB)
|
||||||
|
+
|
||||||
|
+ list(APPEND SPIRV_TOOLS_TARGETS ${SPIRV_TOOLS}-shared)
|
||||||
|
endif()
|
||||||
|
-spirv_tools_default_target_options(${SPIRV_TOOLS}-shared)
|
||||||
|
-set_target_properties(${SPIRV_TOOLS}-shared PROPERTIES CXX_VISIBILITY_PRESET hidden)
|
||||||
|
-target_compile_definitions(${SPIRV_TOOLS}-shared
|
||||||
|
- PRIVATE SPIRV_TOOLS_IMPLEMENTATION
|
||||||
|
- PUBLIC SPIRV_TOOLS_SHAREDLIB
|
||||||
|
-)
|
||||||
|
|
||||||
|
if(SPIRV_TOOLS_BUILD_STATIC)
|
||||||
|
add_library(${SPIRV_TOOLS}-static STATIC ${SPIRV_SOURCES})
|
||||||
|
if (SPIRV_TOOLS_USE_MIMALLOC AND SPIRV_TOOLS_USE_MIMALLOC_IN_STATIC_BUILD)
|
||||||
|
target_link_libraries(${SPIRV_TOOLS}-shared PRIVATE mimalloc-static)
|
||||||
|
endif()
|
||||||
|
+
|
||||||
|
spirv_tools_default_target_options(${SPIRV_TOOLS}-static)
|
||||||
|
- # The static target does not have the '-static' suffix.
|
||||||
|
- set_target_properties(${SPIRV_TOOLS}-static PROPERTIES OUTPUT_NAME "${SPIRV_TOOLS}")
|
||||||
|
-
|
||||||
|
- # Create the "${SPIRV_TOOLS}" target as an alias to either "${SPIRV_TOOLS}-static"
|
||||||
|
- # or "${SPIRV_TOOLS}-shared" depending on the value of BUILD_SHARED_LIBS.
|
||||||
|
- if(BUILD_SHARED_LIBS)
|
||||||
|
- add_library(${SPIRV_TOOLS} ALIAS ${SPIRV_TOOLS}-shared)
|
||||||
|
- else()
|
||||||
|
- add_library(${SPIRV_TOOLS} ALIAS ${SPIRV_TOOLS}-static)
|
||||||
|
- endif()
|
||||||
|
+ set_target_properties(${SPIRV_TOOLS}-static PROPERTIES
|
||||||
|
+ OUTPUT_NAME "${SPIRV_TOOLS_STATIC_LIBNAME}")
|
||||||
|
|
||||||
|
- set(SPIRV_TOOLS_TARGETS ${SPIRV_TOOLS}-static ${SPIRV_TOOLS}-shared)
|
||||||
|
-else()
|
||||||
|
- add_library(${SPIRV_TOOLS} ${SPIRV_TOOLS_LIBRARY_TYPE} ${SPIRV_SOURCES})
|
||||||
|
- if (SPIRV_TOOLS_USE_MIMALLOC)
|
||||||
|
- target_link_libraries(${SPIRV_TOOLS} PRIVATE mimalloc-static)
|
||||||
|
- endif()
|
||||||
|
- spirv_tools_default_target_options(${SPIRV_TOOLS})
|
||||||
|
- set(SPIRV_TOOLS_TARGETS ${SPIRV_TOOLS} ${SPIRV_TOOLS}-shared)
|
||||||
|
+ list(APPEND SPIRV_TOOLS_TARGETS ${SPIRV_TOOLS}-static)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
+# Create the "SPIRV-Tools" target as an alias to either "SPIRV-Tools-static"
|
||||||
|
+# or "SPIRV-Tools-shared" depending on the value of SPIRV_TOOLS_BUILD_SHARED.
|
||||||
|
+add_library(${SPIRV_TOOLS} ALIAS ${SPIRV_TOOLS_FULL_VISIBILITY})
|
||||||
|
+
|
||||||
|
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
|
||||||
|
find_library(LIBRT rt)
|
||||||
|
if(LIBRT)
|
||||||
|
@@ -390,14 +385,17 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(ENABLE_SPIRV_TOOLS_INSTALL)
|
||||||
|
- if (SPIRV_TOOLS_USE_MIMALLOC AND (NOT SPIRV_TOOLS_BUILD_STATIC OR SPIRV_TOOLS_USE_MIMALLOC_IN_STATIC_BUILD))
|
||||||
|
+ if (SPIRV_TOOLS_USE_MIMALLOC AND
|
||||||
|
+ (NOT SPIRV_TOOLS_BUILD_STATIC OR SPIRV_TOOLS_USE_MIMALLOC_IN_STATIC_BUILD))
|
||||||
|
list(APPEND SPIRV_TOOLS_TARGETS mimalloc-static)
|
||||||
|
endif()
|
||||||
|
install(TARGETS ${SPIRV_TOOLS_TARGETS} EXPORT ${SPIRV_TOOLS}Targets)
|
||||||
|
export(EXPORT ${SPIRV_TOOLS}Targets FILE ${SPIRV_TOOLS}Target.cmake)
|
||||||
|
|
||||||
|
spvtools_config_package_dir(${SPIRV_TOOLS} PACKAGE_DIR)
|
||||||
|
- install(EXPORT ${SPIRV_TOOLS}Targets FILE ${SPIRV_TOOLS}Target.cmake DESTINATION ${PACKAGE_DIR})
|
||||||
|
+ install(EXPORT ${SPIRV_TOOLS}Targets
|
||||||
|
+ FILE ${SPIRV_TOOLS}Target.cmake
|
||||||
|
+ DESTINATION ${PACKAGE_DIR})
|
||||||
|
|
||||||
|
# Special config file for root library compared to other libs.
|
||||||
|
file(WRITE ${CMAKE_BINARY_DIR}/${SPIRV_TOOLS}Config.cmake
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
From b3622608433c183ba868a1dc8dd9cf285eb3b916 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dario Petrillo <dario.pk1@gmail.com>
|
||||||
|
Date: Thu, 27 Nov 2025 23:12:38 +0100
|
||||||
|
Subject: [PATCH] avoid extra memset when clearing an empty table
|
||||||
|
|
||||||
|
---
|
||||||
|
include/ankerl/unordered_dense.h | 6 ++++--
|
||||||
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/include/ankerl/unordered_dense.h b/include/ankerl/unordered_dense.h
|
||||||
|
index 0835342..4938212 100644
|
||||||
|
--- a/include/ankerl/unordered_dense.h
|
||||||
|
+++ b/include/ankerl/unordered_dense.h
|
||||||
|
@@ -1490,8 +1490,10 @@ class table : public std::conditional_t<is_map_v<T>, base_table_type_map<T>, bas
|
||||||
|
// modifiers //////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void clear() {
|
||||||
|
- m_values.clear();
|
||||||
|
- clear_buckets();
|
||||||
|
+ if (!empty()) {
|
||||||
|
+ m_values.clear();
|
||||||
|
+ clear_buckets();
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
auto insert(value_type const& value) -> std::pair<iterator, bool> {
|
||||||
@@ -13,7 +13,6 @@ Copyright: yuzu Emulator Project
|
|||||||
License: GPL-2.0-or-later
|
License: GPL-2.0-or-later
|
||||||
|
|
||||||
Files: dist/qt_themes/default/icons/256x256/eden.png
|
Files: dist/qt_themes/default/icons/256x256/eden.png
|
||||||
dist/qt_themes/default/icons/256x256/eden_named.png
|
|
||||||
dist/yuzu.bmp
|
dist/yuzu.bmp
|
||||||
dist/eden.icns
|
dist/eden.icns
|
||||||
dist/eden.ico
|
dist/eden.ico
|
||||||
|
|||||||
@@ -1,82 +1,39 @@
|
|||||||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.22)
|
cmake_minimum_required(VERSION 3.22)
|
||||||
|
|
||||||
project(yuzu)
|
project(yuzu)
|
||||||
|
|
||||||
if (${CMAKE_SYSTEM_NAME} STREQUAL "SunOS")
|
|
||||||
set(PLATFORM_SUN ON)
|
|
||||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
|
|
||||||
set(PLATFORM_FREEBSD ON)
|
|
||||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
|
|
||||||
set(PLATFORM_OPENBSD ON)
|
|
||||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "NetBSD")
|
|
||||||
set(PLATFORM_NETBSD ON)
|
|
||||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "DragonFly")
|
|
||||||
set(PLATFORM_DRAGONFLYBSD ON)
|
|
||||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Haiku")
|
|
||||||
set(PLATFORM_HAIKU ON)
|
|
||||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
|
||||||
set(PLATFORM_LINUX ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|
||||||
set(CXX_CLANG ON)
|
|
||||||
if (MSVC)
|
|
||||||
set(CXX_CLANG_CL ON)
|
|
||||||
endif()
|
|
||||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
||||||
set(CXX_GCC ON)
|
|
||||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
|
||||||
set(CXX_CL ON)
|
|
||||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM")
|
|
||||||
set(CXX_ICC ON)
|
|
||||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
|
|
||||||
set(CXX_APPLE ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")
|
||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modules")
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modules")
|
||||||
|
|
||||||
# https://gitlab.kitware.com/cmake/cmake/-/merge_requests/11112
|
set(CPM_SOURCE_CACHE ${CMAKE_SOURCE_DIR}/.cache/cpm)
|
||||||
# This works totally fine on MinGW64, but not CLANG{,ARM}64
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
if(MINGW AND CXX_CLANG)
|
|
||||||
set(CMAKE_SYSTEM_VERSION 10.0.0)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# NB: this does not account for SPARC
|
include(DetectPlatform)
|
||||||
# If you get Eden working on SPARC, please shoot crueter@crueter.xyz multiple emails
|
include(DetectArchitecture)
|
||||||
# and you will be hailed for eternity
|
include(DefaultConfig)
|
||||||
if (PLATFORM_SUN)
|
include(UseLTO)
|
||||||
# Terrific Solaris pkg shenanigans
|
include(FasterLinker)
|
||||||
list(APPEND CMAKE_PREFIX_PATH "${CMAKE_SYSROOT}/usr/lib/qt/6.6/lib/amd64/cmake")
|
include(UseCcache)
|
||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SYSROOT}/usr/lib/qt/6.6/lib/amd64/cmake")
|
include(CMakeDependentOption)
|
||||||
|
include(CTest)
|
||||||
|
include(CPMUtil)
|
||||||
|
|
||||||
# Amazing - absolutely incredible
|
if (NOT DEFINED ARCHITECTURE)
|
||||||
list(APPEND CMAKE_PREFIX_PATH "${CMAKE_SYSROOT}/usr/lib/amd64/cmake")
|
message(FATAL_ERROR "Architecture didn't make it out of scope, did you delete DetectArchitecture.cmake?")
|
||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SYSROOT}/usr/lib/amd64/cmake")
|
|
||||||
|
|
||||||
# For some mighty reason, doing a normal release build sometimes may not trigger
|
|
||||||
# the proper -O3 switch to materialize
|
|
||||||
if (CMAKE_BUILD_TYPE MATCHES "Release")
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
|
|
||||||
endif()
|
|
||||||
if (CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo")
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Needed for FFmpeg w/ VAAPI and DRM
|
# Needed for FFmpeg w/ VAAPI and DRM
|
||||||
if (PLATFORM_OPENBSD)
|
if (PLATFORM_OPENBSD)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R6/include")
|
# OpenBSD 7.8 broke libcxx when upgrading, so we must define the PSTL backend manually
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R6/include")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R6/include -D_LIBCPP_PSTL_BACKEND_SERIAL=1")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R6/include -D_LIBCPP_PSTL_BACKEND_SERIAL=1")
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_SYSROOT}/usr/X11R6/lib")
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_SYSROOT}/usr/X11R6/lib")
|
||||||
elseif (PLATFORM_NETBSD)
|
elseif (PLATFORM_NETBSD)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R7/include")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R7/include -I${CMAKE_SYSROOT}/usr/pkg/include/c++/v1")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R7/include")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R7/include -I${CMAKE_SYSROOT}/usr/pkg/include/c++/v1")
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_SYSROOT}/usr/X11R7/lib")
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_SYSROOT}/usr/X11R7/lib")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -85,92 +42,113 @@ if (PLATFORM_NETBSD)
|
|||||||
set(ENV{PKG_CONFIG_PATH} "${PKG_CONFIG_PATH}:${CMAKE_SYSROOT}/usr/pkg/lib/ffmpeg7/pkgconfig")
|
set(ENV{PKG_CONFIG_PATH} "${PKG_CONFIG_PATH}:${CMAKE_SYSROOT}/usr/pkg/lib/ffmpeg7/pkgconfig")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Detect current compilation architecture and create standard definitions
|
cmake_dependent_option(YUZU_STATIC_ROOM "Build a static room executable only (CI only)" OFF "PLATFORM_LINUX" OFF)
|
||||||
# =======================================================================
|
if (YUZU_STATIC_ROOM)
|
||||||
|
set(YUZU_ROOM ON)
|
||||||
|
set(YUZU_ROOM_STANDALONE ON)
|
||||||
|
|
||||||
include(CheckSymbolExists)
|
# disable e v e r y t h i n g
|
||||||
function(detect_architecture symbol arch)
|
set(ENABLE_QT OFF)
|
||||||
if (NOT DEFINED ARCHITECTURE)
|
set(ENABLE_SDL2 OFF)
|
||||||
set(CMAKE_REQUIRED_QUIET 1)
|
set(YUZU_CMD OFF)
|
||||||
check_symbol_exists("${symbol}" "" ARCHITECTURE_${arch})
|
set(ENABLE_CUBEB OFF)
|
||||||
unset(CMAKE_REQUIRED_QUIET)
|
set(ENABLE_UPDATE_CHECKER OFF)
|
||||||
|
set(USE_DISCORD_PRESENCE OFF)
|
||||||
|
set(BUILD_TESTING OFF)
|
||||||
|
set(ENABLE_OPENSSL OFF)
|
||||||
|
set(ENABLE_WEB_SERVICE OFF)
|
||||||
|
set(ENABLE_LIBUSB OFF)
|
||||||
|
|
||||||
# The output variable needs to be unique across invocations otherwise
|
# allow static libs for boost and mbedtls though
|
||||||
# CMake's crazy scope rules will keep it defined
|
set(Boost_USE_STATIC_LIBS ON)
|
||||||
if (ARCHITECTURE_${arch})
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
|
||||||
set(ARCHITECTURE "${arch}" PARENT_SCOPE)
|
set(MBEDTLS_LIB_SUFFIX "_static")
|
||||||
set(ARCHITECTURE_${arch} 1 PARENT_SCOPE)
|
set(YUZU_USE_CPM ON)
|
||||||
add_definitions("-DARCHITECTURE_${arch}=1")
|
|
||||||
|
set(zstd_FORCE_BUNDLED ON)
|
||||||
|
set(fmt_FORCE_BUNDLED ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# common network mbedtls
|
||||||
|
# common: xbyak? booost fmt lz4 zstd
|
||||||
|
# network: enet boost
|
||||||
|
|
||||||
|
# qt stuff
|
||||||
|
option(ENABLE_QT "Enable the Qt frontend" ON)
|
||||||
|
option(ENABLE_QT_TRANSLATION "Enable translations for the Qt frontend" OFF)
|
||||||
|
option(ENABLE_UPDATE_CHECKER "Enable update checker (for Qt and Android)" OFF)
|
||||||
|
option(YUZU_USE_QT_MULTIMEDIA "Use QtMultimedia for Camera" OFF)
|
||||||
|
cmake_dependent_option(YUZU_USE_QT_WEB_ENGINE "Use QtWebEngine for web applet implementation" OFF "NOT YUZU_USE_BUNDLED_QT" OFF)
|
||||||
|
set(YUZU_QT_MIRROR "" CACHE STRING "What mirror to use for downloading the bundled Qt libraries")
|
||||||
|
cmake_dependent_option(YUZU_USE_BUNDLED_QT "Download bundled Qt binaries" "${MSVC}" "ENABLE_QT" OFF)
|
||||||
|
|
||||||
|
# non-linux bundled qt are static
|
||||||
|
if (YUZU_USE_BUNDLED_QT AND (APPLE OR NOT UNIX))
|
||||||
|
set(YUZU_STATIC_BUILD ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# TODO: does mingw need any of this anymore
|
||||||
|
# static stuff
|
||||||
|
option(YUZU_STATIC_BUILD "Use static libraries and executables if available" OFF)
|
||||||
|
|
||||||
|
# TODO: StaticBuild.cmake
|
||||||
|
if (YUZU_STATIC_BUILD)
|
||||||
|
# lol
|
||||||
|
set(Boost_USE_STATIC_LIBS ON)
|
||||||
|
set(BUILD_SHARED_LIBS OFF)
|
||||||
|
|
||||||
|
## find .a libs first (static, usually)
|
||||||
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
|
||||||
|
|
||||||
|
## some libraries use CMAKE_IMPORT_LIBRARY_SUFFIX e.g. Harfbuzz ##
|
||||||
|
set(CMAKE_IMPORT_LIBRARY_SUFFIX ".a")
|
||||||
|
|
||||||
|
if (MINGW)
|
||||||
|
# simple hook to reject dynamic libs
|
||||||
|
function(find_library var)
|
||||||
|
# also skip previously-found libraries cuz... yaknow
|
||||||
|
# UNLESS they are dll.a :{
|
||||||
|
if (${var} AND NOT ${var} MATCHES "dll\\.a$")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
_find_library(${var} ${ARGN})
|
||||||
|
if (${var})
|
||||||
|
get_filename_component(lib_name "${${var}}" NAME)
|
||||||
|
if (lib_name MATCHES "dll\\.a$")
|
||||||
|
unset(${var} CACHE)
|
||||||
|
set(${var} "${var}-NOTFOUND" CACHE INTERNAL "" FORCE)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
if (NOT ENABLE_GENERIC)
|
# msys2 quazip does not build a static lib
|
||||||
# https://sourceforge.net/p/predef/wiki/Architectures/
|
set(QuaZip-Qt6_FORCE_BUNDLED ON)
|
||||||
# TODO: THIS IS FUCKING FLAWED ONLY THE FIRST SYMBOL THAT APPEARS WILL BE CONSIDERED :(
|
|
||||||
if (MSVC)
|
set(YUZU_USE_BUNDLED_FFMPEG ON)
|
||||||
detect_architecture("_M_AMD64" x86_64)
|
set(YUZU_USE_BUNDLED_SDL2 ON)
|
||||||
detect_architecture("_M_IX86" x86)
|
set(YUZU_USE_BUNDLED_OPENSSL ON)
|
||||||
detect_architecture("_M_ARM" arm)
|
|
||||||
detect_architecture("_M_ARM64" arm64)
|
set(HTTPLIB_USE_BROTLI_IF_AVAILABLE OFF)
|
||||||
else()
|
|
||||||
detect_architecture("__x86_64__" x86_64)
|
## some libraries define a Library::Name_static alternative ##
|
||||||
detect_architecture("__i386__" x86)
|
set(MBEDTLS_LIB_SUFFIX _static)
|
||||||
detect_architecture("__arm__" arm)
|
elseif(APPLE)
|
||||||
detect_architecture("__aarch64__" arm64)
|
set(YUZU_USE_CPM ON)
|
||||||
|
|
||||||
|
set(YUZU_USE_BUNDLED_FFMPEG ON)
|
||||||
|
set(YUZU_USE_BUNDLED_SDL2 ON)
|
||||||
|
set(YUZU_USE_BUNDLED_OPENSSL ON)
|
||||||
|
|
||||||
|
# these libs do not properly provide static libs/let you do it with cmake
|
||||||
|
set(fmt_FORCE_BUNDLED ON)
|
||||||
|
set(SPIRV-Tools_FORCE_BUNDLED ON)
|
||||||
|
set(SPIRV-Headers_FORCE_BUNDLED ON)
|
||||||
|
set(zstd_FORCE_BUNDLED ON)
|
||||||
|
set(MbedTLS_FORCE_BUNDLED ON)
|
||||||
endif()
|
endif()
|
||||||
detect_architecture("__ARM64__" arm64)
|
|
||||||
detect_architecture("__aarch64__" arm64)
|
|
||||||
detect_architecture("_M_ARM64" arm64)
|
|
||||||
|
|
||||||
detect_architecture("__arm__" arm)
|
|
||||||
detect_architecture("__TARGET_ARCH_ARM" arm)
|
|
||||||
detect_architecture("_M_ARM" arm)
|
|
||||||
|
|
||||||
detect_architecture("__x86_64" x86_64)
|
|
||||||
detect_architecture("__x86_64__" x86_64)
|
|
||||||
detect_architecture("__amd64" x86_64)
|
|
||||||
detect_architecture("_M_X64" x86_64)
|
|
||||||
|
|
||||||
detect_architecture("__i386" x86)
|
|
||||||
detect_architecture("__i386__" x86)
|
|
||||||
detect_architecture("_M_IX86" x86)
|
|
||||||
|
|
||||||
detect_architecture("__ia64" ia64)
|
|
||||||
detect_architecture("__ia64__" ia64)
|
|
||||||
detect_architecture("_M_IA64" ia64)
|
|
||||||
|
|
||||||
detect_architecture("__mips" mips)
|
|
||||||
detect_architecture("__mips__" mips)
|
|
||||||
detect_architecture("_M_MRX000" mips)
|
|
||||||
|
|
||||||
detect_architecture("__powerpc64__" ppc64)
|
|
||||||
detect_architecture("__ppc64__" ppc64)
|
|
||||||
detect_architecture("__PPC64__" ppc64)
|
|
||||||
detect_architecture("_ARCH_PPC64" ppc64)
|
|
||||||
|
|
||||||
detect_architecture("__ppc__" ppc)
|
|
||||||
detect_architecture("__ppc" ppc)
|
|
||||||
detect_architecture("__powerpc__" ppc)
|
|
||||||
detect_architecture("_ARCH_COM" ppc)
|
|
||||||
detect_architecture("_ARCH_PWR" ppc)
|
|
||||||
detect_architecture("_ARCH_PPC" ppc)
|
|
||||||
detect_architecture("_M_MPPC" ppc)
|
|
||||||
detect_architecture("_M_PPC" ppc)
|
|
||||||
|
|
||||||
detect_architecture("__riscv" riscv)
|
|
||||||
|
|
||||||
detect_architecture("__EMSCRIPTEN__" wasm)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT DEFINED ARCHITECTURE)
|
|
||||||
set(ARCHITECTURE "GENERIC")
|
|
||||||
set(ARCHITECTURE_GENERIC 1)
|
|
||||||
add_definitions(-DARCHITECTURE_GENERIC=1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
message(STATUS "Target architecture: ${ARCHITECTURE}")
|
|
||||||
|
|
||||||
if (MSVC AND ARCHITECTURE_x86)
|
if (MSVC AND ARCHITECTURE_x86)
|
||||||
message(FATAL_ERROR "Attempting to build with the x86 environment is not supported. \
|
message(FATAL_ERROR "Attempting to build with the x86 environment is not supported. \
|
||||||
This can typically happen if you used the Developer Command Prompt from the start menu; \
|
This can typically happen if you used the Developer Command Prompt from the start menu; \
|
||||||
@@ -188,51 +166,30 @@ if (CXX_CLANG_CL)
|
|||||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-reserved-identifier>
|
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-reserved-identifier>
|
||||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-deprecated-declarations>
|
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-deprecated-declarations>
|
||||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-cast-function-type-mismatch>
|
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-cast-function-type-mismatch>
|
||||||
$<$<COMPILE_LANGUAGE:C,CXX>:/EHsc> # thanks microsoft
|
$<$<COMPILE_LANGUAGE:C,CXX>:/EHsc>)
|
||||||
)
|
|
||||||
|
|
||||||
# REQUIRED CPU features IN Windows-amd64
|
# REQUIRED CPU features IN Windows-amd64
|
||||||
if (ARCHITECTURE_x86_64)
|
if (ARCHITECTURE_x86_64)
|
||||||
add_compile_options(
|
add_compile_options(
|
||||||
$<$<COMPILE_LANGUAGE:C,CXX>:-msse4.1>
|
$<$<COMPILE_LANGUAGE:C,CXX>:-msse4.1>
|
||||||
$<$<COMPILE_LANGUAGE:C,CXX>:-mcx16>
|
$<$<COMPILE_LANGUAGE:C,CXX>:-mcx16>)
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(CPM_SOURCE_CACHE ${CMAKE_SOURCE_DIR}/.cache/cpm)
|
|
||||||
|
|
||||||
include(DownloadExternals)
|
|
||||||
include(CMakeDependentOption)
|
|
||||||
include(CTest)
|
|
||||||
|
|
||||||
# Disable Warnings as Errors for MSVC
|
# Disable Warnings as Errors for MSVC
|
||||||
if (MSVC AND NOT CXX_CLANG)
|
if (MSVC AND NOT CXX_CLANG)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /WX-")
|
# This was dripping into spirv, being overriden, and causing cl flag override warning
|
||||||
endif()
|
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /WX-")
|
||||||
|
set(CMAKE_CXX_FLAGS_INIT "${CMAKE_CXX_FLAGS_INIT} /W3 /WX-")
|
||||||
if (PLATFORM_FREEBSD OR PLATFORM_DRAGONFLYBSD)
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_SYSROOT}/usr/local/lib")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Set bundled sdl2/qt as dependent options.
|
# Set bundled sdl2/qt as dependent options.
|
||||||
# On Linux system SDL2 is likely to be lacking HIDAPI support which have drawbacks but is needed for SDL motion
|
# On Linux system SDL2 is likely to be lacking HIDAPI support which have drawbacks but is needed for SDL motion
|
||||||
cmake_dependent_option(ENABLE_SDL2 "Enable the SDL2 frontend" ON "NOT ANDROID" OFF)
|
cmake_dependent_option(ENABLE_SDL2 "Enable the SDL2 frontend" ON "NOT ANDROID" OFF)
|
||||||
|
|
||||||
if (ENABLE_SDL2)
|
|
||||||
# TODO(crueter): Cleanup, each dep that has a bundled option should allow to choose between bundled, external, system
|
# TODO(crueter): Cleanup, each dep that has a bundled option should allow to choose between bundled, external, system
|
||||||
cmake_dependent_option(YUZU_USE_EXTERNAL_SDL2 "Compile external SDL2" OFF "NOT MSVC" OFF)
|
cmake_dependent_option(YUZU_USE_EXTERNAL_SDL2 "Build SDL2 from external source" OFF "ENABLE_SDL2;NOT MSVC" OFF)
|
||||||
option(YUZU_USE_BUNDLED_SDL2 "Download bundled SDL2 build" "${MSVC}")
|
cmake_dependent_option(YUZU_USE_BUNDLED_SDL2 "Download bundled SDL2 build" "${MSVC}" "ENABLE_SDL2" OFF)
|
||||||
endif()
|
|
||||||
|
|
||||||
# qt stuff
|
|
||||||
option(ENABLE_QT "Enable the Qt frontend" ON)
|
|
||||||
option(ENABLE_QT_TRANSLATION "Enable translations for the Qt frontend" OFF)
|
|
||||||
option(ENABLE_UPDATE_CHECKER "Enable update checker (for Qt and Android)" OFF)
|
|
||||||
cmake_dependent_option(YUZU_USE_BUNDLED_QT "Download bundled Qt binaries" "${MSVC}" "ENABLE_QT" OFF)
|
|
||||||
option(YUZU_USE_QT_MULTIMEDIA "Use QtMultimedia for Camera" OFF)
|
|
||||||
option(YUZU_USE_QT_WEB_ENGINE "Use QtWebEngine for web applet implementation" OFF)
|
|
||||||
set(YUZU_QT_MIRROR "" CACHE STRING "What mirror to use for downloading the bundled Qt libraries")
|
|
||||||
|
|
||||||
option(ENABLE_CUBEB "Enables the cubeb audio backend" ON)
|
option(ENABLE_CUBEB "Enables the cubeb audio backend" ON)
|
||||||
|
|
||||||
@@ -240,17 +197,23 @@ set(EXT_DEFAULT OFF)
|
|||||||
if (MSVC OR ANDROID)
|
if (MSVC OR ANDROID)
|
||||||
set(EXT_DEFAULT ON)
|
set(EXT_DEFAULT ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(YUZU_USE_CPM "Use CPM to fetch system dependencies (fmt, boost, etc) if needed. Externals will still be fetched." ${EXT_DEFAULT})
|
option(YUZU_USE_CPM "Use CPM to fetch system dependencies (fmt, boost, etc) if needed. Externals will still be fetched." ${EXT_DEFAULT})
|
||||||
|
|
||||||
# ffmpeg
|
# ffmpeg
|
||||||
option(YUZU_USE_BUNDLED_FFMPEG "Download bundled FFmpeg" ${EXT_DEFAULT})
|
option(YUZU_USE_BUNDLED_FFMPEG "Download bundled FFmpeg" ${EXT_DEFAULT})
|
||||||
cmake_dependent_option(YUZU_USE_EXTERNAL_FFMPEG "Build FFmpeg from source" "${PLATFORM_SUN}" "NOT WIN32 AND NOT ANDROID" OFF)
|
cmake_dependent_option(YUZU_USE_EXTERNAL_FFMPEG "Build FFmpeg from external source" "${PLATFORM_SUN}" "NOT WIN32 AND NOT ANDROID" OFF)
|
||||||
|
|
||||||
# sirit
|
# sirit
|
||||||
option(YUZU_USE_BUNDLED_SIRIT "Download bundled sirit" ${EXT_DEFAULT})
|
set(BUNDLED_SIRIT_DEFAULT OFF)
|
||||||
|
if (MSVC AND NOT (CMAKE_BUILD_TYPE MATCHES "Deb") OR ANDROID)
|
||||||
|
set(BUNDLED_SIRIT_DEFAULT ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Re-allow on FreeBSD once its on mainline ports
|
option(YUZU_USE_BUNDLED_SIRIT "Download bundled sirit" ${BUNDLED_SIRIT_DEFAULT})
|
||||||
cmake_dependent_option(ENABLE_LIBUSB "Enable the use of LibUSB" ON "WIN32 OR PLATFORM_LINUX OR APPLE" OFF)
|
|
||||||
|
# FreeBSD 15+ has libusb, versions below should disable it
|
||||||
|
cmake_dependent_option(ENABLE_LIBUSB "Enable the use of LibUSB" ON "WIN32 OR PLATFORM_LINUX OR PLATFORM_FREEBSD OR APPLE" OFF)
|
||||||
|
|
||||||
cmake_dependent_option(ENABLE_OPENGL "Enable OpenGL" ON "NOT WIN32 OR NOT ARCHITECTURE_arm64" OFF)
|
cmake_dependent_option(ENABLE_OPENGL "Enable OpenGL" ON "NOT WIN32 OR NOT ARCHITECTURE_arm64" OFF)
|
||||||
mark_as_advanced(FORCE ENABLE_OPENGL)
|
mark_as_advanced(FORCE ENABLE_OPENGL)
|
||||||
@@ -262,113 +225,61 @@ cmake_dependent_option(USE_DISCORD_PRESENCE "Enables Discord Rich Presence" OFF
|
|||||||
|
|
||||||
option(YUZU_TESTS "Compile tests" "${BUILD_TESTING}")
|
option(YUZU_TESTS "Compile tests" "${BUILD_TESTING}")
|
||||||
|
|
||||||
option(YUZU_ENABLE_LTO "Enable link-time optimization" OFF)
|
|
||||||
if(YUZU_ENABLE_LTO)
|
|
||||||
include(CheckIPOSupported)
|
|
||||||
check_ipo_supported(RESULT COMPILER_SUPPORTS_LTO)
|
|
||||||
if(NOT COMPILER_SUPPORTS_LTO)
|
|
||||||
message(FATAL_ERROR "Your compiler does not support interprocedural optimization (IPO). Re-run CMake with -DYUZU_ENABLE_LTO=OFF.")
|
|
||||||
endif()
|
|
||||||
set(CMAKE_POLICY_DEFAULT_CMP0069 NEW)
|
|
||||||
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ${COMPILER_SUPPORTS_LTO})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
option(USE_CCACHE "Use ccache for compilation" OFF)
|
|
||||||
set(CCACHE_PATH "ccache" CACHE STRING "Path to ccache binary")
|
|
||||||
if(USE_CCACHE)
|
|
||||||
find_program(CCACHE_BINARY ${CCACHE_PATH})
|
|
||||||
if(CCACHE_BINARY)
|
|
||||||
message(STATUS "Found ccache at: ${CCACHE_BINARY}")
|
|
||||||
set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_BINARY})
|
|
||||||
set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_BINARY})
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "USE_CCACHE enabled, but no executable found at: ${CCACHE_PATH}")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# TODO(crueter): CI this?
|
|
||||||
option(YUZU_DOWNLOAD_ANDROID_VVL "Download validation layer binary for android" ON)
|
option(YUZU_DOWNLOAD_ANDROID_VVL "Download validation layer binary for android" ON)
|
||||||
|
|
||||||
option(YUZU_LEGACY "Apply patches that improve compatibility with older GPUs (e.g. Snapdragon 865) at the cost of performance" OFF)
|
option(YUZU_LEGACY "Apply patches that improve compatibility with older GPUs (e.g. Snapdragon 865) at the cost of performance" OFF)
|
||||||
|
|
||||||
|
option(NIGHTLY_BUILD "Use Nightly qualifiers in the update checker and build metadata" OFF)
|
||||||
|
|
||||||
cmake_dependent_option(YUZU_ROOM "Enable dedicated room functionality" ON "NOT ANDROID" OFF)
|
cmake_dependent_option(YUZU_ROOM "Enable dedicated room functionality" ON "NOT ANDROID" OFF)
|
||||||
cmake_dependent_option(YUZU_ROOM_STANDALONE "Enable standalone room executable" ON "YUZU_ROOM" OFF)
|
cmake_dependent_option(YUZU_ROOM_STANDALONE "Enable standalone room executable" ON "YUZU_ROOM" OFF)
|
||||||
|
|
||||||
cmake_dependent_option(YUZU_CMD "Compile the eden-cli executable" ON "ENABLE_SDL2;NOT ANDROID" OFF)
|
cmake_dependent_option(YUZU_CMD "Compile the eden-cli executable" ON "ENABLE_SDL2;NOT ANDROID" OFF)
|
||||||
|
|
||||||
cmake_dependent_option(YUZU_CRASH_DUMPS "Compile crash dump (Minidump) support" OFF "WIN32 OR LINUX" OFF)
|
cmake_dependent_option(YUZU_CRASH_DUMPS "Compile crash dump (Minidump) support" OFF "WIN32 OR PLATFORM_LINUX" OFF)
|
||||||
|
|
||||||
option(YUZU_DOWNLOAD_TIME_ZONE_DATA "Always download time zone binaries" ON)
|
option(YUZU_DOWNLOAD_TIME_ZONE_DATA "Always download time zone binaries" ON)
|
||||||
set(YUZU_TZDB_PATH "" CACHE STRING "Path to a pre-downloaded timezone database")
|
set(YUZU_TZDB_PATH "" CACHE STRING "Path to a pre-downloaded timezone database")
|
||||||
|
|
||||||
cmake_dependent_option(YUZU_USE_FASTER_LD "Check if a faster linker is available" ON "LINUX" OFF)
|
|
||||||
|
|
||||||
cmake_dependent_option(YUZU_USE_BUNDLED_MOLTENVK "Download bundled MoltenVK lib" ON "APPLE" OFF)
|
cmake_dependent_option(YUZU_USE_BUNDLED_MOLTENVK "Download bundled MoltenVK lib" ON "APPLE" OFF)
|
||||||
|
|
||||||
option(YUZU_DISABLE_LLVM "Disable LLVM (useful for CI)" OFF)
|
option(YUZU_DISABLE_LLVM "Disable LLVM (useful for CI)" OFF)
|
||||||
|
|
||||||
set(DEFAULT_ENABLE_OPENSSL ON)
|
set(DEFAULT_ENABLE_OPENSSL ON)
|
||||||
if (ANDROID OR WIN32 OR APPLE OR PLATFORM_SUN)
|
if (ANDROID OR WIN32 OR APPLE OR PLATFORM_SUN OR PLATFORM_OPENBSD)
|
||||||
# - Windows defaults to the Schannel backend.
|
# - Windows defaults to the Schannel backend.
|
||||||
# - macOS defaults to the SecureTransport backend.
|
# - macOS defaults to the SecureTransport backend.
|
||||||
# - Android currently has no SSL backend as the NDK doesn't include any SSL
|
# - Android currently has no SSL backend as the NDK doesn't include any SSL
|
||||||
# library; a proper 'native' backend would have to go through Java.
|
# library; a proper 'native' backend would have to go through Java.
|
||||||
|
# - Solaris and OpenBSD have too old backends
|
||||||
# But you can force builds for those platforms to use OpenSSL if you have
|
# But you can force builds for those platforms to use OpenSSL if you have
|
||||||
# your own copy of it.
|
# your own copy of it.
|
||||||
set(DEFAULT_ENABLE_OPENSSL OFF)
|
set(DEFAULT_ENABLE_OPENSSL OFF)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ENABLE_WEB_SERVICE)
|
if (ENABLE_WEB_SERVICE OR USE_DISCORD_PRESENCE)
|
||||||
set(DEFAULT_ENABLE_OPENSSL ON)
|
set(DEFAULT_ENABLE_OPENSSL ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(ENABLE_OPENSSL "Enable OpenSSL backend for ISslConnection" ${DEFAULT_ENABLE_OPENSSL})
|
option(ENABLE_OPENSSL "Enable OpenSSL backend for ISslConnection" ${DEFAULT_ENABLE_OPENSSL})
|
||||||
if (ENABLE_OPENSSL)
|
|
||||||
set(DEFAULT_YUZU_USE_BUNDLED_OPENSSL OFF)
|
set(DEFAULT_YUZU_USE_BUNDLED_OPENSSL OFF)
|
||||||
if (EXT_DEFAULT OR PLATFORM_SUN)
|
if (EXT_DEFAULT OR PLATFORM_SUN OR PLATFORM_OPENBSD)
|
||||||
set(DEFAULT_YUZU_USE_BUNDLED_OPENSSL ON)
|
set(DEFAULT_YUZU_USE_BUNDLED_OPENSSL ON)
|
||||||
endif()
|
endif()
|
||||||
option(YUZU_USE_BUNDLED_OPENSSL "Download bundled OpenSSL build" ${DEFAULT_YUZU_USE_BUNDLED_OPENSSL})
|
|
||||||
endif()
|
cmake_dependent_option(YUZU_USE_BUNDLED_OPENSSL "Download bundled OpenSSL build" ${DEFAULT_YUZU_USE_BUNDLED_OPENSSL} "ENABLE_OPENSSL" OFF)
|
||||||
|
|
||||||
if (ANDROID AND YUZU_DOWNLOAD_ANDROID_VVL)
|
if (ANDROID AND YUZU_DOWNLOAD_ANDROID_VVL)
|
||||||
# TODO(crueter): CPM this
|
AddJsonPackage(vulkan-validation-layers)
|
||||||
set(vvl_version "1.4.321.0")
|
|
||||||
set(vvl_zip_file "${CMAKE_BINARY_DIR}/externals/vvl-android.zip")
|
|
||||||
if (NOT EXISTS "${vvl_zip_file}")
|
|
||||||
# Download and extract validation layer release to externals directory
|
|
||||||
set(vvl_base_url "https://github.com/KhronosGroup/Vulkan-ValidationLayers/releases/download")
|
|
||||||
file(DOWNLOAD "${vvl_base_url}/vulkan-sdk-${vvl_version}/android-binaries-${vvl_version}.zip"
|
|
||||||
"${vvl_zip_file}" SHOW_PROGRESS)
|
|
||||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${vvl_zip_file}"
|
|
||||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Copy the arm64 binary to src/android/app/main/jniLibs
|
set(abi ${CMAKE_ANDROID_ARCH_ABI})
|
||||||
set(vvl_lib_path "${CMAKE_CURRENT_SOURCE_DIR}/src/android/app/src/main/jniLibs/arm64-v8a/")
|
|
||||||
file(COPY "${CMAKE_BINARY_DIR}/externals/android-binaries-${vvl_version}/arm64-v8a/libVkLayer_khronos_validation.so"
|
set(vvl_lib_path "${CMAKE_CURRENT_SOURCE_DIR}/src/android/app/src/main/jniLibs/${abi}/")
|
||||||
|
file(COPY "${VVL_SOURCE_DIR}/${abi}/libVkLayer_khronos_validation.so"
|
||||||
DESTINATION "${vvl_lib_path}")
|
DESTINATION "${vvl_lib_path}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ANDROID)
|
|
||||||
set(CMAKE_SKIP_INSTALL_RULES ON)
|
|
||||||
set(CMAKE_POLICY_VERSION_MINIMUM 3.5) # Workaround for Oboe
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# We need to downgrade debug info (/Zi -> /Z7) to use an older but more cacheable format
|
|
||||||
# See https://github.com/nanoant/CMakePCHCompiler/issues/21
|
|
||||||
if(WIN32 AND (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo"))
|
|
||||||
string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
|
||||||
string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Default to a Release build
|
|
||||||
get_property(IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
|
||||||
if (NOT IS_MULTI_CONFIG AND NOT CMAKE_BUILD_TYPE)
|
|
||||||
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE)
|
|
||||||
message(STATUS "Defaulting to a Release build")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(EXISTS ${PROJECT_SOURCE_DIR}/hooks/pre-commit AND NOT EXISTS ${PROJECT_SOURCE_DIR}/.git/hooks/pre-commit)
|
if(EXISTS ${PROJECT_SOURCE_DIR}/hooks/pre-commit AND NOT EXISTS ${PROJECT_SOURCE_DIR}/.git/hooks/pre-commit)
|
||||||
if (EXISTS ${PROJECT_SOURCE_DIR}/.git/)
|
if (EXISTS ${PROJECT_SOURCE_DIR}/.git/)
|
||||||
message(STATUS "Copying pre-commit hook")
|
message(STATUS "Copying pre-commit hook")
|
||||||
@@ -376,25 +287,23 @@ if(EXISTS ${PROJECT_SOURCE_DIR}/hooks/pre-commit AND NOT EXISTS ${PROJECT_SOURCE
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
configure_file(${PROJECT_SOURCE_DIR}/dist/compatibility_list/compatibility_list.qrc
|
set(compat_base dist/compatibility_list/compatibility_list)
|
||||||
${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.qrc
|
set(compat_qrc ${compat_base}.qrc)
|
||||||
|
set(compat_json ${compat_base}.json)
|
||||||
|
|
||||||
|
configure_file(${PROJECT_SOURCE_DIR}/${compat_qrc}
|
||||||
|
${PROJECT_BINARY_DIR}/${compat_qrc}
|
||||||
COPYONLY)
|
COPYONLY)
|
||||||
|
|
||||||
if (EXISTS ${PROJECT_SOURCE_DIR}/dist/compatibility_list/compatibility_list.json)
|
if (EXISTS ${PROJECT_SOURCE_DIR}/${compat_json})
|
||||||
configure_file("${PROJECT_SOURCE_DIR}/dist/compatibility_list/compatibility_list.json"
|
configure_file("${PROJECT_SOURCE_DIR}/${compat_json}"
|
||||||
"${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json"
|
"${PROJECT_BINARY_DIR}/${compat_json}"
|
||||||
COPYONLY)
|
COPYONLY)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ENABLE_COMPATIBILITY_LIST_DOWNLOAD AND NOT EXISTS ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json)
|
# TODO: Compat list download
|
||||||
message(STATUS "Downloading compatibility list for yuzu...")
|
if (NOT EXISTS ${PROJECT_BINARY_DIR}/${compat_json})
|
||||||
file(DOWNLOAD
|
file(WRITE ${PROJECT_BINARY_DIR}/${compat_json} "")
|
||||||
https://api.yuzu-emu.org/gamedb/
|
|
||||||
"${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json" SHOW_PROGRESS)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (NOT EXISTS ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json)
|
|
||||||
file(WRITE ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json "")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (YUZU_LEGACY)
|
if (YUZU_LEGACY)
|
||||||
@@ -424,44 +333,51 @@ if ((ANDROID OR APPLE OR UNIX) AND (NOT PLATFORM_LINUX OR ANDROID) AND NOT WIN32
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Build/optimization presets
|
# Build/optimization presets
|
||||||
if (PLATFORM_LINUX OR CXX_CLANG)
|
if (CXX_GCC OR CXX_CLANG)
|
||||||
if (ARCHITECTURE_x86_64)
|
if (ARCHITECTURE_x86_64)
|
||||||
# See https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html
|
# See https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html
|
||||||
# Generic supports Pentium Pro instruction set and above
|
# Generic supports Pentium Pro instruction set and above
|
||||||
|
# TODO: if a value is unknown, pass that as march and mtune
|
||||||
set(YUZU_BUILD_PRESET "custom" CACHE STRING "Build preset to use. One of: custom, generic, v3, zen2, zen4, native")
|
set(YUZU_BUILD_PRESET "custom" CACHE STRING "Build preset to use. One of: custom, generic, v3, zen2, zen4, native")
|
||||||
|
|
||||||
if (${YUZU_BUILD_PRESET} STREQUAL "generic")
|
if (${YUZU_BUILD_PRESET} STREQUAL "generic")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=x86-64 -mtune=generic")
|
set(march x86-64)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=x86-64 -mtune=generic")
|
set(mtune generic)
|
||||||
elseif (${YUZU_BUILD_PRESET} STREQUAL "v3")
|
elseif (${YUZU_BUILD_PRESET} STREQUAL "v3")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=x86-64-v3 -mtune=generic")
|
set(march x86-64-v3)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=x86-64-v3 -mtune=generic")
|
set(mtune generic)
|
||||||
elseif (${YUZU_BUILD_PRESET} STREQUAL "zen2")
|
elseif (${YUZU_BUILD_PRESET} STREQUAL "zen2")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=znver2 -mtune=znver2")
|
set(march znver2)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=znver2 -mtune=znver2")
|
set(mtune znver2)
|
||||||
elseif (${YUZU_BUILD_PRESET} STREQUAL "zen4")
|
elseif (${YUZU_BUILD_PRESET} STREQUAL "zen4")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=znver4 -mtune=znver4")
|
set(march znver4)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=znver4 -mtune=znver4")
|
set(mtune znver4)
|
||||||
elseif (${YUZU_BUILD_PRESET} STREQUAL "native")
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -mtune=native")
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=native -mtune=native")
|
|
||||||
endif()
|
endif()
|
||||||
elseif(ARCHITECTURE_arm64)
|
elseif(ARCHITECTURE_arm64)
|
||||||
# See https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html
|
# See https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html
|
||||||
set(YUZU_BUILD_PRESET "custom" CACHE STRING "Build preset to use. One of: custom, generic, armv9, native")
|
set(YUZU_BUILD_PRESET "custom" CACHE STRING "Build preset to use. One of: custom, generic, armv9, native")
|
||||||
|
set(mtune generic)
|
||||||
|
|
||||||
if (${YUZU_BUILD_PRESET} STREQUAL "generic")
|
if (${YUZU_BUILD_PRESET} STREQUAL "generic")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8-a -mtune=generic")
|
set(march armv8-a)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8-a -mtune=generic")
|
|
||||||
elseif (${YUZU_BUILD_PRESET} STREQUAL "armv9")
|
elseif (${YUZU_BUILD_PRESET} STREQUAL "armv9")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv9-a -mtune=generic")
|
set(march armv9-a)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv9-a -mtune=generic")
|
|
||||||
elseif (${YUZU_BUILD_PRESET} STREQUAL "native")
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -mtune=native")
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=native -mtune=native")
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if ("${YUZU_BUILD_PRESET}" STREQUAL "native")
|
||||||
|
set(march native)
|
||||||
|
set(mtune native)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (DEFINED march AND DEFINED mtune)
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=${march} -mtune=${mtune}")
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=${march} -mtune=${mtune}")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Other presets, e.g. steamdeck
|
# Other presets, e.g. steamdeck
|
||||||
|
# TODO(crueter): Just have every Linux/Windows use old sdl2
|
||||||
set(YUZU_SYSTEM_PROFILE "generic" CACHE STRING "CMake and Externals profile to use. One of: generic, steamdeck")
|
set(YUZU_SYSTEM_PROFILE "generic" CACHE STRING "CMake and Externals profile to use. One of: generic, steamdeck")
|
||||||
|
|
||||||
# Configure C++ standard
|
# Configure C++ standard
|
||||||
@@ -476,11 +392,14 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
|
|||||||
# System imported libraries
|
# System imported libraries
|
||||||
# =======================================================================
|
# =======================================================================
|
||||||
|
|
||||||
include(CPMUtil)
|
# Prefer the -pthread flag on Linux.
|
||||||
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||||
|
find_package(Threads REQUIRED)
|
||||||
|
|
||||||
# openssl funniness
|
# openssl funniness
|
||||||
if (ENABLE_OPENSSL)
|
if (ENABLE_OPENSSL)
|
||||||
if (YUZU_USE_BUNDLED_OPENSSL)
|
if (YUZU_USE_BUNDLED_OPENSSL)
|
||||||
|
set(BUILD_SHARED_LIBS OFF)
|
||||||
AddJsonPackage(openssl)
|
AddJsonPackage(openssl)
|
||||||
if (OpenSSL_ADDED)
|
if (OpenSSL_ADDED)
|
||||||
add_compile_definitions(YUZU_BUNDLED_OPENSSL)
|
add_compile_definitions(YUZU_BUNDLED_OPENSSL)
|
||||||
@@ -536,6 +455,15 @@ if (YUZU_USE_CPM)
|
|||||||
add_library(lz4::lz4 ALIAS lz4_static)
|
add_library(lz4::lz4 ALIAS lz4_static)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# zstd
|
||||||
|
AddJsonPackage(zstd)
|
||||||
|
|
||||||
|
if (zstd_ADDED)
|
||||||
|
add_library(zstd::zstd ALIAS libzstd_static)
|
||||||
|
add_library(zstd::libzstd ALIAS libzstd_static)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (NOT YUZU_STATIC_ROOM)
|
||||||
# nlohmann
|
# nlohmann
|
||||||
AddJsonPackage(nlohmann)
|
AddJsonPackage(nlohmann)
|
||||||
|
|
||||||
@@ -546,14 +474,6 @@ if (YUZU_USE_CPM)
|
|||||||
add_library(ZLIB::ZLIB ALIAS zlibstatic)
|
add_library(ZLIB::ZLIB ALIAS zlibstatic)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# zstd
|
|
||||||
AddJsonPackage(zstd)
|
|
||||||
|
|
||||||
if (zstd_ADDED)
|
|
||||||
add_library(zstd::zstd ALIAS libzstd_static)
|
|
||||||
add_library(zstd::libzstd ALIAS libzstd_static)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Opus
|
# Opus
|
||||||
AddJsonPackage(opus)
|
AddJsonPackage(opus)
|
||||||
|
|
||||||
@@ -568,7 +488,9 @@ if (YUZU_USE_CPM)
|
|||||||
if (NOT TARGET Opus::opus)
|
if (NOT TARGET Opus::opus)
|
||||||
add_library(Opus::opus ALIAS opus)
|
add_library(Opus::opus ALIAS opus)
|
||||||
endif()
|
endif()
|
||||||
|
endif()
|
||||||
else()
|
else()
|
||||||
|
# TODO: we can probably just use CPM for this... right?
|
||||||
# Enforce the search mode of non-required packages for better and shorter failure messages
|
# Enforce the search mode of non-required packages for better and shorter failure messages
|
||||||
find_package(fmt 8 REQUIRED)
|
find_package(fmt 8 REQUIRED)
|
||||||
|
|
||||||
@@ -582,16 +504,13 @@ else()
|
|||||||
find_package(stb MODULE)
|
find_package(stb MODULE)
|
||||||
|
|
||||||
find_package(Opus 1.3 MODULE REQUIRED)
|
find_package(Opus 1.3 MODULE REQUIRED)
|
||||||
|
|
||||||
find_package(ZLIB 1.2 REQUIRED)
|
find_package(ZLIB 1.2 REQUIRED)
|
||||||
find_package(zstd 1.5 REQUIRED MODULE)
|
find_package(zstd 1.5 REQUIRED MODULE)
|
||||||
|
|
||||||
# wow
|
# wow
|
||||||
find_package(Boost 1.57.0 CONFIG REQUIRED OPTIONAL_COMPONENTS headers context system fiber filesystem)
|
find_package(Boost 1.57.0 CONFIG REQUIRED OPTIONAL_COMPONENTS headers context system fiber filesystem)
|
||||||
|
|
||||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR ANDROID)
|
|
||||||
find_package(gamemode 1.7 MODULE)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (ENABLE_OPENSSL)
|
if (ENABLE_OPENSSL)
|
||||||
find_package(OpenSSL 1.1.1 REQUIRED)
|
find_package(OpenSSL 1.1.1 REQUIRED)
|
||||||
endif()
|
endif()
|
||||||
@@ -632,48 +551,50 @@ endfunction()
|
|||||||
|
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
# Umbrella framework for everything GUI-related
|
# Umbrella framework for everything GUI-related
|
||||||
find_library(COCOA_LIBRARY Cocoa)
|
find_library(COCOA_LIBRARY Cocoa REQUIRED)
|
||||||
|
find_library(IOKIT_LIBRARY IOKit REQUIRED)
|
||||||
set(PLATFORM_LIBRARIES ${COCOA_LIBRARY} ${IOKIT_LIBRARY} ${COREVIDEO_LIBRARY})
|
set(PLATFORM_LIBRARIES ${COCOA_LIBRARY} ${IOKIT_LIBRARY} ${COREVIDEO_LIBRARY})
|
||||||
find_library(ICONV_LIBRARY iconv REQUIRED)
|
|
||||||
list(APPEND PLATFORM_LIBRARIES ${ICONV_LIBRARY})
|
|
||||||
elseif (WIN32)
|
elseif (WIN32)
|
||||||
# Target Windows 10
|
# Target Windows 10
|
||||||
add_compile_definitions(_WIN32_WINNT=0x0A00 WINVER=0x0A00)
|
add_compile_definitions(_WIN32_WINNT=0x0A00 WINVER=0x0A00)
|
||||||
set(PLATFORM_LIBRARIES winmm ws2_32 iphlpapi)
|
set(PLATFORM_LIBRARIES ${PLATFORM_LIBRARIES} winmm iphlpapi ws2_32 wlanapi)
|
||||||
if (MINGW)
|
if (MINGW)
|
||||||
# PSAPI is the Process Status API
|
# PSAPI is the Process Status API
|
||||||
set(PLATFORM_LIBRARIES ${PLATFORM_LIBRARIES} psapi imm32 version)
|
set(PLATFORM_LIBRARIES ${PLATFORM_LIBRARIES} psapi imm32 version crypt32 rpcrt4 gdi32 wldap32 mswsock)
|
||||||
endif()
|
endif()
|
||||||
elseif (PLATFORM_HAIKU)
|
elseif (PLATFORM_HAIKU)
|
||||||
# Haiku is so special :)
|
# Haiku is so special :)
|
||||||
# Some fucking genius decided to name an entire module "network" in 2019
|
|
||||||
# this caused great disaster amongst the Haiku community who had came first with
|
|
||||||
# their "libnetwork.so"; since CMake doesn't do magic, we have to use an ABSOLUTE PATH
|
|
||||||
# to the library itself, otherwise it will think we are linking to... our network thing
|
|
||||||
set(PLATFORM_LIBRARIES bsd /boot/system/lib/libnetwork.so)
|
set(PLATFORM_LIBRARIES bsd /boot/system/lib/libnetwork.so)
|
||||||
elseif (CMAKE_SYSTEM_NAME MATCHES "^(Linux|kFreeBSD|GNU|SunOS)$")
|
elseif (CMAKE_SYSTEM_NAME MATCHES "^(Linux|kFreeBSD|GNU|SunOS)$")
|
||||||
set(PLATFORM_LIBRARIES rt)
|
set(PLATFORM_LIBRARIES rt)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
message(STATUS "Platform Libraries: ${PLATFORM_LIBRARIES}")
|
||||||
|
|
||||||
add_subdirectory(externals)
|
add_subdirectory(externals)
|
||||||
|
|
||||||
# pass targets from externals
|
# pass targets from externals
|
||||||
find_package(libusb)
|
|
||||||
find_package(VulkanMemoryAllocator)
|
|
||||||
find_package(enet)
|
find_package(enet)
|
||||||
find_package(MbedTLS)
|
find_package(MbedTLS)
|
||||||
find_package(VulkanUtilityLibraries)
|
find_package(unordered_dense REQUIRED)
|
||||||
find_package(SimpleIni)
|
|
||||||
find_package(SPIRV-Tools)
|
|
||||||
find_package(sirit)
|
|
||||||
|
|
||||||
if (ARCHITECTURE_x86 OR ARCHITECTURE_x86_64)
|
if (ARCHITECTURE_x86 OR ARCHITECTURE_x86_64)
|
||||||
find_package(xbyak)
|
find_package(xbyak)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ENABLE_WEB_SERVICE OR ENABLE_QT_UPDATE_CHECKER)
|
if (NOT YUZU_STATIC_ROOM)
|
||||||
# Workaround: httplib will kill itself if you attempt to do a find_package propagation
|
find_package(libusb)
|
||||||
# find_package(httplib CONFIG)
|
find_package(VulkanMemoryAllocator)
|
||||||
|
find_package(VulkanUtilityLibraries)
|
||||||
|
find_package(SimpleIni)
|
||||||
|
find_package(SPIRV-Tools)
|
||||||
|
find_package(sirit)
|
||||||
|
find_package(gamemode)
|
||||||
|
find_package(mcl)
|
||||||
|
find_package(frozen)
|
||||||
|
|
||||||
|
if (ARCHITECTURE_riscv64)
|
||||||
|
find_package(biscuit)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ENABLE_WEB_SERVICE OR ENABLE_UPDATE_CHECKER)
|
if (ENABLE_WEB_SERVICE OR ENABLE_UPDATE_CHECKER)
|
||||||
@@ -699,10 +620,19 @@ endif()
|
|||||||
if (YUZU_TESTS OR DYNARMIC_TESTS)
|
if (YUZU_TESTS OR DYNARMIC_TESTS)
|
||||||
find_package(Catch2)
|
find_package(Catch2)
|
||||||
endif()
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Qt stuff
|
||||||
if (ENABLE_QT)
|
if (ENABLE_QT)
|
||||||
if (YUZU_USE_BUNDLED_QT)
|
if (YUZU_USE_BUNDLED_QT)
|
||||||
download_qt(6.8.3)
|
# Qt 6.8+ is broken on macOS (??)
|
||||||
|
if (APPLE)
|
||||||
|
AddQt(6.7.3)
|
||||||
|
else()
|
||||||
|
AddQt(6.9.3)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(YUZU_STATIC_BUILD ON)
|
||||||
else()
|
else()
|
||||||
message(STATUS "Using system Qt")
|
message(STATUS "Using system Qt")
|
||||||
if (NOT Qt6_DIR)
|
if (NOT Qt6_DIR)
|
||||||
@@ -711,13 +641,13 @@ if (ENABLE_QT)
|
|||||||
list(APPEND CMAKE_PREFIX_PATH "${Qt6_DIR}")
|
list(APPEND CMAKE_PREFIX_PATH "${Qt6_DIR}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(Qt6 REQUIRED COMPONENTS Widgets Concurrent)
|
find_package(Qt6 CONFIG REQUIRED COMPONENTS Widgets Concurrent)
|
||||||
|
|
||||||
if (YUZU_USE_QT_MULTIMEDIA)
|
if (YUZU_USE_QT_MULTIMEDIA)
|
||||||
find_package(Qt6 REQUIRED COMPONENTS Multimedia)
|
find_package(Qt6 REQUIRED COMPONENTS Multimedia)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
if (PLATFORM_LINUX OR PLATFORM_FREEBSD)
|
||||||
# yes Qt, we get it
|
# yes Qt, we get it
|
||||||
set(QT_NO_PRIVATE_MODULE_WARNING ON)
|
set(QT_NO_PRIVATE_MODULE_WARNING ON)
|
||||||
find_package(Qt6 REQUIRED COMPONENTS DBus OPTIONAL_COMPONENTS GuiPrivate)
|
find_package(Qt6 REQUIRED COMPONENTS DBus OPTIONAL_COMPONENTS GuiPrivate)
|
||||||
@@ -746,40 +676,36 @@ if (ENABLE_QT)
|
|||||||
|
|
||||||
message(STATUS "Using target Qt at ${QT_TARGET_PATH}")
|
message(STATUS "Using target Qt at ${QT_TARGET_PATH}")
|
||||||
message(STATUS "Using host Qt at ${QT_HOST_PATH}")
|
message(STATUS "Using host Qt at ${QT_HOST_PATH}")
|
||||||
endif()
|
|
||||||
|
|
||||||
function(set_yuzu_qt_components)
|
## Components ##
|
||||||
|
|
||||||
# Best practice is to ask for all components at once, so they are from the same version
|
# Best practice is to ask for all components at once, so they are from the same version
|
||||||
set(YUZU_QT_COMPONENTS2 Core Widgets Concurrent)
|
set(YUZU_QT_COMPONENTS Core Widgets Concurrent)
|
||||||
if (PLATFORM_LINUX)
|
if (PLATFORM_LINUX)
|
||||||
list(APPEND YUZU_QT_COMPONENTS2 DBus)
|
list(APPEND YUZU_QT_COMPONENTS DBus)
|
||||||
endif()
|
endif()
|
||||||
if (YUZU_USE_QT_MULTIMEDIA)
|
if (YUZU_USE_QT_MULTIMEDIA)
|
||||||
list(APPEND YUZU_QT_COMPONENTS2 Multimedia)
|
list(APPEND YUZU_QT_COMPONENTS Multimedia)
|
||||||
endif()
|
endif()
|
||||||
if (YUZU_USE_QT_WEB_ENGINE)
|
if (YUZU_USE_QT_WEB_ENGINE)
|
||||||
list(APPEND YUZU_QT_COMPONENTS2 WebEngineCore WebEngineWidgets)
|
list(APPEND YUZU_QT_COMPONENTS WebEngineCore WebEngineWidgets)
|
||||||
endif()
|
endif()
|
||||||
if (ENABLE_QT_TRANSLATION)
|
if (ENABLE_QT_TRANSLATION)
|
||||||
list(APPEND YUZU_QT_COMPONENTS2 LinguistTools)
|
list(APPEND YUZU_QT_COMPONENTS LinguistTools)
|
||||||
endif()
|
endif()
|
||||||
set(YUZU_QT_COMPONENTS ${YUZU_QT_COMPONENTS2} PARENT_SCOPE)
|
|
||||||
endfunction(set_yuzu_qt_components)
|
|
||||||
|
|
||||||
if(ENABLE_QT)
|
|
||||||
set_yuzu_qt_components()
|
|
||||||
find_package(Qt6 REQUIRED COMPONENTS ${YUZU_QT_COMPONENTS})
|
find_package(Qt6 REQUIRED COMPONENTS ${YUZU_QT_COMPONENTS})
|
||||||
set(QT_MAJOR_VERSION 6)
|
set(QT_MAJOR_VERSION 6)
|
||||||
# Qt6 sets cxx_std_17 and we need to undo that
|
# Qt6 sets cxx_std_17 and we need to undo that
|
||||||
set_target_properties(Qt6::Platform PROPERTIES INTERFACE_COMPILE_FEATURES "")
|
set_target_properties(Qt6::Platform PROPERTIES INTERFACE_COMPILE_FEATURES "")
|
||||||
|
|
||||||
|
## Qt Externals ##
|
||||||
|
|
||||||
|
# QuaZip
|
||||||
|
AddJsonPackage(quazip)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (UNIX AND NOT APPLE AND NOT ANDROID)
|
if (NOT YUZU_STATIC_ROOM AND NOT (YUZU_USE_BUNDLED_FFMPEG OR YUZU_USE_EXTERNAL_FFMPEG))
|
||||||
find_package(PkgConfig REQUIRED)
|
|
||||||
pkg_check_modules(LIBVA libva)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (NOT (YUZU_USE_BUNDLED_FFMPEG OR YUZU_USE_EXTERNAL_FFMPEG))
|
|
||||||
# Use system installed FFmpeg
|
# Use system installed FFmpeg
|
||||||
find_package(FFmpeg REQUIRED QUIET COMPONENTS ${FFmpeg_COMPONENTS})
|
find_package(FFmpeg REQUIRED QUIET COMPONENTS ${FFmpeg_COMPONENTS})
|
||||||
|
|
||||||
@@ -790,67 +716,16 @@ if (NOT (YUZU_USE_BUNDLED_FFMPEG OR YUZU_USE_EXTERNAL_FFMPEG))
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (WIN32 AND YUZU_CRASH_DUMPS)
|
if (WIN32 AND YUZU_CRASH_DUMPS)
|
||||||
set(BREAKPAD_VER "breakpad-c89f9dd")
|
message(STATUS "YUZU_CRASH_DUMPS is unimplemented on Windows. Check back later.")
|
||||||
download_bundled_external("breakpad/" ${BREAKPAD_VER} "breakpad-win" BREAKPAD_PREFIX "c89f9dd")
|
# set(BREAKPAD_VER "breakpad-c89f9dd")
|
||||||
|
# download_bundled_external("breakpad/" ${BREAKPAD_VER} "breakpad-win" BREAKPAD_PREFIX "c89f9dd")
|
||||||
|
|
||||||
set(BREAKPAD_CLIENT_INCLUDE_DIR "${BREAKPAD_PREFIX}/include")
|
# set(BREAKPAD_CLIENT_INCLUDE_DIR "${BREAKPAD_PREFIX}/include")
|
||||||
set(BREAKPAD_CLIENT_LIBRARY "${BREAKPAD_PREFIX}/lib/libbreakpad_client.lib")
|
# set(BREAKPAD_CLIENT_LIBRARY "${BREAKPAD_PREFIX}/lib/libbreakpad_client.lib")
|
||||||
|
|
||||||
add_library(libbreakpad_client INTERFACE IMPORTED)
|
# add_library(libbreakpad_client INTERFACE IMPORTED)
|
||||||
target_link_libraries(libbreakpad_client INTERFACE "${BREAKPAD_CLIENT_LIBRARY}")
|
# target_link_libraries(libbreakpad_client INTERFACE "${BREAKPAD_CLIENT_LIBRARY}")
|
||||||
target_include_directories(libbreakpad_client INTERFACE "${BREAKPAD_CLIENT_INCLUDE_DIR}")
|
# target_include_directories(libbreakpad_client INTERFACE "${BREAKPAD_CLIENT_INCLUDE_DIR}")
|
||||||
endif()
|
|
||||||
|
|
||||||
# Prefer the -pthread flag on Linux.
|
|
||||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
|
||||||
find_package(Threads REQUIRED)
|
|
||||||
|
|
||||||
# Setup a custom clang-format target (if clang-format can be found) that will run
|
|
||||||
# against all the src files. This should be used before making a pull request.
|
|
||||||
# =======================================================================
|
|
||||||
|
|
||||||
set(CLANG_FORMAT_POSTFIX "-15")
|
|
||||||
find_program(CLANG_FORMAT
|
|
||||||
NAMES clang-format${CLANG_FORMAT_POSTFIX}
|
|
||||||
clang-format
|
|
||||||
PATHS ${PROJECT_BINARY_DIR}/externals)
|
|
||||||
# if find_program doesn't find it, try to download from externals
|
|
||||||
if (NOT CLANG_FORMAT)
|
|
||||||
if (WIN32 AND NOT CMAKE_CROSSCOMPILING)
|
|
||||||
message(STATUS "Clang format not found! Downloading...")
|
|
||||||
set(CLANG_FORMAT "${PROJECT_BINARY_DIR}/externals/clang-format${CLANG_FORMAT_POSTFIX}.exe")
|
|
||||||
file(DOWNLOAD
|
|
||||||
https://github.com/eden-emulator/ext-windows-bin/raw/master/clang-format${CLANG_FORMAT_POSTFIX}.exe
|
|
||||||
"${CLANG_FORMAT}" SHOW_PROGRESS
|
|
||||||
STATUS DOWNLOAD_SUCCESS)
|
|
||||||
if (NOT DOWNLOAD_SUCCESS EQUAL 0)
|
|
||||||
message(WARNING "Could not download clang format! Disabling the clang format target")
|
|
||||||
file(REMOVE ${CLANG_FORMAT})
|
|
||||||
unset(CLANG_FORMAT)
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
message(WARNING "Clang format not found! Disabling the clang format target")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (CLANG_FORMAT)
|
|
||||||
set(SRCS ${PROJECT_SOURCE_DIR}/src)
|
|
||||||
set(CCOMMENT "Running clang format against all the .h and .cpp files in src/")
|
|
||||||
if (WIN32)
|
|
||||||
add_custom_target(clang-format
|
|
||||||
COMMAND powershell.exe -Command "Get-ChildItem '${SRCS}/*' -Include *.cpp,*.h -Recurse | Foreach {&'${CLANG_FORMAT}' -i $_.fullname}"
|
|
||||||
COMMENT ${CCOMMENT})
|
|
||||||
elseif(MINGW)
|
|
||||||
add_custom_target(clang-format
|
|
||||||
COMMAND find `cygpath -u ${SRCS}` -iname *.h -o -iname *.cpp | xargs `cygpath -u ${CLANG_FORMAT}` -i
|
|
||||||
COMMENT ${CCOMMENT})
|
|
||||||
else()
|
|
||||||
add_custom_target(clang-format
|
|
||||||
COMMAND find ${SRCS} -iname *.h -o -iname *.cpp | xargs ${CLANG_FORMAT} -i
|
|
||||||
COMMENT ${CCOMMENT})
|
|
||||||
endif()
|
|
||||||
unset(SRCS)
|
|
||||||
unset(CCOMMENT)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Include source code
|
# Include source code
|
||||||
@@ -880,55 +755,11 @@ if (MSVC AND CXX_CLANG)
|
|||||||
|
|
||||||
add_library(llvm-mingw-runtime STATIC IMPORTED)
|
add_library(llvm-mingw-runtime STATIC IMPORTED)
|
||||||
set_target_properties(llvm-mingw-runtime PROPERTIES
|
set_target_properties(llvm-mingw-runtime PROPERTIES
|
||||||
IMPORTED_LOCATION "${LIB_PATH}"
|
IMPORTED_LOCATION "${LIB_PATH}")
|
||||||
)
|
|
||||||
|
|
||||||
link_libraries(llvm-mingw-runtime)
|
link_libraries(llvm-mingw-runtime)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
#[[
|
|
||||||
search order:
|
|
||||||
- gold (GCC only) - the best, generally, but unfortunately not packaged anymore
|
|
||||||
- mold (GCC only) - generally does well on GCC
|
|
||||||
- ldd - preferred on clang
|
|
||||||
- bfd - the final fallback
|
|
||||||
- If none are found (macOS uses ld.prime, etc) just use the default linker
|
|
||||||
]]
|
|
||||||
if (YUZU_USE_FASTER_LD)
|
|
||||||
find_program(LINKER_BFD bfd)
|
|
||||||
if (LINKER_BFD)
|
|
||||||
set(LINKER bfd)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_program(LINKER_LLD lld)
|
|
||||||
if (LINKER_LLD)
|
|
||||||
set(LINKER lld)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (CXX_GCC)
|
|
||||||
find_program(LINKER_MOLD mold)
|
|
||||||
if (LINKER_MOLD AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "12.1")
|
|
||||||
set(LINKER mold)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_program(LINKER_GOLD gold)
|
|
||||||
if (LINKER_GOLD)
|
|
||||||
set(LINKER gold)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (LINKER)
|
|
||||||
message(NOTICE "Selecting ${LINKER} as linker")
|
|
||||||
add_link_options("-fuse-ld=${LINKER}")
|
|
||||||
else()
|
|
||||||
message(WARNING "No faster linker found--using default")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (LINKER STREQUAL "lld" AND CXX_GCC)
|
|
||||||
message(WARNING "Using lld on GCC may cause issues with certain LTO settings. If the program fails to compile, disable YUZU_USE_FASTER_LD, or install mold or GNU gold.")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Set runtime library to MD/MDd for all configurations
|
# Set runtime library to MD/MDd for all configurations
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
|
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
|
||||||
@@ -948,14 +779,6 @@ if(MSVC)
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (MINGW)
|
|
||||||
# This saves a truly ridiculous amount of time during linking
|
|
||||||
# In my tests, without this it takes 2 mins, with it takes 3-5 seconds
|
|
||||||
# or on GitHub Actions, 10 minutes -> 3 seconds
|
|
||||||
set(MINGW_FLAGS "-Wl,--strip-all -Wl,--gc-sections")
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${MINGW_FLAGS}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
|
|
||||||
# Set yuzu project or yuzu-cmd project as default StartUp Project in Visual Studio depending on whether QT is enabled or not
|
# Set yuzu project or yuzu-cmd project as default StartUp Project in Visual Studio depending on whether QT is enabled or not
|
||||||
|
|||||||
@@ -1,8 +1,3 @@
|
|||||||
# SPDX-FileCopyrightText: Copyright 2025 crueter
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# This is a slightly modified version of CPM.cmake
|
|
||||||
|
|
||||||
# CPM.cmake - CMake's missing package manager
|
# CPM.cmake - CMake's missing package manager
|
||||||
# ===========================================
|
# ===========================================
|
||||||
# See https://github.com/cpm-cmake/CPM.cmake for usage and update instructions.
|
# See https://github.com/cpm-cmake/CPM.cmake for usage and update instructions.
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
# SPDX-FileCopyrightText: Copyright 2025 crueter
|
# SPDX-FileCopyrightText: Copyright 2026 crueter
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: LGPL-3.0-or-later
|
||||||
|
|
||||||
|
set(CPM_SOURCE_CACHE "${PROJECT_SOURCE_DIR}/.cache/cpm" CACHE STRING "" FORCE)
|
||||||
|
|
||||||
if(MSVC OR ANDROID)
|
if(MSVC OR ANDROID)
|
||||||
set(BUNDLED_DEFAULT ON)
|
set(BUNDLED_DEFAULT ON)
|
||||||
@@ -21,8 +23,17 @@ set(CPMUTIL_JSON_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cpmfile.json")
|
|||||||
|
|
||||||
if(EXISTS ${CPMUTIL_JSON_FILE})
|
if(EXISTS ${CPMUTIL_JSON_FILE})
|
||||||
file(READ ${CPMUTIL_JSON_FILE} CPMFILE_CONTENT)
|
file(READ ${CPMUTIL_JSON_FILE} CPMFILE_CONTENT)
|
||||||
|
if (NOT TARGET cpmfiles)
|
||||||
|
add_custom_target(cpmfiles)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_sources(cpmfiles PRIVATE ${CPMUTIL_JSON_FILE})
|
||||||
|
set_property(DIRECTORY APPEND PROPERTY
|
||||||
|
CMAKE_CONFIGURE_DEPENDS
|
||||||
|
"${CPMUTIL_JSON_FILE}")
|
||||||
else()
|
else()
|
||||||
message(WARNING "[CPMUtil] cpmfile ${CPMUTIL_JSON_FILE} does not exist, AddJsonPackage will be a no-op")
|
message(DEBUG "[CPMUtil] cpmfile ${CPMUTIL_JSON_FILE}"
|
||||||
|
"does not exist, AddJsonPackage will be a no-op")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Utility stuff
|
# Utility stuff
|
||||||
@@ -30,6 +41,11 @@ function(cpm_utils_message level name message)
|
|||||||
message(${level} "[CPMUtil] ${name}: ${message}")
|
message(${level} "[CPMUtil] ${name}: ${message}")
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
# propagate a variable to parent scope
|
||||||
|
macro(Propagate var)
|
||||||
|
set(${var} ${${var}} PARENT_SCOPE)
|
||||||
|
endmacro()
|
||||||
|
|
||||||
function(array_to_list array length out)
|
function(array_to_list array length out)
|
||||||
math(EXPR range "${length} - 1")
|
math(EXPR range "${length} - 1")
|
||||||
|
|
||||||
@@ -61,43 +77,72 @@ function(get_json_element object out member default)
|
|||||||
set("${out}" "${outvar}" PARENT_SCOPE)
|
set("${out}" "${outvar}" PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# The preferred usage
|
# Determine whether or not a package has a viable system candidate.
|
||||||
function(AddJsonPackage)
|
function(SystemPackageViable JSON_NAME)
|
||||||
set(oneValueArgs
|
string(JSON object GET "${CPMFILE_CONTENT}" "${JSON_NAME}")
|
||||||
NAME
|
|
||||||
|
|
||||||
# these are overrides that can be generated at runtime, so can be defined separately from the json
|
parse_object(${object})
|
||||||
DOWNLOAD_ONLY
|
|
||||||
BUNDLED_PACKAGE
|
|
||||||
)
|
|
||||||
|
|
||||||
set(multiValueArgs OPTIONS)
|
string(REPLACE " " ";" find_args "${find_args}")
|
||||||
|
if (${package}_FORCE_BUNDLED)
|
||||||
cmake_parse_arguments(JSON "" "${oneValueArgs}" "${multiValueArgs}"
|
set(${package}_FOUND OFF)
|
||||||
"${ARGN}")
|
else()
|
||||||
|
find_package(${package} ${version} ${find_args} QUIET NO_POLICY_SCOPE)
|
||||||
list(LENGTH ARGN argnLength)
|
|
||||||
|
|
||||||
# single name argument
|
|
||||||
if(argnLength EQUAL 1)
|
|
||||||
set(JSON_NAME "${ARGV0}")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT DEFINED CPMFILE_CONTENT)
|
set(${pkg}_VIABLE ${${package}_FOUND} PARENT_SCOPE)
|
||||||
cpm_utils_message(WARNING ${name} "No cpmfile, AddJsonPackage is a no-op")
|
set(${pkg}_PACKAGE ${package} PARENT_SCOPE)
|
||||||
return()
|
endfunction()
|
||||||
|
|
||||||
|
# Add several packages such that if one is bundled,
|
||||||
|
# all the rest must also be bundled.
|
||||||
|
function(AddDependentPackages)
|
||||||
|
set(_some_system OFF)
|
||||||
|
set(_some_bundled OFF)
|
||||||
|
|
||||||
|
foreach(pkg ${ARGN})
|
||||||
|
SystemPackageViable(${pkg})
|
||||||
|
|
||||||
|
if (${pkg}_VIABLE)
|
||||||
|
set(_some_system ON)
|
||||||
|
list(APPEND _system_pkgs ${${pkg}_PACKAGE})
|
||||||
|
else()
|
||||||
|
set(_some_bundled ON)
|
||||||
|
list(APPEND _bundled_pkgs ${${pkg}_PACKAGE})
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
if (_some_system AND _some_bundled)
|
||||||
|
foreach(pkg ${ARGN})
|
||||||
|
list(APPEND package_names ${${pkg}_PACKAGE})
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
string(REPLACE ";" ", " package_names "${package_names}")
|
||||||
|
string(REPLACE ";" ", " bundled_names "${_bundled_pkgs}")
|
||||||
|
foreach(sys ${_system_pkgs})
|
||||||
|
list(APPEND system_names ${sys}_FORCE_BUNDLED)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
string(REPLACE ";" ", " system_names "${system_names}")
|
||||||
|
|
||||||
|
message(FATAL_ERROR "Partial dependency installation detected "
|
||||||
|
"for the following packages:\n${package_names}\n"
|
||||||
|
"You can solve this in one of two ways:\n"
|
||||||
|
"1. Install the following packages to your system if available:"
|
||||||
|
"\n\t${bundled_names}\n"
|
||||||
|
"2. Set the following variables to ON:"
|
||||||
|
"\n\t${system_names}\n"
|
||||||
|
"This may also be caused by a version mismatch, "
|
||||||
|
"such as one package being newer than the other.")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT DEFINED JSON_NAME)
|
foreach(pkg ${ARGN})
|
||||||
cpm_utils_message(FATAL_ERROR "json package" "No name specified")
|
AddJsonPackage(${pkg})
|
||||||
endif()
|
endforeach()
|
||||||
|
endfunction()
|
||||||
string(JSON object ERROR_VARIABLE err GET "${CPMFILE_CONTENT}" "${JSON_NAME}")
|
|
||||||
|
|
||||||
if (err)
|
|
||||||
cpm_utils_message(FATAL_ERROR ${JSON_NAME} "Not found in cpmfile")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
# json util
|
||||||
|
macro(parse_object object)
|
||||||
get_json_element("${object}" package package ${JSON_NAME})
|
get_json_element("${object}" package package ${JSON_NAME})
|
||||||
get_json_element("${object}" repo repo "")
|
get_json_element("${object}" repo repo "")
|
||||||
get_json_element("${object}" ci ci OFF)
|
get_json_element("${object}" ci ci OFF)
|
||||||
@@ -110,32 +155,12 @@ function(AddJsonPackage)
|
|||||||
get_json_element("${object}" raw_disabled disabled_platforms "")
|
get_json_element("${object}" raw_disabled disabled_platforms "")
|
||||||
|
|
||||||
if(raw_disabled)
|
if(raw_disabled)
|
||||||
array_to_list("${raw_disabled}" ${raw_disabled_LENGTH} disabled_platforms)
|
array_to_list("${raw_disabled}"
|
||||||
|
${raw_disabled_LENGTH} disabled_platforms)
|
||||||
else()
|
else()
|
||||||
set(disabled_platforms "")
|
set(disabled_platforms "")
|
||||||
endif()
|
endif()
|
||||||
|
else()
|
||||||
AddCIPackage(
|
|
||||||
VERSION ${version}
|
|
||||||
NAME ${name}
|
|
||||||
REPO ${repo}
|
|
||||||
PACKAGE ${package}
|
|
||||||
EXTENSION ${extension}
|
|
||||||
MIN_VERSION ${min_version}
|
|
||||||
DISABLED_PLATFORMS ${disabled_platforms}
|
|
||||||
)
|
|
||||||
|
|
||||||
# pass stuff to parent scope
|
|
||||||
set(${package}_ADDED "${${package}_ADDED}"
|
|
||||||
PARENT_SCOPE)
|
|
||||||
set(${package}_SOURCE_DIR "${${package}_SOURCE_DIR}"
|
|
||||||
PARENT_SCOPE)
|
|
||||||
set(${package}_BINARY_DIR "${${package}_BINARY_DIR}"
|
|
||||||
PARENT_SCOPE)
|
|
||||||
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
get_json_element("${object}" hash hash "")
|
get_json_element("${object}" hash hash "")
|
||||||
get_json_element("${object}" hash_suffix hash_suffix "")
|
get_json_element("${object}" hash_suffix hash_suffix "")
|
||||||
get_json_element("${object}" sha sha "")
|
get_json_element("${object}" sha sha "")
|
||||||
@@ -151,8 +176,10 @@ function(AddJsonPackage)
|
|||||||
get_json_element("${object}" raw_patches patches "")
|
get_json_element("${object}" raw_patches patches "")
|
||||||
|
|
||||||
# okay here comes the fun part: REPLACEMENTS!
|
# okay here comes the fun part: REPLACEMENTS!
|
||||||
# first: tag gets %VERSION% replaced if applicable, with either git_version (preferred) or version
|
# first: tag gets %VERSION% replaced if applicable,
|
||||||
# second: artifact gets %VERSION% and %TAG% replaced accordingly (same rules for VERSION)
|
# with either git_version (preferred) or version
|
||||||
|
# second: artifact gets %VERSION% and %TAG% replaced
|
||||||
|
# accordingly (same rules for VERSION)
|
||||||
|
|
||||||
if(git_version)
|
if(git_version)
|
||||||
set(version_replace ${git_version})
|
set(version_replace ${git_version})
|
||||||
@@ -166,7 +193,8 @@ function(AddJsonPackage)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(artifact)
|
if(artifact)
|
||||||
string(REPLACE "%VERSION%" "${version_replace}" artifact ${artifact})
|
string(REPLACE "%VERSION%" "${version_replace}"
|
||||||
|
artifact ${artifact})
|
||||||
string(REPLACE "%TAG%" "${tag}" artifact ${artifact})
|
string(REPLACE "%TAG%" "${tag}" artifact ${artifact})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -177,9 +205,11 @@ function(AddJsonPackage)
|
|||||||
foreach(IDX RANGE ${range})
|
foreach(IDX RANGE ${range})
|
||||||
string(JSON _patch GET "${raw_patches}" "${IDX}")
|
string(JSON _patch GET "${raw_patches}" "${IDX}")
|
||||||
|
|
||||||
set(full_patch "${CMAKE_SOURCE_DIR}/.patch/${JSON_NAME}/${_patch}")
|
set(full_patch
|
||||||
|
"${PROJECT_SOURCE_DIR}/.patch/${JSON_NAME}/${_patch}")
|
||||||
if(NOT EXISTS ${full_patch})
|
if(NOT EXISTS ${full_patch})
|
||||||
cpm_utils_message(FATAL_ERROR ${JSON_NAME} "specifies patch ${full_patch} which does not exist")
|
cpm_utils_message(FATAL_ERROR ${JSON_NAME}
|
||||||
|
"specifies patch ${full_patch} which does not exist")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
list(APPEND patches "${full_patch}")
|
list(APPEND patches "${full_patch}")
|
||||||
@@ -201,6 +231,65 @@ function(AddJsonPackage)
|
|||||||
if(bundled STREQUAL "unset" AND DEFINED JSON_BUNDLED_PACKAGE)
|
if(bundled STREQUAL "unset" AND DEFINED JSON_BUNDLED_PACKAGE)
|
||||||
set(bundled ${JSON_BUNDLED_PACKAGE})
|
set(bundled ${JSON_BUNDLED_PACKAGE})
|
||||||
endif()
|
endif()
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
# The preferred usage
|
||||||
|
function(AddJsonPackage)
|
||||||
|
set(oneValueArgs
|
||||||
|
NAME
|
||||||
|
|
||||||
|
# these are overrides that can be generated at runtime,
|
||||||
|
# so can be defined separately from the json
|
||||||
|
DOWNLOAD_ONLY
|
||||||
|
BUNDLED_PACKAGE
|
||||||
|
FORCE_BUNDLED_PACKAGE)
|
||||||
|
|
||||||
|
set(multiValueArgs OPTIONS)
|
||||||
|
|
||||||
|
cmake_parse_arguments(JSON "" "${oneValueArgs}" "${multiValueArgs}"
|
||||||
|
"${ARGN}")
|
||||||
|
|
||||||
|
list(LENGTH ARGN argnLength)
|
||||||
|
|
||||||
|
# single name argument
|
||||||
|
if(argnLength EQUAL 1)
|
||||||
|
set(JSON_NAME "${ARGV0}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DEFINED CPMFILE_CONTENT)
|
||||||
|
cpm_utils_message(WARNING ${name}
|
||||||
|
"No cpmfile, AddJsonPackage is a no-op")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DEFINED JSON_NAME)
|
||||||
|
cpm_utils_message(FATAL_ERROR "json package" "No name specified")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
string(JSON object ERROR_VARIABLE
|
||||||
|
err GET "${CPMFILE_CONTENT}" "${JSON_NAME}")
|
||||||
|
|
||||||
|
if(err)
|
||||||
|
cpm_utils_message(FATAL_ERROR ${JSON_NAME} "Not found in cpmfile")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
parse_object(${object})
|
||||||
|
|
||||||
|
if(ci)
|
||||||
|
AddCIPackage(
|
||||||
|
VERSION ${version}
|
||||||
|
NAME ${name}
|
||||||
|
REPO ${repo}
|
||||||
|
PACKAGE ${package}
|
||||||
|
EXTENSION ${extension}
|
||||||
|
MIN_VERSION ${min_version}
|
||||||
|
DISABLED_PLATFORMS ${disabled_platforms})
|
||||||
|
|
||||||
|
else()
|
||||||
|
if (NOT DEFINED JSON_FORCE_BUNDLED_PACKAGE)
|
||||||
|
set(JSON_FORCE_BUNDLED_PACKAGE OFF)
|
||||||
|
endif()
|
||||||
|
|
||||||
AddPackage(
|
AddPackage(
|
||||||
NAME "${package}"
|
NAME "${package}"
|
||||||
@@ -215,23 +304,20 @@ function(AddJsonPackage)
|
|||||||
OPTIONS "${options}"
|
OPTIONS "${options}"
|
||||||
FIND_PACKAGE_ARGUMENTS "${find_args}"
|
FIND_PACKAGE_ARGUMENTS "${find_args}"
|
||||||
BUNDLED_PACKAGE "${bundled}"
|
BUNDLED_PACKAGE "${bundled}"
|
||||||
|
FORCE_BUNDLED_PACKAGE "${JSON_FORCE_BUNDLED_PACKAGE}"
|
||||||
SOURCE_SUBDIR "${source_subdir}"
|
SOURCE_SUBDIR "${source_subdir}"
|
||||||
|
|
||||||
GIT_VERSION ${git_version}
|
GIT_VERSION ${git_version}
|
||||||
GIT_HOST ${git_host}
|
GIT_HOST ${git_host}
|
||||||
|
|
||||||
ARTIFACT ${artifact}
|
ARTIFACT ${artifact}
|
||||||
TAG ${tag}
|
TAG ${tag})
|
||||||
)
|
endif()
|
||||||
|
|
||||||
# pass stuff to parent scope
|
# pass stuff to parent scope
|
||||||
set(${package}_ADDED "${${package}_ADDED}"
|
Propagate(${package}_ADDED)
|
||||||
PARENT_SCOPE)
|
Propagate(${package}_SOURCE_DIR)
|
||||||
set(${package}_SOURCE_DIR "${${package}_SOURCE_DIR}"
|
Propagate(${package}_BINARY_DIR)
|
||||||
PARENT_SCOPE)
|
|
||||||
set(${package}_BINARY_DIR "${${package}_BINARY_DIR}"
|
|
||||||
PARENT_SCOPE)
|
|
||||||
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(AddPackage)
|
function(AddPackage)
|
||||||
@@ -278,8 +364,7 @@ function(AddPackage)
|
|||||||
KEY
|
KEY
|
||||||
BUNDLED_PACKAGE
|
BUNDLED_PACKAGE
|
||||||
FORCE_BUNDLED_PACKAGE
|
FORCE_BUNDLED_PACKAGE
|
||||||
FIND_PACKAGE_ARGUMENTS
|
FIND_PACKAGE_ARGUMENTS)
|
||||||
)
|
|
||||||
|
|
||||||
set(multiValueArgs OPTIONS PATCHES)
|
set(multiValueArgs OPTIONS PATCHES)
|
||||||
|
|
||||||
@@ -290,8 +375,17 @@ function(AddPackage)
|
|||||||
cpm_utils_message(FATAL_ERROR "package" "No package name defined")
|
cpm_utils_message(FATAL_ERROR "package" "No package name defined")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(${PKG_ARGS_NAME}_FORCE_SYSTEM "Force the system package for ${PKG_ARGS_NAME}")
|
set(${PKG_ARGS_NAME}_CUSTOM_DIR "" CACHE STRING
|
||||||
option(${PKG_ARGS_NAME}_FORCE_BUNDLED "Force the bundled package for ${PKG_ARGS_NAME}")
|
"Path to a separately-downloaded copy of ${PKG_ARGS_NAME}")
|
||||||
|
option(${PKG_ARGS_NAME}_FORCE_SYSTEM
|
||||||
|
"Force the system package for ${PKG_ARGS_NAME}")
|
||||||
|
option(${PKG_ARGS_NAME}_FORCE_BUNDLED
|
||||||
|
"Force the bundled package for ${PKG_ARGS_NAME}")
|
||||||
|
|
||||||
|
if (DEFINED ${PKG_ARGS_NAME}_CUSTOM_DIR AND
|
||||||
|
NOT ${PKG_ARGS_NAME}_CUSTOM_DIR STREQUAL "")
|
||||||
|
set(CPM_${PKG_ARGS_NAME}_SOURCE ${${PKG_ARGS_NAME}_CUSTOM_DIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
if(NOT DEFINED PKG_ARGS_GIT_HOST)
|
if(NOT DEFINED PKG_ARGS_GIT_HOST)
|
||||||
set(git_host github.com)
|
set(git_host github.com)
|
||||||
@@ -319,7 +413,7 @@ function(AddPackage)
|
|||||||
|
|
||||||
if(DEFINED PKG_ARGS_ARTIFACT)
|
if(DEFINED PKG_ARGS_ARTIFACT)
|
||||||
set(pkg_url
|
set(pkg_url
|
||||||
${pkg_git_url}/releases/download/${PKG_ARGS_TAG}/${PKG_ARGS_ARTIFACT})
|
"${pkg_git_url}/releases/download/${PKG_ARGS_TAG}/${PKG_ARGS_ARTIFACT}")
|
||||||
else()
|
else()
|
||||||
set(pkg_url
|
set(pkg_url
|
||||||
${pkg_git_url}/archive/refs/tags/${PKG_ARGS_TAG}.tar.gz)
|
${pkg_git_url}/archive/refs/tags/${PKG_ARGS_TAG}.tar.gz)
|
||||||
@@ -331,17 +425,19 @@ function(AddPackage)
|
|||||||
set(PKG_BRANCH ${PKG_ARGS_BRANCH})
|
set(PKG_BRANCH ${PKG_ARGS_BRANCH})
|
||||||
else()
|
else()
|
||||||
cpm_utils_message(WARNING ${PKG_ARGS_NAME}
|
cpm_utils_message(WARNING ${PKG_ARGS_NAME}
|
||||||
"REPO defined but no TAG, SHA, BRANCH, or URL specified, defaulting to master")
|
"REPO defined but no TAG, SHA, BRANCH, or URL"
|
||||||
|
"specified, defaulting to master")
|
||||||
set(PKG_BRANCH master)
|
set(PKG_BRANCH master)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(pkg_url ${pkg_git_url}/archive/refs/heads/${PKG_BRANCH}.tar.gz)
|
set(pkg_url ${pkg_git_url}/archive/refs/heads/${PKG_BRANCH}.tar.gz)
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
cpm_utils_message(FATAL_ERROR ${PKG_ARGS_NAME} "No URL or repository defined")
|
cpm_utils_message(FATAL_ERROR ${PKG_ARGS_NAME}
|
||||||
|
"No URL or repository defined")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
cpm_utils_message(STATUS ${PKG_ARGS_NAME} "Download URL is ${pkg_url}")
|
cpm_utils_message(DEBUG ${PKG_ARGS_NAME} "Download URL is ${pkg_url}")
|
||||||
|
|
||||||
if(NOT DEFINED PKG_ARGS_KEY)
|
if(NOT DEFINED PKG_ARGS_KEY)
|
||||||
if(DEFINED PKG_ARGS_SHA)
|
if(DEFINED PKG_ARGS_SHA)
|
||||||
@@ -400,7 +496,8 @@ function(AddPackage)
|
|||||||
# because "technically" the hash is invalidated each week
|
# because "technically" the hash is invalidated each week
|
||||||
# but it works for now kjsdnfkjdnfjksdn
|
# but it works for now kjsdnfkjdnfjksdn
|
||||||
string(TOLOWER ${PKG_ARGS_NAME} lowername)
|
string(TOLOWER ${PKG_ARGS_NAME} lowername)
|
||||||
if (NOT EXISTS ${outfile} AND NOT EXISTS ${CPM_SOURCE_CACHE}/${lowername}/${pkg_key})
|
if(NOT EXISTS ${outfile} AND NOT EXISTS
|
||||||
|
${CPM_SOURCE_CACHE}/${lowername}/${pkg_key})
|
||||||
file(DOWNLOAD ${hash_url} ${outfile})
|
file(DOWNLOAD ${hash_url} ${outfile})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -426,7 +523,7 @@ function(AddPackage)
|
|||||||
- CPMUTIL_FORCE_BUNDLED
|
- CPMUTIL_FORCE_BUNDLED
|
||||||
- BUNDLED_PACKAGE
|
- BUNDLED_PACKAGE
|
||||||
- default to allow local
|
- default to allow local
|
||||||
]]#
|
]]
|
||||||
if(PKG_ARGS_FORCE_BUNDLED_PACKAGE)
|
if(PKG_ARGS_FORCE_BUNDLED_PACKAGE)
|
||||||
set_precedence(OFF OFF)
|
set_precedence(OFF OFF)
|
||||||
elseif(${PKG_ARGS_NAME}_FORCE_SYSTEM)
|
elseif(${PKG_ARGS_NAME}_FORCE_SYSTEM)
|
||||||
@@ -437,7 +534,8 @@ function(AddPackage)
|
|||||||
set_precedence(ON ON)
|
set_precedence(ON ON)
|
||||||
elseif(CPMUTIL_FORCE_BUNDLED)
|
elseif(CPMUTIL_FORCE_BUNDLED)
|
||||||
set_precedence(OFF OFF)
|
set_precedence(OFF OFF)
|
||||||
elseif (DEFINED PKG_ARGS_BUNDLED_PACKAGE AND NOT PKG_ARGS_BUNDLED_PACKAGE STREQUAL "unset")
|
elseif(DEFINED PKG_ARGS_BUNDLED_PACKAGE AND
|
||||||
|
NOT PKG_ARGS_BUNDLED_PACKAGE STREQUAL "unset")
|
||||||
if(PKG_ARGS_BUNDLED_PACKAGE)
|
if(PKG_ARGS_BUNDLED_PACKAGE)
|
||||||
set(local OFF)
|
set(local OFF)
|
||||||
else()
|
else()
|
||||||
@@ -451,8 +549,7 @@ function(AddPackage)
|
|||||||
|
|
||||||
if(DEFINED PKG_ARGS_VERSION)
|
if(DEFINED PKG_ARGS_VERSION)
|
||||||
list(APPEND EXTRA_ARGS
|
list(APPEND EXTRA_ARGS
|
||||||
VERSION ${PKG_ARGS_VERSION}
|
VERSION ${PKG_ARGS_VERSION})
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
CPMAddPackage(
|
CPMAddPackage(
|
||||||
@@ -469,8 +566,7 @@ function(AddPackage)
|
|||||||
|
|
||||||
${EXTRA_ARGS}
|
${EXTRA_ARGS}
|
||||||
|
|
||||||
${PKG_ARGS_UNPARSED_ARGUMENTS}
|
${PKG_ARGS_UNPARSED_ARGUMENTS})
|
||||||
)
|
|
||||||
|
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_NAMES ${PKG_ARGS_NAME})
|
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_NAMES ${PKG_ARGS_NAME})
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_URLS ${pkg_git_url})
|
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_URLS ${pkg_git_url})
|
||||||
@@ -514,24 +610,6 @@ function(AddPackage)
|
|||||||
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(add_ci_package key)
|
|
||||||
set(ARTIFACT ${ARTIFACT_NAME}-${key}-${ARTIFACT_VERSION}.${ARTIFACT_EXT})
|
|
||||||
|
|
||||||
AddPackage(
|
|
||||||
NAME ${ARTIFACT_PACKAGE}
|
|
||||||
REPO ${ARTIFACT_REPO}
|
|
||||||
TAG v${ARTIFACT_VERSION}
|
|
||||||
GIT_VERSION ${ARTIFACT_VERSION}
|
|
||||||
ARTIFACT ${ARTIFACT}
|
|
||||||
|
|
||||||
KEY ${key}-${ARTIFACT_VERSION}
|
|
||||||
HASH_SUFFIX sha512sum
|
|
||||||
FORCE_BUNDLED_PACKAGE ON
|
|
||||||
)
|
|
||||||
|
|
||||||
set(ARTIFACT_DIR ${${ARTIFACT_PACKAGE}_SOURCE_DIR} PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# TODO(crueter): we could do an AddMultiArchPackage, multiplatformpackage?
|
# TODO(crueter): we could do an AddMultiArchPackage, multiplatformpackage?
|
||||||
# name is the artifact name, package is for find_package override
|
# name is the artifact name, package is for find_package override
|
||||||
function(AddCIPackage)
|
function(AddCIPackage)
|
||||||
@@ -541,11 +619,17 @@ function(AddCIPackage)
|
|||||||
REPO
|
REPO
|
||||||
PACKAGE
|
PACKAGE
|
||||||
EXTENSION
|
EXTENSION
|
||||||
MIN_VERSION
|
MIN_VERSION)
|
||||||
DISABLED_PLATFORMS
|
|
||||||
)
|
|
||||||
|
|
||||||
cmake_parse_arguments(PKG_ARGS "" "${oneValueArgs}" "" ${ARGN})
|
set(multiValueArgs DISABLED_PLATFORMS)
|
||||||
|
|
||||||
|
set(optionArgs MODULE)
|
||||||
|
|
||||||
|
cmake_parse_arguments(PKG_ARGS
|
||||||
|
"${optionArgs}"
|
||||||
|
"${oneValueArgs}"
|
||||||
|
"${multiValueArgs}"
|
||||||
|
${ARGN})
|
||||||
|
|
||||||
if(NOT DEFINED PKG_ARGS_VERSION)
|
if(NOT DEFINED PKG_ARGS_VERSION)
|
||||||
message(FATAL_ERROR "[CPMUtil] VERSION is required")
|
message(FATAL_ERROR "[CPMUtil] VERSION is required")
|
||||||
@@ -586,51 +670,75 @@ function(AddCIPackage)
|
|||||||
set(ARTIFACT_REPO ${PKG_ARGS_REPO})
|
set(ARTIFACT_REPO ${PKG_ARGS_REPO})
|
||||||
set(ARTIFACT_PACKAGE ${PKG_ARGS_PACKAGE})
|
set(ARTIFACT_PACKAGE ${PKG_ARGS_PACKAGE})
|
||||||
|
|
||||||
if ((MSVC AND ARCHITECTURE_x86_64) AND NOT "windows-amd64" IN_LIST DISABLED_PLATFORMS)
|
if(MSVC AND ARCHITECTURE_x86_64)
|
||||||
add_ci_package(windows-amd64)
|
set(pkgname windows-amd64)
|
||||||
|
elseif(MSVC AND ARCHITECTURE_arm64)
|
||||||
|
set(pkgname windows-arm64)
|
||||||
|
elseif(MINGW AND ARCHITECTURE_x86_64)
|
||||||
|
set(pkgname mingw-amd64)
|
||||||
|
elseif(MINGW AND ARCHITECTURE_arm64)
|
||||||
|
set(pkgname mingw-arm64)
|
||||||
|
elseif(ANDROID AND ARCHITECTURE_x86_64)
|
||||||
|
set(pkgname android-x86_64)
|
||||||
|
elseif(ANDROID AND ARCHITECTURE_arm64)
|
||||||
|
set(pkgname android-aarch64)
|
||||||
|
elseif(PLATFORM_SUN)
|
||||||
|
set(pkgname solaris-amd64)
|
||||||
|
elseif(PLATFORM_FREEBSD)
|
||||||
|
set(pkgname freebsd-amd64)
|
||||||
|
elseif(PLATFORM_LINUX AND ARCHITECTURE_x86_64)
|
||||||
|
set(pkgname linux-amd64)
|
||||||
|
elseif(PLATFORM_LINUX AND ARCHITECTURE_arm64)
|
||||||
|
set(pkgname linux-aarch64)
|
||||||
|
elseif(APPLE)
|
||||||
|
set(pkgname macos-universal)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if ((MSVC AND ARCHITECTURE_arm64) AND NOT "windows-arm64" IN_LIST DISABLED_PLATFORMS)
|
if (DEFINED pkgname AND NOT "${pkgname}" IN_LIST DISABLED_PLATFORMS)
|
||||||
add_ci_package(windows-arm64)
|
set(ARTIFACT
|
||||||
endif()
|
"${ARTIFACT_NAME}-${pkgname}-${ARTIFACT_VERSION}.${ARTIFACT_EXT}")
|
||||||
|
|
||||||
if ((MINGW AND ARCHITECTURE_x86_64) AND NOT "mingw-amd64" IN_LIST DISABLED_PLATFORMS)
|
AddPackage(
|
||||||
add_ci_package(mingw-amd64)
|
NAME ${ARTIFACT_PACKAGE}
|
||||||
endif()
|
REPO ${ARTIFACT_REPO}
|
||||||
|
TAG "v${ARTIFACT_VERSION}"
|
||||||
|
GIT_VERSION ${ARTIFACT_VERSION}
|
||||||
|
ARTIFACT ${ARTIFACT}
|
||||||
|
|
||||||
if ((MINGW AND ARCHITECTURE_arm64) AND NOT "mingw-arm64" IN_LIST DISABLED_PLATFORMS)
|
KEY "${pkgname}-${ARTIFACT_VERSION}"
|
||||||
add_ci_package(mingw-arm64)
|
HASH_SUFFIX sha512sum
|
||||||
endif()
|
FORCE_BUNDLED_PACKAGE ON
|
||||||
|
DOWNLOAD_ONLY ${PKG_ARGS_MODULE})
|
||||||
|
|
||||||
if (ANDROID AND NOT "android" IN_LIST DISABLED_PLATFORMS)
|
|
||||||
add_ci_package(android)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(PLATFORM_SUN AND NOT "solaris-amd64" IN_LIST DISABLED_PLATFORMS)
|
|
||||||
add_ci_package(solaris-amd64)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(PLATFORM_FREEBSD AND NOT "freebsd-amd64" IN_LIST DISABLED_PLATFORMS)
|
|
||||||
add_ci_package(freebsd-amd64)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if((PLATFORM_LINUX AND ARCHITECTURE_x86_64) AND NOT "linux-amd64" IN_LIST DISABLED_PLATFORMS)
|
|
||||||
add_ci_package(linux-amd64)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if((PLATFORM_LINUX AND ARCHITECTURE_arm64) AND NOT "linux-aarch64" IN_LIST DISABLED_PLATFORMS)
|
|
||||||
add_ci_package(linux-aarch64)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# TODO(crueter): macOS amd64/aarch64 split mayhaps
|
|
||||||
if (APPLE AND NOT "macos-universal" IN_LIST DISABLED_PLATFORMS)
|
|
||||||
add_ci_package(macos-universal)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (DEFINED ARTIFACT_DIR)
|
|
||||||
set(${ARTIFACT_PACKAGE}_ADDED TRUE PARENT_SCOPE)
|
set(${ARTIFACT_PACKAGE}_ADDED TRUE PARENT_SCOPE)
|
||||||
set(${ARTIFACT_PACKAGE}_SOURCE_DIR "${ARTIFACT_DIR}" PARENT_SCOPE)
|
set(${ARTIFACT_PACKAGE}_SOURCE_DIR
|
||||||
|
"${${ARTIFACT_PACKAGE}_SOURCE_DIR}" PARENT_SCOPE)
|
||||||
|
|
||||||
|
if (PKG_ARGS_MODULE)
|
||||||
|
list(APPEND CMAKE_PREFIX_PATH "${${ARTIFACT_PACKAGE}_SOURCE_DIR}")
|
||||||
|
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
else()
|
else()
|
||||||
find_package(${ARTIFACT_PACKAGE} ${ARTIFACT_MIN_VERSION} REQUIRED)
|
find_package(${ARTIFACT_PACKAGE} ${ARTIFACT_MIN_VERSION} REQUIRED)
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
# Utility function for Qt
|
||||||
|
function(AddQt version)
|
||||||
|
if (NOT DEFINED version)
|
||||||
|
message(FATAL_ERROR "[CPMUtil] AddQt: version is required")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
AddCIPackage(
|
||||||
|
NAME Qt
|
||||||
|
PACKAGE Qt6
|
||||||
|
VERSION ${version}
|
||||||
|
MIN_VERSION 6
|
||||||
|
REPO crueter-ci/Qt
|
||||||
|
DISABLED_PLATFORMS
|
||||||
|
android-x86_64 android-aarch64
|
||||||
|
freebsd-amd64 solaris-amd64 openbsd-amd64
|
||||||
|
MODULE)
|
||||||
|
|
||||||
|
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|||||||
@@ -1,66 +0,0 @@
|
|||||||
# SPDX-FileCopyrightText: 2024 kleidis
|
|
||||||
|
|
||||||
function(copy_yuzu_Qt6_deps target_dir)
|
|
||||||
include(WindowsCopyFiles)
|
|
||||||
if (MSVC)
|
|
||||||
set(DLL_DEST "$<TARGET_FILE_DIR:${target_dir}>/")
|
|
||||||
set(Qt6_DLL_DIR "${Qt6_DIR}/../../../bin")
|
|
||||||
else()
|
|
||||||
set(DLL_DEST "${CMAKE_BINARY_DIR}/bin/")
|
|
||||||
set(Qt6_DLL_DIR "${Qt6_DIR}/../../../lib/")
|
|
||||||
endif()
|
|
||||||
set(Qt6_PLATFORMS_DIR "${Qt6_DIR}/../../../plugins/platforms/")
|
|
||||||
set(Qt6_STYLES_DIR "${Qt6_DIR}/../../../plugins/styles/")
|
|
||||||
set(Qt6_IMAGEFORMATS_DIR "${Qt6_DIR}/../../../plugins/imageformats/")
|
|
||||||
set(Qt6_RESOURCES_DIR "${Qt6_DIR}/../../../resources/")
|
|
||||||
set(PLATFORMS ${DLL_DEST}plugins/platforms/)
|
|
||||||
set(STYLES ${DLL_DEST}plugins/styles/)
|
|
||||||
set(IMAGEFORMATS ${DLL_DEST}plugins/imageformats/)
|
|
||||||
set(RESOURCES ${DLL_DEST}resources/)
|
|
||||||
if (MSVC)
|
|
||||||
windows_copy_files(${target_dir} ${Qt6_DLL_DIR} ${DLL_DEST}
|
|
||||||
Qt6Core$<$<CONFIG:Debug>:d>.*
|
|
||||||
Qt6Gui$<$<CONFIG:Debug>:d>.*
|
|
||||||
Qt6Widgets$<$<CONFIG:Debug>:d>.*
|
|
||||||
Qt6Network$<$<CONFIG:Debug>:d>.*
|
|
||||||
)
|
|
||||||
if (YUZU_USE_QT_MULTIMEDIA)
|
|
||||||
windows_copy_files(${target_dir} ${Qt6_DLL_DIR} ${DLL_DEST}
|
|
||||||
Qt6Multimedia$<$<CONFIG:Debug>:d>.*
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
if (YUZU_USE_QT_WEB_ENGINE)
|
|
||||||
windows_copy_files(${target_dir} ${Qt6_DLL_DIR} ${DLL_DEST}
|
|
||||||
Qt6OpenGL$<$<CONFIG:Debug>:d>.*
|
|
||||||
Qt6Positioning$<$<CONFIG:Debug>:d>.*
|
|
||||||
Qt6PrintSupport$<$<CONFIG:Debug>:d>.*
|
|
||||||
Qt6Qml$<$<CONFIG:Debug>:d>.*
|
|
||||||
Qt6QmlMeta$<$<CONFIG:Debug>:d>.*
|
|
||||||
Qt6QmlModels$<$<CONFIG:Debug>:d>.*
|
|
||||||
Qt6QmlWorkerScript$<$<CONFIG:Debug>:d>.*
|
|
||||||
Qt6Quick$<$<CONFIG:Debug>:d>.*
|
|
||||||
Qt6QuickWidgets$<$<CONFIG:Debug>:d>.*
|
|
||||||
Qt6WebChannel$<$<CONFIG:Debug>:d>.*
|
|
||||||
Qt6WebEngineCore$<$<CONFIG:Debug>:d>.*
|
|
||||||
Qt6WebEngineWidgets$<$<CONFIG:Debug>:d>.*
|
|
||||||
QtWebEngineProcess$<$<CONFIG:Debug>:d>.*
|
|
||||||
)
|
|
||||||
windows_copy_files(${target_dir} ${Qt6_RESOURCES_DIR} ${RESOURCES}
|
|
||||||
icudtl.dat
|
|
||||||
qtwebengine_devtools_resources.pak
|
|
||||||
qtwebengine_resources.pak
|
|
||||||
qtwebengine_resources_100p.pak
|
|
||||||
qtwebengine_resources_200p.pak
|
|
||||||
v8_context_snapshot.bin
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
windows_copy_files(yuzu ${Qt6_PLATFORMS_DIR} ${PLATFORMS} qwindows$<$<CONFIG:Debug>:d>.*)
|
|
||||||
windows_copy_files(yuzu ${Qt6_STYLES_DIR} ${STYLES} qmodernwindowsstyle$<$<CONFIG:Debug>:d>.*)
|
|
||||||
windows_copy_files(yuzu ${Qt6_IMAGEFORMATS_DIR} ${IMAGEFORMATS}
|
|
||||||
qjpeg$<$<CONFIG:Debug>:d>.*
|
|
||||||
qgif$<$<CONFIG:Debug>:d>.*
|
|
||||||
)
|
|
||||||
else()
|
|
||||||
# Update for non-MSVC platforms if needed
|
|
||||||
endif()
|
|
||||||
endfunction(copy_yuzu_Qt6_deps)
|
|
||||||
@@ -1,271 +0,0 @@
|
|||||||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# This function downloads a binary library package from our external repo.
|
|
||||||
# Params:
|
|
||||||
# remote_path: path to the file to download, relative to the remote repository root
|
|
||||||
# prefix_var: name of a variable which will be set with the path to the extracted contents
|
|
||||||
set(CURRENT_MODULE_DIR ${CMAKE_CURRENT_LIST_DIR})
|
|
||||||
function(download_bundled_external remote_path lib_name cpm_key prefix_var version)
|
|
||||||
set(package_base_url "https://github.com/eden-emulator/")
|
|
||||||
set(package_repo "no_platform")
|
|
||||||
set(package_extension "no_platform")
|
|
||||||
set(CACHE_KEY "")
|
|
||||||
|
|
||||||
# TODO(crueter): Need to convert ffmpeg to a CI.
|
|
||||||
if (WIN32 OR FORCE_WIN_ARCHIVES)
|
|
||||||
if (ARCHITECTURE_arm64)
|
|
||||||
set(CACHE_KEY "windows")
|
|
||||||
set(package_repo "ext-windows-arm64-bin/raw/master/")
|
|
||||||
set(package_extension ".zip")
|
|
||||||
elseif(ARCHITECTURE_x86_64)
|
|
||||||
set(CACHE_KEY "windows")
|
|
||||||
set(package_repo "ext-windows-bin/raw/master/")
|
|
||||||
set(package_extension ".7z")
|
|
||||||
endif()
|
|
||||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
|
||||||
set(CACHE_KEY "linux")
|
|
||||||
set(package_repo "ext-linux-bin/raw/master/")
|
|
||||||
set(package_extension ".tar.xz")
|
|
||||||
elseif (ANDROID)
|
|
||||||
set(CACHE_KEY "android")
|
|
||||||
set(package_repo "ext-android-bin/raw/master/")
|
|
||||||
set(package_extension ".tar.xz")
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "No package available for this platform")
|
|
||||||
endif()
|
|
||||||
string(CONCAT package_url "${package_base_url}" "${package_repo}")
|
|
||||||
string(CONCAT full_url "${package_url}" "${remote_path}" "${lib_name}" "${package_extension}")
|
|
||||||
message(STATUS "Resolved bundled URL: ${full_url}")
|
|
||||||
|
|
||||||
# TODO(crueter): DELETE THIS ENTIRELY, GLORY BE TO THE CI!
|
|
||||||
AddPackage(
|
|
||||||
NAME ${cpm_key}
|
|
||||||
VERSION ${version}
|
|
||||||
URL ${full_url}
|
|
||||||
DOWNLOAD_ONLY YES
|
|
||||||
KEY ${CACHE_KEY}
|
|
||||||
BUNDLED_PACKAGE ON
|
|
||||||
# TODO(crueter): hash
|
|
||||||
)
|
|
||||||
|
|
||||||
if (DEFINED ${cpm_key}_SOURCE_DIR)
|
|
||||||
set(${prefix_var} "${${cpm_key}_SOURCE_DIR}" PARENT_SCOPE)
|
|
||||||
message(STATUS "Using bundled binaries at ${${cpm_key}_SOURCE_DIR}")
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "AddPackage did not set ${cpm_key}_SOURCE_DIR")
|
|
||||||
endif()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# Determine installation parameters for OS, architecture, and compiler
|
|
||||||
function(determine_qt_parameters target host_out type_out arch_out arch_path_out host_type_out host_arch_out host_arch_path_out)
|
|
||||||
if (WIN32)
|
|
||||||
set(host "windows")
|
|
||||||
set(type "desktop")
|
|
||||||
|
|
||||||
if (NOT tool)
|
|
||||||
if (MINGW)
|
|
||||||
set(arch "win64_mingw")
|
|
||||||
set(arch_path "mingw_64")
|
|
||||||
elseif (MSVC)
|
|
||||||
if ("arm64" IN_LIST ARCHITECTURE)
|
|
||||||
set(arch_path "msvc2022_arm64")
|
|
||||||
elseif ("x86_64" IN_LIST ARCHITECTURE)
|
|
||||||
set(arch_path "msvc2022_64")
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "Unsupported bundled Qt architecture. Disable YUZU_USE_BUNDLED_QT and provide your own.")
|
|
||||||
endif()
|
|
||||||
set(arch "win64_${arch_path}")
|
|
||||||
|
|
||||||
if (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "AMD64")
|
|
||||||
set(host_arch_path "msvc2022_64")
|
|
||||||
elseif (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "ARM64")
|
|
||||||
set(host_arch_path "msvc2022_arm64")
|
|
||||||
endif()
|
|
||||||
set(host_arch "win64_${host_arch_path}")
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "Unsupported bundled Qt toolchain. Disable YUZU_USE_BUNDLED_QT and provide your own.")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
elseif (APPLE)
|
|
||||||
set(host "mac")
|
|
||||||
set(type "desktop")
|
|
||||||
set(arch "clang_64")
|
|
||||||
set(arch_path "macos")
|
|
||||||
else()
|
|
||||||
set(host "linux")
|
|
||||||
set(type "desktop")
|
|
||||||
set(arch "linux_gcc_64")
|
|
||||||
set(arch_path "gcc_64")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(${host_out} "${host}" PARENT_SCOPE)
|
|
||||||
set(${type_out} "${type}" PARENT_SCOPE)
|
|
||||||
set(${arch_out} "${arch}" PARENT_SCOPE)
|
|
||||||
set(${arch_path_out} "${arch_path}" PARENT_SCOPE)
|
|
||||||
if (DEFINED host_type)
|
|
||||||
set(${host_type_out} "${host_type}" PARENT_SCOPE)
|
|
||||||
else()
|
|
||||||
set(${host_type_out} "${type}" PARENT_SCOPE)
|
|
||||||
endif()
|
|
||||||
if (DEFINED host_arch)
|
|
||||||
set(${host_arch_out} "${host_arch}" PARENT_SCOPE)
|
|
||||||
else()
|
|
||||||
set(${host_arch_out} "${arch}" PARENT_SCOPE)
|
|
||||||
endif()
|
|
||||||
if (DEFINED host_arch_path)
|
|
||||||
set(${host_arch_path_out} "${host_arch_path}" PARENT_SCOPE)
|
|
||||||
else()
|
|
||||||
set(${host_arch_path_out} "${arch_path}" PARENT_SCOPE)
|
|
||||||
endif()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# Download Qt binaries for a specific configuration.
|
|
||||||
function(download_qt_configuration prefix_out target host type arch arch_path base_path)
|
|
||||||
if (target MATCHES "tools_.*")
|
|
||||||
set(tool ON)
|
|
||||||
else()
|
|
||||||
set(tool OFF)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(install_args -c "${CURRENT_MODULE_DIR}/aqt_config.ini")
|
|
||||||
if (tool)
|
|
||||||
set(prefix "${base_path}/Tools")
|
|
||||||
list(APPEND install_args install-tool --outputdir "${base_path}" "${host}" desktop "${target}")
|
|
||||||
else()
|
|
||||||
set(prefix "${base_path}/${target}/${arch_path}")
|
|
||||||
list(APPEND install_args install-qt --outputdir "${base_path}" "${host}" "${type}" "${target}" "${arch}" -m qt_base)
|
|
||||||
|
|
||||||
if (YUZU_USE_QT_MULTIMEDIA)
|
|
||||||
list(APPEND install_args qtmultimedia)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (YUZU_USE_QT_WEB_ENGINE)
|
|
||||||
list(APPEND install_args qtpositioning qtwebchannel qtwebengine)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (NOT "${YUZU_QT_MIRROR}" STREQUAL "")
|
|
||||||
message(STATUS "Using Qt mirror ${YUZU_QT_MIRROR}")
|
|
||||||
list(APPEND install_args -b "${YUZU_QT_MIRROR}")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
message(STATUS "Install Args: ${install_args}")
|
|
||||||
|
|
||||||
if (NOT EXISTS "${prefix}")
|
|
||||||
message(STATUS "Downloading Qt binaries for ${target}:${host}:${type}:${arch}:${arch_path}")
|
|
||||||
set(AQT_PREBUILD_BASE_URL "https://github.com/miurahr/aqtinstall/releases/download/v3.3.0")
|
|
||||||
if (WIN32)
|
|
||||||
set(aqt_path "${base_path}/aqt.exe")
|
|
||||||
if (NOT EXISTS "${aqt_path}")
|
|
||||||
file(DOWNLOAD "${AQT_PREBUILD_BASE_URL}/aqt.exe" "${aqt_path}" SHOW_PROGRESS)
|
|
||||||
endif()
|
|
||||||
execute_process(COMMAND "${aqt_path}" ${install_args}
|
|
||||||
WORKING_DIRECTORY "${base_path}"
|
|
||||||
RESULT_VARIABLE aqt_res
|
|
||||||
OUTPUT_VARIABLE aqt_out
|
|
||||||
ERROR_VARIABLE aqt_err)
|
|
||||||
if (NOT aqt_res EQUAL 0)
|
|
||||||
message(FATAL_ERROR "aqt.exe failed: ${aqt_err}")
|
|
||||||
endif()
|
|
||||||
elseif (APPLE)
|
|
||||||
set(aqt_path "${base_path}/aqt-macos")
|
|
||||||
if (NOT EXISTS "${aqt_path}")
|
|
||||||
file(DOWNLOAD "${AQT_PREBUILD_BASE_URL}/aqt-macos" "${aqt_path}" SHOW_PROGRESS)
|
|
||||||
endif()
|
|
||||||
execute_process(COMMAND chmod +x "${aqt_path}")
|
|
||||||
execute_process(COMMAND "${aqt_path}" ${install_args}
|
|
||||||
WORKING_DIRECTORY "${base_path}"
|
|
||||||
RESULT_VARIABLE aqt_res
|
|
||||||
ERROR_VARIABLE aqt_err)
|
|
||||||
if (NOT aqt_res EQUAL 0)
|
|
||||||
message(FATAL_ERROR "aqt-macos failed: ${aqt_err}")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
find_program(PYTHON3_EXECUTABLE python3)
|
|
||||||
if (NOT PYTHON3_EXECUTABLE)
|
|
||||||
message(FATAL_ERROR "python3 is required to install Qt using aqt (pip mode).")
|
|
||||||
endif()
|
|
||||||
set(aqt_install_path "${base_path}/aqt")
|
|
||||||
file(MAKE_DIRECTORY "${aqt_install_path}")
|
|
||||||
|
|
||||||
execute_process(COMMAND "${PYTHON3_EXECUTABLE}" -m pip install --target="${aqt_install_path}" aqtinstall
|
|
||||||
WORKING_DIRECTORY "${base_path}"
|
|
||||||
RESULT_VARIABLE pip_res
|
|
||||||
ERROR_VARIABLE pip_err)
|
|
||||||
if (NOT pip_res EQUAL 0)
|
|
||||||
message(FATAL_ERROR "pip install aqtinstall failed: ${pip_err}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E env PYTHONPATH="${aqt_install_path}" "${PYTHON3_EXECUTABLE}" -m aqt ${install_args}
|
|
||||||
WORKING_DIRECTORY "${base_path}"
|
|
||||||
RESULT_VARIABLE aqt_res
|
|
||||||
ERROR_VARIABLE aqt_err)
|
|
||||||
if (NOT aqt_res EQUAL 0)
|
|
||||||
message(FATAL_ERROR "aqt (python) failed: ${aqt_err}")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
message(STATUS "Downloaded Qt binaries for ${target}:${host}:${type}:${arch}:${arch_path} to ${prefix}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(${prefix_out} "${prefix}" PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# This function downloads Qt using aqt.
|
|
||||||
# The path of the downloaded content will be added to the CMAKE_PREFIX_PATH.
|
|
||||||
# QT_TARGET_PATH is set to the Qt for the compile target platform.
|
|
||||||
# QT_HOST_PATH is set to a host-compatible Qt, for running tools.
|
|
||||||
# Params:
|
|
||||||
# target: Qt dependency to install. Specify a version number to download Qt, or "tools_(name)" for a specific build tool.
|
|
||||||
function(download_qt target)
|
|
||||||
determine_qt_parameters("${target}" host type arch arch_path host_type host_arch host_arch_path)
|
|
||||||
|
|
||||||
set(base_path "${CMAKE_BINARY_DIR}/externals/qt")
|
|
||||||
file(MAKE_DIRECTORY "${base_path}")
|
|
||||||
|
|
||||||
download_qt_configuration(prefix "${target}" "${host}" "${type}" "${arch}" "${arch_path}" "${base_path}")
|
|
||||||
if (DEFINED host_arch_path AND NOT "${host_arch_path}" STREQUAL "${arch_path}")
|
|
||||||
download_qt_configuration(host_prefix "${target}" "${host}" "${host_type}" "${host_arch}" "${host_arch_path}" "${base_path}")
|
|
||||||
else()
|
|
||||||
set(host_prefix "${prefix}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(QT_TARGET_PATH "${prefix}" CACHE STRING "")
|
|
||||||
set(QT_HOST_PATH "${host_prefix}" CACHE STRING "")
|
|
||||||
|
|
||||||
list(APPEND CMAKE_PREFIX_PATH "${prefix}")
|
|
||||||
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(download_moltenvk version platform)
|
|
||||||
if(NOT version)
|
|
||||||
message(FATAL_ERROR "download_moltenvk: version argument is required")
|
|
||||||
endif()
|
|
||||||
if(NOT platform)
|
|
||||||
message(FATAL_ERROR "download_moltenvk: platform argument is required")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(MOLTENVK_DIR "${CMAKE_BINARY_DIR}/externals/MoltenVK")
|
|
||||||
set(MOLTENVK_TAR "${CMAKE_BINARY_DIR}/externals/MoltenVK.tar")
|
|
||||||
|
|
||||||
if(NOT EXISTS "${MOLTENVK_DIR}")
|
|
||||||
if(NOT EXISTS "${MOLTENVK_TAR}")
|
|
||||||
file(DOWNLOAD "https://github.com/KhronosGroup/MoltenVK/releases/download/${version}/MoltenVK-${platform}.tar"
|
|
||||||
"${MOLTENVK_TAR}" SHOW_PROGRESS)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
execute_process(
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E tar xf "${MOLTENVK_TAR}"
|
|
||||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals"
|
|
||||||
RESULT_VARIABLE tar_res
|
|
||||||
ERROR_VARIABLE tar_err
|
|
||||||
)
|
|
||||||
if(NOT tar_res EQUAL 0)
|
|
||||||
message(FATAL_ERROR "Extracting MoltenVK failed: ${tar_err}")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
list(APPEND CMAKE_PREFIX_PATH "${MOLTENVK_DIR}/MoltenVK/dylib/${platform}")
|
|
||||||
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
@@ -1,3 +1,6 @@
|
|||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
@@ -10,6 +13,10 @@ find_package_handle_standard_args(Opus
|
|||||||
VERSION_VAR OPUS_VERSION
|
VERSION_VAR OPUS_VERSION
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (PLATFORM_MSYS)
|
||||||
|
FixMsysPath(PkgConfig::OPUS)
|
||||||
|
endif()
|
||||||
|
|
||||||
if (Opus_FOUND AND NOT TARGET Opus::opus)
|
if (Opus_FOUND AND NOT TARGET Opus::opus)
|
||||||
add_library(Opus::opus ALIAS PkgConfig::OPUS)
|
add_library(Opus::opus ALIAS PkgConfig::OPUS)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
@@ -10,6 +13,10 @@ find_package_handle_standard_args(SPIRV-Tools
|
|||||||
VERSION_VAR SPIRV-Tools_VERSION
|
VERSION_VAR SPIRV-Tools_VERSION
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (PLATFORM_MSYS)
|
||||||
|
FixMsysPath(PkgConfig::SPIRV-Tools)
|
||||||
|
endif()
|
||||||
|
|
||||||
if (SPIRV-Tools_FOUND AND NOT TARGET SPIRV-Tools::SPIRV-Tools)
|
if (SPIRV-Tools_FOUND AND NOT TARGET SPIRV-Tools::SPIRV-Tools)
|
||||||
if (TARGET SPIRV-Tools)
|
if (TARGET SPIRV-Tools)
|
||||||
add_library(SPIRV-Tools::SPIRV-Tools ALIAS SPIRV-Tools)
|
add_library(SPIRV-Tools::SPIRV-Tools ALIAS SPIRV-Tools)
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2022 Alexandre Bouvier <contact@amb.tf>
|
# SPDX-FileCopyrightText: 2022 Alexandre Bouvier <contact@amb.tf>
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
@@ -11,6 +14,10 @@ find_package_handle_standard_args(enet
|
|||||||
VERSION_VAR ENET_VERSION
|
VERSION_VAR ENET_VERSION
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (PLATFORM_MSYS)
|
||||||
|
FixMsysPath(PkgConfig::ENET)
|
||||||
|
endif()
|
||||||
|
|
||||||
if (enet_FOUND AND NOT TARGET enet::enet)
|
if (enet_FOUND AND NOT TARGET enet::enet)
|
||||||
add_library(enet::enet ALIAS PkgConfig::ENET)
|
add_library(enet::enet ALIAS PkgConfig::ENET)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2022 Alexandre Bouvier <contact@amb.tf>
|
# SPDX-FileCopyrightText: 2022 Alexandre Bouvier <contact@amb.tf>
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
@@ -11,6 +14,10 @@ find_package_handle_standard_args(libusb
|
|||||||
VERSION_VAR LIBUSB_VERSION
|
VERSION_VAR LIBUSB_VERSION
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (PLATFORM_MSYS)
|
||||||
|
FixMsysPath(PkgConfig::LIBUSB)
|
||||||
|
endif()
|
||||||
|
|
||||||
if (libusb_FOUND AND NOT TARGET libusb::usb)
|
if (libusb_FOUND AND NOT TARGET libusb::usb)
|
||||||
add_library(libusb::usb ALIAS PkgConfig::LIBUSB)
|
add_library(libusb::usb ALIAS PkgConfig::LIBUSB)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
@@ -9,6 +12,11 @@ if (lz4_CONSIDERED_CONFIGS)
|
|||||||
else()
|
else()
|
||||||
find_package(PkgConfig QUIET)
|
find_package(PkgConfig QUIET)
|
||||||
pkg_search_module(LZ4 QUIET IMPORTED_TARGET liblz4)
|
pkg_search_module(LZ4 QUIET IMPORTED_TARGET liblz4)
|
||||||
|
|
||||||
|
if (PLATFORM_MSYS)
|
||||||
|
FixMsysPath(PkgConfig::LZ4)
|
||||||
|
endif()
|
||||||
|
|
||||||
find_package_handle_standard_args(lz4
|
find_package_handle_standard_args(lz4
|
||||||
REQUIRED_VARS LZ4_LINK_LIBRARIES
|
REQUIRED_VARS LZ4_LINK_LIBRARIES
|
||||||
VERSION_VAR LZ4_VERSION
|
VERSION_VAR LZ4_VERSION
|
||||||
|
|||||||
@@ -6,22 +6,36 @@
|
|||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_package(zstd QUIET CONFIG)
|
||||||
|
if (zstd_CONSIDERED_CONFIGS)
|
||||||
|
find_package_handle_standard_args(zstd CONFIG_MODE)
|
||||||
|
else()
|
||||||
find_package(PkgConfig QUIET)
|
find_package(PkgConfig QUIET)
|
||||||
pkg_search_module(ZSTD QUIET IMPORTED_TARGET libzstd)
|
pkg_search_module(ZSTD QUIET IMPORTED_TARGET libzstd)
|
||||||
find_package_handle_standard_args(zstd
|
find_package_handle_standard_args(zstd
|
||||||
REQUIRED_VARS ZSTD_LINK_LIBRARIES
|
REQUIRED_VARS ZSTD_LINK_LIBRARIES
|
||||||
VERSION_VAR ZSTD_VERSION
|
VERSION_VAR ZSTD_VERSION)
|
||||||
)
|
endif()
|
||||||
|
|
||||||
if (zstd_FOUND AND NOT TARGET zstd::zstd)
|
if (zstd_FOUND AND NOT TARGET zstd::zstd)
|
||||||
if (TARGET zstd::libzstd_shared)
|
if (TARGET zstd::libzstd_shared AND NOT YUZU_STATIC_BUILD)
|
||||||
add_library(zstd::zstd ALIAS zstd::libzstd_shared)
|
add_library(zstd::zstd ALIAS zstd::libzstd_shared)
|
||||||
add_library(zstd::libzstd ALIAS zstd::libzstd_shared)
|
|
||||||
elseif (TARGET zstd::libzstd_static)
|
elseif (TARGET zstd::libzstd_static)
|
||||||
add_library(zstd::zstd ALIAS zstd::libzstd_static)
|
add_library(zstd::zstd ALIAS zstd::libzstd_static)
|
||||||
add_library(zstd::libzstd ALIAS zstd::libzstd_static)
|
|
||||||
else()
|
else()
|
||||||
add_library(zstd::zstd ALIAS PkgConfig::ZSTD)
|
add_library(zstd::zstd ALIAS PkgConfig::ZSTD)
|
||||||
add_library(zstd::libzstd ALIAS PkgConfig::ZSTD)
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
get_target_property(ZSTD_TARGET zstd::zstd ALIASED_TARGET)
|
||||||
|
|
||||||
|
if (NOT TARGET zstd::libzstd)
|
||||||
|
if (ZSTD_TARGET)
|
||||||
|
add_library(zstd::libzstd ALIAS ${ZSTD_TARGET})
|
||||||
|
else()
|
||||||
|
add_library(zstd::libzstd ALIAS zstd::zstd)
|
||||||
|
endif()
|
||||||
|
elseif(YUZU_STATIC_BUILD AND TARGET zstd::libzstd_static)
|
||||||
|
# zstd::libzstd links to shared zstd by default
|
||||||
|
set_target_properties(zstd::libzstd PROPERTIES INTERFACE_LINK_LIBRARIES zstd::libzstd_static)
|
||||||
|
endif()
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
function(FixMsysPath target)
|
||||||
|
get_target_property(include_dir ${target} INTERFACE_INCLUDE_DIRECTORIES)
|
||||||
|
|
||||||
|
if (NOT (include_dir MATCHES "^/"))
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(root_default $ENV{MSYS2_LOCATION})
|
||||||
|
if (root_default STREQUAL "")
|
||||||
|
set(root_default "C:/msys64")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(MSYS_ROOT_PATH ${root_default} CACHE STRING "Location of the MSYS2 root")
|
||||||
|
|
||||||
|
set(include_dir "C:/msys64${include_dir}")
|
||||||
|
set_target_properties(${target} PROPERTIES
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES ${include_dir})
|
||||||
|
endfunction()
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
@@ -24,18 +24,31 @@ else()
|
|||||||
set(IS_DEV_BUILD true)
|
set(IS_DEV_BUILD true)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (NIGHTLY_BUILD)
|
||||||
|
set(IS_NIGHTLY_BUILD true)
|
||||||
|
else()
|
||||||
|
set(IS_NIGHTLY_BUILD false)
|
||||||
|
endif()
|
||||||
|
|
||||||
set(GIT_DESC ${BUILD_VERSION})
|
set(GIT_DESC ${BUILD_VERSION})
|
||||||
|
|
||||||
# Generate cpp with Git revision from template
|
# Generate cpp with Git revision from template
|
||||||
# Also if this is a CI build, add the build name (ie: Nightly, Canary) to the scm_rev file as well
|
# Also if this is a CI build, add the build name (ie: Nightly, Canary) to the scm_rev file as well
|
||||||
set(REPO_NAME "Eden")
|
|
||||||
set(BUILD_ID ${GIT_REFSPEC})
|
|
||||||
set(BUILD_FULLNAME "${REPO_NAME} ${BUILD_VERSION} ")
|
|
||||||
set(CXX_COMPILER "${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
|
|
||||||
|
|
||||||
# Auto-updater metadata! Must somewhat mirror GitHub API endpoint
|
# Auto-updater metadata! Must somewhat mirror GitHub API endpoint
|
||||||
set(BUILD_AUTO_UPDATE_WEBSITE "https://github.com")
|
set(BUILD_AUTO_UPDATE_WEBSITE "https://github.com")
|
||||||
set(BUILD_AUTO_UPDATE_API "http://api.github.com")
|
set(BUILD_AUTO_UPDATE_API "http://api.github.com")
|
||||||
|
|
||||||
|
if (NIGHTLY_BUILD)
|
||||||
|
set(BUILD_AUTO_UPDATE_REPO "Eden-CI/Nightly")
|
||||||
|
set(REPO_NAME "Eden Nightly")
|
||||||
|
else()
|
||||||
set(BUILD_AUTO_UPDATE_REPO "eden-emulator/Releases")
|
set(BUILD_AUTO_UPDATE_REPO "eden-emulator/Releases")
|
||||||
|
set(REPO_NAME "Eden")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(BUILD_ID ${GIT_REFSPEC})
|
||||||
|
set(BUILD_FULLNAME "${REPO_NAME} ${BUILD_VERSION} ")
|
||||||
|
set(CXX_COMPILER "${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
|
||||||
|
|
||||||
configure_file(scm_rev.cpp.in scm_rev.cpp @ONLY)
|
configure_file(scm_rev.cpp.in scm_rev.cpp @ONLY)
|
||||||
|
|||||||
@@ -1,49 +0,0 @@
|
|||||||
# SPDX-FileCopyrightText: 2025 crueter
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
include(GetGitRevisionDescription)
|
|
||||||
|
|
||||||
function(trim var)
|
|
||||||
string(REGEX REPLACE "\n" "" new "${${var}}")
|
|
||||||
set(${var} ${new} PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
set(TAG_FILE ${CMAKE_SOURCE_DIR}/GIT-TAG)
|
|
||||||
set(REF_FILE ${CMAKE_SOURCE_DIR}/GIT-REFSPEC)
|
|
||||||
set(COMMIT_FILE ${CMAKE_SOURCE_DIR}/GIT-COMMIT)
|
|
||||||
set(RELEASE_FILE ${CMAKE_SOURCE_DIR}/GIT-RELEASE)
|
|
||||||
|
|
||||||
if (EXISTS ${REF_FILE} AND EXISTS ${COMMIT_FILE})
|
|
||||||
file(READ ${REF_FILE} GIT_REFSPEC)
|
|
||||||
file(READ ${COMMIT_FILE} GIT_COMMIT)
|
|
||||||
else()
|
|
||||||
get_git_head_revision(GIT_REFSPEC GIT_COMMIT)
|
|
||||||
git_branch_name(GIT_REFSPEC)
|
|
||||||
if (GIT_REFSPEC MATCHES "NOTFOUND")
|
|
||||||
set(GIT_REFSPEC 1.0.0)
|
|
||||||
set(GIT_COMMIT stable)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (EXISTS ${TAG_FILE})
|
|
||||||
file(READ ${TAG_FILE} GIT_TAG)
|
|
||||||
else()
|
|
||||||
git_describe(GIT_TAG --tags --abbrev=0)
|
|
||||||
if (GIT_TAG MATCHES "NOTFOUND")
|
|
||||||
set(GIT_TAG "${GIT_REFSPEC}")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (EXISTS ${RELEASE_FILE})
|
|
||||||
file(READ ${RELEASE_FILE} GIT_RELEASE)
|
|
||||||
trim(GIT_RELEASE)
|
|
||||||
message(STATUS "Git release: ${GIT_RELEASE}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
trim(GIT_REFSPEC)
|
|
||||||
trim(GIT_COMMIT)
|
|
||||||
trim(GIT_TAG)
|
|
||||||
|
|
||||||
message(STATUS "Git commit: ${GIT_COMMIT}")
|
|
||||||
message(STATUS "Git tag: ${GIT_TAG}")
|
|
||||||
message(STATUS "Git refspec: ${GIT_REFSPEC}")
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
set(MINGW_PREFIX /usr/x86_64-w64-mingw32/)
|
|
||||||
set(CMAKE_SYSTEM_NAME Windows)
|
|
||||||
set(CMAKE_SYSTEM_PROCESSOR x86_64)
|
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH ${MINGW_PREFIX})
|
|
||||||
set(SDL2_PATH ${MINGW_PREFIX})
|
|
||||||
set(MINGW_TOOL_PREFIX ${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32-)
|
|
||||||
|
|
||||||
# Specify the cross compiler
|
|
||||||
set(CMAKE_C_COMPILER ${MINGW_TOOL_PREFIX}clang)
|
|
||||||
set(CMAKE_CXX_COMPILER ${MINGW_TOOL_PREFIX}clang++)
|
|
||||||
set(CMAKE_RC_COMPILER ${MINGW_TOOL_PREFIX}windres)
|
|
||||||
set(CMAKE_C_COMPILER_AR ${MINGW_TOOL_PREFIX}ar)
|
|
||||||
set(CMAKE_CXX_COMPILER_AR ${MINGW_TOOL_PREFIX}ar)
|
|
||||||
set(CMAKE_C_COMPILER_RANLIB ${MINGW_TOOL_PREFIX}ranlib)
|
|
||||||
set(CMAKE_CXX_COMPILER_RANLIB ${MINGW_TOOL_PREFIX}ranlib)
|
|
||||||
|
|
||||||
# Mingw tools
|
|
||||||
set(STRIP ${MINGW_TOOL_PREFIX}strip)
|
|
||||||
set(WINDRES ${MINGW_TOOL_PREFIX}windres)
|
|
||||||
set(ENV{PKG_CONFIG} ${MINGW_TOOL_PREFIX}pkg-config)
|
|
||||||
|
|
||||||
# ccache wrapper
|
|
||||||
option(USE_CCACHE "Use ccache for compilation" OFF)
|
|
||||||
if(USE_CCACHE)
|
|
||||||
find_program(CCACHE ccache)
|
|
||||||
if(CCACHE)
|
|
||||||
message(STATUS "Using ccache found in PATH")
|
|
||||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE})
|
|
||||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE})
|
|
||||||
else(CCACHE)
|
|
||||||
message(WARNING "USE_CCACHE enabled, but no ccache found")
|
|
||||||
endif(CCACHE)
|
|
||||||
endif(USE_CCACHE)
|
|
||||||
|
|
||||||
# Search for programs in the build host directories
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
||||||
|
|
||||||
|
|
||||||
# Echo modified cmake vars to screen for debugging purposes
|
|
||||||
if(NOT DEFINED ENV{MINGW_DEBUG_INFO})
|
|
||||||
message("")
|
|
||||||
message("Custom cmake vars: (blank = system default)")
|
|
||||||
message("-----------------------------------------")
|
|
||||||
message("* CMAKE_C_COMPILER : ${CMAKE_C_COMPILER}")
|
|
||||||
message("* CMAKE_CXX_COMPILER : ${CMAKE_CXX_COMPILER}")
|
|
||||||
message("* CMAKE_RC_COMPILER : ${CMAKE_RC_COMPILER}")
|
|
||||||
message("* WINDRES : ${WINDRES}")
|
|
||||||
message("* ENV{PKG_CONFIG} : $ENV{PKG_CONFIG}")
|
|
||||||
message("* STRIP : ${STRIP}")
|
|
||||||
message("* USE_CCACHE : ${USE_CCACHE}")
|
|
||||||
message("")
|
|
||||||
# So that the debug info only appears once
|
|
||||||
set(ENV{MINGW_DEBUG_INFO} SHOWN)
|
|
||||||
endif()
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
# SPDX-FileCopyrightText: 2018 tech4me <guiwanglong@gmail.com>
|
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
set(MINGW_PREFIX /usr/x86_64-w64-mingw32/)
|
|
||||||
set(CMAKE_SYSTEM_NAME Windows)
|
|
||||||
set(CMAKE_SYSTEM_PROCESSOR x86_64)
|
|
||||||
# Actually a hack, w/o this will cause some strange errors
|
|
||||||
set(CMAKE_HOST_WIN32 TRUE)
|
|
||||||
|
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH ${MINGW_PREFIX})
|
|
||||||
set(SDL2_PATH ${MINGW_PREFIX})
|
|
||||||
set(MINGW_TOOL_PREFIX ${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32-)
|
|
||||||
|
|
||||||
# Specify the cross compiler
|
|
||||||
set(CMAKE_C_COMPILER ${MINGW_TOOL_PREFIX}gcc)
|
|
||||||
set(CMAKE_CXX_COMPILER ${MINGW_TOOL_PREFIX}g++)
|
|
||||||
set(CMAKE_RC_COMPILER ${MINGW_TOOL_PREFIX}windres)
|
|
||||||
|
|
||||||
# Mingw tools
|
|
||||||
set(STRIP ${MINGW_TOOL_PREFIX}strip)
|
|
||||||
set(WINDRES ${MINGW_TOOL_PREFIX}windres)
|
|
||||||
set(ENV{PKG_CONFIG} ${MINGW_TOOL_PREFIX}pkg-config)
|
|
||||||
|
|
||||||
# ccache wrapper
|
|
||||||
option(USE_CCACHE "Use ccache for compilation" OFF)
|
|
||||||
if(USE_CCACHE)
|
|
||||||
find_program(CCACHE ccache)
|
|
||||||
if(CCACHE)
|
|
||||||
message(STATUS "Using ccache found in PATH")
|
|
||||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE})
|
|
||||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE})
|
|
||||||
else(CCACHE)
|
|
||||||
message(WARNING "USE_CCACHE enabled, but no ccache found")
|
|
||||||
endif(CCACHE)
|
|
||||||
endif(USE_CCACHE)
|
|
||||||
|
|
||||||
# Search for programs in the build host directories
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
||||||
|
|
||||||
|
|
||||||
# Echo modified cmake vars to screen for debugging purposes
|
|
||||||
if(NOT DEFINED ENV{MINGW_DEBUG_INFO})
|
|
||||||
message("")
|
|
||||||
message("Custom cmake vars: (blank = system default)")
|
|
||||||
message("-----------------------------------------")
|
|
||||||
message("* CMAKE_C_COMPILER : ${CMAKE_C_COMPILER}")
|
|
||||||
message("* CMAKE_CXX_COMPILER : ${CMAKE_CXX_COMPILER}")
|
|
||||||
message("* CMAKE_RC_COMPILER : ${CMAKE_RC_COMPILER}")
|
|
||||||
message("* WINDRES : ${WINDRES}")
|
|
||||||
message("* ENV{PKG_CONFIG} : $ENV{PKG_CONFIG}")
|
|
||||||
message("* STRIP : ${STRIP}")
|
|
||||||
message("* USE_CCACHE : ${USE_CCACHE}")
|
|
||||||
message("")
|
|
||||||
# So that the debug info only appears once
|
|
||||||
set(ENV{MINGW_DEBUG_INFO} SHOWN)
|
|
||||||
endif()
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
<!--
|
# Contributing
|
||||||
SPDX-FileCopyrightText: 2018 yuzu Emulator Project
|
|
||||||
SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
-->
|
|
||||||
|
|
||||||
**The Contributor's Guide has moved to [the yuzu wiki](https://github.com/yuzu-emu/yuzu/wiki/Contributing).**
|
You want to contribute? Please consult [the development guide](./docs/Development.md).
|
||||||
|
|
||||||
|
Don't forget to [get a git account](./docs/SIGNUP.md) - not a requirement per se but it's highly recommended.
|
||||||
|
|||||||
@@ -15,19 +15,19 @@
|
|||||||
<br>
|
<br>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<h4 align="center"><b>Eden</b> is an open-source Nintendo Switch emulator, forked from the Yuzu emulator — started by former Citron developer Camille LaVey and the Eden team.
|
<h4 align="center"><b>Eden</b> is a free and opensource (FOSS) Switch 1 emulator, derived from Yuzu and Sudachi - started by developer Camille LaVey.
|
||||||
It is written in C++ with portability in mind, and we actively maintain builds for Windows, Linux and Android.
|
It's written in C++ with portability in mind, with builds for Windows, Linux, macOS, Android, FreeBSD and more.
|
||||||
</h4>
|
</h4>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://discord.gg/kXAmGCXBGD">
|
<a href="https://discord.gg/HstXbPch7X">
|
||||||
<img src="https://img.shields.io/discord/1367654015269339267?color=5865F2&label=Eden&logo=discord&logoColor=white"
|
<img src="https://img.shields.io/discord/1367654015269339267?color=5865F2&label=Eden&logo=discord&logoColor=white"
|
||||||
alt="Discord">
|
alt="Discord">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://rvlt.gg/qKgFEAbH">
|
<a href="https://stt.gg/qKgFEAbH">
|
||||||
<img src="https://img.shields.io/revolt/invite/qKgFEAbH?color=d61f3a&label=Revolt"
|
<img src="https://img.shields.io/revolt/invite/qKgFEAbH?color=d61f3a&label=Stoat"
|
||||||
alt="Revolt">
|
alt="Stoat">
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -52,10 +52,10 @@ Check out our [website](https://eden-emu.dev) for the latest news on exciting fe
|
|||||||
|
|
||||||
## Development
|
## Development
|
||||||
|
|
||||||
Most of the development happens on our Git server. It is also where [our central repository](https://git.eden-emu.dev/eden-emu/eden) is hosted. For development discussions, please join us on [Discord](https://discord.gg/kXAmGCXBGD) or [Revolt](https://rvlt.gg/qKgFEAbH).
|
Most of the development happens on our Git server. It is also where [our central repository](https://git.eden-emu.dev/eden-emu/eden) is hosted. For development discussions, please join us on [Discord](https://discord.gg/HstXbPch7X) or [Stoat](https://stt.gg/qKgFEAbH).
|
||||||
You can also follow us on [X (Twitter)](https://x.com/edenemuofficial) for updates and announcements.
|
You can also follow us on [X (Twitter)](https://nitter.poast.org/edenemuofficial) for updates and announcements.
|
||||||
|
|
||||||
If you would like to contribute, we are open to new developers and pull requests. Please ensure that your work is of a high standard and properly documented. You can also contact any of the developers on Discord or Revolt to learn more about the current state of the emulator.
|
If you would like to contribute, we are open to new developers and pull requests. Please ensure that your work is of a high standard and properly documented. You can also contact any of the developers on Discord or Stoat to learn more about the current state of the emulator.
|
||||||
|
|
||||||
See the [sign-up instructions](docs/SIGNUP.md) for information on registration.
|
See the [sign-up instructions](docs/SIGNUP.md) for information on registration.
|
||||||
|
|
||||||
@@ -82,7 +82,7 @@ Any donations received will go towards things such as:
|
|||||||
* Additional hardware (e.g. GPUs as needed to improve rendering support, other peripherals to add support for, etc.)
|
* Additional hardware (e.g. GPUs as needed to improve rendering support, other peripherals to add support for, etc.)
|
||||||
* CI Infrastructure
|
* CI Infrastructure
|
||||||
|
|
||||||
If you would prefer to support us in a different way, please join our [Discord](https://discord.gg/edenemu) and talk to Camille or any of our other developers.
|
If you would prefer to support us in a different way, please join our [Discord](https://discord.gg/HstXbPch7X) and talk to Camille or any of our other developers.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|||||||
@@ -4,35 +4,28 @@
|
|||||||
"package": "OpenSSL",
|
"package": "OpenSSL",
|
||||||
"name": "openssl",
|
"name": "openssl",
|
||||||
"repo": "crueter-ci/OpenSSL",
|
"repo": "crueter-ci/OpenSSL",
|
||||||
"version": "3.6.0",
|
"version": "3.6.0-1cb0d36b39",
|
||||||
"min_version": "1.1.1",
|
"min_version": "1.1.1"
|
||||||
"disabled_platforms": [
|
|
||||||
"macos-universal",
|
|
||||||
"mingw-amd64",
|
|
||||||
"mingw-arm64"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"boost": {
|
"boost": {
|
||||||
"package": "Boost",
|
"package": "Boost",
|
||||||
"repo": "boostorg/boost",
|
"repo": "boostorg/boost",
|
||||||
"tag": "boost-%VERSION%",
|
"tag": "boost-%VERSION%",
|
||||||
"artifact": "%TAG%-cmake.tar.xz",
|
"artifact": "%TAG%-cmake.tar.xz",
|
||||||
"hash": "4fb7f6fde92762305aad8754d7643cd918dd1f3f67e104e9ab385b18c73178d72a17321354eb203b790b6702f2cf6d725a5d6e2dfbc63b1e35f9eb59fb42ece9",
|
"hash": "6ae6e94664fe7f2fb01976b59b276ac5df8085c7503fa829d810fbfe495960cfec44fa2c36e2cb23480bc19c956ed199d4952b02639a00a6c07625d4e7130c2d",
|
||||||
"git_version": "1.89.0",
|
"git_version": "1.90.0",
|
||||||
"version": "1.57",
|
"version": "1.57",
|
||||||
"find_args": "CONFIG OPTIONAL_COMPONENTS headers context system fiber filesystem",
|
"find_args": "CONFIG OPTIONAL_COMPONENTS headers context system fiber filesystem",
|
||||||
"patches": [
|
"patches": [
|
||||||
"0001-clang-cl.patch",
|
"0001-clang-cl.patch"
|
||||||
"0002-use-marmasm.patch",
|
|
||||||
"0003-armasm-options.patch"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"fmt": {
|
"fmt": {
|
||||||
"repo": "fmtlib/fmt",
|
"repo": "fmtlib/fmt",
|
||||||
"tag": "%VERSION%",
|
"tag": "%VERSION%",
|
||||||
"hash": "c4ab814c20fbad7e3f0ae169125a4988a2795631194703251481dc36b18da65c886c4faa9acd046b0a295005217b3689eb0126108a9ba5aac2ca909aae263c2f",
|
"hash": "f0da82c545b01692e9fd30fdfb613dbb8dd9716983dcd0ff19ac2a8d36f74beb5540ef38072fdecc1e34191b3682a8542ecbf3a61ef287dbba0a2679d4e023f2",
|
||||||
"version": "8",
|
"version": "8",
|
||||||
"git_version": "12.0.0"
|
"git_version": "12.1.0"
|
||||||
},
|
},
|
||||||
"lz4": {
|
"lz4": {
|
||||||
"name": "lz4",
|
"name": "lz4",
|
||||||
@@ -53,9 +46,9 @@
|
|||||||
"package": "ZLIB",
|
"package": "ZLIB",
|
||||||
"repo": "madler/zlib",
|
"repo": "madler/zlib",
|
||||||
"tag": "v%VERSION%",
|
"tag": "v%VERSION%",
|
||||||
"hash": "8c9642495bafd6fad4ab9fb67f09b268c69ff9af0f4f20cf15dfc18852ff1f312bd8ca41de761b3f8d8e90e77d79f2ccacd3d4c5b19e475ecf09d021fdfe9088",
|
"hash": "06eaa3a1eaaeb31f461a2283b03a91ed8eb2406e62cd97ea1c69836324909edeecd93edd03ff0bf593d9dde223e3376149134c5b1fe2e8688c258cadf8cd60ff",
|
||||||
"version": "1.2",
|
"version": "1.2",
|
||||||
"git_version": "1.3.1",
|
"git_version": "1.3.1.2",
|
||||||
"options": [
|
"options": [
|
||||||
"ZLIB_BUILD_SHARED OFF",
|
"ZLIB_BUILD_SHARED OFF",
|
||||||
"ZLIB_INSTALL OFF"
|
"ZLIB_INSTALL OFF"
|
||||||
@@ -74,13 +67,17 @@
|
|||||||
},
|
},
|
||||||
"opus": {
|
"opus": {
|
||||||
"package": "Opus",
|
"package": "Opus",
|
||||||
"repo": "crueter/opus",
|
"repo": "xiph/opus",
|
||||||
"sha": "ab19c44fad",
|
"sha": "a3f0ec02b3",
|
||||||
"hash": "d632e8f83c5d3245db404bcb637113f9860bf16331498ba2c8e77979d1febee6b52d8b1da448e7d54eeac373e912cd55e3e300fc6c242244923323280dc43fbe",
|
"hash": "9506147b0de35befda8633ff272981cc2575c860874791bd455b752f797fd7dbd1079f0ba42ccdd7bb1fe6773fa5e84b3d75667c2883dd1fb2d0e4a5fa4f8387",
|
||||||
"version": "1.3",
|
"version": "1.3",
|
||||||
"find_args": "MODULE",
|
"find_args": "MODULE",
|
||||||
"options": [
|
"options": [
|
||||||
"OPUS_PRESUME_NEON ON"
|
"OPUS_PRESUME_NEON ON"
|
||||||
|
],
|
||||||
|
"patches": [
|
||||||
|
"0001-disable-clang-runtime-neon.patch",
|
||||||
|
"0002-no-install.patch"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"boost_headers": {
|
"boost_headers": {
|
||||||
@@ -96,5 +93,26 @@
|
|||||||
"version": "20250828",
|
"version": "20250828",
|
||||||
"artifact": "clang-rt-builtins.tar.zst",
|
"artifact": "clang-rt-builtins.tar.zst",
|
||||||
"hash": "d902392caf94e84f223766e2cc51ca5fab6cae36ab8dc6ef9ef6a683ab1c483bfcfe291ef0bd38ab16a4ecc4078344fa8af72da2f225ab4c378dee23f6186181"
|
"hash": "d902392caf94e84f223766e2cc51ca5fab6cae36ab8dc6ef9ef6a683ab1c483bfcfe291ef0bd38ab16a4ecc4078344fa8af72da2f225ab4c378dee23f6186181"
|
||||||
|
},
|
||||||
|
"vulkan-validation-layers": {
|
||||||
|
"package": "VVL",
|
||||||
|
"repo": "KhronosGroup/Vulkan-ValidationLayers",
|
||||||
|
"tag": "vulkan-sdk-%VERSION%",
|
||||||
|
"git_version": "1.4.335.0",
|
||||||
|
"artifact": "android-binaries-%VERSION%.zip",
|
||||||
|
"hash": "48167c4a17736301bd08f9290f41830443e1f18cce8ad867fc6f289b49e18b40e93c9850b377951af82f51b5b6d7313aa6a884fc5df79f5ce3df82696c1c1244"
|
||||||
|
},
|
||||||
|
"quazip": {
|
||||||
|
"package": "QuaZip-Qt6",
|
||||||
|
"repo": "stachenov/quazip",
|
||||||
|
"sha": "2e95c9001b",
|
||||||
|
"hash": "609c240c7f029ac26a37d8fbab51bc16284e05e128b78b9b9c0e95d083538c36047a67d682759ac990e4adb0eeb90f04f1ea7fe2253bbda7e7e3bcce32e53dd8",
|
||||||
|
"version": "1.3",
|
||||||
|
"git_version": "1.5",
|
||||||
|
"options": [
|
||||||
|
"QUAZIP_QT_MAJOR_VERSION 6",
|
||||||
|
"QUAZIP_INSTALL OFF",
|
||||||
|
"QUAZIP_ENABLE_QTEXTCODEC OFF"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ Version=1.0
|
|||||||
Type=Application
|
Type=Application
|
||||||
Name=Eden
|
Name=Eden
|
||||||
GenericName=Switch Emulator
|
GenericName=Switch Emulator
|
||||||
Comment=Nintendo Switch video game console emulator
|
Comment=Multiplatform FOSS Switch 1 emulator written in C++, derived from Yuzu and Sudachi
|
||||||
Icon=dev.eden_emu.eden
|
Icon=dev.eden_emu.eden
|
||||||
TryExec=eden
|
TryExec=eden
|
||||||
Exec=eden %f
|
Exec=eden %f
|
||||||
|
|||||||
@@ -1,20 +1,22 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
SPDX-FileCopyrightText: 2025 Eden Emulator Project
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
-->
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2021 yuzu Emulator Project
|
SPDX-FileCopyrightText: 2021 yuzu Emulator Project
|
||||||
SPDX-License-Identifier: CC0-1.0
|
SPDX-License-Identifier: CC0-1.0
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<component type="desktop-application">
|
<component type="desktop-application">
|
||||||
<id>org.yuzu_emu.yuzu</id>
|
<id>org.eden_emu.eden</id>
|
||||||
<metadata_license>CC0-1.0</metadata_license>
|
<metadata_license>CC0-1.0</metadata_license>
|
||||||
<name>yuzu</name>
|
<name>eden</name>
|
||||||
<summary>Nintendo Switch emulator</summary>
|
<summary>Nintendo Switch emulator</summary>
|
||||||
<description>
|
<description>
|
||||||
<p>yuzu is the world's most popular, open-source, Nintendo Switch emulator — started by the creators of Citra.</p>
|
<p>Multiplatform FOSS Switch 1 emulator written in C++, derived from Yuzu and Sudachi</p>
|
||||||
<p>The emulator is capable of running most commercial games at full speed, provided you meet the necessary hardware requirements.</p>
|
|
||||||
<p>For a full list of games yuzu support, please visit our Compatibility page.</p>
|
|
||||||
<p>Check out our website for the latest news on exciting features, monthly progress reports, and more!</p>
|
|
||||||
</description>
|
</description>
|
||||||
<categories>
|
<categories>
|
||||||
<category>Game</category>
|
<category>Game</category>
|
||||||
@@ -24,16 +26,16 @@ SPDX-License-Identifier: CC0-1.0
|
|||||||
<keyword>switch</keyword>
|
<keyword>switch</keyword>
|
||||||
<keyword>emulator</keyword>
|
<keyword>emulator</keyword>
|
||||||
</keywords>
|
</keywords>
|
||||||
<url type="homepage">https://yuzu-emu.org/</url>
|
<url type="homepage">https://eden-emu.dev/</url>
|
||||||
<url type="bugtracker">https://github.com/yuzu-emu/yuzu/issues</url>
|
<url type="bugtracker">https://git.eden-emu.dev/eden-emu/eden/issues</url>
|
||||||
<url type="faq">https://yuzu-emu.org/wiki/faq/</url>
|
<url type="faq">https://eden-emu.dev/docs</url>
|
||||||
<url type="help">https://yuzu-emu.org/wiki/home/</url>
|
<url type="help">https://eden-emu.dev/docs</url>
|
||||||
<url type="donation">https://yuzu-emu.org/donate/</url>
|
<url type="donation">https://eden-emu.dev/donations</url>
|
||||||
<url type="translate">https://www.transifex.com/projects/p/yuzu</url>
|
<url type="translate">https://explore.transifex.com/edenemu/eden-emulator</url>
|
||||||
<url type="contact">https://community.citra-emu.org/</url>
|
<url type="contact">https://discord.gg/edenemu</url>
|
||||||
<url type="vcs-browser">https://github.com/yuzu-emu/yuzu</url>
|
<url type="vcs-browser">https://git.eden-emu.dev</url>
|
||||||
<url type="contribute">https://yuzu-emu.org/wiki/contributing/</url>
|
<url type="contribute">https://git.eden-emu.dev/eden-emu/eden</url>
|
||||||
<launchable type="desktop-id">org.yuzu_emu.yuzu.desktop</launchable>
|
<launchable type="desktop-id">org.eden_emu.eden.desktop</launchable>
|
||||||
<provides>
|
<provides>
|
||||||
<binary>yuzu</binary>
|
<binary>yuzu</binary>
|
||||||
<binary>yuzu-cmd</binary>
|
<binary>yuzu-cmd</binary>
|
||||||
@@ -50,13 +52,6 @@ SPDX-License-Identifier: CC0-1.0
|
|||||||
<memory>16384</memory>
|
<memory>16384</memory>
|
||||||
</recommends>
|
</recommends>
|
||||||
<project_license>GPL-3.0-or-later</project_license>
|
<project_license>GPL-3.0-or-later</project_license>
|
||||||
<developer_name>yuzu Emulator Team</developer_name>
|
<developer_name>Eden Emulator Team</developer_name>
|
||||||
<content_rating type="oars-1.0"/>
|
<content_rating type="oars-1.0"/>
|
||||||
<screenshots>
|
|
||||||
<screenshot type="default"><image>https://raw.githubusercontent.com/yuzu-emu/yuzu-emu.github.io/master/images/screenshots/001-Super%20Mario%20Odyssey%20.png</image></screenshot>
|
|
||||||
<screenshot><image>https://raw.githubusercontent.com/yuzu-emu/yuzu-emu.github.io/master/images/screenshots/004-The%20Legend%20of%20Zelda%20Skyward%20Sword%20HD.png</image></screenshot>
|
|
||||||
<screenshot><image>https://raw.githubusercontent.com/yuzu-emu/yuzu-emu.github.io/master/images/screenshots/007-Pokemon%20Sword.png</image></screenshot>
|
|
||||||
<screenshot><image>https://raw.githubusercontent.com/yuzu-emu/yuzu-emu.github.io/master/images/screenshots/010-Hyrule%20Warriors%20Age%20of%20Calamity.png</image></screenshot>
|
|
||||||
<screenshot><image>https://raw.githubusercontent.com/yuzu-emu/yuzu-emu.github.io/master/images/screenshots/039-Pok%C3%A9mon%20Mystery%20Dungeon%20Rescue%20Team%20DX.png.png.png</image></screenshot>
|
|
||||||
</screenshots>
|
|
||||||
</component>
|
</component>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 256 KiB |
|
Before Width: | Height: | Size: 315 KiB After Width: | Height: | Size: 379 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
@@ -0,0 +1,144 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
width="512"
|
||||||
|
height="512"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 512 512"
|
||||||
|
version="1.1"
|
||||||
|
id="svg7"
|
||||||
|
sodipodi:docname="base.svg"
|
||||||
|
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<defs
|
||||||
|
id="defs7">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient24"
|
||||||
|
inkscape:collect="always">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#f71baa;stop-opacity:0.56623769;"
|
||||||
|
offset="0"
|
||||||
|
id="stop24" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#fa87d4;stop-opacity:0.25;"
|
||||||
|
offset="1"
|
||||||
|
id="stop25" />
|
||||||
|
</linearGradient>
|
||||||
|
<rect
|
||||||
|
x="22.627417"
|
||||||
|
y="402.76802"
|
||||||
|
width="521.34025"
|
||||||
|
height="248.94868"
|
||||||
|
id="rect24" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient1"
|
||||||
|
inkscape:collect="always">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#fe00b1;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop1" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#fe00b1;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop2" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient11"
|
||||||
|
inkscape:collect="always">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff0950;stop-opacity:0.5;"
|
||||||
|
offset="0"
|
||||||
|
id="stop11" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#bf42f6;stop-opacity:0.75;"
|
||||||
|
offset="0.49556771"
|
||||||
|
id="stop20" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#5da5ed;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop12" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient11"
|
||||||
|
id="linearGradient12"
|
||||||
|
x1="270.39996"
|
||||||
|
y1="39.999989"
|
||||||
|
x2="270.39996"
|
||||||
|
y2="494.39996"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
spreadMethod="reflect"
|
||||||
|
gradientTransform="matrix(1.075046,0,0,1.075046,-33.928383,-34.198735)" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient1"
|
||||||
|
id="linearGradient2"
|
||||||
|
x1="125.40197"
|
||||||
|
y1="271.834"
|
||||||
|
x2="431.02424"
|
||||||
|
y2="271.834"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.075046,0,0,1.075046,-33.928383,-34.198735)" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient24"
|
||||||
|
id="linearGradient25"
|
||||||
|
x1="270.39996"
|
||||||
|
y1="33.58408"
|
||||||
|
x2="270.39996"
|
||||||
|
y2="500.81589"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.075046,0,0,1.075046,-33.928383,-34.198735)" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#000000"
|
||||||
|
borderopacity="0.25"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:zoom="0.88388348"
|
||||||
|
inkscape:cx="141.98704"
|
||||||
|
inkscape:cy="265.87215"
|
||||||
|
inkscape:window-width="1600"
|
||||||
|
inkscape:window-height="849"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg7" />
|
||||||
|
<circle
|
||||||
|
style="fill:url(#linearGradient12);fill-opacity:1;stroke:url(#linearGradient25);stroke-width:13.7948;stroke-opacity:0.566238;paint-order:stroke fill markers"
|
||||||
|
id="path8"
|
||||||
|
cx="256.76401"
|
||||||
|
cy="253.05354"
|
||||||
|
r="244.25046" />
|
||||||
|
<path
|
||||||
|
id="rect1-3"
|
||||||
|
style="fill:#ffffff;fill-opacity:0.5;stroke:none;stroke-width:17.2007;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
d="M 55.701477,114.37179 A 244.25044,244.25044 0 0 0 44.86493,131.57252 h 423.79699 a 244.25044,244.25044 0 0 0 -10.83655,-17.20073 z" />
|
||||||
|
<path
|
||||||
|
style="fill:#ff2bd5;fill-opacity:1;stroke-width:14.3776;stroke-opacity:0.415999;paint-order:stroke fill markers"
|
||||||
|
d="M 219.6651,499.13816 209.32675,443.18948"
|
||||||
|
id="path9" />
|
||||||
|
<path
|
||||||
|
id="rect1-2"
|
||||||
|
style="fill:#ffffff;fill-opacity:0.5;stroke:none;stroke-width:17.2007;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
d="m 58.271509,395.38922 a 244.25044,244.25044 0 0 0 13.54096,17.20073 H 441.71437 a 244.25044,244.25044 0 0 0 13.54097,-17.20073 z" />
|
||||||
|
<path
|
||||||
|
id="rect1-2-5"
|
||||||
|
style="fill:#ffffff;fill-opacity:0.5;stroke:none;stroke-width:17.2007;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
d="m 24.604933,328.95264 a 244.25044,244.25044 0 0 0 6.347389,17.20074 H 482.57453 a 244.25044,244.25044 0 0 0 6.34738,-17.20074 z" />
|
||||||
|
<path
|
||||||
|
id="rect1"
|
||||||
|
style="fill:#ffffff;fill-opacity:0.5;stroke:none;stroke-width:17.2007;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
d="m 12.586253,259.07464 a 244.25044,244.25044 0 0 0 1.033053,17.20075 H 499.90754 a 244.25044,244.25044 0 0 0 1.03305,-17.20075 z" />
|
||||||
|
<path
|
||||||
|
id="path15"
|
||||||
|
style="fill:url(#linearGradient2);fill-opacity:1;stroke:#ffffff;stroke-width:17.2007;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
d="m 306.21658,12.242412 c 0,0 -11.75029,42.031067 -17.70256,63.362621 -12.7133,9.964494 -21.07468,19.289937 -21.07468,19.289937 0,0 -22.95662,-32.534232 -44.84956,-46.065299 C 200.69681,35.298604 171.19123,37.04196 171.19123,37.04196 c 0,0 -12.25678,4.2e-4 -27.09242,5.805668 -14.83563,5.805249 -20.85631,9.675414 -20.85631,9.675414 0,0 15.05232,-0.430438 37.19828,7.094883 22.14594,7.525322 31.82093,12.041775 31.82093,12.041775 l 30.42255,-6.880714 -8.27702,11.611336 c 0,0 14.51396,9.3529 22.36179,17.738259 7.84785,8.385359 11.50216,13.114729 11.50216,13.114729 0,0 -13.65224,-5.69691 -55.57904,-1.82674 -41.92679,3.87016 -83.20898,59.12752 -83.20898,59.12752 0,0 40.42048,-16.77155 64.28649,-22.36179 23.86602,-5.59024 46.65742,-8.3862 46.65742,-8.3862 0,0 -18.05952,7.74075 -37.41035,40.20714 -19.35082,32.46639 -13.76142,84.06986 -13.76142,84.06986 0,0 30.74631,-61.92266 60.20258,-82.77854 29.45625,-20.8559 35.47652,-21.50092 35.47652,-21.50092 0,0 -23.6506,50.74216 -32.896,132.23065 -9.24539,81.48849 29.67085,217.8039 29.67085,217.8039 l 46.87159,-7.31116 c 0,0 -44.72107,-44.29147 -48.59124,-158.67636 -3.87017,-114.3849 16.33986,-182.75782 16.33986,-182.75782 0,0 16.77156,1.29005 41.71263,34.40147 24.94106,33.11142 39.56043,60.20258 39.56043,60.20258 0,0 9.46208,-53.75314 -11.1788,-78.26419 -20.64088,-24.51105 -52.46309,-35.26025 -52.46309,-35.26025 0,0 13.4385,-6.98738 41.28219,-4.94479 27.84369,2.04258 85.60053,28.44463 85.60053,28.44462 0,0 -15.50743,-26.7591 -51.84367,-45.30731 -36.33623,-18.548198 -79.76967,0.30655 -79.76967,0.30655 0,0 4.05525,-16.118294 28.53281,-34.210394 24.47756,-18.092095 55.79742,-36.030833 55.79742,-36.030833 0,0 -25.84554,1.216607 -54.12395,12.619193 -7.03608,2.837127 -13.78978,6.605056 -19.96604,10.666471 l 17.06635,-53.527632 z" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 21 KiB |
@@ -0,0 +1,9 @@
|
|||||||
|
# Icon variations
|
||||||
|
|
||||||
|
These icons are licensed under GPLv3. Please see the [script for generating icons](../../tools/README.md) and appropriatedly redirect for seasonal icons.
|
||||||
|
|
||||||
|
- `base_named.svg` - Named variant.
|
||||||
|
- `base_small.svg`: Variant used for tiny icons (16x16, 64x64, etc).
|
||||||
|
- `base.svg`: Variant without branding/naming.
|
||||||
|
|
||||||
|
Try to keep the icons simple. And preferably automatically be able to be generated (to reduce maintanaince burden). Additionally keep the files small (use `svgo` and `optipng`) to not clutter the git.
|
||||||
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 13 KiB |
@@ -0,0 +1 @@
|
|||||||
|
#1F143C
|
||||||
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 42 KiB |
@@ -0,0 +1,672 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
width="512"
|
||||||
|
height="512"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 512 512"
|
||||||
|
version="1.1"
|
||||||
|
id="svg7"
|
||||||
|
sodipodi:docname="newyear2025.svg"
|
||||||
|
inkscape:version="1.4.2 (f4327f4, 2025-05-13)"
|
||||||
|
xml:space="preserve"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<metadata>
|
||||||
|
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#">
|
||||||
|
<cc:Work rdf:about="">
|
||||||
|
<dc:title>New Year 2025 Logo</dc:title>
|
||||||
|
<dc:creator>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Madeline_Dev</dc:title>
|
||||||
|
<dc:identifier>mailto:madelvidel@gmail.com</dc:identifier>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:creator>
|
||||||
|
<dc:date>2025</dc:date>
|
||||||
|
<dc:license rdf:resource="https://www.gnu.org/licenses/gpl-3.0.html"/>
|
||||||
|
<dc:rights>2025 Eden Emulator Project</dc:rights>
|
||||||
|
<dc:source>https://git.eden-emu.dev</dc:source>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs7"><linearGradient
|
||||||
|
id="swatch14"
|
||||||
|
inkscape:swatch="solid"><stop
|
||||||
|
style="stop-color:#66003b;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop14" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient1"
|
||||||
|
inkscape:collect="always"><stop
|
||||||
|
style="stop-color:#670047;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop1" /><stop
|
||||||
|
style="stop-color:#54003b;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop2" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient11"
|
||||||
|
inkscape:collect="always"><stop
|
||||||
|
style="stop-color:#60001d;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop11" /><stop
|
||||||
|
style="stop-color:#2f087e;stop-opacity:1;"
|
||||||
|
offset="0.49822688"
|
||||||
|
id="stop20" /><stop
|
||||||
|
style="stop-color:#0d3969;stop-opacity:1;"
|
||||||
|
offset="0.99898213"
|
||||||
|
id="stop12" /></linearGradient><linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient11"
|
||||||
|
id="linearGradient12"
|
||||||
|
x1="109.74531"
|
||||||
|
y1="106.54533"
|
||||||
|
x2="431.05463"
|
||||||
|
y2="427.85461"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
spreadMethod="reflect"
|
||||||
|
gradientTransform="translate(-14.100045,-9.900077)" /><linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient1"
|
||||||
|
id="linearGradient2"
|
||||||
|
x1="125.40197"
|
||||||
|
y1="271.834"
|
||||||
|
x2="431.02424"
|
||||||
|
y2="271.834"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.0017288,0,0,0.93676627,-14.581021,3.8948884)" /><filter
|
||||||
|
inkscape:label="Light Contour"
|
||||||
|
inkscape:menu="Image Paint and Draw"
|
||||||
|
inkscape:menu-tooltip="Uses vertical specular light to draw lines"
|
||||||
|
style="color-interpolation-filters:sRGB"
|
||||||
|
id="filter11"
|
||||||
|
x="-0.01907517"
|
||||||
|
y="-0.054959154"
|
||||||
|
width="1.0379885"
|
||||||
|
height="1.1092314"><feGaussianBlur
|
||||||
|
in="SourceGraphic"
|
||||||
|
stdDeviation="0.38250006"
|
||||||
|
result="result3"
|
||||||
|
id="feGaussianBlur9" /><feComponentTransfer
|
||||||
|
result="result1"
|
||||||
|
in="result3"
|
||||||
|
id="feComponentTransfer9"><feFuncR
|
||||||
|
type="discrete"
|
||||||
|
tableValues="0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1"
|
||||||
|
id="feFuncR9" /><feFuncG
|
||||||
|
type="discrete"
|
||||||
|
tableValues="0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1"
|
||||||
|
id="feFuncG9" /><feFuncB
|
||||||
|
type="discrete"
|
||||||
|
tableValues="0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1"
|
||||||
|
id="feFuncB9" /></feComponentTransfer><feGaussianBlur
|
||||||
|
result="result5"
|
||||||
|
stdDeviation="0.01"
|
||||||
|
id="feGaussianBlur10" /><feBlend
|
||||||
|
in2="result5"
|
||||||
|
result="result6"
|
||||||
|
mode="lighten"
|
||||||
|
in="result5"
|
||||||
|
id="feBlend10" /><feColorMatrix
|
||||||
|
in="result6"
|
||||||
|
type="luminanceToAlpha"
|
||||||
|
result="result2"
|
||||||
|
id="feColorMatrix10" /><feSpecularLighting
|
||||||
|
surfaceScale="5"
|
||||||
|
result="result9"
|
||||||
|
specularExponent="20"
|
||||||
|
in="result2"
|
||||||
|
specularConstant="1"
|
||||||
|
id="feSpecularLighting10"><feDistantLight
|
||||||
|
azimuth="180"
|
||||||
|
elevation="90"
|
||||||
|
id="feDistantLight10" /></feSpecularLighting><feComposite
|
||||||
|
in2="result6"
|
||||||
|
operator="arithmetic"
|
||||||
|
in="result9"
|
||||||
|
k1="0.4"
|
||||||
|
k3="0.7"
|
||||||
|
result="result3"
|
||||||
|
id="feComposite10"
|
||||||
|
k2="0"
|
||||||
|
k4="0" /><feBlend
|
||||||
|
in2="result1"
|
||||||
|
in="result3"
|
||||||
|
mode="normal"
|
||||||
|
result="result8"
|
||||||
|
id="feBlend11" /><feComposite
|
||||||
|
in2="SourceGraphic"
|
||||||
|
in="result8"
|
||||||
|
operator="in"
|
||||||
|
result="result7"
|
||||||
|
id="feComposite11" /></filter></defs><sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#000000"
|
||||||
|
borderopacity="0.25"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:zoom="1.2"
|
||||||
|
inkscape:cx="255.83333"
|
||||||
|
inkscape:cy="263.75"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1001"
|
||||||
|
inkscape:window-x="-9"
|
||||||
|
inkscape:window-y="-9"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg7"
|
||||||
|
showguides="false" /><circle
|
||||||
|
style="fill:url(#linearGradient12);fill-opacity:1;stroke:#ffef91;stroke-width:12.8318;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
id="path8"
|
||||||
|
cx="256.2999"
|
||||||
|
cy="257.2999"
|
||||||
|
r="227.2" /><path
|
||||||
|
id="path15"
|
||||||
|
style="fill:url(#linearGradient2);fill-opacity:1;stroke:#ffef91;stroke-width:15.499;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
d="m 302.36635,44.362459 c 0,0 -10.94894,36.624745 -16.49527,55.212494 -11.84627,8.682797 -19.6374,16.808737 -19.6374,16.808737 0,0 -21.391,-28.349465 -41.79087,-40.140074 C 204.04292,64.453007 176.5496,65.97212 176.5496,65.97212 c 0,0 -11.42088,3.65e-4 -25.24473,5.058903 -13.82386,5.058538 -19.43394,8.430897 -19.43394,8.430897 0,0 14.02577,-0.375072 34.66138,6.182291 20.63562,6.557362 29.65079,10.492882 29.65079,10.492882 l 28.34775,-5.99567 -7.71253,10.117817 c 0,0 13.52412,8.14986 20.83674,15.45664 7.31262,7.30677 10.71771,11.42782 10.71771,11.42782 0,0 -12.72117,-4.96414 -51.78859,-1.59178 -39.06742,3.37236 -77.5342,51.52215 -77.5342,51.52215 0,0 37.66383,-14.61428 59.90221,-19.48547 22.23838,-4.87118 43.47542,-7.30751 43.47542,-7.30751 0,0 -16.82788,6.74508 -34.85899,35.03543 -18.03112,28.29034 -12.82292,73.25622 -12.82292,73.25622 0,0 28.64945,-53.95774 56.09682,-72.131 27.44737,-18.17328 33.05705,-18.73533 33.05705,-18.73533 0,0 -22.03764,44.21537 -30.65251,115.22225 -8.61486,71.00688 27.64733,189.78848 27.64733,189.78848 l 43.67498,-6.37074 c 0,0 -41.67114,-38.5944 -45.27736,-138.26634 -3.60623,-99.67193 15.22549,-159.25026 15.22549,-159.25026 0,0 15.62776,1.12412 38.86787,29.97652 23.2401,28.85239 36.86244,52.4589 36.86244,52.4589 0,0 8.81678,-46.83904 -10.41641,-68.19731 -19.2332,-21.35826 -48.88515,-30.72483 -48.88515,-30.72483 0,0 12.522,-6.08862 38.46678,-4.30877 25.94477,1.77987 79.76265,24.7859 79.76265,24.78589 0,0 -14.44983,-23.31717 -48.30798,-39.47958 -33.85813,-16.16241 -74.32945,0.26713 -74.32945,0.26713 0,0 3.77869,-14.04506 26.5869,-29.81003 22.80821,-15.764974 51.99208,-31.396311 51.99208,-31.396311 0,0 -24.0829,1.06012 -50.43274,10.996027 -6.55623,2.472198 -12.84933,5.755465 -18.60438,9.294477 L 311.98256,46.04937 Z" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="path6"
|
||||||
|
cx="95.957726"
|
||||||
|
cy="394.82724"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse6"
|
||||||
|
cx="99.829285"
|
||||||
|
cy="376.65375"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse7"
|
||||||
|
cx="148.00078"
|
||||||
|
cy="402.74686"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse8"
|
||||||
|
cx="120.2822"
|
||||||
|
cy="380.68512"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse9"
|
||||||
|
cx="124.24197"
|
||||||
|
cy="422.54584"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse10"
|
||||||
|
cx="191.27571"
|
||||||
|
cy="438.38504"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse11"
|
||||||
|
cx="156.48605"
|
||||||
|
cy="444.0419"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse12"
|
||||||
|
cx="156.39783"
|
||||||
|
cy="421.90857"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse13"
|
||||||
|
cx="165.44879"
|
||||||
|
cy="389.66449"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse14"
|
||||||
|
cx="109.53416"
|
||||||
|
cy="338.25873"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse15"
|
||||||
|
cx="74.373444"
|
||||||
|
cy="369.86551"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse16"
|
||||||
|
cx="211.26932"
|
||||||
|
cy="459.80951"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse17"
|
||||||
|
cx="166.38556"
|
||||||
|
cy="326.66217"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse18"
|
||||||
|
cx="143.81549"
|
||||||
|
cy="310.87485"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse19"
|
||||||
|
cx="54.096996"
|
||||||
|
cy="302.62054"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse20"
|
||||||
|
cx="81.161667"
|
||||||
|
cy="337.62143"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse21"
|
||||||
|
cx="197.21542"
|
||||||
|
cy="389.73611"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse22"
|
||||||
|
cx="206.17815"
|
||||||
|
cy="420.49435"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse23"
|
||||||
|
cx="191.47032"
|
||||||
|
cy="355.72336"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse24"
|
||||||
|
cx="123.39349"
|
||||||
|
cy="289.32693"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse25"
|
||||||
|
cx="107.918"
|
||||||
|
cy="312.29456"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse26"
|
||||||
|
cx="171.10564"
|
||||||
|
cy="305.74896"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse27"
|
||||||
|
cx="209.00658"
|
||||||
|
cy="326.02487"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse28"
|
||||||
|
cx="233.13644"
|
||||||
|
cy="449.69873"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse29"
|
||||||
|
cx="209.57225"
|
||||||
|
cy="264.93088"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse30"
|
||||||
|
cx="218.14577"
|
||||||
|
cy="234.45544"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse31"
|
||||||
|
cx="69.087662"
|
||||||
|
cy="241.52652"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse32"
|
||||||
|
cx="79.464607"
|
||||||
|
cy="276.81027"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse33"
|
||||||
|
cx="119.91112"
|
||||||
|
cy="240.88925"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse34"
|
||||||
|
cx="149.54393"
|
||||||
|
cy="212.82214"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse35"
|
||||||
|
cx="87.384209"
|
||||||
|
cy="220.24173"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse36"
|
||||||
|
cx="51.834263"
|
||||||
|
cy="200.23149"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse37"
|
||||||
|
cx="102.46313"
|
||||||
|
cy="170.81586"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse38"
|
||||||
|
cx="154.70078"
|
||||||
|
cy="270.58774"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse39"
|
||||||
|
cx="129.52776"
|
||||||
|
cy="146.70262"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse40"
|
||||||
|
cx="72.393524"
|
||||||
|
cy="155.47075"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse41"
|
||||||
|
cx="125.37337"
|
||||||
|
cy="97.276749"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse42"
|
||||||
|
cx="158.09486"
|
||||||
|
cy="117.85267"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse43"
|
||||||
|
cx="292.81625"
|
||||||
|
cy="413.77774"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse44"
|
||||||
|
cx="324.70099"
|
||||||
|
cy="394.23505"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse45"
|
||||||
|
cx="320.42599"
|
||||||
|
cy="453.44434"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse46"
|
||||||
|
cx="285.09122"
|
||||||
|
cy="385.42184"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse48"
|
||||||
|
cx="338.44168"
|
||||||
|
cy="426.85901"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse49"
|
||||||
|
cx="317.79169"
|
||||||
|
cy="357.43658"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse51"
|
||||||
|
cx="365.49063"
|
||||||
|
cy="399.36642"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse53"
|
||||||
|
cx="279.23981"
|
||||||
|
cy="358.34058"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse54"
|
||||||
|
cx="327.80048"
|
||||||
|
cy="293.78082"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse56"
|
||||||
|
cx="372.42056"
|
||||||
|
cy="428.29486"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse57"
|
||||||
|
cx="291.59659"
|
||||||
|
cy="322.63077"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse58"
|
||||||
|
cx="359.18237"
|
||||||
|
cy="279.07053"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse59"
|
||||||
|
cx="383.58429"
|
||||||
|
cy="372.29739"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse60"
|
||||||
|
cx="397.37979"
|
||||||
|
cy="415.40317"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse63"
|
||||||
|
cx="350.44458"
|
||||||
|
cy="330.60577"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse64"
|
||||||
|
cx="278.86871"
|
||||||
|
cy="290.38669"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse65"
|
||||||
|
cx="293.07599"
|
||||||
|
cy="256.95929"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse66"
|
||||||
|
cx="449.10278"
|
||||||
|
cy="346.04938"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse67"
|
||||||
|
cx="414.35034"
|
||||||
|
cy="351.19788"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse68"
|
||||||
|
cx="419.44153"
|
||||||
|
cy="384.85614"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse70"
|
||||||
|
cx="283.1795"
|
||||||
|
cy="218.42702"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse71"
|
||||||
|
cx="321.29507"
|
||||||
|
cy="243.71765"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse73"
|
||||||
|
cx="391.73221"
|
||||||
|
cy="329.27985"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse75"
|
||||||
|
cx="393.46164"
|
||||||
|
cy="270.81857"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse76"
|
||||||
|
cx="464.73605"
|
||||||
|
cy="270.14359"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse77"
|
||||||
|
cx="429.25717"
|
||||||
|
cy="321.05084"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse78"
|
||||||
|
cx="353.9671"
|
||||||
|
cy="172.07269"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse79"
|
||||||
|
cx="374.46957"
|
||||||
|
cy="217.13043"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse80"
|
||||||
|
cx="386.14307"
|
||||||
|
cy="187.46037"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse81"
|
||||||
|
cx="424.05527"
|
||||||
|
cy="244.35493"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse82"
|
||||||
|
cx="430.8371"
|
||||||
|
cy="285.26224"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse83"
|
||||||
|
cx="402.7533"
|
||||||
|
cy="221.62213"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse84"
|
||||||
|
cx="455.30573"
|
||||||
|
cy="229.30444"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse85"
|
||||||
|
cx="431.69202"
|
||||||
|
cy="189.20061"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse86"
|
||||||
|
cx="464.40521"
|
||||||
|
cy="195.28293"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse87"
|
||||||
|
cx="440.46014"
|
||||||
|
cy="142.81439"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse88"
|
||||||
|
cx="411.80481"
|
||||||
|
cy="146.70259"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse89"
|
||||||
|
cx="351.93036"
|
||||||
|
cy="98.973793"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /><ellipse
|
||||||
|
style="fill:#e6e6e6;stroke-width:0.696631;paint-order:markers stroke fill"
|
||||||
|
id="ellipse90"
|
||||||
|
cx="370.50977"
|
||||||
|
cy="120.6811"
|
||||||
|
rx="1.2"
|
||||||
|
ry="1.1" /><ellipse
|
||||||
|
style="fill:#ffffff;paint-order:markers stroke fill"
|
||||||
|
id="ellipse91"
|
||||||
|
cx="394.07391"
|
||||||
|
cy="106.04485"
|
||||||
|
rx="1.7"
|
||||||
|
ry="1.6"
|
||||||
|
inkscape:label="Ne" /></svg>
|
||||||
|
After Width: | Height: | Size: 21 KiB |
@@ -0,0 +1 @@
|
|||||||
|
#1F143C
|
||||||
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
@@ -0,0 +1,80 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
width="512"
|
||||||
|
height="512"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 512 512"
|
||||||
|
version="1.1"
|
||||||
|
id="svg7"
|
||||||
|
sodipodi:docname="base_small.svg"
|
||||||
|
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<defs
|
||||||
|
id="defs7">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient10"
|
||||||
|
inkscape:collect="always">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#f977d9;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop10" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#a655d5;stop-opacity:1;"
|
||||||
|
offset="0.54051435"
|
||||||
|
id="stop13" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#984fd5;stop-opacity:1;"
|
||||||
|
offset="0.5714342"
|
||||||
|
id="stop12" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#8c4ad4;stop-opacity:1;"
|
||||||
|
offset="0.59666741"
|
||||||
|
id="stop14" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#3928d2;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop11" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient10"
|
||||||
|
id="linearGradient11"
|
||||||
|
x1="264.17508"
|
||||||
|
y1="28.385544"
|
||||||
|
x2="264.17508"
|
||||||
|
y2="488.65109"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.97815818,0,0,0.97880258,4.570042,5.8799159)" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#000000"
|
||||||
|
borderopacity="0.25"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:zoom="0.88388348"
|
||||||
|
inkscape:cx="153.30075"
|
||||||
|
inkscape:cy="243.24473"
|
||||||
|
inkscape:window-width="1600"
|
||||||
|
inkscape:window-height="849"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg7"
|
||||||
|
showguides="false" />
|
||||||
|
<path
|
||||||
|
id="path9"
|
||||||
|
style="fill:url(#linearGradient11);fill-opacity:1;stroke:none;stroke-width:13.3314;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
d="M 262.97461 33.6875 A 218.44267 225.23091 0 0 0 138.83789 73.589844 L 141.13867 72.265625 L 161.2207 65.195312 L 181.01953 61.517578 L 204.35352 64.205078 L 228.96094 76.650391 L 265.80078 115 L 283 99.400391 L 304.59961 85.800781 L 331 76.400391 L 360.59961 69.599609 L 379.95508 69.208984 A 218.44267 225.23091 0 0 0 262.97461 33.6875 z M 380.07617 69.291016 L 350.19922 77.800781 L 329.19922 89.199219 L 307.40039 108 L 288.80078 129.80078 L 287.40039 135 L 302.40039 129.59961 L 319 127.80078 L 348.80078 131.80078 L 370.19922 141.40039 L 393 161.40039 L 399.59961 171.59961 L 374.80078 160.80078 L 338.40039 150.80078 L 309.19922 150 L 288.80078 154.40039 L 293.19922 155.19922 L 319.19922 168.80078 L 338 187.19922 L 350.80078 224 L 349.19922 260 L 326 222.80078 L 302.80078 194 L 277.59961 172.40039 L 269.19922 187.59961 L 256.80078 281.59961 L 258 364 L 278.40039 452.80078 L 297.19531 481.36914 A 218.44267 225.23091 0 0 0 481.41797 258.91797 A 218.44267 225.23091 0 0 0 380.07617 69.291016 z M 133.07422 77.839844 A 218.44267 225.23091 0 0 0 44.533203 258.91797 A 218.44267 225.23091 0 0 0 257.04102 484.06641 L 247.3457 458.62891 L 237.87109 418.18359 L 233.0625 380.42383 L 230.375 354.9668 L 229.95117 321.30859 L 232.35547 291.32812 L 237.44727 254.98242 L 254.55859 191.9082 L 261.62891 172.5332 L 255.54883 174.08984 L 240.98242 180.87695 L 229.59961 190.19922 L 210.59961 208.19922 L 197.40039 229.40039 L 186.40039 252.59961 L 173.40039 269 L 171.40039 253.19922 L 173.59961 229.40039 L 183 202.40039 L 199.40039 178 L 221.04102 153.44141 L 209.02148 155.70508 L 177.05859 162.77539 L 148.06836 171.40234 L 119.92578 183 L 120.63281 180.16992 L 129.82422 165.88672 L 151.17969 147.50195 L 172.95898 135.48242 L 190.07031 129.54102 L 209.02148 127.98633 L 227.6875 128.69336 L 247.76953 128.41016 L 246.49805 125.1582 L 226.69922 105.92383 L 219.62695 97.439453 L 221.4668 90.085938 L 206.75781 94.044922 L 195.86914 95.458984 L 179.46289 88.671875 L 156.12891 81.458984 L 133.07422 77.839844 z " />
|
||||||
|
<path
|
||||||
|
style="fill:#1b1b1b;fill-opacity:0.12492698;stroke:none;stroke-width:13.374;stroke-opacity:0.415999;paint-order:stroke fill markers"
|
||||||
|
d="m 259.36665,490.16617 39.03323,-6.96642 -20,-30.4 -20.4,-88.8 -1.2,-82.4 12.4,-94 8.4,-15.2 25.2,21.6 23.2,28.8 23.2,37.2 1.6,-36 -12.8,-36.8 -18.8,-18.4 -26,-13.6 -4.4,-0.8 20.4,-4.4 29.2,0.8 36.4,10 24.8,10.8 -6.6,-10.2 -22.8,-20 -21.4,-9.6 -29.8,-4 -16.6,1.8 -15,5.4 1.4,-5.2 18.6,-21.8 21.8,-18.800003 21,-11.4 30.2,-8.6 -19.8,0.4 -29.6,6.8 -26.4,9.4 -21.6,13.6 -17.2,15.600003 -36.83882,-38.349628 -24.60732,-12.445079 -23.33452,-2.687006 -19.79899,3.676955 -20.08184,7.071068 -9.33381,5.374012 24.32448,3.818376 23.33452,7.212489 16.40488,6.788226 10.88944,-1.414214 14.70782,-3.959798 -1.83847,7.353911 7.07106,8.485288 19.79899,19.2333 1.2728,3.25269 -20.08184,0.28284 -18.66762,-0.7071 -18.95046,1.55563 -17.11198,5.9397 -21.77889,12.02081 -21.35462,18.38478 -9.19239,14.28356 -0.70711,2.82843 28.14285,-11.59656 28.99138,-8.6267 31.96122,-7.07107 12.02082,-2.26274 -21.64158,24.55783 -16.4,24.4 -9.4,27 -2.2,23.8 2,15.8 13,-16.4 11,-23.2 13.2,-21.2 19,-18 11.38199,-9.32209 14.5664,-6.78822 6.08112,-1.55564 -7.07107,19.37473 -17.11198,63.07393 -5.09117,36.34528 -2.40416,29.98133 0.42426,33.65828 2.68701,25.45585 4.80832,37.7595 9.47523,40.44651 z"
|
||||||
|
id="path8-4" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 5.5 KiB |
@@ -0,0 +1,211 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
width="512"
|
||||||
|
height="512"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 512 512"
|
||||||
|
version="1.1"
|
||||||
|
id="svg7"
|
||||||
|
sodipodi:docname="EdenLogoLoveWhiteV3.svg"
|
||||||
|
inkscape:version="1.4.3 (0d15f75, 2025-12-25)"
|
||||||
|
xml:space="preserve"
|
||||||
|
inkscape:export-filename="dev.eden_emu.eden.png"
|
||||||
|
inkscape:export-xdpi="96"
|
||||||
|
inkscape:export-ydpi="96"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<metadata
|
||||||
|
id="metadata1">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
|
||||||
|
<dc:creator>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Madeline_Dev</dc:title>
|
||||||
|
<dc:identifier>mailto:madelvidel@gmail.com</dc:identifier>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:creator>
|
||||||
|
<dc:date>2025</dc:date>
|
||||||
|
<dc:license
|
||||||
|
rdf:resource="https://www.gnu.org/licenses/gpl-3.0.html" />
|
||||||
|
<dc:rights>2025 Eden Emulator Project</dc:rights>
|
||||||
|
<dc:source>https://git.eden-emu.dev</dc:source>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs7"><linearGradient
|
||||||
|
id="swatch14"
|
||||||
|
inkscape:swatch="solid"><stop
|
||||||
|
style="stop-color:#66003b;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop14" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient1"
|
||||||
|
inkscape:collect="always"><stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.50980395;"
|
||||||
|
offset="0"
|
||||||
|
id="stop1" /><stop
|
||||||
|
style="stop-color:#000000;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop2" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient11"
|
||||||
|
inkscape:collect="always"><stop
|
||||||
|
style="stop-color:#9523a7;stop-opacity:0.50980395;"
|
||||||
|
offset="0"
|
||||||
|
id="stop11" /><stop
|
||||||
|
style="stop-color:#ffabad;stop-opacity:1;"
|
||||||
|
offset="0.99898213"
|
||||||
|
id="stop20" /><stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0;"
|
||||||
|
offset="0.99898213"
|
||||||
|
id="stop12" /></linearGradient><linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient11"
|
||||||
|
id="linearGradient12"
|
||||||
|
x1="109.74531"
|
||||||
|
y1="106.54533"
|
||||||
|
x2="431.05463"
|
||||||
|
y2="427.85461"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
spreadMethod="reflect"
|
||||||
|
gradientTransform="matrix(1.0945321,0,0,1.0945321,-39.661525,-35.159057)" /><linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient1"
|
||||||
|
id="linearGradient2"
|
||||||
|
x1="125.40197"
|
||||||
|
y1="271.834"
|
||||||
|
x2="431.02424"
|
||||||
|
y2="271.834"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.0964243,0,0,1.0253208,-40.187969,-20.060025)" /><filter
|
||||||
|
inkscape:label="Light Contour"
|
||||||
|
inkscape:menu="Image Paint and Draw"
|
||||||
|
inkscape:menu-tooltip="Uses vertical specular light to draw lines"
|
||||||
|
style="color-interpolation-filters:sRGB"
|
||||||
|
id="filter11"
|
||||||
|
x="-0.01907517"
|
||||||
|
y="-0.054959154"
|
||||||
|
width="1.0379885"
|
||||||
|
height="1.1092314"><feGaussianBlur
|
||||||
|
in="SourceGraphic"
|
||||||
|
stdDeviation="0.38250006"
|
||||||
|
result="result3"
|
||||||
|
id="feGaussianBlur9" /><feComponentTransfer
|
||||||
|
result="result1"
|
||||||
|
in="result3"
|
||||||
|
id="feComponentTransfer9"><feFuncR
|
||||||
|
type="discrete"
|
||||||
|
tableValues="0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1"
|
||||||
|
id="feFuncR9" /><feFuncG
|
||||||
|
type="discrete"
|
||||||
|
tableValues="0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1"
|
||||||
|
id="feFuncG9" /><feFuncB
|
||||||
|
type="discrete"
|
||||||
|
tableValues="0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1"
|
||||||
|
id="feFuncB9" /></feComponentTransfer><feGaussianBlur
|
||||||
|
result="result5"
|
||||||
|
stdDeviation="0.01"
|
||||||
|
id="feGaussianBlur10" /><feBlend
|
||||||
|
in2="result5"
|
||||||
|
result="result6"
|
||||||
|
mode="lighten"
|
||||||
|
in="result5"
|
||||||
|
id="feBlend10" /><feColorMatrix
|
||||||
|
in="result6"
|
||||||
|
type="luminanceToAlpha"
|
||||||
|
result="result2"
|
||||||
|
id="feColorMatrix10" /><feSpecularLighting
|
||||||
|
surfaceScale="5"
|
||||||
|
result="result9"
|
||||||
|
specularExponent="20"
|
||||||
|
in="result2"
|
||||||
|
specularConstant="1"
|
||||||
|
id="feSpecularLighting10"><feDistantLight
|
||||||
|
azimuth="180"
|
||||||
|
elevation="90"
|
||||||
|
id="feDistantLight10" /></feSpecularLighting><feComposite
|
||||||
|
in2="result6"
|
||||||
|
operator="arithmetic"
|
||||||
|
in="result9"
|
||||||
|
k1="0.4"
|
||||||
|
k3="0.7"
|
||||||
|
result="result3"
|
||||||
|
id="feComposite10"
|
||||||
|
k2="0"
|
||||||
|
k4="0" /><feBlend
|
||||||
|
in2="result1"
|
||||||
|
in="result3"
|
||||||
|
mode="normal"
|
||||||
|
result="result8"
|
||||||
|
id="feBlend11" /><feComposite
|
||||||
|
in2="SourceGraphic"
|
||||||
|
in="result8"
|
||||||
|
operator="in"
|
||||||
|
result="result7"
|
||||||
|
id="feComposite11" /></filter></defs><sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#000000"
|
||||||
|
borderopacity="0.25"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:zoom="1.35"
|
||||||
|
inkscape:cx="254.81481"
|
||||||
|
inkscape:cy="260.37037"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1001"
|
||||||
|
inkscape:window-x="-9"
|
||||||
|
inkscape:window-y="-9"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg7"
|
||||||
|
showguides="false" /><circle
|
||||||
|
style="fill:url(#linearGradient12);fill-opacity:1;stroke:#e4e4e4;stroke-width:14.0448;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
id="path8"
|
||||||
|
cx="256.2999"
|
||||||
|
cy="257.2999"
|
||||||
|
r="248.67769" /><path
|
||||||
|
id="path15"
|
||||||
|
style="fill:url(#linearGradient2);fill-opacity:1;stroke:#ffffff;stroke-width:16.9642;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.52156866;paint-order:stroke fill markers"
|
||||||
|
d="m 306.72111,24.233031 c 0,0 -11.98397,40.08696 -18.0546,60.431848 -12.96613,9.503601 -21.49377,18.397701 -21.49377,18.397701 0,0 -23.41313,-31.029398 -45.74145,-43.934598 -22.32833,-12.905201 -52.42065,-11.242483 -52.42065,-11.242483 0,0 -12.50052,4e-4 -27.63117,5.537132 -15.13066,5.536732 -21.27107,9.227888 -21.27107,9.227888 0,0 15.35165,-0.410529 37.93799,6.766716 22.58635,7.177243 32.45374,11.484796 32.45374,11.484796 l 31.02752,-6.562453 -8.44161,11.074275 c 0,0 14.80259,8.920284 22.80648,16.917787 8.0039,7.9975 11.73088,12.50812 11.73088,12.50812 0,0 -13.92373,-5.43341 -56.68427,-1.74226 -42.76055,3.69116 -84.86368,56.39265 -84.86368,56.39265 0,0 41.22428,-15.9958 65.5649,-21.32747 24.34062,-5.33166 47.58524,-7.9983 47.58524,-7.9983 0,0 -18.41865,7.3827 -38.15428,38.3474 -19.73564,30.96468 -14.0351,80.18128 -14.0351,80.18128 0,0 31.35774,-59.05848 61.39977,-78.94969 30.04203,-19.89124 36.182,-20.50642 36.182,-20.50642 0,0 -24.1209,48.39514 -33.55015,126.11445 -9.42924,77.71931 30.26089,207.72959 30.26089,207.72959 l 47.80367,-6.97298 c 0,0 -45.61041,-42.24281 -49.55753,-151.33695 -3.94713,-109.09413 16.66479,-174.30453 16.66479,-174.30453 0,0 17.10508,1.23039 42.54213,32.81027 25.43704,31.57987 40.34713,57.41795 40.34713,57.41795 0,0 9.65024,-51.26683 -11.4011,-74.64415 -21.05135,-23.3773 -53.50637,-33.62931 -53.50637,-33.62931 0,0 13.70573,-6.66419 42.10313,-4.71609 28.39738,1.94813 87.30278,27.12897 87.30278,27.12896 0,0 -15.8158,-25.5214 -52.87463,-43.21167 -37.05881,-17.69028 -81.35597,0.29238 -81.35597,0.29238 0,0 4.13589,-15.37277 29.10021,-32.628037 24.96432,-17.25527 56.907,-34.36427 56.907,-34.36427 0,0 -26.3595,1.160335 -55.20025,12.035504 -7.176,2.7059 -14.064,6.299542 -20.36309,10.173104 l 17.40574,-51.051762 z" /><path
|
||||||
|
id="path4-2-6"
|
||||||
|
style="fill:#ffffff;fill-opacity:0.509804;stroke:#ffffff;stroke-width:8.49614;stroke-dasharray:none;stroke-opacity:0.521569"
|
||||||
|
d="m 105.64857,363.95957 a 27.851731,25.309928 0 0 0 -7.115581,35.20471 27.851731,25.309928 0 0 0 5.656921,5.48617 c 7.16052,5.83605 21.58543,14.65841 45.88391,17.847 37.57172,4.93039 41.7105,10.38005 41.71122,10.381 -4.5e-4,-6e-4 -4.13529,-5.45309 4.14459,-39.11953 5.35491,-21.77281 1.40624,-37.16078 -2.05217,-45.31698 a 27.851731,25.309928 0 0 0 -3.63281,-6.75471 27.851731,25.309928 0 0 0 -38.74027,-6.4662 27.851731,25.309928 0 0 0 -7.11556,35.20472 27.851731,25.309928 0 0 0 -38.74025,-6.46618 z" /><path
|
||||||
|
id="path4-2-6-1"
|
||||||
|
style="fill:#ffffff;fill-opacity:0.50980395;stroke:#ffffff;stroke-width:6.89965;stroke-dasharray:none;stroke-opacity:0.519962"
|
||||||
|
d="m 351.29524,378.32915 a 20.862787,22.283365 87.929759 0 0 -28.94663,11.7882 20.862787,22.283365 87.929759 0 0 -1.50914,6.04125 c -1.09835,7.13663 -1.16134,20.16231 7.28339,36.72931 13.0577,25.61689 10.90177,30.69793 10.90138,30.69882 2.4e-4,-5.6e-4 2.16,-5.08045 30.49632,-15.43688 18.32576,-6.69765 27.84648,-16.23659 32.287,-22.14109 a 20.862787,22.283365 87.929759 0 0 3.33646,-5.36755 20.862787,22.283365 87.929759 0 0 -12.45108,-27.05014 20.862787,22.283365 87.929759 0 0 -28.94664,11.78822 20.862787,22.283365 87.929759 0 0 -12.45106,-27.05014 z" /><path
|
||||||
|
id="path4-2-6-1-5"
|
||||||
|
style="fill:#ffffff;fill-opacity:0.50980395;stroke:#ffffff;stroke-width:6.89965;stroke-dasharray:none;stroke-opacity:0.52156866"
|
||||||
|
d="m 83.024352,249.4105 a 22.283365,20.862787 0 0 0 -29.353581,10.73482 22.283365,20.862787 0 0 0 -1.72639,5.98278 c -1.35544,7.0923 -1.88894,20.10721 5.951801,36.96846 12.12378,26.07187 9.7857,31.07171 9.78528,31.07259 2.6e-4,-5.5e-4 2.34212,-4.99911 31.03406,-14.32513 18.555748,-6.03127 28.414858,-15.22005 33.065768,-20.96029 a 22.283365,20.862787 0 0 0 3.52818,-5.24352 22.283365,20.862787 0 0 0 -11.46577,-27.48227 22.283365,20.862787 0 0 0 -29.353588,10.73483 22.283365,20.862787 0 0 0 -11.46576,-27.48227 z" /><path
|
||||||
|
id="path4-2-6-1-9"
|
||||||
|
style="fill:#ffffff;fill-opacity:0.50980395;stroke:#ffffff;stroke-width:5.01078;stroke-dasharray:none;stroke-opacity:0.519962"
|
||||||
|
d="m 320.97602,291.36362 a 16.625347,14.748181 0 0 0 -21.90036,7.58859 16.625347,14.748181 0 0 0 -1.28804,4.2293 c -1.01128,5.01364 -1.40932,14.21406 4.44057,26.1335 9.0454,18.43055 7.30098,21.965 7.30067,21.96562 2e-4,-3.9e-4 1.74743,-3.53394 23.15415,-10.12663 13.84423,-4.26358 21.19999,-10.75925 24.66998,-14.8171 a 16.625347,14.748181 0 0 0 2.63233,-3.70671 16.625347,14.748181 0 0 0 -8.55447,-19.42758 16.625347,14.748181 0 0 0 -21.90037,7.58859 16.625347,14.748181 0 0 0 -8.55446,-19.42758 z" /><path
|
||||||
|
id="path4-2-6-1-9-8"
|
||||||
|
style="fill:#ffffff;fill-opacity:0.50980395;stroke:#ffffff;stroke-width:4.22313;stroke-dasharray:none;stroke-opacity:0.519962"
|
||||||
|
d="m 416.90426,193.13811 a 12.322476,14.134158 82.30909 0 0 -17.56469,8.83612 12.322476,14.134158 82.30909 0 0 -0.59553,3.65007 c -0.27175,4.26676 0.45709,11.92642 6.76182,21.10665 9.74867,14.19503 8.68847,17.32338 8.68827,17.3239 1.2e-4,-3.3e-4 1.06282,-3.12827 18.32699,-11.08266 11.16516,-5.14424 16.60821,-11.37802 19.06101,-15.14093 a 12.322476,14.134158 82.30909 0 0 1.788,-3.37453 12.322476,14.134158 82.30909 0 0 -9.45059,-15.07737 12.322476,14.134158 82.30909 0 0 -17.5647,8.83612 12.322476,14.134158 82.30909 0 0 -9.45058,-15.07737 z" /><path
|
||||||
|
id="path4-2-6-1-9-8-4"
|
||||||
|
style="fill:#ffffff;fill-opacity:0.50980395;stroke:#ffffff;stroke-width:3.48342;stroke-dasharray:none;stroke-opacity:0.519962"
|
||||||
|
d="m 96.169666,99.754795 a 10.296362,11.508677 62.365085 0 0 -7.330189,13.841365 10.296362,11.508677 62.365085 0 0 1.473186,2.6805 c 2.008889,2.93989 6.437543,7.66269 15.415927,10.84633 13.88288,4.92276 14.77391,7.47086 14.77407,7.4713 -1e-4,-2.8e-4 -0.88925,-2.54921 6.69094,-15.67164 4.90232,-8.48655 5.37758,-15.08279 5.10162,-18.6847 a 10.296362,11.508677 62.365085 0 0 -0.5257,-3.042454 10.296362,11.508677 62.365085 0 0 -14.1348,-5.641051 10.296362,11.508677 62.365085 0 0 -7.33021,13.841385 10.296362,11.508677 62.365085 0 0 -14.134844,-5.641035 z" /><path
|
||||||
|
id="path4-2-6-1-9-8-4-9-2"
|
||||||
|
style="fill:#ffffff;fill-opacity:0.5117;stroke:#ffffff;stroke-width:3.05139;stroke-dasharray:none;stroke-opacity:0.519962"
|
||||||
|
d="m 296.64657,233.26347 a 8.8114666,10.319195 80.445391 0 0 -11.58972,8.06989 8.8114666,10.319195 80.445391 0 0 0.0366,2.62543 c 0.35019,3.02392 1.86017,8.32306 7.60386,14.09672 8.8812,8.92759 8.51432,11.23624 8.51426,11.23663 5e-5,-2.5e-4 0.36876,-2.30885 11.85385,-9.72788 7.4277,-4.79799 10.57103,-9.75243 11.86523,-12.65455 a 8.8114666,10.319195 80.445391 0 0 0.86244,-2.55882 8.8114666,10.319195 80.445391 0 0 -8.77837,-9.57865 8.8114666,10.319195 80.445391 0 0 -11.58975,8.06989 8.8114666,10.319195 80.445391 0 0 -8.77842,-9.57866 z" /><path
|
||||||
|
id="path4-2-6-1-9-8-4-9-2-6"
|
||||||
|
style="fill:#ffffff;fill-opacity:0.5117;stroke:#ffffff;stroke-width:2.49738;stroke-dasharray:none;stroke-opacity:0.519962"
|
||||||
|
d="m 403.95446,91.44744 a 7.0950375,8.5844443 82.142743 0 0 -9.64888,6.492875 7.0950375,8.5844443 82.142743 0 0 0.0305,2.112375 c 0.29155,2.43298 1.54866,6.69657 6.33049,11.34195 7.39392,7.18298 7.08848,9.04046 7.08843,9.04078 4e-5,-2.1e-4 0.307,-1.85765 9.86876,-7.82686 6.18383,-3.86038 8.80077,-7.84663 9.87824,-10.18161 a 7.0950375,8.5844443 82.142743 0 0 0.718,-2.05879 7.0950375,8.5844443 82.142743 0 0 -7.30831,-7.706798 7.0950375,8.5844443 82.142743 0 0 -9.64889,6.492875 7.0950375,8.5844443 82.142743 0 0 -7.30834,-7.706797 z" /><path
|
||||||
|
id="path4-2-6-1-9-8-4-9-5"
|
||||||
|
style="fill:#ffffff;fill-opacity:0.5117;stroke:#ffffff;stroke-width:7.54176;stroke-dasharray:none;stroke-opacity:0.521569"
|
||||||
|
d="m 410.46352,265.86621 a 24.802737,22.39469 2.0523303 0 0 -30.17074,15.95063 24.802737,22.39469 2.0523303 0 0 -0.74427,6.61415 c -0.12337,7.7333 1.79614,21.62064 13.65297,38.28529 18.33368,25.76802 16.72835,31.4347 16.72811,31.43572 1.4e-4,-6.3e-4 1.60998,-5.66652 31.32518,-20.02007 19.21759,-9.28266 28.27643,-20.56192 32.27921,-27.37361 a 24.802737,22.39469 2.0523303 0 0 2.8654,-6.11021 24.802737,22.39469 2.0523303 0 0 -17.88248,-27.36631 24.802737,22.39469 2.0523303 0 0 -30.17081,15.95066 24.802737,22.39469 2.0523303 0 0 -17.88257,-27.36625 z" /><path
|
||||||
|
id="path4-2-6-1-9-8-5"
|
||||||
|
style="fill:#ffffff;fill-opacity:0.50980395;stroke:#ffffff;stroke-width:3.6405;stroke-dasharray:none;stroke-opacity:0.519962"
|
||||||
|
d="m 114.43099,189.33754 a 10.333135,12.525309 79.004057 0 0 -14.00848,9.75499 10.333135,12.525309 79.004057 0 0 0.0547,3.08382 c 0.43602,3.54457 2.28588,9.73496 9.26636,16.38295 10.79359,10.27954 10.35819,13.00063 10.3581,13.00111 6e-5,-3e-4 0.4377,-2.72141 14.32197,-11.70923 8.9793,-5.8126 12.76786,-11.70785 14.32433,-15.14812 a 10.333135,12.525309 79.004057 0 0 1.03481,-3.02677 10.333135,12.525309 79.004057 0 0 -10.67161,-11.04688 10.333135,12.525309 79.004057 0 0 -14.00848,9.75501 10.333135,12.525309 79.004057 0 0 -10.6716,-11.04688 z" /><path
|
||||||
|
id="path4-2-6-1-9-8-4-9-2-2"
|
||||||
|
style="fill:#ffffff;fill-opacity:0.5117;stroke:#ffffff;stroke-width:3.62674;stroke-dasharray:none;stroke-opacity:0.519962"
|
||||||
|
d="m 178.56055,273.32338 a 10.656883,12.053184 66.089768 0 0 -7.97821,14.16205 10.656883,12.053184 66.089768 0 0 1.49012,2.79504 c 2.04675,3.07265 6.5954,8.03049 15.94965,11.48124 14.46412,5.33577 15.34612,7.98353 15.34628,7.98398 -8e-5,-2.8e-4 -0.88012,-2.64887 7.3455,-16.0639 5.31973,-8.67576 5.95524,-15.47956 5.74045,-19.20452 a 10.656883,12.053184 66.089768 0 0 -0.48843,-3.15169 10.656883,12.053184 66.089768 0 0 -14.7135,-6.08217 10.656883,12.053184 66.089768 0 0 -7.97826,14.1621 10.656883,12.053184 66.089768 0 0 -14.71355,-6.08215 z" /></svg>
|
||||||
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1 @@
|
|||||||
|
#e48cc9ff
|
||||||
|
After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 256 KiB |
@@ -6,9 +6,11 @@
|
|||||||
This is a full-fledged guide to build Eden on all supported platforms.
|
This is a full-fledged guide to build Eden on all supported platforms.
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|
||||||
First, you must [install some dependencies](Deps.md).
|
First, you must [install some dependencies](Deps.md).
|
||||||
|
|
||||||
## Clone
|
## Clone
|
||||||
|
|
||||||
Next, you will want to clone Eden via the terminal:
|
Next, you will want to clone Eden via the terminal:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@@ -26,7 +28,7 @@ Android has a completely different build process than other platforms. See its [
|
|||||||
|
|
||||||
If the configure phase fails, see the `Troubleshooting` section below. Usually, as long as you followed the dependencies guide, the defaults *should* successfully configure and build.
|
If the configure phase fails, see the `Troubleshooting` section below. Usually, as long as you followed the dependencies guide, the defaults *should* successfully configure and build.
|
||||||
|
|
||||||
### Qt Creator
|
### Option A: Qt Creator
|
||||||
|
|
||||||
This is the recommended GUI method for Linux, macOS, and Windows.
|
This is the recommended GUI method for Linux, macOS, and Windows.
|
||||||
|
|
||||||
@@ -46,44 +48,61 @@ Hit "Configure Project", then wait for CMake to finish configuring (may take a w
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
### Command Line
|
### Option B: Command Line
|
||||||
|
|
||||||
This is recommended for *BSD, Solaris, Linux, and MSYS2. MSVC is possible, but not recommended.
|
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Click to Open</summary>
|
<summary>Click to Open</summary>
|
||||||
|
|
||||||
Note that CMake must be in your PATH, and you must be in the cloned Eden directory. On Windows, you must also set up a Visual C++ development environment. This can be done by running `C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat` in the same terminal.
|
> [!WARNING]
|
||||||
|
>For all systems:
|
||||||
|
>
|
||||||
|
>- *CMake* **MUST** be in your PATH (and also *ninja*, if you are using it as `<GENERATOR>`)
|
||||||
|
>- You *MUST* be in the cloned *Eden* directory
|
||||||
|
>
|
||||||
|
>On Windows:
|
||||||
|
>
|
||||||
|
> - It's recommended to install **[Ninja](https://ninja-build.org/)**
|
||||||
|
> - You must load **Visual C++ development environment**, this can be done by running our convenience script:
|
||||||
|
> - `tools/windows/load-msvc-env.ps1` (for PowerShell 5+)
|
||||||
|
> - `tools/windows/load-msvc-env.sh` (for MSYS2, Git Bash, etc)
|
||||||
|
|
||||||
Recommended generators:
|
Available `<GENERATOR>`:
|
||||||
|
|
||||||
- MSYS2: `MSYS Makefiles`
|
- MSYS2: `MSYS Makefiles`
|
||||||
- MSVC: Install **[ninja](https://ninja-build.org/)** and use `Ninja`, OR use `Visual Studio 17 2022`
|
- MSVC: `Ninja` (preferred) or `Visual Studio 17 2022`
|
||||||
- macOS: `Ninja` (preferred) or `Xcode`
|
- macOS: `Ninja` (preferred) or `Xcode`
|
||||||
- Others: `Ninja` (preferred) or `UNIX Makefiles`
|
- Others: `Ninja` (preferred) or `UNIX Makefiles`
|
||||||
|
|
||||||
BUILD_TYPE should usually be `Release` or `RelWithDebInfo` (debug symbols--compiled executable will be large). If you are using a debugger and annoyed with stuff getting optimized out, try `Debug`.
|
Available `<BUILD_TYPE>`:
|
||||||
|
|
||||||
Also see the [Options](Options.md) page for additional CMake options.
|
- `Release` (default)
|
||||||
|
- `RelWithDebInfo` (debug symbols--compiled executable will be large)
|
||||||
|
- `Debug` (if you are using a debugger and annoyed with stuff getting optimized out)
|
||||||
|
|
||||||
|
Caveat for Debug Builds:
|
||||||
|
|
||||||
|
- If you're building with CCache, you will need to add the environment variable `CL` with the `/FS` flag ([Reference](https://learn.microsoft.com/pt-br/cpp/build/reference/fs-force-synchronous-pdb-writes?view=msvc-170))
|
||||||
|
|
||||||
|
Also see the root CMakeLists.txt for more build options. Usually the default will provide the best experience, however.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cmake -S . -B build -G "GENERATOR" -DCMAKE_BUILD_TYPE=<BUILD_TYPE> -DYUZU_TESTS=OFF
|
cmake -S . -B build -G "<GENERATOR>" -DCMAKE_BUILD_TYPE=<BUILD_TYPE> -DYUZU_TESTS=OFF
|
||||||
```
|
```
|
||||||
|
|
||||||
If you are on Windows and prefer to use Clang:
|
If you are on Windows and prefer to use Clang:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cmake -S . -B build -G "GENERATOR" -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl
|
cmake -S . -B build -G "<GENERATOR>" -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl
|
||||||
```
|
```
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
### [CLion](https://www.jetbrains.com/clion/)
|
### Option C: [CLion](https://www.jetbrains.com/clion/)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Click to Open</summary>
|
<summary>Click to Open</summary>
|
||||||
|
|
||||||
* Clone the Repository:
|
- Clone the Repository:
|
||||||
|
|
||||||
<img src="https://user-images.githubusercontent.com/42481638/216899046-0d41d7d6-8e4d-4ed2-9587-b57088af5214.png" width="500">
|
<img src="https://user-images.githubusercontent.com/42481638/216899046-0d41d7d6-8e4d-4ed2-9587-b57088af5214.png" width="500">
|
||||||
<img src="https://user-images.githubusercontent.com/42481638/216899061-b2ea274a-e88c-40ae-bf0b-4450b46e9fea.png" width="500">
|
<img src="https://user-images.githubusercontent.com/42481638/216899061-b2ea274a-e88c-40ae-bf0b-4450b46e9fea.png" width="500">
|
||||||
@@ -93,26 +112,26 @@ cmake -S . -B build -G "GENERATOR" -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPI
|
|||||||
|
|
||||||
### Building & Setup
|
### Building & Setup
|
||||||
|
|
||||||
* Once Cloned, You will be taken to a prompt like the image below:
|
- Once Cloned, You will be taken to a prompt like the image below:
|
||||||
|
|
||||||
<img src="https://user-images.githubusercontent.com/42481638/216899092-3fe4cec6-a540-44e3-9e1e-3de9c2fffc2f.png" width="500">
|
<img src="https://user-images.githubusercontent.com/42481638/216899092-3fe4cec6-a540-44e3-9e1e-3de9c2fffc2f.png" width="500">
|
||||||
|
|
||||||
* Set the settings to the image below:
|
- Set the settings to the image below:
|
||||||
* Change `Build type: Release`
|
- Change `Build type: Release`
|
||||||
* Change `Name: Release`
|
- Change `Name: Release`
|
||||||
* Change `Toolchain Visual Studio`
|
- Change `Toolchain Visual Studio`
|
||||||
* Change `Generator: Let CMake decide`
|
- Change `Generator: Let CMake decide`
|
||||||
* Change `Build directory: build`
|
- Change `Build directory: build`
|
||||||
|
|
||||||
<img src="https://user-images.githubusercontent.com/42481638/216899164-6cee8482-3d59-428f-b1bc-e6dc793c9b20.png" width="500">
|
<img src="https://user-images.githubusercontent.com/42481638/216899164-6cee8482-3d59-428f-b1bc-e6dc793c9b20.png" width="500">
|
||||||
|
|
||||||
* Click OK; now Clion will build a directory and index your code to allow for IntelliSense. Please be patient.
|
- Click OK; now Clion will build a directory and index your code to allow for IntelliSense. Please be patient.
|
||||||
* Once this process has been completed (No loading bar bottom right), you can now build eden
|
- Once this process has been completed (No loading bar bottom right), you can now build eden
|
||||||
* In the top right, click on the drop-down menu, select all configurations, then select eden
|
- In the top right, click on the drop-down menu, select all configurations, then select eden
|
||||||
|
|
||||||
<img src="https://user-images.githubusercontent.com/42481638/216899226-975048e9-bc6d-4ec1-bc2d-bd8a1e15ed04.png" height="500" >
|
<img src="https://user-images.githubusercontent.com/42481638/216899226-975048e9-bc6d-4ec1-bc2d-bd8a1e15ed04.png" height="500" >
|
||||||
|
|
||||||
* Now run by clicking the play button or pressing Shift+F10, and eden will auto-launch once built.
|
- Now run by clicking the play button or pressing Shift+F10, and eden will auto-launch once built.
|
||||||
|
|
||||||
<img src="https://user-images.githubusercontent.com/42481638/216899275-d514ec6a-e563-470e-81e2-3e04f0429b68.png" width="500">
|
<img src="https://user-images.githubusercontent.com/42481638/216899275-d514ec6a-e563-470e-81e2-3e04f0429b68.png" width="500">
|
||||||
</details>
|
</details>
|
||||||
@@ -120,12 +139,13 @@ cmake -S . -B build -G "GENERATOR" -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPI
|
|||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
If your initial configure failed:
|
If your initial configure failed:
|
||||||
|
|
||||||
- *Carefully* re-read the [dependencies guide](Deps.md)
|
- *Carefully* re-read the [dependencies guide](Deps.md)
|
||||||
- Clear the CPM cache (`.cache/cpm`) and CMake cache (`<build directory>/CMakeCache.txt`)
|
- Clear the CPM cache (`.cache/cpm`) and CMake cache (`<build directory>/CMakeCache.txt`)
|
||||||
- Evaluate the error and find any related settings
|
- Evaluate the error and find any related settings
|
||||||
- See the [CPM docs](CPM.md) to see if you may need to forcefully bundle any packages
|
- See the [CPM docs](CPM.md) to see if you may need to forcefully bundle any packages
|
||||||
|
|
||||||
Otherwise, feel free to ask for help in Revolt or Discord.
|
Otherwise, feel free to ask for help in Stoat or Discord.
|
||||||
|
|
||||||
## Caveats
|
## Caveats
|
||||||
|
|
||||||
@@ -133,28 +153,24 @@ Many platforms have quirks, bugs, and other fun stuff that may cause issues when
|
|||||||
|
|
||||||
## Building & Running
|
## Building & Running
|
||||||
|
|
||||||
### Qt Creator
|
### On Qt Creator
|
||||||
|
|
||||||
Simply hit Ctrl+B, or the "hammer" icon in the bottom left. To run, hit the "play" icon, or Ctrl+R.
|
Simply hit Ctrl+B, or the "hammer" icon in the bottom left. To run, hit the "play" icon, or Ctrl+R.
|
||||||
|
|
||||||
### Command Line
|
### On Command Line
|
||||||
|
|
||||||
If you are not on Windows and are using the `UNIX Makefiles` generator, you must also add `-j$(nproc)` to this command.
|
If you are using the `UNIX Makefiles` or `Visual Studio 17 2022` as `<GENERATOR>`, you should also add `--parallel` for faster build times.
|
||||||
|
|
||||||
```
|
```sh
|
||||||
cmake --build build
|
cmake --build build
|
||||||
```
|
```
|
||||||
|
|
||||||
Your compiled executable will be in:
|
Your compiled executable will be in:
|
||||||
|
|
||||||
- `build/bin/eden.exe` for Windows,
|
- `build/bin/eden.exe` for Windows,
|
||||||
- `build/bin/eden.app/Contents/MacOS/eden` for macOS,
|
- `build/bin/eden.app/Contents/MacOS/eden` for macOS,
|
||||||
- and `build/bin/eden` for others.
|
- and `build/bin/eden` for others.
|
||||||
|
|
||||||
## Scripts
|
## Scripts
|
||||||
|
|
||||||
Some platforms have convenience scripts provided for building.
|
Take a look at our [CI scripts](https://github.com/Eden-CI/Workflow). You can use `.ci/common/configure.sh` on any POSIX-compliant shell, but you are heavily encouraged to instead write your own based. It's not really that hard, provided you can read CMake.
|
||||||
|
|
||||||
- **[Linux](scripts/Linux.md)**
|
|
||||||
- **[Windows](scripts/Windows.md)**
|
|
||||||
|
|
||||||
macOS scripts will come soon.
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
src/web_service @AleksandrPopovich
|
src/web_service @AleksandrPopovich
|
||||||
src/dynarmic @Lizzie
|
src/dynarmic @Lizzie
|
||||||
src/core @Lizzie @Maufeat @PavelBARABANOV @MrPurple666 @JPikachu
|
src/core @Lizzie @Maufeat @PavelBARABANOV @MrPurple666 @JPikachu
|
||||||
src/core/hle @Maufeat @PavelBARABANOV @SDK-Chan
|
src/core/hle @Maufeat @PavelBARABANOV
|
||||||
src/core/arm @Lizzie @MrPurple666
|
src/core/arm @Lizzie @MrPurple666
|
||||||
src/*_room @AleksandrPopovich
|
src/*_room @AleksandrPopovich
|
||||||
src/video_core @CamilleLaVey @MaranBr @Wildcard @weakboson
|
src/video_core @CamilleLaVey @MaranBr @Wildcard @weakboson
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
# AddPackage
|
|
||||||
|
|
||||||
- `VERSION` (required): The version to get (the tag will be `v${VERSION}`)
|
|
||||||
- `NAME` (required): Name used within the artifacts
|
|
||||||
- `REPO` (required): CI repository, e.g. `crueter-ci/OpenSSL`
|
|
||||||
- `PACKAGE` (required): `find_package` package name
|
|
||||||
- `EXTENSION`: Artifact extension (default `tar.zst`)
|
|
||||||
- `MIN_VERSION`: Minimum version for `find_package`. Only used if platform does not support this package as a bundled artifact
|
|
||||||
- `DISABLED_PLATFORMS`: List of platforms that lack artifacts for this package. Options:
|
|
||||||
* `windows-amd64`
|
|
||||||
* `windows-arm64`
|
|
||||||
* `android`
|
|
||||||
* `solaris-amd64`
|
|
||||||
* `freebsd-amd64`
|
|
||||||
* `linux-amd64`
|
|
||||||
* `linux-aarch64`
|
|
||||||
* `macos-universal`
|
|
||||||
@@ -7,13 +7,14 @@
|
|||||||
- `EXTENSION`: Artifact extension (default `tar.zst`)
|
- `EXTENSION`: Artifact extension (default `tar.zst`)
|
||||||
- `MIN_VERSION`: Minimum version for `find_package`. Only used if platform does not support this package as a bundled artifact
|
- `MIN_VERSION`: Minimum version for `find_package`. Only used if platform does not support this package as a bundled artifact
|
||||||
- `DISABLED_PLATFORMS`: List of platforms that lack artifacts for this package. Options:
|
- `DISABLED_PLATFORMS`: List of platforms that lack artifacts for this package. Options:
|
||||||
* `windows-amd64`
|
- `windows-amd64`
|
||||||
* `windows-arm64`
|
- `windows-arm64`
|
||||||
* `mingw-amd64`
|
- `mingw-amd64`
|
||||||
* `mingw-arm64`
|
- `mingw-arm64`
|
||||||
* `android`
|
- `android-x86_64`
|
||||||
* `solaris-amd64`
|
- `android-aarch64`
|
||||||
* `freebsd-amd64`
|
- `solaris-amd64`
|
||||||
* `linux-amd64`
|
- `freebsd-amd64`
|
||||||
* `linux-aarch64`
|
- `linux-amd64`
|
||||||
* `macos-universal`
|
- `linux-aarch64`
|
||||||
|
- `macos-universal`
|
||||||
|
|||||||