Compare commits
No commits in common. "master" and "v0.0.4-rc2.test" have entirely different histories.
master
...
v0.0.4-rc2
|
|
@ -1,22 +0,0 @@
|
||||||
#!/bin/sh -e
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 crueter
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
_svg=dev.eden_emu.eden.svg
|
|
||||||
_icon=dist/eden.icon
|
|
||||||
_composed="$_icon/Assets/$_svg"
|
|
||||||
_svg="dist/$_svg"
|
|
||||||
|
|
||||||
rm "$_composed"
|
|
||||||
cp "$_svg" "$_composed"
|
|
||||||
|
|
||||||
xcrun actool "$_icon" \
|
|
||||||
--compile dist \
|
|
||||||
--platform macosx \
|
|
||||||
--minimum-deployment-target 11.0 \
|
|
||||||
--app-icon eden \
|
|
||||||
--output-partial-info-plist /dev/null
|
|
||||||
|
|
@ -1,137 +1,21 @@
|
||||||
#!/bin/sh -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
NUM_JOBS=$(nproc 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null || echo 2)
|
export NDK_CCACHE=$(which ccache)
|
||||||
export CMAKE_BUILD_PARALLEL_LEVEL="${NUM_JOBS}"
|
|
||||||
ARTIFACTS_DIR="$PWD/artifacts"
|
|
||||||
|
|
||||||
: "${CCACHE:=false}"
|
if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then
|
||||||
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"
|
||||||
echo "${ANDROID_KEYSTORE_B64}" | base64 --decode > "${ANDROID_KEYSTORE_FILE}"
|
base64 --decode <<< "${ANDROID_KEYSTORE_B64}" > "${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
|
||||||
|
|
||||||
set -- "$@" -DUSE_CCACHE="${CCACHE}"
|
./gradlew assembleMainlineRelease
|
||||||
|
./gradlew bundleMainlineRelease
|
||||||
|
|
||||||
nightly() {
|
if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then
|
||||||
[ "$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}/"
|
|
||||||
|
|
|
||||||
22
.ci/android/package.sh
Executable file
|
|
@ -0,0 +1,22 @@
|
||||||
|
#!/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 2026 Eden Emulator Project
|
# SPDX-FileCopyrightText: Copyright 2025 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 tools/windows/vcvarsall.sh externals/stb externals/glad externals/getopt externals/gamemode externals/FidelityFX-FSR externals/demangle externals/bc_decoder externals/cmake-modules"
|
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"
|
||||||
|
|
||||||
# license header constants, please change when needed :))))
|
# license header constants, please change when needed :))))
|
||||||
YEAR=$(date "+%Y")
|
YEAR=2025
|
||||||
HOLDER="Eden Emulator Project"
|
HOLDER="Eden Emulator Project"
|
||||||
LICENSE="GPL-3.0-or-later"
|
LICENSE="GPL-3.0-or-later"
|
||||||
|
|
||||||
|
|
@ -41,8 +41,9 @@ 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) UPDATE=true; COMMIT=true ;;
|
(-c|--commit) COMMIT=true ;;
|
||||||
("$0") break ;;
|
("$0") break ;;
|
||||||
("") break ;;
|
("") break ;;
|
||||||
(*) usage ;;
|
(*) usage ;;
|
||||||
|
|
@ -112,10 +113,10 @@ for file in $FILES; do
|
||||||
[ "$excluded" = "true" ] && continue
|
[ "$excluded" = "true" ] && continue
|
||||||
|
|
||||||
case "$file" in
|
case "$file" in
|
||||||
*.cmake|*.sh|*.ps1|*.py|*.rb|*.perl|*.pl|*.nix|*CMakeLists.txt)
|
*.cmake|*.sh|CMakeLists.txt)
|
||||||
begin="#"
|
begin="#"
|
||||||
;;
|
;;
|
||||||
*.kt|*.kts|*.cpp|*.h|*.qml|*.c|*.hpp|*.hxx|*.cxx|*.h.in|*.inc)
|
*.kt*|*.cpp|*.h)
|
||||||
begin="//"
|
begin="//"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|
@ -185,16 +186,15 @@ 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
|
||||||
# Windows Powershell wont use shebangs
|
*.cmake|CMakeLists.txt)
|
||||||
*.cmake|*.ps1|*CMakeLists.txt)
|
|
||||||
begin="#"
|
begin="#"
|
||||||
shell="false"
|
shell="false"
|
||||||
;;
|
;;
|
||||||
*.sh|*.py|*.rb|*.perl|*.pl|*.nix)
|
*.sh)
|
||||||
begin="#"
|
begin="#"
|
||||||
shell=true
|
shell=true
|
||||||
;;
|
;;
|
||||||
*)
|
*.kt*|*.cpp|*.h)
|
||||||
begin="//"
|
begin="//"
|
||||||
shell="false"
|
shell="false"
|
||||||
;;
|
;;
|
||||||
|
|
|
||||||
117
.ci/linux/build.sh
Executable file
|
|
@ -0,0 +1,117 @@
|
||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
amd64 | "")
|
||||||
|
echo "Making amd64-v3 optimized build of Eden"
|
||||||
|
ARCH="amd64_v3"
|
||||||
|
ARCH_FLAGS="-march=x86-64-v3"
|
||||||
|
export EXTRA_CMAKE_FLAGS=(-DYUZU_BUILD_PRESET=v3)
|
||||||
|
;;
|
||||||
|
steamdeck | zen2)
|
||||||
|
echo "Making Steam Deck (Zen 2) optimized build of Eden"
|
||||||
|
ARCH="steamdeck"
|
||||||
|
ARCH_FLAGS="-march=znver2 -mtune=znver2"
|
||||||
|
export EXTRA_CMAKE_FLAGS=(-DYUZU_BUILD_PRESET=zen2 -DYUZU_SYSTEM_PROFILE=steamdeck)
|
||||||
|
;;
|
||||||
|
rog-ally | allyx | zen4)
|
||||||
|
echo "Making ROG Ally X (Zen 4) optimized build of Eden"
|
||||||
|
ARCH="rog-ally-x"
|
||||||
|
ARCH_FLAGS="-march=znver4 -mtune=znver4"
|
||||||
|
export EXTRA_CMAKE_FLAGS=(-DYUZU_BUILD_PRESET=zen2 -DYUZU_SYSTEM_PROFILE=steamdeck)
|
||||||
|
;;
|
||||||
|
legacy)
|
||||||
|
echo "Making amd64 generic build of Eden"
|
||||||
|
ARCH=amd64
|
||||||
|
ARCH_FLAGS="-march=x86-64 -mtune=generic"
|
||||||
|
export EXTRA_CMAKE_FLAGS=(-DYUZU_BUILD_PRESET=generic)
|
||||||
|
;;
|
||||||
|
aarch64)
|
||||||
|
echo "Making armv8-a build of Eden"
|
||||||
|
ARCH=aarch64
|
||||||
|
ARCH_FLAGS="-march=armv8-a -mtune=generic -w"
|
||||||
|
export EXTRA_CMAKE_FLAGS=(-DYUZU_BUILD_PRESET=generic)
|
||||||
|
;;
|
||||||
|
armv9)
|
||||||
|
echo "Making armv9-a build of Eden"
|
||||||
|
ARCH=armv9
|
||||||
|
ARCH_FLAGS="-march=armv9-a -mtune=generic -w"
|
||||||
|
export EXTRA_CMAKE_FLAGS=(-DYUZU_BUILD_PRESET=armv9)
|
||||||
|
;;
|
||||||
|
native)
|
||||||
|
echo "Making native build of Eden"
|
||||||
|
ARCH="$(uname -m)"
|
||||||
|
ARCH_FLAGS="-march=native -mtune=native"
|
||||||
|
export EXTRA_CMAKE_FLAGS=(-DYUZU_BUILD_PRESET=native)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Invalid target $1 specified, must be one of native, amd64, steamdeck, zen2, allyx, rog-ally, zen4, legacy, aarch64, armv9"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
export ARCH_FLAGS="$ARCH_FLAGS -O3"
|
||||||
|
|
||||||
|
if [ -z "$NPROC" ]; then
|
||||||
|
NPROC="$(nproc)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" != "" ]; then shift; fi
|
||||||
|
|
||||||
|
if [ "$TARGET" = "appimage" ]; then
|
||||||
|
export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DCMAKE_INSTALL_PREFIX=/usr -DYUZU_ROOM=ON -DYUZU_ROOM_STANDALONE=OFF -DYUZU_CMD=OFF)
|
||||||
|
else
|
||||||
|
# For the linux-fresh verification target, verify compilation without PCH as well.
|
||||||
|
export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DYUZU_USE_PRECOMPILED_HEADERS=OFF)
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ "$DEVEL" != "true" ]; then
|
||||||
|
export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DENABLE_UPDATE_CHECKER=ON)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$USE_WEBENGINE" = "true" ]; then
|
||||||
|
WEBENGINE=ON
|
||||||
|
else
|
||||||
|
WEBENGINE=OFF
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$USE_MULTIMEDIA" = "false" ]; then
|
||||||
|
MULTIMEDIA=OFF
|
||||||
|
else
|
||||||
|
MULTIMEDIA=ON
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$BUILD_TYPE" ]; then
|
||||||
|
export BUILD_TYPE="Release"
|
||||||
|
fi
|
||||||
|
|
||||||
|
export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" $@)
|
||||||
|
|
||||||
|
mkdir -p build && cd build
|
||||||
|
cmake .. -G Ninja \
|
||||||
|
-DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
|
||||||
|
-DENABLE_QT_TRANSLATION=ON \
|
||||||
|
-DUSE_DISCORD_PRESENCE=ON \
|
||||||
|
-DCMAKE_CXX_FLAGS="$ARCH_FLAGS" \
|
||||||
|
-DCMAKE_C_FLAGS="$ARCH_FLAGS" \
|
||||||
|
-DYUZU_USE_BUNDLED_QT=OFF \
|
||||||
|
-DYUZU_USE_BUNDLED_SDL2=OFF \
|
||||||
|
-DYUZU_USE_EXTERNAL_SDL2=ON \
|
||||||
|
-DYUZU_TESTS=OFF \
|
||||||
|
-DYUZU_USE_QT_MULTIMEDIA=$MULTIMEDIA \
|
||||||
|
-DYUZU_USE_QT_WEB_ENGINE=$WEBENGINE \
|
||||||
|
-DYUZU_USE_FASTER_LD=ON \
|
||||||
|
-DYUZU_ENABLE_LTO=ON \
|
||||||
|
-DDYNARMIC_ENABLE_LTO=ON \
|
||||||
|
"${EXTRA_CMAKE_FLAGS[@]}"
|
||||||
|
|
||||||
|
ninja -j${NPROC}
|
||||||
|
|
||||||
|
if [ -d "bin/Release" ]; then
|
||||||
|
strip -s bin/Release/*
|
||||||
|
else
|
||||||
|
strip -s bin/*
|
||||||
|
fi
|
||||||
250
.ci/linux/eden.dwfsprof
Normal file
|
|
@ -0,0 +1,250 @@
|
||||||
|
AppRun
|
||||||
|
eden.desktop
|
||||||
|
dev.eden_emu.eden.desktop
|
||||||
|
shared/bin/eden
|
||||||
|
shared/lib/lib.path
|
||||||
|
shared/lib/ld-linux-x86-64.so.2
|
||||||
|
shared/lib/libQt6Widgets.so.6.4.2
|
||||||
|
shared/lib/libQt6DBus.so.6.4.2
|
||||||
|
shared/lib/libudev.so.1.7.5
|
||||||
|
shared/lib/libbrotlienc.so.1.0.9
|
||||||
|
shared/lib/libbrotlidec.so.1.0.9
|
||||||
|
shared/lib/libssl.so.3
|
||||||
|
shared/lib/libcrypto.so.3
|
||||||
|
shared/lib/libavcodec.so.59.37.100
|
||||||
|
shared/lib/libavutil.so.57.28.100
|
||||||
|
shared/lib/libQt6Gui.so.6.4.2
|
||||||
|
shared/lib/libQt6Core.so.6.4.2
|
||||||
|
shared/lib/libstdc++.so.6.0.30
|
||||||
|
shared/lib/libm.so.6
|
||||||
|
shared/lib/libgcc_s.so.1
|
||||||
|
shared/lib/libc.so.6
|
||||||
|
shared/lib/libdbus-1.so.3.32.4
|
||||||
|
shared/lib/libbrotlicommon.so.1.0.9
|
||||||
|
shared/lib/libswresample.so.4.7.100
|
||||||
|
shared/lib/libvpx.so.7.1.0
|
||||||
|
shared/lib/libwebpmux.so.3.0.10
|
||||||
|
shared/lib/libwebp.so.7.1.5
|
||||||
|
shared/lib/liblzma.so.5.4.1
|
||||||
|
shared/lib/libdav1d.so.6.6.0
|
||||||
|
shared/lib/librsvg-2.so.2.48.0
|
||||||
|
shared/lib/libgobject-2.0.so.0.7400.6
|
||||||
|
shared/lib/libglib-2.0.so.0.7400.6
|
||||||
|
shared/lib/libcairo.so.2.11600.0
|
||||||
|
shared/lib/libzvbi.so.0.13.2
|
||||||
|
shared/lib/libz.so.1.2.13
|
||||||
|
shared/lib/libsnappy.so.1.1.9
|
||||||
|
shared/lib/libaom.so.3.6.0
|
||||||
|
shared/lib/libcodec2.so.1.0
|
||||||
|
shared/lib/libgsm.so.1.0.19
|
||||||
|
shared/lib/libjxl.so.0.7.0
|
||||||
|
shared/lib/libjxl_threads.so.0.7.0
|
||||||
|
shared/lib/libmp3lame.so.0.0.0
|
||||||
|
shared/lib/libopenjp2.so.2.5.0
|
||||||
|
shared/lib/libopus.so.0.8.0
|
||||||
|
shared/lib/librav1e.so.0.5.1
|
||||||
|
shared/lib/libshine.so.3.0.1
|
||||||
|
shared/lib/libspeex.so.1.5.2
|
||||||
|
shared/lib/libSvtAv1Enc.so.1.4.1
|
||||||
|
shared/lib/libtheoraenc.so.1.1.2
|
||||||
|
shared/lib/libtheoradec.so.1.1.4
|
||||||
|
shared/lib/libtwolame.so.0.0.0
|
||||||
|
shared/lib/libvorbis.so.0.4.9
|
||||||
|
shared/lib/libvorbisenc.so.2.0.12
|
||||||
|
shared/lib/libx264.so.164
|
||||||
|
shared/lib/libx265.so.199
|
||||||
|
shared/lib/libxvidcore.so.4.3
|
||||||
|
shared/lib/libva.so.2.1700.0
|
||||||
|
shared/lib/libmfx.so.1.35
|
||||||
|
shared/lib/libva-drm.so.2.1700.0
|
||||||
|
shared/lib/libva-x11.so.2.1700.0
|
||||||
|
shared/lib/libvdpau.so.1.0.0
|
||||||
|
shared/lib/libX11.so.6.4.0
|
||||||
|
shared/lib/libdrm.so.2.4.0
|
||||||
|
shared/lib/libOpenCL.so.1.0.0
|
||||||
|
shared/lib/libEGL.so.1.1.0
|
||||||
|
shared/lib/libfontconfig.so.1.12.0
|
||||||
|
shared/lib/libxkbcommon.so.0.0.0
|
||||||
|
shared/lib/libGLX.so.0.0.0
|
||||||
|
shared/lib/libOpenGL.so.0.0.0
|
||||||
|
shared/lib/libpng16.so.16.39.0
|
||||||
|
shared/lib/libharfbuzz.so.0.60000.0
|
||||||
|
shared/lib/libmd4c.so.0.4.8
|
||||||
|
shared/lib/libfreetype.so.6.18.3
|
||||||
|
shared/lib/libicui18n.so.72.1
|
||||||
|
shared/lib/libicuuc.so.72.1
|
||||||
|
shared/lib/libdouble-conversion.so.3.1
|
||||||
|
shared/lib/libb2.so.1.0.4
|
||||||
|
shared/lib/libpcre2-16.so.0.11.2
|
||||||
|
shared/lib/libzstd.so.1.5.4
|
||||||
|
shared/lib/libsystemd.so.0.35.0
|
||||||
|
shared/lib/libsoxr.so.0.1.2
|
||||||
|
shared/lib/libcairo-gobject.so.2.11600.0
|
||||||
|
shared/lib/libgdk_pixbuf-2.0.so.0.4200.10
|
||||||
|
shared/lib/libgio-2.0.so.0.7400.6
|
||||||
|
shared/lib/libxml2.so.2.9.14
|
||||||
|
shared/lib/libpangocairo-1.0.so.0.5000.12
|
||||||
|
shared/lib/libpango-1.0.so.0.5000.12
|
||||||
|
shared/lib/libffi.so.8.1.2
|
||||||
|
shared/lib/libpcre2-8.so.0.11.2
|
||||||
|
shared/lib/libpixman-1.so.0.42.2
|
||||||
|
shared/lib/libxcb-shm.so.0.0.0
|
||||||
|
shared/lib/libxcb.so.1.1.0
|
||||||
|
shared/lib/libxcb-render.so.0.0.0
|
||||||
|
shared/lib/libXrender.so.1.3.0
|
||||||
|
shared/lib/libXext.so.6.4.0
|
||||||
|
shared/lib/libhwy.so.1.0.3
|
||||||
|
shared/lib/liblcms2.so.2.0.14
|
||||||
|
shared/lib/libogg.so.0.8.5
|
||||||
|
shared/lib/libnuma.so.1.0.0
|
||||||
|
shared/lib/libpthread.so.0
|
||||||
|
shared/lib/libXfixes.so.3.1.0
|
||||||
|
shared/lib/libX11-xcb.so.1.0.0
|
||||||
|
shared/lib/libxcb-dri3.so.0.1.0
|
||||||
|
shared/lib/libGLdispatch.so.0.0.0
|
||||||
|
shared/lib/libexpat.so.1.8.10
|
||||||
|
shared/lib/libgraphite2.so.3.2.1
|
||||||
|
shared/lib/libicudata.so.72.1
|
||||||
|
shared/lib/libgomp.so.1.0.0
|
||||||
|
shared/lib/libcap.so.2.66
|
||||||
|
shared/lib/libgcrypt.so.20.4.1
|
||||||
|
shared/lib/liblz4.so.1.9.4
|
||||||
|
shared/lib/libgmodule-2.0.so.0.7400.6
|
||||||
|
shared/lib/libjpeg.so.62.3.0
|
||||||
|
shared/lib/libmount.so.1.1.0
|
||||||
|
shared/lib/libselinux.so.1
|
||||||
|
shared/lib/libpangoft2-1.0.so.0.5000.12
|
||||||
|
shared/lib/libfribidi.so.0.4.0
|
||||||
|
shared/lib/libthai.so.0.3.1
|
||||||
|
shared/lib/libXau.so.6.0.0
|
||||||
|
shared/lib/libXdmcp.so.6.0.0
|
||||||
|
shared/lib/libgpg-error.so.0.33.1
|
||||||
|
shared/lib/libblkid.so.1.1.0
|
||||||
|
shared/lib/libdatrie.so.1.4.0
|
||||||
|
shared/lib/libbsd.so.0.11.7
|
||||||
|
shared/lib/libmd.so.0.0.5
|
||||||
|
shared/lib/libvulkan.so.1.3.239
|
||||||
|
share/vulkan/icd.d/intel_hasvk_icd.x86_64.json
|
||||||
|
shared/lib/libvulkan_intel_hasvk.so
|
||||||
|
shared/lib/libwayland-client.so.0.21.0
|
||||||
|
shared/lib/libxcb-present.so.0.0.0
|
||||||
|
shared/lib/libxcb-xfixes.so.0.0.0
|
||||||
|
shared/lib/libxcb-sync.so.1.0.0
|
||||||
|
shared/lib/libxcb-randr.so.0.1.0
|
||||||
|
shared/lib/libxshmfence.so.1.0.0
|
||||||
|
share/vulkan/icd.d/intel_icd.x86_64.json
|
||||||
|
shared/lib/libvulkan_intel.so
|
||||||
|
share/vulkan/icd.d/lvp_icd.x86_64.json
|
||||||
|
shared/lib/libvulkan_lvp.so
|
||||||
|
shared/lib/libLLVM-15.so.1
|
||||||
|
shared/lib/libedit.so.2.0.70
|
||||||
|
shared/lib/libz3.so.4
|
||||||
|
shared/lib/libtinfo.so.6.4
|
||||||
|
share/vulkan/icd.d/radeon_icd.x86_64.json
|
||||||
|
shared/lib/libvulkan_radeon.so
|
||||||
|
shared/lib/libdrm_amdgpu.so.1.0.0
|
||||||
|
shared/lib/libelf-0.188.so
|
||||||
|
shared/lib/libVkLayer_MESA_device_select.so
|
||||||
|
bin/qt.conf
|
||||||
|
shared/lib/qt6/plugins/platforms/libqeglfs.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqlinuxfb.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqminimal.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqminimalegl.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqoffscreen.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqvkkhrdisplay.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqvnc.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqwayland-egl.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqwayland-generic.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqxcb.so
|
||||||
|
shared/lib/libQt6WaylandClient.so.6.4.2
|
||||||
|
shared/lib/libwayland-cursor.so.0.21.0
|
||||||
|
shared/lib/qt6/plugins/platformthemes/libqgtk3.so
|
||||||
|
shared/lib/libgtk-3.so.0.2406.32
|
||||||
|
shared/lib/libgdk-3.so.0.2406.32
|
||||||
|
shared/lib/libatk-1.0.so.0.24609.1
|
||||||
|
shared/lib/libepoxy.so.0.0.0
|
||||||
|
shared/lib/libXi.so.6.1.0
|
||||||
|
shared/lib/libatk-bridge-2.0.so.0.0.0
|
||||||
|
shared/lib/libwayland-egl.so.1.21.0
|
||||||
|
shared/lib/libXcursor.so.1.0.2
|
||||||
|
shared/lib/libXdamage.so.1.1.0
|
||||||
|
shared/lib/libXcomposite.so.1.0.0
|
||||||
|
shared/lib/libXrandr.so.2.2.0
|
||||||
|
shared/lib/libXinerama.so.1.0.0
|
||||||
|
shared/lib/libdl.so.2
|
||||||
|
shared/lib/libatspi.so.0.0.1
|
||||||
|
share/glib-2.0/schemas/gschemas.compiled
|
||||||
|
shared/lib/gio/modules/giomodule.cache
|
||||||
|
shared/lib/gio/modules/libdconfsettings.so
|
||||||
|
shared/lib/gio/modules/libgvfsdbus.so
|
||||||
|
shared/lib/gvfs/libgvfscommon.so
|
||||||
|
share/X11/xkb/rules/evdev
|
||||||
|
share/X11/xkb/keycodes/evdev
|
||||||
|
share/X11/xkb/keycodes/aliases
|
||||||
|
share/X11/xkb/types/complete
|
||||||
|
share/X11/xkb/types/basic
|
||||||
|
share/X11/xkb/types/mousekeys
|
||||||
|
share/X11/xkb/types/pc
|
||||||
|
share/X11/xkb/types/iso9995
|
||||||
|
share/X11/xkb/types/level5
|
||||||
|
share/X11/xkb/types/extra
|
||||||
|
share/X11/xkb/types/numpad
|
||||||
|
share/X11/xkb/compat/complete
|
||||||
|
share/X11/xkb/compat/basic
|
||||||
|
share/X11/xkb/compat/ledcaps
|
||||||
|
share/X11/xkb/compat/lednum
|
||||||
|
share/X11/xkb/compat/iso9995
|
||||||
|
share/X11/xkb/compat/mousekeys
|
||||||
|
share/X11/xkb/compat/accessx
|
||||||
|
share/X11/xkb/compat/misc
|
||||||
|
share/X11/xkb/compat/ledscroll
|
||||||
|
share/X11/xkb/compat/xfree86
|
||||||
|
share/X11/xkb/compat/level5
|
||||||
|
share/X11/xkb/compat/caps
|
||||||
|
share/X11/xkb/symbols/pc
|
||||||
|
share/X11/xkb/symbols/srvr_ctrl
|
||||||
|
share/X11/xkb/symbols/keypad
|
||||||
|
share/X11/xkb/symbols/altwin
|
||||||
|
share/X11/xkb/symbols/us
|
||||||
|
share/X11/xkb/symbols/inet
|
||||||
|
shared/lib/qt6/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so
|
||||||
|
shared/lib/qt6/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so
|
||||||
|
shared/lib/qt6/plugins/iconengines/libqsvgicon.so
|
||||||
|
shared/lib/qt6/plugins/imageformats/libqgif.so
|
||||||
|
shared/lib/qt6/plugins/imageformats/libqico.so
|
||||||
|
shared/lib/qt6/plugins/imageformats/libqjpeg.so
|
||||||
|
shared/lib/qt6/plugins/imageformats/libqsvg.so
|
||||||
|
shared/lib/libQt6Svg.so.6.4.2
|
||||||
|
etc/fonts/fonts.conf
|
||||||
|
shared/lib/qt6/plugins/wayland-shell-integration/libfullscreen-shell-v1.so
|
||||||
|
shared/lib/qt6/plugins/wayland-shell-integration/libivi-shell.so
|
||||||
|
shared/lib/qt6/plugins/wayland-shell-integration/libqt-shell.so
|
||||||
|
shared/lib/qt6/plugins/wayland-shell-integration/libwl-shell-plugin.so
|
||||||
|
shared/lib/qt6/plugins/wayland-shell-integration/libxdg-shell.so
|
||||||
|
shared/lib/qt6/plugins/wayland-graphics-integration-client/libdmabuf-server.so
|
||||||
|
shared/lib/qt6/plugins/wayland-graphics-integration-client/libdrm-egl-server.so
|
||||||
|
shared/lib/qt6/plugins/wayland-graphics-integration-client/libqt-plugin-wayland-egl.so
|
||||||
|
shared/lib/qt6/plugins/wayland-graphics-integration-client/libshm-emulation-server.so
|
||||||
|
shared/lib/qt6/plugins/wayland-graphics-integration-client/libvulkan-server.so
|
||||||
|
shared/lib/libQt6WaylandEglClientHwIntegration.so.6.4.2
|
||||||
|
shared/lib/libQt6OpenGL.so.6.4.2
|
||||||
|
share/glvnd/egl_vendor.d/50_mesa.json
|
||||||
|
shared/lib/libEGL_mesa.so.0.0.0
|
||||||
|
shared/lib/libgbm.so.1.0.0
|
||||||
|
shared/lib/libglapi.so.0.0.0
|
||||||
|
shared/lib/libxcb-dri2.so.0.0.0
|
||||||
|
shared/lib/libwayland-server.so.0.21.0
|
||||||
|
shared/lib/dri/swrast_dri.so
|
||||||
|
shared/lib/libsensors.so.5.0.0
|
||||||
|
shared/lib/libdrm_radeon.so.1.0.1
|
||||||
|
shared/lib/libdrm_nouveau.so.2.0.0
|
||||||
|
shared/lib/libdrm_intel.so.1.0.0
|
||||||
|
shared/lib/libpciaccess.so.0.11.1
|
||||||
|
shared/lib/qt6/plugins/wayland-decoration-client/libbradient.so
|
||||||
|
shared/lib/gtk-3.0/modules/libcanberra-gtk3-module.so
|
||||||
|
shared/lib/libcanberra-gtk3.so.0.1.9
|
||||||
|
shared/lib/libcanberra.so.0.2.5
|
||||||
|
shared/lib/libvorbisfile.so.3.3.8
|
||||||
|
shared/lib/libtdb.so.1.4.8
|
||||||
|
shared/lib/libltdl.so.7.3.2
|
||||||
|
shared/lib/libXss.so.1.0.0
|
||||||
153
.ci/linux/package.sh
Executable file
|
|
@ -0,0 +1,153 @@
|
||||||
|
#!/bin/sh -e
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
# This script assumes you're in the source directory
|
||||||
|
|
||||||
|
export APPIMAGE_EXTRACT_AND_RUN=1
|
||||||
|
export BASE_ARCH="$(uname -m)"
|
||||||
|
|
||||||
|
SHARUN="https://github.com/VHSgunzo/sharun/releases/latest/download/sharun-${BASE_ARCH}-aio"
|
||||||
|
URUNTIME="https://github.com/VHSgunzo/uruntime/releases/latest/download/uruntime-appimage-dwarfs-${BASE_ARCH}"
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
amd64|"")
|
||||||
|
echo "Packaging amd64-v3 optimized build of Eden"
|
||||||
|
ARCH="amd64_v3"
|
||||||
|
;;
|
||||||
|
steamdeck|zen2)
|
||||||
|
echo "Packaging Steam Deck (Zen 2) optimized build of Eden"
|
||||||
|
ARCH="steamdeck"
|
||||||
|
;;
|
||||||
|
rog-ally|allyx|zen4)
|
||||||
|
echo "Packaging ROG Ally X (Zen 4) optimized build of Eden"
|
||||||
|
ARCH="rog-ally-x"
|
||||||
|
;;
|
||||||
|
legacy)
|
||||||
|
echo "Packaging amd64 generic build of Eden"
|
||||||
|
ARCH=amd64
|
||||||
|
;;
|
||||||
|
aarch64)
|
||||||
|
echo "Packaging armv8-a build of Eden"
|
||||||
|
ARCH=aarch64
|
||||||
|
;;
|
||||||
|
armv9)
|
||||||
|
echo "Packaging armv9-a build of Eden"
|
||||||
|
ARCH=armv9
|
||||||
|
;;
|
||||||
|
native)
|
||||||
|
echo "Packaging native build of Eden"
|
||||||
|
ARCH="$BASE_ARCH"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
export BUILDDIR="$2"
|
||||||
|
|
||||||
|
if [ "$BUILDDIR" = '' ]
|
||||||
|
then
|
||||||
|
BUILDDIR=build
|
||||||
|
fi
|
||||||
|
|
||||||
|
EDEN_TAG=$(git describe --tags --abbrev=0)
|
||||||
|
echo "Making \"$EDEN_TAG\" build"
|
||||||
|
# git checkout "$EDEN_TAG"
|
||||||
|
VERSION="$(echo "$EDEN_TAG")"
|
||||||
|
|
||||||
|
# NOW MAKE APPIMAGE
|
||||||
|
mkdir -p ./AppDir
|
||||||
|
cd ./AppDir
|
||||||
|
|
||||||
|
cp ../dist/dev.eden_emu.eden.desktop .
|
||||||
|
cp ../dist/dev.eden_emu.eden.svg .
|
||||||
|
|
||||||
|
ln -sf ./dev.eden_emu.eden.svg ./.DirIcon
|
||||||
|
|
||||||
|
UPINFO='gh-releases-zsync|eden-emulator|Releases|latest|*.AppImage.zsync'
|
||||||
|
|
||||||
|
if [ "$DEVEL" = 'true' ]; then
|
||||||
|
sed -i 's|Name=Eden|Name=Eden Nightly|' ./dev.eden_emu.eden.desktop
|
||||||
|
UPINFO="$(echo "$UPINFO" | sed 's|Releases|nightly|')"
|
||||||
|
fi
|
||||||
|
|
||||||
|
LIBDIR="/usr/lib"
|
||||||
|
|
||||||
|
# Workaround for Gentoo
|
||||||
|
if [ ! -d "$LIBDIR/qt6" ]
|
||||||
|
then
|
||||||
|
LIBDIR="/usr/lib64"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Workaround for Debian
|
||||||
|
if [ ! -d "$LIBDIR/qt6" ]
|
||||||
|
then
|
||||||
|
LIBDIR="/usr/lib/${BASE_ARCH}-linux-gnu"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Bundle all libs
|
||||||
|
|
||||||
|
wget --retry-connrefused --tries=30 "$SHARUN" -O ./sharun-aio
|
||||||
|
chmod +x ./sharun-aio
|
||||||
|
xvfb-run -a ./sharun-aio l -p -v -e -s -k \
|
||||||
|
../$BUILDDIR/bin/eden* \
|
||||||
|
$LIBDIR/lib*GL*.so* \
|
||||||
|
$LIBDIR/dri/* \
|
||||||
|
$LIBDIR/vdpau/* \
|
||||||
|
$LIBDIR/libvulkan* \
|
||||||
|
$LIBDIR/libXss.so* \
|
||||||
|
$LIBDIR/libdecor-0.so* \
|
||||||
|
$LIBDIR/libgamemode.so* \
|
||||||
|
$LIBDIR/qt6/plugins/audio/* \
|
||||||
|
$LIBDIR/qt6/plugins/bearer/* \
|
||||||
|
$LIBDIR/qt6/plugins/imageformats/* \
|
||||||
|
$LIBDIR/qt6/plugins/iconengines/* \
|
||||||
|
$LIBDIR/qt6/plugins/platforms/* \
|
||||||
|
$LIBDIR/qt6/plugins/platformthemes/* \
|
||||||
|
$LIBDIR/qt6/plugins/platforminputcontexts/* \
|
||||||
|
$LIBDIR/qt6/plugins/styles/* \
|
||||||
|
$LIBDIR/qt6/plugins/xcbglintegrations/* \
|
||||||
|
$LIBDIR/qt6/plugins/wayland-*/* \
|
||||||
|
$LIBDIR/pulseaudio/* \
|
||||||
|
$LIBDIR/pipewire-0.3/* \
|
||||||
|
$LIBDIR/spa-0.2/*/* \
|
||||||
|
$LIBDIR/alsa-lib/*
|
||||||
|
|
||||||
|
rm -f ./sharun-aio
|
||||||
|
|
||||||
|
# Prepare sharun
|
||||||
|
if [ "$ARCH" = 'aarch64' ]; then
|
||||||
|
# allow the host vulkan to be used for aarch64 given the sad situation
|
||||||
|
echo 'SHARUN_ALLOW_SYS_VKICD=1' > ./.env
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Workaround for Gentoo
|
||||||
|
if [ -d "shared/libproxy" ]; then
|
||||||
|
cp shared/libproxy/* lib/
|
||||||
|
fi
|
||||||
|
|
||||||
|
ln -f ./sharun ./AppRun
|
||||||
|
./sharun -g
|
||||||
|
|
||||||
|
# turn appdir into appimage
|
||||||
|
cd ..
|
||||||
|
wget -q "$URUNTIME" -O ./uruntime
|
||||||
|
chmod +x ./uruntime
|
||||||
|
|
||||||
|
#Add udpate info to runtime
|
||||||
|
echo "Adding update information \"$UPINFO\" to runtime..."
|
||||||
|
./uruntime --appimage-addupdinfo "$UPINFO"
|
||||||
|
|
||||||
|
echo "Generating AppImage..."
|
||||||
|
./uruntime --appimage-mkdwarfs -f \
|
||||||
|
--set-owner 0 --set-group 0 \
|
||||||
|
--no-history --no-create-timestamp \
|
||||||
|
--categorize=hotness --hotness-list=.ci/linux/eden.dwfsprof \
|
||||||
|
--compression zstd:level=22 -S26 -B32 \
|
||||||
|
--header uruntime \
|
||||||
|
-N 4 \
|
||||||
|
-i ./AppDir -o Eden-"$VERSION"-"$ARCH".AppImage
|
||||||
|
|
||||||
|
echo "Generating zsync file..."
|
||||||
|
zsyncmake *.AppImage -u *.AppImage
|
||||||
|
echo "All Done!"
|
||||||
22
.ci/source.sh
Executable file
|
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# git-archive-all
|
||||||
|
export PATH="$PATH:/home/$USER/.local/bin"
|
||||||
|
|
||||||
|
GITDATE="`git show -s --date=short --format='%ad' | sed 's/-//g'`"
|
||||||
|
GITREV="`git show -s --format='%h'`"
|
||||||
|
REV_NAME="eden-unified-source-${GITDATE}-${GITREV}"
|
||||||
|
|
||||||
|
COMPAT_LIST='dist/compatibility_list/compatibility_list.json'
|
||||||
|
|
||||||
|
mkdir artifacts
|
||||||
|
|
||||||
|
touch "${COMPAT_LIST}"
|
||||||
|
git describe --abbrev=0 --always HEAD > GIT-COMMIT
|
||||||
|
git describe --tags HEAD > GIT-TAG || echo 'unknown' > GIT-TAG
|
||||||
|
git-archive-all --include "${COMPAT_LIST}" --include GIT-COMMIT --include GIT-TAG --force-submodules artifacts/"${REV_NAME}.tar"
|
||||||
|
|
||||||
|
cd artifacts/
|
||||||
|
xz -T0 -9 "${REV_NAME}.tar"
|
||||||
|
sha256sum "${REV_NAME}.tar.xz" > "${REV_NAME}.tar.xz.sha256sum"
|
||||||
|
cd ..
|
||||||
52
.ci/windows/build.sh
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
if [ "$COMPILER" == "clang" ]
|
||||||
|
then
|
||||||
|
EXTRA_CMAKE_FLAGS+=(
|
||||||
|
-DCMAKE_CXX_COMPILER=clang-cl
|
||||||
|
-DCMAKE_C_COMPILER=clang-cl
|
||||||
|
-DCMAKE_CXX_FLAGS="-O3"
|
||||||
|
-DCMAKE_C_FLAGS="-O3"
|
||||||
|
)
|
||||||
|
|
||||||
|
BUILD_TYPE="RelWithDebInfo"
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -z "$WINDEPLOYQT" ] && { echo "WINDEPLOYQT environment variable required."; exit 1; }
|
||||||
|
|
||||||
|
echo $EXTRA_CMAKE_FLAGS
|
||||||
|
|
||||||
|
mkdir -p build && cd build
|
||||||
|
cmake .. -G Ninja \
|
||||||
|
-DCMAKE_BUILD_TYPE="${BUILD_TYPE:-Release}" \
|
||||||
|
-DENABLE_QT_TRANSLATION=ON \
|
||||||
|
-DUSE_DISCORD_PRESENCE=ON \
|
||||||
|
-DYUZU_USE_BUNDLED_SDL2=ON \
|
||||||
|
-DBUILD_TESTING=OFF \
|
||||||
|
-DYUZU_TESTS=OFF \
|
||||||
|
-DDYNARMIC_TESTS=OFF \
|
||||||
|
-DYUZU_CMD=OFF \
|
||||||
|
-DYUZU_ROOM_STANDALONE=OFF \
|
||||||
|
-DYUZU_USE_QT_MULTIMEDIA=${USE_MULTIMEDIA:-false} \
|
||||||
|
-DYUZU_USE_QT_WEB_ENGINE=${USE_WEBENGINE:-false} \
|
||||||
|
-DYUZU_ENABLE_LTO=ON \
|
||||||
|
-DCMAKE_EXE_LINKER_FLAGS=" /LTCG" \
|
||||||
|
-DDYNARMIC_ENABLE_LTO=ON \
|
||||||
|
-DYUZU_USE_BUNDLED_QT=${BUNDLE_QT:-false} \
|
||||||
|
-DUSE_CCACHE=${CCACHE:-false} \
|
||||||
|
-DENABLE_UPDATE_CHECKER=${DEVEL:-true} \
|
||||||
|
"${EXTRA_CMAKE_FLAGS[@]}" \
|
||||||
|
"$@"
|
||||||
|
|
||||||
|
ninja
|
||||||
|
|
||||||
|
set +e
|
||||||
|
rm -f bin/*.pdb
|
||||||
|
set -e
|
||||||
|
|
||||||
|
$WINDEPLOYQT --release --no-compiler-runtime --no-opengl-sw --no-system-dxc-compiler --no-system-d3d-compiler --dir pkg bin/eden.exe
|
||||||
|
|
||||||
|
cp bin/* pkg
|
||||||
|
|
@ -1,43 +1,25 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
|
|
||||||
# Check if running as administrator
|
# Check if running as administrator
|
||||||
try {
|
if (-not ([bool](net session 2>$null))) {
|
||||||
net session 1>$null 2>$null
|
|
||||||
} catch {
|
|
||||||
Write-Host "This script must be run with administrator privileges!"
|
Write-Host "This script must be run with administrator privileges!"
|
||||||
Exit 1
|
Exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
$VulkanSDKVer = "1.4.341.1"
|
$VulkanSDKVer = "1.4.321.1"
|
||||||
if ((Get-WmiObject -Class Win32_ComputerSystem).SystemType -match '(x64)' -eq "True") {
|
$ExeFile = "vulkansdk-windows-X64-$VulkanSDKVer.exe"
|
||||||
$VulkanSDKArch = "X64"
|
$Uri = "https://sdk.lunarg.com/sdk/download/$VulkanSDKVer/windows/$ExeFile"
|
||||||
$VulkanSDKOs = "windows"
|
|
||||||
} else {
|
|
||||||
$VulkanSDKArch = "ARM64"
|
|
||||||
$VulkanSDKOs = "warm"
|
|
||||||
}
|
|
||||||
$VULKAN_SDK = "C:/VulkanSDK/$VulkanSDKVer"
|
|
||||||
$ExeFile = "vulkansdk-windows-$VulkanSDKArch-$VulkanSDKVer.exe"
|
|
||||||
$Uri = "https://sdk.lunarg.com/sdk/download/$VulkanSDKVer/$VulkanSDKOs/$ExeFile"
|
|
||||||
$Destination = "./$ExeFile"
|
$Destination = "./$ExeFile"
|
||||||
|
|
||||||
# Check if Vulkan SDK is already installed
|
|
||||||
if (Test-Path $VULKAN_SDK) {
|
|
||||||
Write-Host "-- Vulkan SDK already installed at $VULKAN_SDK"
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "Downloading Vulkan SDK $VulkanSDKVer from $Uri"
|
echo "Downloading Vulkan SDK $VulkanSDKVer from $Uri"
|
||||||
$WebClient = New-Object System.Net.WebClient
|
$WebClient = New-Object System.Net.WebClient
|
||||||
$WebClient.DownloadFile($Uri, $Destination)
|
$WebClient.DownloadFile($Uri, $Destination)
|
||||||
echo "Finished downloading $ExeFile"
|
echo "Finished downloading $ExeFile"
|
||||||
|
|
||||||
|
$VULKAN_SDK = "C:/VulkanSDK/$VulkanSDKVer"
|
||||||
$Arguments = "--root `"$VULKAN_SDK`" --accept-licenses --default-answer --confirm-command install"
|
$Arguments = "--root `"$VULKAN_SDK`" --accept-licenses --default-answer --confirm-command install"
|
||||||
|
|
||||||
echo "Installing Vulkan SDK $VulkanSDKVer"
|
echo "Installing Vulkan SDK $VulkanSDKVer"
|
||||||
18
.ci/windows/package.sh
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
GITDATE=$(git show -s --date=short --format='%ad' | tr -d "-")
|
||||||
|
GITREV=$(git show -s --format='%h')
|
||||||
|
|
||||||
|
ZIP_NAME="Eden-Windows-${ARCH}-${GITDATE}-${GITREV}.zip"
|
||||||
|
|
||||||
|
ARTIFACTS_DIR="artifacts"
|
||||||
|
PKG_DIR="build/pkg"
|
||||||
|
|
||||||
|
mkdir -p "$ARTIFACTS_DIR"
|
||||||
|
|
||||||
|
TMP_DIR=$(mktemp -d)
|
||||||
|
|
||||||
|
cp -r "$PKG_DIR"/* "$TMP_DIR"/
|
||||||
|
cp LICENSE* README* "$TMP_DIR"/
|
||||||
|
|
||||||
|
7z a -tzip "$ARTIFACTS_DIR/$ZIP_NAME" "$TMP_DIR"/*
|
||||||
|
|
||||||
|
rm -rf "$TMP_DIR"
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
blank_issues_enabled: false
|
|
||||||
contact_links:
|
|
||||||
- name: Eden Discord
|
|
||||||
url: https://discord.gg/HstXbPch7X
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
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
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
name: Check Strings
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ master ]
|
|
||||||
pull_request:
|
|
||||||
branches: [ master ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
check-strings:
|
|
||||||
runs-on: source
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 1
|
|
||||||
|
|
||||||
- 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
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
||||||
name: tx-pull
|
|
||||||
|
|
||||||
on:
|
|
||||||
# tuesday, saturday at 2pm
|
|
||||||
schedule:
|
|
||||||
- cron: '0 14 * * 2,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 -XPOST \
|
|
||||||
'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
|
|
||||||
|
|
@ -1,57 +0,0 @@
|
||||||
name: Update Dependencies
|
|
||||||
|
|
||||||
on:
|
|
||||||
# saturday at noon
|
|
||||||
schedule:
|
|
||||||
- cron: '0 12 * * 6'
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
update-deps:
|
|
||||||
runs-on: source
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Update deps
|
|
||||||
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
|
|
||||||
|
|
||||||
DATE=$(date +"%b %d")
|
|
||||||
TIMESTAMP=$(date +"%s")
|
|
||||||
echo "DATE=$DATE" >> "$GITHUB_ENV"
|
|
||||||
echo "TIMESTAMP=$TIMESTAMP" >> "$GITHUB_ENV"
|
|
||||||
|
|
||||||
git switch -c update-deps-$TIMESTAMP
|
|
||||||
tools/cpmutil.sh package update -ac
|
|
||||||
git push
|
|
||||||
|
|
||||||
- name: Create PR
|
|
||||||
run: |
|
|
||||||
set -x
|
|
||||||
TITLE="[externals] Dependency update for $DATE"
|
|
||||||
BODY="$(git show -s --format='%b')"
|
|
||||||
BASE=master
|
|
||||||
HEAD=update-deps-$TIMESTAMP
|
|
||||||
|
|
||||||
cat << EOF > data.json
|
|
||||||
{
|
|
||||||
"base": "$BASE",
|
|
||||||
"body": "$BODY",
|
|
||||||
"head": "$HEAD",
|
|
||||||
"title": "$TITLE"
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
curl -XPOST \
|
|
||||||
'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
|
|
||||||
8
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
blank_issues_enabled: false
|
||||||
|
contact_links:
|
||||||
|
- name: yuzu Discord
|
||||||
|
url: https://discord.com/invite/u77vRWY
|
||||||
|
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.
|
||||||
4
.gitignore
vendored
|
|
@ -36,8 +36,6 @@ 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
|
||||||
|
|
@ -61,5 +59,3 @@ eden-windows-msvc
|
||||||
artifacts
|
artifacts
|
||||||
*.AppImage*
|
*.AppImage*
|
||||||
/install*
|
/install*
|
||||||
vulkansdk*.exe
|
|
||||||
*.tar.zst
|
|
||||||
|
|
|
||||||
11
.patch/boost/0002-use-marmasm.patch
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
--- 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()
|
||||||
14
.patch/boost/0003-armasm-options.patch
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
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")
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
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,62 +1,52 @@
|
||||||
From 436fc1978c78edd085d99b33275b24be0ac96aa0 Mon Sep 17 00:00:00 2001
|
From e1a946ffb79022d38351a0623f819a5419965c3e Mon Sep 17 00:00:00 2001
|
||||||
From: crueter <crueter@eden-emu.dev>
|
From: crueter <crueter@eden-emu.dev>
|
||||||
Date: Sun, 1 Feb 2026 16:21:10 -0500
|
Date: Fri, 24 Oct 2025 23:41:09 -0700
|
||||||
Subject: [PATCH] Fix build on MinGW
|
Subject: [PATCH] [build] Fix MinGW missing GetAddrInfoExCancel definition
|
||||||
|
|
||||||
MinGW doesn't define GetAddrInfoExCancel.
|
MinGW does not define GetAddrInfoExCancel in its wstcpi whatever header,
|
||||||
|
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 | 18 ++++++++++++++++--
|
httplib.h | 14 ++++++++++++--
|
||||||
1 file changed, 16 insertions(+), 2 deletions(-)
|
1 file changed, 12 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
diff --git a/httplib.h b/httplib.h
|
diff --git a/httplib.h b/httplib.h
|
||||||
index ec8d2a2..5f9a510 100644
|
index e15ba44..90a76dc 100644
|
||||||
--- a/httplib.h
|
--- a/httplib.h
|
||||||
+++ b/httplib.h
|
+++ b/httplib.h
|
||||||
@@ -203,14 +203,17 @@
|
@@ -203,11 +203,13 @@
|
||||||
#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
|
||||||
@@ -4528,7 +4531,17 @@ inline int getaddrinfo_with_timeout(const char *node, const char *service,
|
@@ -3557,7 +3559,15 @@ 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 GetAddrInfoExCancel = (PFN_GETADDRINFOEXCANCEL) GetProcAddress(wsdll, "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 {
|
|
||||||
} // namespace httplib
|
|
||||||
|
|
||||||
#endif // CPPHTTPLIB_HTTPLIB_H
|
|
||||||
+
|
|
||||||
--
|
--
|
||||||
2.51.2
|
2.51.0
|
||||||
|
|
||||||
|
|
|
||||||
10
.patch/mbedtls/0001-cmake-version.patch
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
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()
|
||||||
13
.patch/mbedtls/0002-aesni-fix.patch
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
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 */
|
||||||
22
.patch/mbedtls/0003-aesni-fix.patch
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
diff --git a/library/aesni.c b/library/aesni.c
|
||||||
|
index 2857068..3e104ab 100644
|
||||||
|
--- a/library/aesni.c
|
||||||
|
+++ b/library/aesni.c
|
||||||
|
@@ -31,16 +31,14 @@
|
||||||
|
#include <immintrin.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-#if defined(MBEDTLS_ARCH_IS_X86)
|
||||||
|
#if defined(MBEDTLS_COMPILER_IS_GCC)
|
||||||
|
#pragma GCC push_options
|
||||||
|
#pragma GCC target ("pclmul,sse2,aes")
|
||||||
|
#define MBEDTLS_POP_TARGET_PRAGMA
|
||||||
|
-#elif defined(__clang__) && (__clang_major__ >= 5)
|
||||||
|
+#elif defined(__clang__)
|
||||||
|
#pragma clang attribute push (__attribute__((target("pclmul,sse2,aes"))), apply_to=function)
|
||||||
|
#define MBEDTLS_POP_TARGET_PRAGMA
|
||||||
|
#endif
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
#if !defined(MBEDTLS_AES_USE_HARDWARE_ONLY)
|
||||||
|
/*
|
||||||
55
.patch/mcl/0001-assert-macro.patch
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
diff --git a/include/mcl/assert.hpp b/include/mcl/assert.hpp
|
||||||
|
index f77dbe7..9ec0b9c 100644
|
||||||
|
--- a/include/mcl/assert.hpp
|
||||||
|
+++ b/include/mcl/assert.hpp
|
||||||
|
@@ -23,8 +23,11 @@ template<typename... Ts>
|
||||||
|
|
||||||
|
} // namespace mcl::detail
|
||||||
|
|
||||||
|
+#ifndef UNREACHABLE
|
||||||
|
#define UNREACHABLE() ASSERT_FALSE("Unreachable code!")
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
+#ifndef ASSERT
|
||||||
|
#define ASSERT(expr) \
|
||||||
|
[&] { \
|
||||||
|
if (std::is_constant_evaluated()) { \
|
||||||
|
@@ -37,7 +40,9 @@ template<typename... Ts>
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
}()
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
+#ifndef ASSERT_MSG
|
||||||
|
#define ASSERT_MSG(expr, ...) \
|
||||||
|
[&] { \
|
||||||
|
if (std::is_constant_evaluated()) { \
|
||||||
|
@@ -50,13 +55,24 @@ template<typename... Ts>
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
}()
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
+#ifndef ASSERT_FALSE
|
||||||
|
#define ASSERT_FALSE(...) ::mcl::detail::assert_terminate("false", __VA_ARGS__)
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
#if defined(NDEBUG) || defined(MCL_IGNORE_ASSERTS)
|
||||||
|
-# define DEBUG_ASSERT(expr) ASSUME(expr)
|
||||||
|
-# define DEBUG_ASSERT_MSG(expr, ...) ASSUME(expr)
|
||||||
|
+# ifndef DEBUG_ASSERT
|
||||||
|
+# define DEBUG_ASSERT(expr) ASSUME(expr)
|
||||||
|
+# endif
|
||||||
|
+# ifndef DEBUG_ASSERT_MSG
|
||||||
|
+# define DEBUG_ASSERT_MSG(expr, ...) ASSUME(expr)
|
||||||
|
+# endif
|
||||||
|
#else
|
||||||
|
-# define DEBUG_ASSERT(expr) ASSERT(expr)
|
||||||
|
-# define DEBUG_ASSERT_MSG(expr, ...) ASSERT_MSG(expr, __VA_ARGS__)
|
||||||
|
+# ifndef DEBUG_ASSERT
|
||||||
|
+# define DEBUG_ASSERT(expr) ASSERT(expr)
|
||||||
|
+# endif
|
||||||
|
+# ifndef DEBUG_ASSERT_MSG
|
||||||
|
+# define DEBUG_ASSERT_MSG(expr, ...) ASSERT_MSG(expr, __VA_ARGS__)
|
||||||
|
+# endif
|
||||||
|
#endif
|
||||||
|
|
@ -1,214 +0,0 @@
|
||||||
From ec4c1fdf526cb9ad045abf59b29ee495bbf5023a Mon Sep 17 00:00:00 2001
|
|
||||||
From: crueter <crueter@eden-emu.dev>
|
|
||||||
Date: Sat, 30 May 2026 20:56:35 -0400
|
|
||||||
Subject: [PATCH] cpmutil compat
|
|
||||||
|
|
||||||
---
|
|
||||||
CMakeLists.txt | 31 ++++++++-----------
|
|
||||||
cmake/FetchOpenSSL.cmake | 64 ----------------------------------------
|
|
||||||
cmake/GetCPM.cmake | 5 ----
|
|
||||||
3 files changed, 13 insertions(+), 87 deletions(-)
|
|
||||||
delete mode 100644 cmake/FetchOpenSSL.cmake
|
|
||||||
delete mode 100644 cmake/GetCPM.cmake
|
|
||||||
|
|
||||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
||||||
index 5420ecc..9ffd5a0 100644
|
|
||||||
--- a/CMakeLists.txt
|
|
||||||
+++ b/CMakeLists.txt
|
|
||||||
@@ -19,9 +19,7 @@ include(FetchContent)
|
|
||||||
include(ProcessorCount)
|
|
||||||
include(cmake/ConfigureOpenSSL.cmake)
|
|
||||||
include(cmake/DetectTargetPlatform.cmake)
|
|
||||||
-include(cmake/FetchOpenSSL.cmake)
|
|
||||||
include(cmake/FindVcvarsall.cmake)
|
|
||||||
-include(cmake/GetCPM.cmake)
|
|
||||||
|
|
||||||
# Custom options
|
|
||||||
option(OPENSSL_BUILD_VERBOSE "Enable verbose output from build" OFF)
|
|
||||||
@@ -47,9 +45,6 @@ if("${OPENSSL_TARGET_PLATFORM}" STREQUAL "")
|
|
||||||
detect_target_platform(OPENSSL_TARGET_PLATFORM)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
-# Fetch OpenSSL source
|
|
||||||
-fetch_openssl()
|
|
||||||
-
|
|
||||||
# Apply patches
|
|
||||||
foreach(patch IN LISTS OPENSSL_PATCH)
|
|
||||||
if(EXISTS "${patch}" AND NOT IS_DIRECTORY "${patch}")
|
|
||||||
@@ -59,13 +54,13 @@ foreach(patch IN LISTS OPENSSL_PATCH)
|
|
||||||
|
|
||||||
execute_process(
|
|
||||||
COMMAND git init
|
|
||||||
- WORKING_DIRECTORY ${openssl_SOURCE_DIR}
|
|
||||||
+ WORKING_DIRECTORY ${OpenSSL_SOURCE_DIR}
|
|
||||||
OUTPUT_QUIET
|
|
||||||
ERROR_QUIET
|
|
||||||
)
|
|
||||||
execute_process(
|
|
||||||
COMMAND git apply ${patch}
|
|
||||||
- WORKING_DIRECTORY ${openssl_SOURCE_DIR}
|
|
||||||
+ WORKING_DIRECTORY ${OpenSSL_SOURCE_DIR}
|
|
||||||
OUTPUT_QUIET
|
|
||||||
ERROR_QUIET
|
|
||||||
)
|
|
||||||
@@ -161,8 +156,8 @@ list(PREPEND OPENSSL_CONFIGURE_OPTIONS ${OPENSSL_TARGET_PLATFORM})
|
|
||||||
# Configure OpenSSL
|
|
||||||
configure_openssl(
|
|
||||||
COMMAND ${VCVARSALL_COMMAND}
|
|
||||||
- FILE ${openssl_SOURCE_DIR}/Configure
|
|
||||||
- BUILD_DIR ${openssl_BINARY_DIR}
|
|
||||||
+ FILE ${OpenSSL_SOURCE_DIR}/Configure
|
|
||||||
+ BUILD_DIR ${OpenSSL_BINARY_DIR}
|
|
||||||
OPTIONS ${OPENSSL_CONFIGURE_OPTIONS}
|
|
||||||
)
|
|
||||||
|
|
||||||
@@ -203,8 +198,8 @@ endif()
|
|
||||||
# Parse Makefile
|
|
||||||
parse_makefile(${OPENSSL_MAKEFILE} "INSTALL_LIBS" OPENSSL_STATIC_LIBS)
|
|
||||||
parse_makefile(${OPENSSL_MAKEFILE} "INSTALL_SHLIBS" OPENSSL_SHARED_LIBS)
|
|
||||||
-list(TRANSFORM OPENSSL_STATIC_LIBS PREPEND "${openssl_BINARY_DIR}/")
|
|
||||||
-list(TRANSFORM OPENSSL_SHARED_LIBS PREPEND "${openssl_BINARY_DIR}/")
|
|
||||||
+list(TRANSFORM OPENSSL_STATIC_LIBS PREPEND "${OpenSSL_BINARY_DIR}/")
|
|
||||||
+list(TRANSFORM OPENSSL_SHARED_LIBS PREPEND "${OpenSSL_BINARY_DIR}/")
|
|
||||||
|
|
||||||
foreach(LIBRARY IN LISTS OPENSSL_STATIC_LIBS)
|
|
||||||
if(LIBRARY MATCHES "crypto")
|
|
||||||
@@ -239,14 +234,14 @@ endif()
|
|
||||||
|
|
||||||
# Provide same targets and variables as FindOpenSSL module
|
|
||||||
set(OPENSSL_FOUND ON CACHE BOOL "Override FindOpenSSL variables" FORCE)
|
|
||||||
-set(OPENSSL_INCLUDE_DIR ${openssl_SOURCE_DIR}/include ${openssl_BINARY_DIR}/include CACHE STRING "Override FindOpenSSL variables" FORCE)
|
|
||||||
+set(OPENSSL_INCLUDE_DIR ${OpenSSL_SOURCE_DIR}/include ${OpenSSL_BINARY_DIR}/include CACHE STRING "Override FindOpenSSL variables" FORCE)
|
|
||||||
set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_${OPENSSL_LIBRARY_TYPE}_CRYPTO_LIBRARY} CACHE STRING "Override FindOpenSSL variables" FORCE)
|
|
||||||
set(OPENSSL_CRYPTO_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY} ${OPENSSL_DEPENDENCIES} CACHE STRING "Override FindOpenSSL variables" FORCE)
|
|
||||||
set(OPENSSL_SSL_LIBRARY ${OPENSSL_${OPENSSL_LIBRARY_TYPE}_SSL_LIBRARY} CACHE STRING "Override FindOpenSSL variables" FORCE)
|
|
||||||
set(OPENSSL_SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_DEPENDENCIES} CACHE STRING "Override FindOpenSSL variables" FORCE)
|
|
||||||
set(OPENSSL_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY} ${OPENSSL_SSL_LIBRARY} ${OPENSSL_DEPENDENCIES} CACHE STRING "Override FindOpenSSL variables" FORCE)
|
|
||||||
set(OPENSSL_VERSION ${OPENSSL_CONFIGURED_VERSION} CACHE STRING "Override FindOpenSSL variables" FORCE)
|
|
||||||
-set(OPENSSL_APPLINK_SOURCE ${openssl_SOURCE_DIR}/ms/applink.c CACHE STRING "Override FindOpenSSL variables" FORCE)
|
|
||||||
+set(OPENSSL_APPLINK_SOURCE ${OpenSSL_SOURCE_DIR}/ms/applink.c CACHE STRING "Override FindOpenSSL variables" FORCE)
|
|
||||||
|
|
||||||
add_library(OpenSSL::Crypto ${OPENSSL_LIBRARY_TYPE} IMPORTED GLOBAL)
|
|
||||||
add_library(OpenSSL::SSL ${OPENSSL_LIBRARY_TYPE} IMPORTED GLOBAL)
|
|
||||||
@@ -308,8 +303,8 @@ if(ANDROID)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
file(GLOB_RECURSE OPENSSL_SOURCES
|
|
||||||
- ${openssl_SOURCE_DIR}/*.[ch]
|
|
||||||
- ${openssl_SOURCE_DIR}/*.[ch].in
|
|
||||||
+ ${OpenSSL_SOURCE_DIR}/*.[ch]
|
|
||||||
+ ${OpenSSL_SOURCE_DIR}/*.[ch].in
|
|
||||||
)
|
|
||||||
|
|
||||||
set(OPENSSL_BUILD_OUTPUT
|
|
||||||
@@ -322,7 +317,7 @@ add_custom_command(
|
|
||||||
OUTPUT ${OPENSSL_BUILD_OUTPUT}
|
|
||||||
COMMAND ${OPENSSL_BUILD_COMMAND}
|
|
||||||
DEPENDS ${OPENSSL_SOURCES}
|
|
||||||
- WORKING_DIRECTORY ${openssl_BINARY_DIR}
|
|
||||||
+ WORKING_DIRECTORY ${OpenSSL_BINARY_DIR}
|
|
||||||
VERBATIM
|
|
||||||
)
|
|
||||||
|
|
||||||
@@ -341,7 +336,7 @@ if(OPENSSL_TEST AND NOT CMAKE_CROSSCOMPILING)
|
|
||||||
add_test(
|
|
||||||
NAME openssl-test
|
|
||||||
COMMAND ${OPENSSL_BUILD_TOOL} test VERBOSE_FAILURE=yes HARNESS_JOBS=${NUMBER_OF_THREADS}
|
|
||||||
- WORKING_DIRECTORY ${openssl_BINARY_DIR}
|
|
||||||
+ WORKING_DIRECTORY ${OpenSSL_BINARY_DIR}
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
@@ -356,7 +351,7 @@ if(OPENSSL_INSTALL)
|
|
||||||
install(CODE
|
|
||||||
"execute_process(
|
|
||||||
COMMAND ${OPENSSL_INSTALL_COMMAND}
|
|
||||||
- WORKING_DIRECTORY \"${openssl_BINARY_DIR}\"
|
|
||||||
+ WORKING_DIRECTORY \"${OpenSSL_BINARY_DIR}\"
|
|
||||||
)"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
diff --git a/cmake/FetchOpenSSL.cmake b/cmake/FetchOpenSSL.cmake
|
|
||||||
deleted file mode 100644
|
|
||||||
index a43505d..0000000
|
|
||||||
--- a/cmake/FetchOpenSSL.cmake
|
|
||||||
+++ /dev/null
|
|
||||||
@@ -1,64 +0,0 @@
|
|
||||||
-function(fetch_openssl)
|
|
||||||
- if(EXISTS "${OPENSSL_SOURCE}" AND IS_DIRECTORY "${OPENSSL_SOURCE}")
|
|
||||||
- # Fetch the local OpenSSL source
|
|
||||||
- if(NOT IS_ABSOLUTE "${OPENSSL_SOURCE}")
|
|
||||||
- string(PREPEND OPENSSL_SOURCE ${CMAKE_SOURCE_DIR}/)
|
|
||||||
- endif()
|
|
||||||
-
|
|
||||||
- string(REPLACE "\\" "/" openssl-source_SOURCE_DIR "${OPENSSL_SOURCE}")
|
|
||||||
- set(openssl-source_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/openssl-source-build)
|
|
||||||
- else()
|
|
||||||
- set(CPM_OPTIONS
|
|
||||||
- NAME openssl-source
|
|
||||||
- DOWNLOAD_ONLY ON
|
|
||||||
- )
|
|
||||||
-
|
|
||||||
- if(NOT OPENSSL_CONFIGURE_VERBOSE)
|
|
||||||
- list(APPEND CPM_OPTIONS QUIET)
|
|
||||||
- endif()
|
|
||||||
-
|
|
||||||
- if("${OPENSSL_SOURCE}" MATCHES "^http")
|
|
||||||
- # Download OpenSSL source from the internet
|
|
||||||
- list(APPEND CPM_OPTIONS URL ${OPENSSL_SOURCE})
|
|
||||||
- else()
|
|
||||||
- # Download OpenSSL source from the official website
|
|
||||||
- if("${OPENSSL_TARGET_VERSION}" STREQUAL "")
|
|
||||||
- set(OPENSSL_TARGET_VERSION ${PROJECT_VERSION})
|
|
||||||
- endif()
|
|
||||||
-
|
|
||||||
- if(OPENSSL_TARGET_VERSION VERSION_EQUAL PROJECT_VERSION)
|
|
||||||
- list(APPEND CPM_OPTIONS URL_HASH SHA256=aaf51a1fe064384f811daeaeb4ec4dce7340ec8bd893027eee676af31e83a04f)
|
|
||||||
- endif()
|
|
||||||
-
|
|
||||||
- if(OPENSSL_TARGET_VERSION MATCHES "^1\.1\.1[a-w]$")
|
|
||||||
- string(REPLACE "." "_" OPENSSL_TAGGED_VERSION ${OPENSSL_TARGET_VERSION})
|
|
||||||
- list(APPEND CPM_OPTIONS URL https://github.com/openssl/openssl/releases/download/OpenSSL_${OPENSSL_TAGGED_VERSION}/openssl-${OPENSSL_TARGET_VERSION}.tar.gz)
|
|
||||||
- else()
|
|
||||||
- list(APPEND CPM_OPTIONS URL https://github.com/openssl/openssl/releases/download/openssl-${OPENSSL_TARGET_VERSION}/openssl-${OPENSSL_TARGET_VERSION}.tar.gz)
|
|
||||||
- endif()
|
|
||||||
- endif()
|
|
||||||
-
|
|
||||||
- CPMAddPackage(${CPM_OPTIONS})
|
|
||||||
- endif()
|
|
||||||
-
|
|
||||||
- # Clean build directory if source directory has changed
|
|
||||||
- if(DEFINED CACHE{openssl-source_SOURCE_DIR_OLD} AND NOT openssl-source_SOURCE_DIR STREQUAL openssl-source_SOURCE_DIR_OLD)
|
|
||||||
- set(openssl-source_SOURCE_DIR_OLD ${openssl-source_SOURCE_DIR} CACHE INTERNAL "Previously fetched OpenSSL source")
|
|
||||||
-
|
|
||||||
- if(IS_DIRECTORY ${openssl-source_BINARY_DIR})
|
|
||||||
- file(REMOVE_RECURSE ${openssl-source_BINARY_DIR})
|
|
||||||
- file(MAKE_DIRECTORY ${openssl-source_BINARY_DIR})
|
|
||||||
- endif()
|
|
||||||
- endif()
|
|
||||||
-
|
|
||||||
- # Override the FindOpenSSL module
|
|
||||||
- FetchContent_Declare(
|
|
||||||
- OpenSSL
|
|
||||||
- SOURCE_DIR ${openssl-source_SOURCE_DIR}
|
|
||||||
- BINARY_DIR ${openssl-source_BINARY_DIR}
|
|
||||||
- OVERRIDE_FIND_PACKAGE
|
|
||||||
- )
|
|
||||||
- FetchContent_MakeAvailable(OpenSSL)
|
|
||||||
-
|
|
||||||
- return(PROPAGATE openssl_SOURCE_DIR openssl_BINARY_DIR)
|
|
||||||
-endfunction()
|
|
||||||
diff --git a/cmake/GetCPM.cmake b/cmake/GetCPM.cmake
|
|
||||||
deleted file mode 100644
|
|
||||||
index bfc50f5..0000000
|
|
||||||
--- a/cmake/GetCPM.cmake
|
|
||||||
+++ /dev/null
|
|
||||||
@@ -1,5 +0,0 @@
|
|
||||||
-file(
|
|
||||||
- DOWNLOAD https://github.com/cpm-cmake/CPM.cmake/releases/latest/download/get_cpm.cmake
|
|
||||||
- ${CMAKE_CURRENT_BINARY_DIR}/get_cpm.cmake
|
|
||||||
-)
|
|
||||||
-include(${CMAKE_CURRENT_BINARY_DIR}/get_cpm.cmake)
|
|
||||||
--
|
|
||||||
2.54.0
|
|
||||||
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
From d46675fbb61eb6d51e478023ce4075e545ad4cfd Mon Sep 17 00:00:00 2001
|
|
||||||
From: crueter <crueter@eden-emu.dev>
|
|
||||||
Date: Sat, 30 May 2026 21:11:55 -0400
|
|
||||||
Subject: [PATCH] use ccache
|
|
||||||
|
|
||||||
---
|
|
||||||
CMakeLists.txt | 1 -
|
|
||||||
cmake/ConfigureOpenSSL.cmake | 12 +++---------
|
|
||||||
2 files changed, 3 insertions(+), 10 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
||||||
index 9ffd5a0..9ff14c8 100644
|
|
||||||
--- a/CMakeLists.txt
|
|
||||||
+++ b/CMakeLists.txt
|
|
||||||
@@ -28,7 +28,6 @@ option(OPENSSL_ENABLE_PARALLEL "Build and test in parallel if possible" ON)
|
|
||||||
option(OPENSSL_INSTALL "Install OpenSSL components to the <prefix> directory" OFF)
|
|
||||||
option(OPENSSL_INSTALL_CERT "Install cert.pem to the <openssldir> directory" OFF)
|
|
||||||
option(OPENSSL_TEST "Enable testing and build OpenSSL self tests" OFF)
|
|
||||||
-option(OPENSSL_USE_CCACHE "Use ccache if available" ON)
|
|
||||||
|
|
||||||
if("${OPENSSL_BUILD_TARGET}" STREQUAL "")
|
|
||||||
# Makefile target for build
|
|
||||||
diff --git a/cmake/ConfigureOpenSSL.cmake b/cmake/ConfigureOpenSSL.cmake
|
|
||||||
index 211c18b..3d8cbed 100644
|
|
||||||
--- a/cmake/ConfigureOpenSSL.cmake
|
|
||||||
+++ b/cmake/ConfigureOpenSSL.cmake
|
|
||||||
@@ -69,15 +69,9 @@ function(apply_ccache FILE)
|
|
||||||
message(FATAL_ERROR "Couldn't find Makefile")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
- if(OPENSSL_USE_CCACHE)
|
|
||||||
- find_program(CCACHE ccache)
|
|
||||||
-
|
|
||||||
- if(NOT CCACHE)
|
|
||||||
- return()
|
|
||||||
- endif()
|
|
||||||
-
|
|
||||||
+ if(USE_CCACHE)
|
|
||||||
file(READ ${FILE} MAKEFILE)
|
|
||||||
- string(REPLACE "\nCC=" "\nCC=ccache " MAKEFILE "${MAKEFILE}")
|
|
||||||
+ string(REPLACE "\nCC=" "\nCC=${CCACHE_BINARY} " MAKEFILE "${MAKEFILE}")
|
|
||||||
|
|
||||||
if(MSVC)
|
|
||||||
string(REPLACE "/Zi /Fdossl_static.pdb " "" MAKEFILE "${MAKEFILE}")
|
|
||||||
@@ -171,4 +165,4 @@ function(configure_openssl)
|
|
||||||
string(REPLACE "/W3" "/W0" MAKEFILE "${MAKEFILE}")
|
|
||||||
file(WRITE ${OPENSSL_MAKEFILE} "${MAKEFILE}")
|
|
||||||
endif()
|
|
||||||
-endfunction()
|
|
||||||
\ No newline at end of file
|
|
||||||
+endfunction()
|
|
||||||
--
|
|
||||||
2.54.0
|
|
||||||
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
From 4a3cc92a7abad403529ed1cb4255ca63d9252de4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: crueter <crueter@eden-emu.dev>
|
|
||||||
Date: Sat, 30 May 2026 21:48:42 -0400
|
|
||||||
Subject: [PATCH 2/2] use cmake compiler flags
|
|
||||||
|
|
||||||
---
|
|
||||||
cmake/ConfigureOpenSSL.cmake | 5 ++++-
|
|
||||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/cmake/ConfigureOpenSSL.cmake b/cmake/ConfigureOpenSSL.cmake
|
|
||||||
index 3d8cbed..3012e05 100644
|
|
||||||
--- a/cmake/ConfigureOpenSSL.cmake
|
|
||||||
+++ b/cmake/ConfigureOpenSSL.cmake
|
|
||||||
@@ -135,7 +135,10 @@ function(configure_openssl)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
execute_process(
|
|
||||||
- COMMAND ${CONFIGURE_COMMAND}
|
|
||||||
+ COMMAND ${CMAKE_COMMAND} -E env
|
|
||||||
+ "CFLAGS=${CMAKE_C_FLAGS}"
|
|
||||||
+ "CXXFLAGS=${CMAKE_CXX_FLAGS}"
|
|
||||||
+ ${CONFIGURE_COMMAND}
|
|
||||||
WORKING_DIRECTORY ${CONFIGURE_BUILD_DIR}
|
|
||||||
${VERBOSE_OPTION}
|
|
||||||
COMMAND_ERROR_IS_FATAL ANY
|
|
||||||
--
|
|
||||||
2.54.0
|
|
||||||
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
||||||
--- a/CMakeLists.txt 2026-06-01 23:53:16.498043856 -0400
|
|
||||||
+++ b/CMakeLists.txt 2026-06-01 23:53:23.910543615 -0400
|
|
||||||
@@ -312,13 +312,29 @@
|
|
||||||
${OPENSSL_SHARED_CRYPTO_LIBRARY}
|
|
||||||
${OPENSSL_SHARED_SSL_LIBRARY}
|
|
||||||
)
|
|
||||||
-add_custom_command(
|
|
||||||
- OUTPUT ${OPENSSL_BUILD_OUTPUT}
|
|
||||||
- COMMAND ${OPENSSL_BUILD_COMMAND}
|
|
||||||
- DEPENDS ${OPENSSL_SOURCES}
|
|
||||||
- WORKING_DIRECTORY ${OpenSSL_BINARY_DIR}
|
|
||||||
- VERBATIM
|
|
||||||
-)
|
|
||||||
+if (WIN32)
|
|
||||||
+ add_custom_command(
|
|
||||||
+ OUTPUT ${OPENSSL_BUILD_OUTPUT}
|
|
||||||
+ COMMAND ${OPENSSL_BUILD_COMMAND}
|
|
||||||
+ DEPENDS ${OPENSSL_SOURCES}
|
|
||||||
+ WORKING_DIRECTORY ${OpenSSL_BINARY_DIR}
|
|
||||||
+ VERBATIM)
|
|
||||||
+else()
|
|
||||||
+ set(_openssl_build_script "${CMAKE_CURRENT_BINARY_DIR}/BuildOpenSSL.cmake")
|
|
||||||
+ file(WRITE ${_openssl_build_script}
|
|
||||||
+ "execute_process(\n"
|
|
||||||
+ " COMMAND ${OPENSSL_BUILD_COMMAND}\n"
|
|
||||||
+ " WORKING_DIRECTORY ${OpenSSL_BINARY_DIR}\n"
|
|
||||||
+ " RESULT_VARIABLE _r)\n"
|
|
||||||
+ "if(_r)\n"
|
|
||||||
+ " message(FATAL_ERROR \"OpenSSL build failed: \${_r}\")\n"
|
|
||||||
+ "endif()\n")
|
|
||||||
+ add_custom_command(
|
|
||||||
+ OUTPUT ${OPENSSL_BUILD_OUTPUT}
|
|
||||||
+ COMMAND ${CMAKE_COMMAND} -P ${_openssl_build_script}
|
|
||||||
+ DEPENDS ${OPENSSL_SOURCES}
|
|
||||||
+ VERBATIM)
|
|
||||||
+endif()
|
|
||||||
|
|
||||||
if(PROJECT_IS_TOP_LEVEL)
|
|
||||||
add_custom_target(openssl-build ALL DEPENDS ${OPENSSL_BUILD_OUTPUT})
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
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)
|
|
||||||
|
|
@ -1,153 +0,0 @@
|
||||||
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)
|
|
||||||
14
.patch/spirv-tools/0001-netbsd-fix.patch
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt
|
||||||
|
index eb4e69e..3155805 100644
|
||||||
|
--- a/external/CMakeLists.txt
|
||||||
|
+++ b/external/CMakeLists.txt
|
||||||
|
@@ -72,7 +72,8 @@ if (SPIRV_TOOLS_USE_MIMALLOC)
|
||||||
|
pop_variable(MI_BUILD_TESTS)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
-if (DEFINED SPIRV-Headers_SOURCE_DIR)
|
||||||
|
+# NetBSD doesn't have SPIRV-Headers readily available on system
|
||||||
|
+if (DEFINED SPIRV-Headers_SOURCE_DIR AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "NetBSD")
|
||||||
|
# This allows flexible position of the SPIRV-Headers repo.
|
||||||
|
set(SPIRV_HEADER_DIR ${SPIRV-Headers_SOURCE_DIR})
|
||||||
|
else()
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
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,6 +13,7 @@ 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
|
||||||
|
|
|
||||||
795
CMakeLists.txt
|
|
@ -1,3 +1,8 @@
|
||||||
|
# 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,9 +1,7 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 crueter
|
# SPDX-FileCopyrightText: Copyright 2025 crueter
|
||||||
# SPDX-License-Identifier: LGPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
set(CPM_SOURCE_CACHE "${PROJECT_SOURCE_DIR}/.cache/cpm" CACHE STRING "" FORCE)
|
if (MSVC OR ANDROID)
|
||||||
|
|
||||||
if(MSVC OR ANDROID OR IOS)
|
|
||||||
set(BUNDLED_DEFAULT ON)
|
set(BUNDLED_DEFAULT ON)
|
||||||
else()
|
else()
|
||||||
set(BUNDLED_DEFAULT OFF)
|
set(BUNDLED_DEFAULT OFF)
|
||||||
|
|
@ -23,17 +21,8 @@ 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(DEBUG "[CPMUtil] cpmfile ${CPMUTIL_JSON_FILE}"
|
message(WARNING "[CPMUtil] cpmfile ${CPMUTIL_JSON_FILE} does not exist, AddJsonPackage will be a no-op")
|
||||||
"does not exist, AddJsonPackage will be a no-op")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Utility stuff
|
# Utility stuff
|
||||||
|
|
@ -41,11 +30,6 @@ 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")
|
||||||
|
|
||||||
|
|
@ -77,73 +61,43 @@ function(get_json_element object out member default)
|
||||||
set("${out}" "${outvar}" PARENT_SCOPE)
|
set("${out}" "${outvar}" PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# Determine whether or not a package has a viable system candidate.
|
# The preferred usage
|
||||||
function(SystemPackageViable JSON_NAME)
|
function(AddJsonPackage)
|
||||||
string(JSON object GET "${CPMFILE_CONTENT}" "${JSON_NAME}")
|
set(oneValueArgs
|
||||||
|
NAME
|
||||||
|
|
||||||
parse_object(${object})
|
# these are overrides that can be generated at runtime, so can be defined separately from the json
|
||||||
|
DOWNLOAD_ONLY
|
||||||
|
BUNDLED_PACKAGE
|
||||||
|
)
|
||||||
|
|
||||||
string(REPLACE " " ";" find_args "${find_args}")
|
set(multiValueArgs OPTIONS)
|
||||||
if (${package}_FORCE_BUNDLED)
|
|
||||||
set(${package}_FOUND OFF)
|
cmake_parse_arguments(JSON "" "${oneValueArgs}" "${multiValueArgs}"
|
||||||
else()
|
"${ARGN}")
|
||||||
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()
|
||||||
|
|
||||||
set(${pkg}_VIABLE ${${package}_FOUND} PARENT_SCOPE)
|
if (NOT DEFINED CPMFILE_CONTENT)
|
||||||
set(${pkg}_PACKAGE ${package} PARENT_SCOPE)
|
cpm_utils_message(WARNING ${name} "No cpmfile, AddJsonPackage is a no-op")
|
||||||
endfunction()
|
return()
|
||||||
|
|
||||||
# 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 or upgrade 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()
|
||||||
|
|
||||||
foreach(pkg ${ARGN})
|
if (NOT DEFINED JSON_NAME)
|
||||||
AddJsonPackage(${pkg})
|
cpm_utils_message(FATAL_ERROR "json package" "No name specified")
|
||||||
endforeach()
|
endif()
|
||||||
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)
|
||||||
|
|
@ -156,12 +110,32 @@ macro(parse_object object)
|
||||||
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}"
|
array_to_list("${raw_disabled}" ${raw_disabled_LENGTH} disabled_platforms)
|
||||||
${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 "")
|
||||||
|
|
@ -177,10 +151,8 @@ macro(parse_object object)
|
||||||
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,
|
# first: tag gets %VERSION% replaced if applicable, with either git_version (preferred) or version
|
||||||
# with either git_version (preferred) or version
|
# second: artifact gets %VERSION% and %TAG% replaced accordingly (same rules for 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})
|
||||||
|
|
@ -194,8 +166,7 @@ macro(parse_object object)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (artifact)
|
if (artifact)
|
||||||
string(REPLACE "%VERSION%" "${version_replace}"
|
string(REPLACE "%VERSION%" "${version_replace}" artifact ${artifact})
|
||||||
artifact ${artifact})
|
|
||||||
string(REPLACE "%TAG%" "${tag}" artifact ${artifact})
|
string(REPLACE "%TAG%" "${tag}" artifact ${artifact})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
@ -206,11 +177,9 @@ macro(parse_object object)
|
||||||
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
|
set(full_patch "${CMAKE_SOURCE_DIR}/.patch/${JSON_NAME}/${_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}
|
cpm_utils_message(FATAL_ERROR ${JSON_NAME} "specifies patch ${full_patch} which does not exist")
|
||||||
"specifies patch ${full_patch} which does not exist")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
list(APPEND patches "${full_patch}")
|
list(APPEND patches "${full_patch}")
|
||||||
|
|
@ -232,74 +201,6 @@ macro(parse_object object)
|
||||||
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
|
|
||||||
BUNDLED_PACKAGE
|
|
||||||
FORCE_BUNDLED_PACKAGE)
|
|
||||||
|
|
||||||
set(multiValueArgs OPTIONS)
|
|
||||||
|
|
||||||
set(optionArgs MODULE_PATH DOWNLOAD_ONLY)
|
|
||||||
|
|
||||||
cmake_parse_arguments(JSON "${optionArgs}" "${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 (JSON_MODULE_PATH)
|
|
||||||
list(APPEND EXTRA_ARGS MODULE_PATH)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (JSON_DOWNLOAD_ONLY)
|
|
||||||
list(APPEND EXTRA_ARGS DOWNLOAD_ONLY)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(ci)
|
|
||||||
AddCIPackage(
|
|
||||||
VERSION ${version}
|
|
||||||
NAME ${name}
|
|
||||||
REPO ${repo}
|
|
||||||
PACKAGE ${package}
|
|
||||||
EXTENSION ${extension}
|
|
||||||
MIN_VERSION ${min_version}
|
|
||||||
DISABLED_PLATFORMS ${disabled_platforms}
|
|
||||||
${EXTRA_ARGS})
|
|
||||||
else()
|
|
||||||
if (NOT DEFINED JSON_FORCE_BUNDLED_PACKAGE)
|
|
||||||
set(JSON_FORCE_BUNDLED_PACKAGE OFF)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
AddPackage(
|
AddPackage(
|
||||||
NAME "${package}"
|
NAME "${package}"
|
||||||
|
|
@ -314,28 +215,46 @@ 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}
|
||||||
${EXTRA_ARGS})
|
)
|
||||||
endif()
|
|
||||||
|
|
||||||
# pass stuff to parent scope
|
# pass stuff to parent scope
|
||||||
Propagate(${package}_ADDED)
|
set(${package}_ADDED "${${package}_ADDED}"
|
||||||
Propagate(${package}_SOURCE_DIR)
|
PARENT_SCOPE)
|
||||||
Propagate(${package}_BINARY_DIR)
|
set(${package}_SOURCE_DIR "${${package}_SOURCE_DIR}"
|
||||||
Propagate(CMAKE_PREFIX_PATH)
|
PARENT_SCOPE)
|
||||||
|
set(${package}_BINARY_DIR "${${package}_BINARY_DIR}"
|
||||||
|
PARENT_SCOPE)
|
||||||
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(AddPackage)
|
function(AddPackage)
|
||||||
cpm_set_policies()
|
cpm_set_policies()
|
||||||
set(EXTRA_ARGS "")
|
|
||||||
|
|
||||||
|
# TODO(crueter): git clone?
|
||||||
|
|
||||||
|
#[[
|
||||||
|
URL configurations, descending order of precedence:
|
||||||
|
- URL [+ GIT_URL] -> bare URL fetch
|
||||||
|
- REPO + TAG + ARTIFACT -> github release artifact
|
||||||
|
- REPO + TAG -> github release archive
|
||||||
|
- REPO + SHA -> github commit archive
|
||||||
|
- REPO + BRANCH -> github branch
|
||||||
|
|
||||||
|
Hash configurations, descending order of precedence:
|
||||||
|
- HASH -> bare sha512sum
|
||||||
|
- HASH_SUFFIX -> hash grabbed from the URL + this suffix
|
||||||
|
- HASH_URL -> hash grabbed from a URL
|
||||||
|
* technically this is unsafe since a hacker can attack that url
|
||||||
|
|
||||||
|
NOTE: hash algo defaults to sha512
|
||||||
|
#]]
|
||||||
set(oneValueArgs
|
set(oneValueArgs
|
||||||
NAME
|
NAME
|
||||||
VERSION
|
VERSION
|
||||||
|
|
@ -355,35 +274,24 @@ function(AddPackage)
|
||||||
|
|
||||||
URL
|
URL
|
||||||
GIT_URL
|
GIT_URL
|
||||||
SOURCE_SUBDIR
|
|
||||||
|
|
||||||
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)
|
||||||
|
|
||||||
set(optionArgs MODULE_PATH DOWNLOAD_ONLY)
|
cmake_parse_arguments(PKG_ARGS "" "${oneValueArgs}" "${multiValueArgs}"
|
||||||
|
|
||||||
cmake_parse_arguments(PKG_ARGS "${optionArgs}" "${oneValueArgs}" "${multiValueArgs}"
|
|
||||||
"${ARGN}")
|
"${ARGN}")
|
||||||
|
|
||||||
if (NOT DEFINED PKG_ARGS_NAME)
|
if (NOT DEFINED PKG_ARGS_NAME)
|
||||||
cpm_utils_message(FATAL_ERROR "package" "No package name defined")
|
cpm_utils_message(FATAL_ERROR "package" "No package name defined")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(${PKG_ARGS_NAME}_CUSTOM_DIR "" CACHE STRING
|
option(${PKG_ARGS_NAME}_FORCE_SYSTEM "Force the system package for ${PKG_ARGS_NAME}")
|
||||||
"Path to a separately-downloaded copy of ${PKG_ARGS_NAME}")
|
option(${PKG_ARGS_NAME}_FORCE_BUNDLED "Force the bundled package for ${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)
|
||||||
|
|
@ -411,7 +319,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)
|
||||||
|
|
@ -423,19 +331,17 @@ 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"
|
"REPO defined but no TAG, SHA, BRANCH, or URL specified, defaulting to master")
|
||||||
"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}
|
cpm_utils_message(FATAL_ERROR ${PKG_ARGS_NAME} "No URL or repository defined")
|
||||||
"No URL or repository defined")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
cpm_utils_message(DEBUG ${PKG_ARGS_NAME} "Download URL is ${pkg_url}")
|
cpm_utils_message(STATUS ${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)
|
||||||
|
|
@ -494,8 +400,7 @@ 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
|
if (NOT EXISTS ${outfile} AND NOT EXISTS ${CPM_SOURCE_CACHE}/${lowername}/${pkg_key})
|
||||||
${CPM_SOURCE_CACHE}/${lowername}/${pkg_key})
|
|
||||||
file(DOWNLOAD ${hash_url} ${outfile})
|
file(DOWNLOAD ${hash_url} ${outfile})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
@ -521,7 +426,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)
|
||||||
|
|
@ -532,8 +437,7 @@ 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
|
elseif (DEFINED PKG_ARGS_BUNDLED_PACKAGE AND NOT PKG_ARGS_BUNDLED_PACKAGE STREQUAL "unset")
|
||||||
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()
|
||||||
|
|
@ -547,44 +451,26 @@ 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()
|
)
|
||||||
|
|
||||||
if (PKG_ARGS_FIND_PACKAGE_ARGUMENTS)
|
|
||||||
list(APPEND EXTRA_ARGS
|
|
||||||
FIND_PACKAGE_ARGUMENTS "${PKG_ARGS_FIND_PACKAGE_ARGUMENTS}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (PKG_ARGS_PATCHES)
|
|
||||||
list(APPEND EXTRA_ARGS
|
|
||||||
PATCHES "${PKG_ARGS_PATCHES}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (PKG_ARGS_OPTIONS)
|
|
||||||
list(APPEND EXTRA_ARGS
|
|
||||||
OPTIONS "${PKG_ARGS_OPTIONS}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (PKG_ARGS_SOURCE_SUBDIR)
|
|
||||||
list(APPEND EXTRA_ARGS
|
|
||||||
SOURCE_SUBDIR "${PKG_ARGS_SOURCE_SUBDIR}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (PKG_ARGS_DOWNLOAD_ONLY OR PKG_ARGS_MODULE_PATH)
|
|
||||||
list(APPEND EXTRA_ARGS DOWNLOAD_ONLY ON)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
CPMAddPackage(
|
CPMAddPackage(
|
||||||
NAME "${PKG_ARGS_NAME}"
|
NAME ${PKG_ARGS_NAME}
|
||||||
URL "${pkg_url}"
|
URL ${pkg_url}
|
||||||
URL_HASH "${pkg_hash}"
|
URL_HASH ${pkg_hash}
|
||||||
CUSTOM_CACHE_KEY "${pkg_key}"
|
CUSTOM_CACHE_KEY ${pkg_key}
|
||||||
|
DOWNLOAD_ONLY ${PKG_ARGS_DOWNLOAD_ONLY}
|
||||||
|
FIND_PACKAGE_ARGUMENTS ${PKG_ARGS_FIND_PACKAGE_ARGUMENTS}
|
||||||
|
|
||||||
|
OPTIONS ${PKG_ARGS_OPTIONS}
|
||||||
|
PATCHES ${PKG_ARGS_PATCHES}
|
||||||
EXCLUDE_FROM_ALL ON
|
EXCLUDE_FROM_ALL ON
|
||||||
|
|
||||||
${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})
|
||||||
|
|
@ -619,14 +505,31 @@ function(AddPackage)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# pass stuff to parent scope
|
# pass stuff to parent scope
|
||||||
Propagate(${PKG_ARGS_NAME}_ADDED)
|
set(${PKG_ARGS_NAME}_ADDED "${${PKG_ARGS_NAME}_ADDED}"
|
||||||
Propagate(${PKG_ARGS_NAME}_SOURCE_DIR)
|
PARENT_SCOPE)
|
||||||
Propagate(${PKG_ARGS_NAME}_BINARY_DIR)
|
set(${PKG_ARGS_NAME}_SOURCE_DIR "${${PKG_ARGS_NAME}_SOURCE_DIR}"
|
||||||
|
PARENT_SCOPE)
|
||||||
|
set(${PKG_ARGS_NAME}_BINARY_DIR "${${PKG_ARGS_NAME}_BINARY_DIR}"
|
||||||
|
PARENT_SCOPE)
|
||||||
|
|
||||||
if (PKG_ARGS_MODULE_PATH)
|
endfunction()
|
||||||
list(PREPEND CMAKE_PREFIX_PATH "${${ARTIFACT_PACKAGE}_SOURCE_DIR}")
|
|
||||||
Propagate(CMAKE_PREFIX_PATH)
|
function(add_ci_package key)
|
||||||
endif()
|
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()
|
endfunction()
|
||||||
|
|
||||||
# TODO(crueter): we could do an AddMultiArchPackage, multiplatformpackage?
|
# TODO(crueter): we could do an AddMultiArchPackage, multiplatformpackage?
|
||||||
|
|
@ -638,17 +541,11 @@ function(AddCIPackage)
|
||||||
REPO
|
REPO
|
||||||
PACKAGE
|
PACKAGE
|
||||||
EXTENSION
|
EXTENSION
|
||||||
MIN_VERSION)
|
MIN_VERSION
|
||||||
|
DISABLED_PLATFORMS
|
||||||
|
)
|
||||||
|
|
||||||
set(multiValueArgs DISABLED_PLATFORMS)
|
cmake_parse_arguments(PKG_ARGS "" "${oneValueArgs}" "" ${ARGN})
|
||||||
|
|
||||||
set(optionArgs MODULE_PATH)
|
|
||||||
|
|
||||||
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")
|
||||||
|
|
@ -689,83 +586,43 @@ 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)
|
if ((MSVC AND ARCHITECTURE_x86_64) AND NOT "windows-amd64" IN_LIST DISABLED_PLATFORMS)
|
||||||
set(pkgname windows-amd64)
|
add_ci_package(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 AND NOT IOS)
|
|
||||||
set(pkgname macos-universal)
|
|
||||||
elseif(IOS AND ARCHITECTURE_arm64)
|
|
||||||
set(pkgname ios-aarch64)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (DEFINED pkgname AND NOT "${pkgname}" IN_LIST DISABLED_PLATFORMS)
|
if ((MSVC AND ARCHITECTURE_arm64) AND NOT "windows-arm64" IN_LIST DISABLED_PLATFORMS)
|
||||||
set(ARTIFACT
|
add_ci_package(windows-arm64)
|
||||||
"${ARTIFACT_NAME}-${pkgname}-${ARTIFACT_VERSION}.${ARTIFACT_EXT}")
|
|
||||||
|
|
||||||
if (PKG_ARGS_MODULE_PATH)
|
|
||||||
list(APPEND EXTRA_ARGS MODULE_PATH)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
AddPackage(
|
if (ANDROID AND NOT "android" IN_LIST DISABLED_PLATFORMS)
|
||||||
NAME ${ARTIFACT_PACKAGE}
|
add_ci_package(android)
|
||||||
REPO ${ARTIFACT_REPO}
|
endif()
|
||||||
TAG "v${ARTIFACT_VERSION}"
|
|
||||||
GIT_VERSION ${ARTIFACT_VERSION}
|
|
||||||
ARTIFACT ${ARTIFACT}
|
|
||||||
|
|
||||||
KEY "${pkgname}-${ARTIFACT_VERSION}"
|
if(PLATFORM_SUN AND NOT "solaris-amd64" IN_LIST DISABLED_PLATFORMS)
|
||||||
HASH_SUFFIX sha512sum
|
add_ci_package(solaris-amd64)
|
||||||
FORCE_BUNDLED_PACKAGE ON
|
endif()
|
||||||
${EXTRA_ARGS})
|
|
||||||
|
|
||||||
|
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)
|
||||||
Propagate(${ARTIFACT_PACKAGE}_SOURCE_DIR)
|
set(${ARTIFACT_PACKAGE}_SOURCE_DIR "${ARTIFACT_DIR}" PARENT_SCOPE)
|
||||||
Propagate(CMAKE_PREFIX_PATH)
|
|
||||||
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 repo version)
|
|
||||||
if (NOT DEFINED repo)
|
|
||||||
message(FATAL_ERROR "[CPMUtil] AddQt: repo is required")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (NOT DEFINED version)
|
|
||||||
message(FATAL_ERROR "[CPMUtil] AddQt: version is required")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
AddCIPackage(
|
|
||||||
NAME qt
|
|
||||||
PACKAGE Qt6
|
|
||||||
VERSION ${version}
|
|
||||||
MIN_VERSION 6
|
|
||||||
REPO ${repo}
|
|
||||||
DISABLED_PLATFORMS
|
|
||||||
android-x86_64 android-aarch64
|
|
||||||
freebsd-amd64 solaris-amd64 openbsd-amd64
|
|
||||||
MODULE_PATH)
|
|
||||||
|
|
||||||
find_package(Qt6 REQUIRED PATHS ${Qt6_SOURCE_DIR} NO_DEFAULT_PATH)
|
|
||||||
|
|
||||||
Propagate(CMAKE_PREFIX_PATH)
|
|
||||||
Propagate(Qt6_SOURCE_DIR)
|
|
||||||
endfunction()
|
|
||||||
|
|
|
||||||
10
CMakeModules/CopyYuzuFFmpegDeps.cmake
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
# SPDX-FileCopyrightText: 2020 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
function(copy_yuzu_FFmpeg_deps target_dir)
|
||||||
|
include(WindowsCopyFiles)
|
||||||
|
set(DLL_DEST "$<TARGET_FILE_DIR:${target_dir}>/")
|
||||||
|
file(READ "${FFmpeg_PATH}/requirements.txt" FFmpeg_REQUIRED_DLLS)
|
||||||
|
string(STRIP "${FFmpeg_REQUIRED_DLLS}" FFmpeg_REQUIRED_DLLS)
|
||||||
|
windows_copy_files(${target_dir} ${FFmpeg_LIBRARY_DIR} ${DLL_DEST} ${FFmpeg_REQUIRED_DLLS})
|
||||||
|
endfunction(copy_yuzu_FFmpeg_deps)
|
||||||
66
CMakeModules/CopyYuzuQt6Deps.cmake
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
# 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)
|
||||||
8
CMakeModules/CopyYuzuSDLDeps.cmake
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
# SPDX-FileCopyrightText: 2016 Citra Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
function(copy_yuzu_SDL_deps target_dir)
|
||||||
|
include(WindowsCopyFiles)
|
||||||
|
set(DLL_DEST "$<TARGET_FILE_DIR:${target_dir}>/")
|
||||||
|
windows_copy_files(${target_dir} ${SDL2_DLL_DIR} ${DLL_DEST} SDL2.dll)
|
||||||
|
endfunction(copy_yuzu_SDL_deps)
|
||||||
271
CMakeModules/DownloadExternals.cmake
Normal file
|
|
@ -0,0 +1,271 @@
|
||||||
|
# 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,4 +1,4 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2022 Alexandre Bouvier <contact@amb.tf>
|
# SPDX-FileCopyrightText: 2022 Alexandre Bouvier <contact@amb.tf>
|
||||||
|
|
@ -1,6 +1,3 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2019 Citra Emulator Project
|
# SPDX-FileCopyrightText: 2019 Citra Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
|
@ -78,16 +75,16 @@ function(find_ffmpeg LIBNAME)
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
list(APPEND INCLUDE_PATHS
|
list(APPEND INCLUDE_PATHS
|
||||||
${CMAKE_SYSROOT}/usr/local/include/ffmpeg
|
/usr/local/include/ffmpeg
|
||||||
${CMAKE_SYSROOT}/usr/local/include/lib${LIBNAME}
|
/usr/local/include/lib${LIBNAME}
|
||||||
${CMAKE_SYSROOT}/usr/include/ffmpeg
|
/usr/include/ffmpeg
|
||||||
${CMAKE_SYSROOT}/usr/include/lib${LIBNAME}
|
/usr/include/lib${LIBNAME}
|
||||||
${CMAKE_SYSROOT}/usr/include/ffmpeg/lib${LIBNAME}
|
/usr/include/ffmpeg/lib${LIBNAME}
|
||||||
)
|
)
|
||||||
|
|
||||||
list(APPEND LIB_PATHS
|
list(APPEND LIB_PATHS
|
||||||
${CMAKE_SYSROOT}/usr/local/lib
|
/usr/local/lib
|
||||||
${CMAKE_SYSROOT}/usr/lib
|
/usr/lib
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
@ -1,6 +1,3 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2023 Alexandre Bouvier <contact@amb.tf>
|
# SPDX-FileCopyrightText: 2023 Alexandre Bouvier <contact@amb.tf>
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
@ -16,8 +13,7 @@ endif()
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
find_package_handle_standard_args(LLVM HANDLE_COMPONENTS CONFIG_MODE)
|
find_package_handle_standard_args(LLVM HANDLE_COMPONENTS CONFIG_MODE)
|
||||||
|
|
||||||
# Demangle only for Windows targets
|
if (LLVM_FOUND AND LLVM_Demangle_FOUND AND NOT TARGET LLVM::Demangle)
|
||||||
if (WIN32 AND LLVM_FOUND AND LLVM_Demangle_FOUND AND NOT TARGET LLVM::Demangle)
|
|
||||||
add_library(LLVM::Demangle INTERFACE IMPORTED)
|
add_library(LLVM::Demangle INTERFACE IMPORTED)
|
||||||
target_compile_definitions(LLVM::Demangle INTERFACE ${LLVM_DEFINITIONS})
|
target_compile_definitions(LLVM::Demangle INTERFACE ${LLVM_DEFINITIONS})
|
||||||
target_include_directories(LLVM::Demangle INTERFACE ${LLVM_INCLUDE_DIRS})
|
target_include_directories(LLVM::Demangle INTERFACE ${LLVM_INCLUDE_DIRS})
|
||||||
|
|
@ -1,6 +1,3 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 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
|
||||||
|
|
||||||
|
|
@ -13,10 +10,6 @@ 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,6 +1,3 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2023 Alexandre Bouvier <contact@amb.tf>
|
# SPDX-FileCopyrightText: 2023 Alexandre Bouvier <contact@amb.tf>
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
19
CMakeModules/FindSPIRV-Tools.cmake
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
pkg_search_module(SPIRV-Tools QUIET IMPORTED_TARGET SPIRV-Tools)
|
||||||
|
find_package_handle_standard_args(SPIRV-Tools
|
||||||
|
REQUIRED_VARS SPIRV-Tools_LINK_LIBRARIES
|
||||||
|
VERSION_VAR SPIRV-Tools_VERSION
|
||||||
|
)
|
||||||
|
|
||||||
|
if (SPIRV-Tools_FOUND AND NOT TARGET SPIRV-Tools::SPIRV-Tools)
|
||||||
|
if (TARGET SPIRV-Tools)
|
||||||
|
add_library(SPIRV-Tools::SPIRV-Tools ALIAS SPIRV-Tools)
|
||||||
|
else()
|
||||||
|
add_library(SPIRV-Tools::SPIRV-Tools ALIAS PkgConfig::SPIRV-Tools)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
@ -1,6 +1,3 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2023 Alexandre Bouvier <contact@amb.tf>
|
# SPDX-FileCopyrightText: 2023 Alexandre Bouvier <contact@amb.tf>
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
@ -1,6 +1,3 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 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
|
||||||
|
|
@ -14,10 +11,6 @@ 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,6 +1,3 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
|
@ -1,6 +1,3 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2022 Andrea Pappacoda <andrea@pappacoda.it>
|
# SPDX-FileCopyrightText: 2022 Andrea Pappacoda <andrea@pappacoda.it>
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
find_package(PkgConfig QUIET)
|
find_package(PkgConfig QUIET)
|
||||||
|
|
@ -1,6 +1,3 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 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
|
||||||
|
|
@ -14,10 +11,6 @@ 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,6 +1,3 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 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
|
||||||
|
|
||||||
|
|
@ -12,11 +9,6 @@ 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
|
||||||
|
|
@ -1,6 +1,3 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2023 Alexandre Bouvier <contact@amb.tf>
|
# SPDX-FileCopyrightText: 2023 Alexandre Bouvier <contact@amb.tf>
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
27
CMakeModules/Findzstd.cmake
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
pkg_search_module(ZSTD QUIET IMPORTED_TARGET libzstd)
|
||||||
|
find_package_handle_standard_args(zstd
|
||||||
|
REQUIRED_VARS ZSTD_LINK_LIBRARIES
|
||||||
|
VERSION_VAR ZSTD_VERSION
|
||||||
|
)
|
||||||
|
|
||||||
|
if (zstd_FOUND AND NOT TARGET zstd::zstd)
|
||||||
|
if (TARGET zstd::libzstd_shared)
|
||||||
|
add_library(zstd::zstd ALIAS zstd::libzstd_shared)
|
||||||
|
add_library(zstd::libzstd ALIAS zstd::libzstd_shared)
|
||||||
|
elseif (TARGET zstd::libzstd_static)
|
||||||
|
add_library(zstd::zstd ALIAS zstd::libzstd_static)
|
||||||
|
add_library(zstd::libzstd ALIAS zstd::libzstd_static)
|
||||||
|
else()
|
||||||
|
add_library(zstd::zstd ALIAS PkgConfig::ZSTD)
|
||||||
|
add_library(zstd::libzstd ALIAS PkgConfig::ZSTD)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
# 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 2026 Eden Emulator Project
|
# SPDX-FileCopyrightText: Copyright 2025 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,36 +24,18 @@ 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
|
||||||
# TODO(crueter): Stable releases feed.
|
|
||||||
set(BUILD_AUTO_UPDATE_STABLE_REPO "eden-emu/eden")
|
|
||||||
set(BUILD_AUTO_UPDATE_STABLE_API "git.eden-emu.dev")
|
|
||||||
set(BUILD_AUTO_UPDATE_STABLE_API_PATH "/api/v1/repos/")
|
|
||||||
|
|
||||||
set(BUILD_AUTO_UPDATE_API_PATH "/latest/release.json")
|
|
||||||
if (NIGHTLY_BUILD)
|
|
||||||
set(BUILD_AUTO_UPDATE_WEBSITE "https://git.eden-emu.dev")
|
|
||||||
set(BUILD_AUTO_UPDATE_API "nightly.eden-emu.dev")
|
|
||||||
set(BUILD_AUTO_UPDATE_REPO "eden-ci/nightly")
|
|
||||||
set(REPO_NAME "Eden Nightly")
|
|
||||||
else()
|
|
||||||
set(BUILD_AUTO_UPDATE_WEBSITE "https://git.eden-emu.dev")
|
|
||||||
set(BUILD_AUTO_UPDATE_API "stable.eden-emu.dev")
|
|
||||||
set(BUILD_AUTO_UPDATE_REPO "eden-emu/eden")
|
|
||||||
set(REPO_NAME "Eden")
|
set(REPO_NAME "Eden")
|
||||||
endif()
|
|
||||||
|
|
||||||
set(BUILD_ID ${GIT_REFSPEC})
|
set(BUILD_ID ${GIT_REFSPEC})
|
||||||
set(BUILD_FULLNAME "${REPO_NAME} ${BUILD_VERSION} ")
|
set(BUILD_FULLNAME "${REPO_NAME} ${BUILD_VERSION} ")
|
||||||
set(CXX_COMPILER "${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
|
set(CXX_COMPILER "${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
|
||||||
|
|
||||||
|
# Auto-updater metadata! Must somewhat mirror GitHub API endpoint
|
||||||
|
set(BUILD_AUTO_UPDATE_WEBSITE "https://github.com")
|
||||||
|
set(BUILD_AUTO_UPDATE_API "http://api.github.com")
|
||||||
|
set(BUILD_AUTO_UPDATE_REPO "eden-emulator/Releases")
|
||||||
|
|
||||||
configure_file(scm_rev.cpp.in scm_rev.cpp @ONLY)
|
configure_file(scm_rev.cpp.in scm_rev.cpp @ONLY)
|
||||||
|
|
|
||||||
49
CMakeModules/GetSCMRev.cmake
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
# 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}")
|
||||||
58
CMakeModules/MinGWClangCross.cmake
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
# 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()
|
||||||
57
CMakeModules/MinGWCross.cmake
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
# 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()
|
||||||
39
CMakeModules/WindowsCopyFiles.cmake
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
# This file provides the function windows_copy_files.
|
||||||
|
# This is only valid on Windows.
|
||||||
|
|
||||||
|
# Include guard
|
||||||
|
if(__windows_copy_files)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
set(__windows_copy_files YES)
|
||||||
|
|
||||||
|
# Any number of files to copy from SOURCE_DIR to DEST_DIR can be specified after DEST_DIR.
|
||||||
|
# This copying happens post-build.
|
||||||
|
if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
|
||||||
|
function(windows_copy_files TARGET SOURCE_DIR DEST_DIR)
|
||||||
|
# windows commandline expects the / to be \ so switch them
|
||||||
|
string(REPLACE "/" "\\\\" SOURCE_DIR ${SOURCE_DIR})
|
||||||
|
string(REPLACE "/" "\\\\" DEST_DIR ${DEST_DIR})
|
||||||
|
|
||||||
|
# /NJH /NJS /NDL /NFL /NC /NS /NP - Silence any output
|
||||||
|
# cmake adds an extra check for command success which doesn't work too well with robocopy
|
||||||
|
# so trick it into thinking the command was successful with the || cmd /c "exit /b 0"
|
||||||
|
add_custom_command(TARGET ${TARGET} POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${DEST_DIR}
|
||||||
|
COMMAND robocopy ${SOURCE_DIR} ${DEST_DIR} ${ARGN} /NJH /NJS /NDL /NFL /NC /NS /NP || cmd /c "exit /b 0"
|
||||||
|
)
|
||||||
|
endfunction()
|
||||||
|
else()
|
||||||
|
function(windows_copy_files TARGET SOURCE_DIR DEST_DIR)
|
||||||
|
add_custom_command(TARGET ${TARGET} POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${DEST_DIR}
|
||||||
|
COMMAND cp -ra ${SOURCE_DIR}/. ${DEST_DIR}
|
||||||
|
)
|
||||||
|
endfunction()
|
||||||
|
endif()
|
||||||
30
CMakeModules/aqt_config.ini
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
# SPDX-FileCopyrightText: 2024 kleidis
|
||||||
|
|
||||||
|
[aqt]
|
||||||
|
concurrency: 2
|
||||||
|
|
||||||
|
[mirrors]
|
||||||
|
trusted_mirrors:
|
||||||
|
https://download.qt.io
|
||||||
|
blacklist:
|
||||||
|
https://qt.mirror.constant.com
|
||||||
|
https://mirrors.ocf.berkeley.edu
|
||||||
|
https://mirrors.ustc.edu.cn
|
||||||
|
https://mirrors.tuna.tsinghua.edu.cn
|
||||||
|
https://mirrors.geekpie.club
|
||||||
|
https://mirrors-wan.geekpie.club
|
||||||
|
https://mirrors.sjtug.sjtu.edu.cn
|
||||||
|
fallbacks:
|
||||||
|
https://qtproject.mirror.liquidtelecom.com/
|
||||||
|
https://mirrors.aliyun.com/qt/
|
||||||
|
https://ftp.jaist.ac.jp/pub/qtproject/
|
||||||
|
https://ftp.yz.yamagata-u.ac.jp/pub/qtproject/
|
||||||
|
https://qt-mirror.dannhauer.de/
|
||||||
|
https://ftp.fau.de/qtproject/
|
||||||
|
https://mirror.netcologne.de/qtproject/
|
||||||
|
https://mirrors.dotsrc.org/qtproject/
|
||||||
|
https://www.nic.funet.fi/pub/mirrors/download.qt-project.org/
|
||||||
|
https://master.qt.io/
|
||||||
|
https://mirrors.ukfast.co.uk/sites/qt.io/
|
||||||
|
https://ftp2.nluug.nl/languages/qt/
|
||||||
|
https://ftp1.nluug.nl/languages/qt/
|
||||||
|
|
@ -1,41 +0,0 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
|
|
||||||
find_package(zstd QUIET CONFIG)
|
|
||||||
if (zstd_CONSIDERED_CONFIGS)
|
|
||||||
find_package_handle_standard_args(zstd CONFIG_MODE)
|
|
||||||
else()
|
|
||||||
find_package(PkgConfig QUIET)
|
|
||||||
pkg_search_module(ZSTD QUIET IMPORTED_TARGET libzstd)
|
|
||||||
find_package_handle_standard_args(zstd
|
|
||||||
REQUIRED_VARS ZSTD_LINK_LIBRARIES
|
|
||||||
VERSION_VAR ZSTD_VERSION)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (zstd_FOUND AND NOT TARGET zstd::zstd)
|
|
||||||
if (TARGET zstd::libzstd_shared AND NOT YUZU_STATIC_BUILD)
|
|
||||||
add_library(zstd::zstd ALIAS zstd::libzstd_shared)
|
|
||||||
elseif (TARGET zstd::libzstd_static)
|
|
||||||
add_library(zstd::zstd ALIAS zstd::libzstd_static)
|
|
||||||
else()
|
|
||||||
add_library(zstd::zstd ALIAS PkgConfig::ZSTD)
|
|
||||||
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()
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
set(CROSS_TARGET "" CACHE STRING "Cross-compilation target (aarch64, etc)")
|
|
||||||
set(CROSS_PLATFORM "unknown-linux-gnu" CACHE STRING "Cross-compilation platform (e.g. unknown-linux-gnu)")
|
|
||||||
set(CROSS_COMPILER "gcc" CACHE STRING "Cross compiler type (gcc or clang)")
|
|
||||||
|
|
||||||
if (NOT CROSS_TARGET)
|
|
||||||
message(FATAL_ERROR "GentooCross used without a valid CROSS_TARGET")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(prefix ${CROSS_TARGET}-${CROSS_PLATFORM})
|
|
||||||
|
|
||||||
set(CMAKE_SYSROOT /usr/${prefix})
|
|
||||||
|
|
||||||
if (CROSS_COMPILER STREQUAL "gcc")
|
|
||||||
set(CMAKE_C_COMPILER ${prefix}-gcc)
|
|
||||||
set(CMAKE_CXX_COMPILER ${prefix}-g++)
|
|
||||||
elseif (CROSS_COMPILER STREQUAL "clang")
|
|
||||||
set(CMAKE_C_COMPILER ${prefix}-clang)
|
|
||||||
set(CMAKE_CXX_COMPILER ${prefix}-clang++)
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "Unsupported cross compiler type ${CROSS_COMPILER}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# search programs in the host environment
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
||||||
|
|
||||||
# search headers and libraries in the target environment
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT})
|
|
||||||
|
|
||||||
# sanity checks
|
|
||||||
if (NOT IS_DIRECTORY ${CMAKE_SYSROOT})
|
|
||||||
message(FATAL_ERROR "Invalid sysroot ${CMAKE_SYSROOT}."
|
|
||||||
"Double-check your CROSS_TARGET and CROSS_PLATFORM.")
|
|
||||||
endif()
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
# Contributing
|
<!--
|
||||||
|
SPDX-FileCopyrightText: 2018 yuzu Emulator Project
|
||||||
|
SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
-->
|
||||||
|
|
||||||
You want to contribute? Please consult [the development guide](./docs/Development.md).
|
**The Contributor's Guide has moved to [the yuzu wiki](https://github.com/yuzu-emu/yuzu/wiki/Contributing).**
|
||||||
|
|
||||||
Don't forget to [get a git account](./docs/SIGNUP.md) - not a requirement per se but it's highly recommended.
|
|
||||||
|
|
|
||||||
30
README.md
|
|
@ -9,25 +9,25 @@
|
||||||
|
|
||||||
<h1 align="center">
|
<h1 align="center">
|
||||||
<br>
|
<br>
|
||||||
<a href="https://git.eden-emu.dev/eden-emu/eden"><img src="./dist/qt_themes/default/icons/256x256/eden.png" alt="Eden" width="200"></a>
|
<a href="https://git.eden-emu.dev/eden-emu/eden"><img src="./dist/qt_themes/default/icons/256x256/eden_named.png" alt="Eden" width="200"></a>
|
||||||
<br>
|
<br>
|
||||||
<b>Eden</b>
|
<b>Eden</b>
|
||||||
<br>
|
<br>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<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.
|
<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.
|
||||||
It's written in C++ with portability in mind, with builds for Windows, Linux, macOS, Android, FreeBSD and more.
|
It is written in C++ with portability in mind, and we actively maintain builds for Windows, Linux and Android.
|
||||||
</h4>
|
</h4>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://discord.gg/HstXbPch7X">
|
<a href="https://discord.gg/kXAmGCXBGD">
|
||||||
<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://stt.gg/qKgFEAbH">
|
<a href="https://rvlt.gg/qKgFEAbH">
|
||||||
<img src="https://img.shields.io/revolt/invite/qKgFEAbH?color=d61f3a&label=Stoat"
|
<img src="https://img.shields.io/revolt/invite/qKgFEAbH?color=d61f3a&label=Revolt"
|
||||||
alt="Stoat">
|
alt="Revolt">
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
@ -52,19 +52,15 @@ 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/HstXbPch7X) or [Stoat](https://stt.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/kXAmGCXBGD) or [Revolt](https://rvlt.gg/qKgFEAbH).
|
||||||
You can also follow us on [X (Twitter)](https://nitter.poast.org/edenemuofficial) for updates and announcements.
|
You can also follow us on [X (Twitter)](https://x.com/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 Stoat 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 Revolt 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.
|
||||||
|
|
||||||
Alternatively, if you wish to add translations, go to the [Eden project on Transifex](https://app.transifex.com/edenemu/eden-emulator) and review [the translations README](./dist/languages).
|
Alternatively, if you wish to add translations, go to the [Eden project on Transifex](https://app.transifex.com/edenemu/eden-emulator) and review [the translations README](./dist/languages).
|
||||||
|
|
||||||
## Documentation
|
|
||||||
|
|
||||||
We have a user manual! See our [User Handbook](./docs/user/README.md).
|
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
See the [General Build Guide](docs/Build.md)
|
See the [General Build Guide](docs/Build.md)
|
||||||
|
|
@ -73,9 +69,7 @@ For information on provided development tooling, see the [Tools directory](./too
|
||||||
|
|
||||||
## Download
|
## Download
|
||||||
|
|
||||||
You can download the latest releases from [here](https://git.eden-emu.dev/eden-emu/eden/releases).
|
You can download the latest releases from [here](https://github.com/eden-emulator/Releases/releases).
|
||||||
|
|
||||||
Save us some bandwidth! We have [mirrors available](./docs/user/ThirdParty.md#mirrors) as well.
|
|
||||||
|
|
||||||
## Support
|
## Support
|
||||||
|
|
||||||
|
|
@ -88,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/HstXbPch7X) 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/edenemu) and talk to Camille or any of our other developers.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|
|
||||||
89
cpmfile.json
|
|
@ -1,38 +1,13 @@
|
||||||
{
|
{
|
||||||
"openssl-ci": {
|
"openssl": {
|
||||||
"ci": true,
|
"ci": true,
|
||||||
"package": "OpenSSL",
|
"package": "OpenSSL",
|
||||||
"name": "openssl",
|
"name": "openssl",
|
||||||
"repo": "crueter-ci/OpenSSL",
|
"repo": "crueter-ci/OpenSSL",
|
||||||
"version": "4.0.0-11b7b6ea3b",
|
"version": "3.6.0",
|
||||||
"min_version": "3"
|
"min_version": "1.1.1",
|
||||||
},
|
"disabled_platforms": [
|
||||||
"openssl-cmake": {
|
"macos-universal"
|
||||||
"repo": "jimmy-park/openssl-cmake",
|
|
||||||
"hash": "2cc185c924fd70e7d886257ca0caa42b3b8f7f712f2052b4f94dde74759e27022de76178460e18c9bdfc57c366583999e198fbb6052d4e7d91c099d15a0ca63e",
|
|
||||||
"git_version": "3.6.2",
|
|
||||||
"tag": "%VERSION%",
|
|
||||||
"bundled": true,
|
|
||||||
"options": [
|
|
||||||
"OPENSSL_CONFIGURE_OPTIONS threads"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"0001-cpmutil-compat.patch",
|
|
||||||
"0002-use-ccache.patch",
|
|
||||||
"0003-use-cmake-compiler-flags.patch",
|
|
||||||
"0004-use-shell-wrapper.patch"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"openssl": {
|
|
||||||
"repo": "openssl/openssl",
|
|
||||||
"package": "OpenSSL",
|
|
||||||
"min_version": "3",
|
|
||||||
"version": "3",
|
|
||||||
"hash": "29002ce50cb95a4f4f1d0e9d3f684401fbd4eac34203dc2eef3b6334af5d44aa46bf788b63a6f5c139c383eafb7269ae87a58a9a3ad5912903b9773e545ccc0a",
|
|
||||||
"git_version": "3.6.2",
|
|
||||||
"tag": "openssl-%VERSION%",
|
|
||||||
"patches": [
|
|
||||||
"0001-add-bundled-cert.patch"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"boost": {
|
"boost": {
|
||||||
|
|
@ -40,20 +15,22 @@
|
||||||
"repo": "boostorg/boost",
|
"repo": "boostorg/boost",
|
||||||
"tag": "boost-%VERSION%",
|
"tag": "boost-%VERSION%",
|
||||||
"artifact": "%TAG%-cmake.tar.xz",
|
"artifact": "%TAG%-cmake.tar.xz",
|
||||||
"hash": "6ae6e94664fe7f2fb01976b59b276ac5df8085c7503fa829d810fbfe495960cfec44fa2c36e2cb23480bc19c956ed199d4952b02639a00a6c07625d4e7130c2d",
|
"hash": "4fb7f6fde92762305aad8754d7643cd918dd1f3f67e104e9ab385b18c73178d72a17321354eb203b790b6702f2cf6d725a5d6e2dfbc63b1e35f9eb59fb42ece9",
|
||||||
"git_version": "1.90.0",
|
"git_version": "1.89.0",
|
||||||
"version": "1.57",
|
"version": "1.57",
|
||||||
"find_args": "CONFIG OPTIONAL_COMPONENTS headers context system fiber filesystem",
|
"find_args": "CONFIG",
|
||||||
"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": "f0da82c545b01692e9fd30fdfb613dbb8dd9716983dcd0ff19ac2a8d36f74beb5540ef38072fdecc1e34191b3682a8542ecbf3a61ef287dbba0a2679d4e023f2",
|
"hash": "c4ab814c20fbad7e3f0ae169125a4988a2795631194703251481dc36b18da65c886c4faa9acd046b0a295005217b3689eb0126108a9ba5aac2ca909aae263c2f",
|
||||||
"version": "8",
|
"version": "8",
|
||||||
"git_version": "12.1.0"
|
"git_version": "12.0.0"
|
||||||
},
|
},
|
||||||
"lz4": {
|
"lz4": {
|
||||||
"name": "lz4",
|
"name": "lz4",
|
||||||
|
|
@ -74,9 +51,9 @@
|
||||||
"package": "ZLIB",
|
"package": "ZLIB",
|
||||||
"repo": "madler/zlib",
|
"repo": "madler/zlib",
|
||||||
"tag": "v%VERSION%",
|
"tag": "v%VERSION%",
|
||||||
"hash": "16fea4df307a68cf0035858abe2fd550250618a97590e202037acd18a666f57afc10f8836cbbd472d54a0e76539d0e558cb26f059d53de52ff90634bbf4f47d4",
|
"hash": "8c9642495bafd6fad4ab9fb67f09b268c69ff9af0f4f20cf15dfc18852ff1f312bd8ca41de761b3f8d8e90e77d79f2ccacd3d4c5b19e475ecf09d021fdfe9088",
|
||||||
"version": "1.2",
|
"version": "1.2",
|
||||||
"git_version": "1.3.2",
|
"git_version": "1.3.1",
|
||||||
"options": [
|
"options": [
|
||||||
"ZLIB_BUILD_SHARED OFF",
|
"ZLIB_BUILD_SHARED OFF",
|
||||||
"ZLIB_INSTALL OFF"
|
"ZLIB_INSTALL OFF"
|
||||||
|
|
@ -95,17 +72,13 @@
|
||||||
},
|
},
|
||||||
"opus": {
|
"opus": {
|
||||||
"package": "Opus",
|
"package": "Opus",
|
||||||
"repo": "xiph/opus",
|
"repo": "crueter/opus",
|
||||||
"sha": "a3f0ec02b3",
|
"sha": "ab19c44fad",
|
||||||
"hash": "9506147b0de35befda8633ff272981cc2575c860874791bd455b752f797fd7dbd1079f0ba42ccdd7bb1fe6773fa5e84b3d75667c2883dd1fb2d0e4a5fa4f8387",
|
"hash": "d632e8f83c5d3245db404bcb637113f9860bf16331498ba2c8e77979d1febee6b52d8b1da448e7d54eeac373e912cd55e3e300fc6c242244923323280dc43fbe",
|
||||||
"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": {
|
||||||
|
|
@ -115,33 +88,11 @@
|
||||||
"bundled": true
|
"bundled": true
|
||||||
},
|
},
|
||||||
"llvm-mingw": {
|
"llvm-mingw": {
|
||||||
"repo": "eden-emu/llvm-mingw",
|
"repo": "misc/llvm-mingw",
|
||||||
"git_host": "git.eden-emu.dev",
|
"git_host": "git.crueter.xyz",
|
||||||
"tag": "%VERSION%",
|
"tag": "%VERSION%",
|
||||||
"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.341.0",
|
|
||||||
"artifact": "android-binaries-%VERSION%.zip",
|
|
||||||
"hash": "8812ae84cbe49e6a3418ade9c458d3be6d74a3dffd319d4502007b564d580998056e8190414368ec11b27bc83993c7a0dad713c31bcc3d9553b51243efee3753"
|
|
||||||
},
|
|
||||||
"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",
|
|
||||||
"QUAZIP_BZIP2 OFF"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
8
dist/72-eden-input.rules
vendored
|
|
@ -1,8 +0,0 @@
|
||||||
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
# Allow systemd-logind to manage user access to hidraw with this file
|
|
||||||
# On most systems, this file should be installed to /etc/udev/rules.d/72-eden-input.rules
|
|
||||||
# Consult your distro if this is not the case
|
|
||||||
|
|
||||||
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ENV{ID_INPUT_JOYSTICK}=="1", MODE="0660", TAG+="uaccess"
|
|
||||||
19
dist/72-yuzu-input.rules
vendored
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
# Allow systemd-logind to manage user access to hidraw with this file
|
||||||
|
# On most systems, this file should be installed to /etc/udev/rules.d/72-yuzu-input.rules
|
||||||
|
# Consult your distro if this is not the case
|
||||||
|
|
||||||
|
# Switch Pro Controller (USB/Bluetooth)
|
||||||
|
KERNEL=="hidraw*", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="2009", MODE="0660", TAG+="uaccess"
|
||||||
|
KERNEL=="hidraw*", KERNELS=="*057e:2009*", MODE="0660", TAG+="uaccess"
|
||||||
|
|
||||||
|
# Joy-Con L (Bluetooth)
|
||||||
|
KERNEL=="hidraw*", KERNELS=="*057e:2006*", MODE="0660", TAG+="uaccess"
|
||||||
|
|
||||||
|
# Joy-Con R (Bluetooth)
|
||||||
|
KERNEL=="hidraw*", KERNELS=="*057e:2007*", MODE="0660", TAG+="uaccess"
|
||||||
|
|
||||||
|
# Joy-Con Charging Grip (USB)
|
||||||
|
KERNEL=="hidraw*", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="200e", MODE="0660", TAG+="uaccess"
|
||||||
BIN
dist/Assets.car
vendored
2
dist/dev.eden_emu.eden.desktop
vendored
Executable file → Normal file
|
|
@ -9,7 +9,7 @@ Version=1.0
|
||||||
Type=Application
|
Type=Application
|
||||||
Name=Eden
|
Name=Eden
|
||||||
GenericName=Switch Emulator
|
GenericName=Switch Emulator
|
||||||
Comment=Multiplatform FOSS Switch 1 emulator written in C++, derived from Yuzu and Sudachi
|
Comment=Nintendo Switch video game console emulator
|
||||||
Icon=dev.eden_emu.eden
|
Icon=dev.eden_emu.eden
|
||||||
TryExec=eden
|
TryExec=eden
|
||||||
Exec=eden %f
|
Exec=eden %f
|
||||||
|
|
|
||||||
43
dist/dev.eden_emu.eden.metainfo.xml
vendored
|
|
@ -1,22 +1,20 @@
|
||||||
<?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.eden_emu.eden</id>
|
<id>org.yuzu_emu.yuzu</id>
|
||||||
<metadata_license>CC0-1.0</metadata_license>
|
<metadata_license>CC0-1.0</metadata_license>
|
||||||
<name>eden</name>
|
<name>yuzu</name>
|
||||||
<summary>Nintendo Switch emulator</summary>
|
<summary>Nintendo Switch emulator</summary>
|
||||||
<description>
|
<description>
|
||||||
<p>Multiplatform FOSS Switch 1 emulator written in C++, derived from Yuzu and Sudachi</p>
|
<p>yuzu is the world's most popular, open-source, Nintendo Switch emulator — started by the creators of Citra.</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>
|
||||||
|
|
@ -26,16 +24,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://eden-emu.dev/</url>
|
<url type="homepage">https://yuzu-emu.org/</url>
|
||||||
<url type="bugtracker">https://git.eden-emu.dev/eden-emu/eden/issues</url>
|
<url type="bugtracker">https://github.com/yuzu-emu/yuzu/issues</url>
|
||||||
<url type="faq">https://eden-emu.dev/docs</url>
|
<url type="faq">https://yuzu-emu.org/wiki/faq/</url>
|
||||||
<url type="help">https://eden-emu.dev/docs</url>
|
<url type="help">https://yuzu-emu.org/wiki/home/</url>
|
||||||
<url type="donation">https://eden-emu.dev/donations</url>
|
<url type="donation">https://yuzu-emu.org/donate/</url>
|
||||||
<url type="translate">https://explore.transifex.com/edenemu/eden-emulator</url>
|
<url type="translate">https://www.transifex.com/projects/p/yuzu</url>
|
||||||
<url type="contact">https://discord.gg/edenemu</url>
|
<url type="contact">https://community.citra-emu.org/</url>
|
||||||
<url type="vcs-browser">https://git.eden-emu.dev</url>
|
<url type="vcs-browser">https://github.com/yuzu-emu/yuzu</url>
|
||||||
<url type="contribute">https://git.eden-emu.dev/eden-emu/eden</url>
|
<url type="contribute">https://yuzu-emu.org/wiki/contributing/</url>
|
||||||
<launchable type="desktop-id">org.eden_emu.eden.desktop</launchable>
|
<launchable type="desktop-id">org.yuzu_emu.yuzu.desktop</launchable>
|
||||||
<provides>
|
<provides>
|
||||||
<binary>yuzu</binary>
|
<binary>yuzu</binary>
|
||||||
<binary>yuzu-cmd</binary>
|
<binary>yuzu-cmd</binary>
|
||||||
|
|
@ -52,6 +50,13 @@ 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>Eden Emulator Team</developer_name>
|
<developer_name>yuzu 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>
|
||||||
|
|
|
||||||
282
dist/dev.eden_emu.eden.svg
vendored
|
|
@ -6,196 +6,14 @@
|
||||||
viewBox="0 0 512 512"
|
viewBox="0 0 512 512"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
id="svg7"
|
id="svg7"
|
||||||
sodipodi:docname="base.svg.2026_01_12_14_43_47.0.svg"
|
sodipodi:docname="dev.eden_emu.eden.svg"
|
||||||
inkscape:version="1.4.2 (ebf0e94, 2025-05-08)"
|
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||||
inkscape:export-filename="base.svg.2026_01_12_14_43_47.0.svg"
|
|
||||||
inkscape:export-xdpi="96"
|
|
||||||
inkscape:export-ydpi="96"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
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="http://www.w3.org/2000/svg"
|
||||||
xmlns:svg="http://www.w3.org/2000/svg">
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
<defs
|
<defs
|
||||||
id="defs7">
|
id="defs7" />
|
||||||
<linearGradient
|
|
||||||
id="linearGradient1"
|
|
||||||
inkscape:collect="always">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ff2e88;stop-opacity:0.5;"
|
|
||||||
offset="0"
|
|
||||||
id="stop3" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#bf42f6;stop-opacity:0.5;"
|
|
||||||
offset="0.44631511"
|
|
||||||
id="stop4" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#5da5ed;stop-opacity:0.5;"
|
|
||||||
offset="0.90088946"
|
|
||||||
id="stop2" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient138"
|
|
||||||
inkscape:collect="always">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ff2e88;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop152" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#bf42f6;stop-opacity:1;"
|
|
||||||
offset="0.44971901"
|
|
||||||
id="stop137" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#5da5ed;stop-opacity:1;"
|
|
||||||
offset="0.89793283"
|
|
||||||
id="stop138" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch37"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop37" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch28"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#252525;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop28" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch27"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#000000;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop27" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch15"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop16" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient14"
|
|
||||||
inkscape:swatch="gradient">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop14" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:0;"
|
|
||||||
offset="1"
|
|
||||||
id="stop15" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch9"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop10" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch8"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop9" />
|
|
||||||
</linearGradient>
|
|
||||||
<rect
|
|
||||||
x="22.627417"
|
|
||||||
y="402.76802"
|
|
||||||
width="521.34025"
|
|
||||||
height="248.94868"
|
|
||||||
id="rect24" />
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient11"
|
|
||||||
inkscape:collect="always">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ff2e88;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop11" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#bf42f6;stop-opacity:1;"
|
|
||||||
offset="0.44971901"
|
|
||||||
id="stop154" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#5da5ed;stop-opacity:1;"
|
|
||||||
offset="0.89793283"
|
|
||||||
id="stop12" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient138"
|
|
||||||
id="linearGradient6"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(1.118028,0,0,1.116699,-46.314723,-42.388667)"
|
|
||||||
x1="270.39996"
|
|
||||||
y1="40.000019"
|
|
||||||
x2="270.39996"
|
|
||||||
y2="494.39996"
|
|
||||||
spreadMethod="pad" />
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath18">
|
|
||||||
<circle
|
|
||||||
style="opacity:1;mix-blend-mode:normal;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10.8382;stroke-opacity:0.566238;paint-order:stroke fill markers"
|
|
||||||
id="circle18"
|
|
||||||
cx="-246.8315"
|
|
||||||
cy="246.8338"
|
|
||||||
inkscape:label="Circle"
|
|
||||||
r="191.89999" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath22">
|
|
||||||
<circle
|
|
||||||
style="opacity:1;mix-blend-mode:normal;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10.8382;stroke-opacity:0.566238;paint-order:stroke fill markers"
|
|
||||||
id="circle22"
|
|
||||||
cx="256"
|
|
||||||
cy="256"
|
|
||||||
inkscape:label="Circle"
|
|
||||||
r="191.89999" />
|
|
||||||
</clipPath>
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient11"
|
|
||||||
id="linearGradient27"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="translate(-6.9401139e-5,-2.8678628)"
|
|
||||||
x1="256.00012"
|
|
||||||
y1="102.94693"
|
|
||||||
x2="256.00012"
|
|
||||||
y2="409.05307" />
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath128">
|
|
||||||
<circle
|
|
||||||
style="fill:none;fill-opacity:1;stroke:#03ffff;stroke-width:0;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
id="circle128"
|
|
||||||
cx="256"
|
|
||||||
cy="256"
|
|
||||||
r="192" />
|
|
||||||
</clipPath>
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient1"
|
|
||||||
id="linearGradient2"
|
|
||||||
x1="256"
|
|
||||||
y1="64"
|
|
||||||
x2="256"
|
|
||||||
y2="448"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(1.3229974,0,0,1.3214002,-82.687336,-82.290326)" />
|
|
||||||
</defs>
|
|
||||||
<sodipodi:namedview
|
<sodipodi:namedview
|
||||||
id="namedview7"
|
id="namedview7"
|
||||||
pagecolor="#ffffff"
|
pagecolor="#ffffff"
|
||||||
|
|
@ -205,26 +23,84 @@
|
||||||
inkscape:pageopacity="0.0"
|
inkscape:pageopacity="0.0"
|
||||||
inkscape:pagecheckerboard="0"
|
inkscape:pagecheckerboard="0"
|
||||||
inkscape:deskcolor="#d1d1d1"
|
inkscape:deskcolor="#d1d1d1"
|
||||||
inkscape:zoom="1.4142136"
|
inkscape:zoom="1.25"
|
||||||
inkscape:cx="261.62951"
|
inkscape:cx="186.8"
|
||||||
inkscape:cy="230.87036"
|
inkscape:cy="210.4"
|
||||||
inkscape:window-width="1920"
|
inkscape:window-width="1600"
|
||||||
inkscape:window-height="1008"
|
inkscape:window-height="849"
|
||||||
inkscape:window-x="1080"
|
inkscape:window-x="0"
|
||||||
inkscape:window-y="351"
|
inkscape:window-y="27"
|
||||||
inkscape:window-maximized="1"
|
inkscape:window-maximized="1"
|
||||||
inkscape:current-layer="svg7" />
|
inkscape:current-layer="svg7" />
|
||||||
<path
|
<path
|
||||||
id="path8-7"
|
fill="#bf42f6"
|
||||||
style="display:inline;mix-blend-mode:multiply;fill:url(#linearGradient6);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2);stroke-width:3.9666;stroke-dasharray:none;stroke-opacity:0.566238;paint-order:stroke fill markers"
|
d="M346.71 255.306c.788.006 1.577.013 3.124.059 4.006.027 7.253.015 10.501.003 33.391.022 66.783.028 100.175.078 8.174.013 16.349.279 24.522.209 3.084-.026 4.596.75 4.356 4.156-.293 4.157-.31 8.343-.259 12.513.049 3.964-1.248 5.539-5.679 5.524-48.85-.158-97.701-.071-146.552-.056-22.107.007-44.214 0-66.321 0h-5.43v7.117h223.011c-1.553 8.254-2.894 15.76-4.475 23.215-.17.802-1.666 1.617-2.685 1.87-1.312.327-2.763.099-4.155.099H265.099v6.701h216.666c-1.609 5.425-2.887 10.074-4.367 14.658-2.758 8.54-2.807 8.524-11.564 8.524-64.929 0-129.859.014-194.788-.04-3.401-.003-6.19.251-4.758 4.652.349 1.075 1.875 2.026 3.071 2.491 1.075.418 2.439.092 3.676.092l191.542.001h7.17c-3.533 7.29-6.399 13.72-9.834 19.83-.651 1.157-3.562 1.448-5.432 1.454-27.981.088-55.963.061-83.944.061-31.692 0-63.384.005-95.075-.008-2.61-.002-5.219-.124-8.53-.021-3.11.173-5.518.177-7.926.181-.849-7.032-2.289-14.051-2.44-21.098-.547-25.616-.773-51.242-.844-76.864-.014-4.88 1.228-9.763 2.52-14.927 2.88-.296 5.132-.31 7.81-.259 22.492.021 44.557-.024 67.034-.066 4.149-.049 7.886-.099 11.624-.149"
|
||||||
inkscape:label="Circle"
|
id="path1"
|
||||||
d="M 256,2.2792898 A 254.0155,253.71401 0 0 0 150.68475,25.115202 c 19.54414,1.070775 38.74692,5.250294 51.56848,11.647658 14.14361,7.056691 28.63804,19.185961 39.4212,29.347551 h 40.60981 c 1.03847,-0.68139 2.10297,-1.36938 3.1938,-2.05957 5.45602,-15.78533 14.79164,-43.183497 19.49612,-57.0097682 A 254.0155,253.71401 0 0 0 256,2.2792898 Z m 61.57106,7.567234 -18.26098,46.1544672 c 7.79702,-4.13918 16.35655,-7.87447 25.20671,-10.87081 23.1229,-7.828433 43.96931,-10.170904 54.94058,-10.868226 A 254.0155,253.71401 0 0 0 317.57106,9.8465238 Z m 65.39277,26.4001532 c -9.68256,4.806644 -33.05532,16.642034 -55.68217,29.863734 H 424.4677 A 254.0155,253.71401 0 0 0 382.96383,36.246677 Z M 113.90698,45.690231 A 254.0155,253.71401 0 0 0 87.532302,66.110411 H 194.2739 c -1.47402,-0.80231 -2.35141,-1.25949 -2.35141,-1.25949 l 10.4496,-11.83348 -38.40568,7.01234 c 0,1e-5 -12.21537,-4.60266 -40.17313,-12.27223 -3.45336,-0.94731 -6.75329,-1.61824 -9.8863,-2.06732 z m -36.803618,30.18635 a 254.0155,253.71401 0 0 0 -34.88372,43.090929 h 59.976738 c 18.11461,-12.04145 40.14252,-22.882149 62.31266,-24.534159 52.93006,-3.9444 70.16538,1.86342 70.16538,1.86342 0,0 -4.612,-4.8206 -14.51938,-13.36656 -2.72366,-2.34942 -6.0844,-4.77373 -9.52455,-7.05363 z m 174.472868,0 c 4.57322,4.7186 7.29716,7.83565 7.29716,7.83565 0,0 3.53501,-3.18484 9.62532,-7.83565 z m 60.27649,0 c -21.56573,15.45339 -25.4703,27.979669 -25.4703,27.979669 0,0 54.83326,-19.215729 100.70543,-0.31228 11.63986,4.79661 21.58481,10.13159 29.94832,15.42354 h 52.74419 A 254.0155,253.71401 0 0 0 434.89664,75.876581 Z M 36.250648,128.73367 A 254.0155,253.71401 0 0 0 16.372095,171.82459 H 147.45478 c 1.45695,-2.5815 3.06539,-5.08648 4.83979,-7.48982 14.23694,-19.28301 27.92088,-30.0088 36.86047,-35.6011 h -30.25323 c -5.87346,0.93472 -12.04945,1.99094 -18.28166,3.16937 -30.12936,5.69727 -81.157618,22.78945 -81.157618,22.78945 0,0 11.47125,-12.39249 29.11369,-25.95882 z m 265.630492,0 c 33.48676,11.2434 52.42799,26.78443 62.7752,43.09092 h 130.97157 a 254.0155,253.71401 0 0 0 -19.87856,-43.09092 h -44.81136 c 14.85233,11.5863 21.59948,20.9854 21.59948,20.9854 0,0 -33.5226,-12.37087 -66.0646,-20.9854 z m -45.96641,16.27007 c -1.00419,0.0106 -10.12705,0.72026 -44.98966,20.64729 -3.12132,1.78406 -6.25434,3.86182 -9.37468,6.17356 h 41.81911 c 7.17181,-17.34774 12.64083,-26.82085 12.64083,-26.82085 0,0 -0.0287,-7.1e-4 -0.0957,0 z m 14.18088,0.0465 c 0,0 -3.31228,9.32762 -7.30492,26.77438 h 51.78554 C 287.6577,146.14158 270.09561,145.0502 270.09561,145.0502 Z M 13.152456,181.59075 A 254.0155,253.71401 0 0 0 3.927651,224.68167 H 134.1447 c 0.56161,-12.72411 2.67825,-28.50188 8.61499,-43.09092 z m 176.661504,0 c -14.27121,13.10564 -27.60733,29.58761 -37.56073,43.09092 h 73.3721 c 4.47018,-16.79061 9.35068,-31.26371 13.86562,-43.09092 z m 70.85787,0 c -2.41384,11.76417 -4.9032,26.20707 -6.94831,43.09092 H 360.4832 c -8.32133,-10.88917 -20.66988,-26.17008 -36.35141,-43.09092 z m 109.17313,0 c 6.63611,15.24089 6.92441,30.5373 5.57882,43.09092 h 132.64857 a 254.0155,253.71401 0 0 0 -9.22481,-43.09092 z M 2.90181,234.44783 A 254.0155,253.71401 0 0 0 1.984498,255.9933 254.0155,253.71401 0 0 0 2.90181,277.53876 h 211.89923 c 2.25762,-15.52555 5.14325,-29.93448 8.3385,-43.09093 h -77.8863 c -6.46396,9.27617 -10.33076,15.56549 -10.33076,15.56549 0,0 -0.82623,-6.14945 -0.9354,-15.56549 z m 249.72093,0 c -1.3692,13.09684 -2.4456,27.49209 -3.02068,43.09093 h 259.49613 a 254.0155,253.71401 0 0 0 0.91731,-21.54546 254.0155,253.71401 0 0 0 -0.91731,-21.54547 H 374.02584 c -0.445,2.5469 -0.90878,4.89768 -1.32817,7.01751 0,0 -1.69726,-2.53821 -4.94056,-7.01751 z M 3.927651,287.30493 a 254.0155,253.71401 0 0 0 9.224805,43.09091 H 214.04393 c -1.29238,-15.40742 -1.57503,-30.04388 -0.41861,-43.09091 z m 245.385009,0 c -0.30355,13.54349 -0.22032,27.92598 0.36951,43.09091 h 249.16537 a 254.0155,253.71401 0 0 0 9.22481,-43.09091 z M 16.369511,340.16201 a 254.0155,253.71401 0 0 0 19.878554,43.09091 H 221.4677 c -2.69781,-14.4523 -4.96108,-29.01285 -6.4832,-43.09091 z m 233.842379,0 c 1.15864,15.47765 3.81286,29.83979 7.51679,43.09091 h 218.02325 a 254.0155,253.71401 0 0 0 19.87856,-43.09091 z M 42.217052,393.01909 a 254.0155,253.71401 0 0 0 34.88372,43.09093 H 233.09561 c -3.40902,-13.67281 -6.76794,-28.2531 -9.73902,-43.09093 z m 218.490958,0 c 5.34985,16.15926 12.22007,30.51982 19.68733,43.09093 h 154.50389 a 254.0155,253.71401 0 0 0 34.88371,-43.09093 z M 87.529722,445.87618 a 254.0155,253.71401 0 0 0 166.229968,63.8208 c -3.67805,-12.0825 -10.85464,-35.49828 -18.18088,-63.8208 z m 199.010328,0 c 17.5887,26.43772 36.99259,43.60598 47.33592,51.61309 a 254.0155,253.71401 0 0 0 90.59431,-51.61309 z" />
|
style="fill:#fea265;fill-opacity:1" />
|
||||||
<path
|
<path
|
||||||
id="path27"
|
fill="#ff44c4"
|
||||||
style="display:inline;mix-blend-mode:multiply;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient27);stroke-width:3;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
|
d="M168.124 257.114v-9.301c-2.407 0-4.67-.001-6.933.001-44.522.025-89.044.01-133.566.146-3.858.012-5.358-1.03-4.744-5 .683-4.418 1.254-8.885 1.393-13.346.106-3.386 1.603-4.005 4.608-4.012 45.9-.11 91.801-.344 137.702-.452 3.865-.009 6.842-.344 6.032-5.831H25.546c1.39-6.599 2.354-12.681 4.138-18.513.413-1.35 3.628-2.615 5.555-2.618 47.458-.084 94.917-.01 142.375.109 3.275.008 5.855-.38 6.138-5.045H31.147c3.43-9.311 6.348-17.71 9.74-25.913.483-1.166 3.265-1.942 4.987-1.95 24.582-.124 49.165-.21 73.745.014 5.283.048 8.073-2.583 11.128-7.248h-86.45c4.35-7.835 8.002-14.753 12.077-21.412.67-1.096 3.197-1.473 4.868-1.478 30.611-.083 61.226-.291 91.832.113 7.185.094 12.719-2.619 18.321-6.774H61.385c2.592-3.805 4.355-6.546 6.268-9.178 8.88-12.216 8.896-12.209 24.069-12.21q60.991-.002 121.982-.001h5.885c-3.968-4.128-7.007-6.966-12.321-6.944-38.959.165-77.92.09-116.88.09H85.03l-.741-1.31c3.832-3.852 7.564-7.81 11.514-11.537 11.456-10.807 11.495-10.996 27.246-10.717 23.209.411 45.103 6.8 66.234 15.885 5.657 2.432 10.56 3.715 16.604.944 4.726-2.166 10.217-2.664 16.034-3.521-4.411 8.139.887 12.041 5.52 16.414 5.73 5.408 11.223 11.07 16.751 16.688 1.165 1.185 2.035 2.659 3.685 4.857-2.256.128-3.665.274-5.075.275-9.739.008-19.489.286-29.214-.085-28.045-1.07-51.592 9.244-71.602 28.209-7.152 6.778-13.525 14.379-20.212 21.643-.683.742-1.079 1.748-2.209 3.632 33.94-11.926 65.876-27.377 101.589-28.637l.859 1.395c-4.228 4.943-8.188 10.148-12.73 14.783-18.091 18.461-28.905 40.673-33.892 65.773-1.402 7.057-1.306 14.412-2.504 21.941-1.992.248-3.377.184-4.762.121m19.995-91.726c3.865.004 7.763-.315 11.585.09 5.562.589 8.92-2.178 12.525-7.52-9.134 2.152-17.144 4.039-25.139 5.988-.008.002.209.928 1.029 1.442"
|
||||||
d="m 318.98012,441.7375 c -9.87518,-6.73978 -64.39137,-49.0272 -67.68975,-127.81978 -3.69298,-88.21893 15.36468,-141.91029 15.36468,-141.91029 0,0 16.00378,0.99513 39.80316,26.53195 23.79939,25.53753 37.74965,46.43102 37.74965,46.43102 3.91262,-19.79992 12.84563,-66.32402 -60.72865,-87.55523 0,0 12.82326,-5.38883 39.3925,-3.81382 26.56907,1.57572 81.6822,21.93799 81.6822,21.93799 0,0 -14.79766,-20.63773 -49.47063,-34.94295 -34.67291,-14.30533 -76.1182,0.23644 -76.1182,0.23644 0,0 3.86959,-12.43127 27.22669,-26.38478 23.35718,-13.9537 49.27409,-26.501533 49.27409,-26.501533 0,0 -21.97854,-0.26548 -47.67725,8.44535 -6.68948,2.267506 -13.15863,5.094213 -19.05208,8.226563 l 16.05803,-40.634103 -4.4617,-1.89059 -5.1305,-0.95965 c 0,0 -11.24072,33.12428 -16.92051,49.576513 -12.13137,7.68489 -20.11005,14.87735 -20.11005,14.87735 0,0 -21.90573,-25.09227 -42.79668,-35.527803 -26.03412,-13.00525 -86.88249,-13.90359 -94.0044,10.401173 0,0 13.56804,-7.884703 34.70032,-2.080917 21.13214,5.803997 30.3644,9.287307 30.3644,9.287307 l 29.02989,-5.30681 -7.89811,8.95527 c 0,0 13.8496,7.21324 21.33822,13.68063 7.48859,6.46722 10.9757,10.11472 10.9757,10.11472 0,0 -13.02739,-4.39388 -53.03507,-1.40893 -40.00771,2.98473 -79.40016,45.60209 -79.40016,45.60209 0,0 38.57037,-12.93531 61.34393,-17.24677 22.77354,-4.31126 44.52166,-6.46757 44.52166,-6.46757 0,0 -17.23298,5.97003 -35.69792,31.00932 -18.46522,25.03987 -13.13146,64.83866 -13.13146,64.83866 0,0 29.33874,-47.7577 57.44675,-63.84249 28.10798,-16.08527 34.0799,-15.6238 34.0799,-15.6238 0,0 -22.56785,39.13486 -31.39017,101.98268 -8.03005,57.2039 26.77689,163.75449 31.1572,178.89699"
|
id="path2"
|
||||||
sodipodi:nodetypes="cscsccscscscsccccccscscccscscscscscsc"
|
style="fill:#ff7f2a;fill-opacity:1" />
|
||||||
inkscape:label="MainOutline"
|
<path
|
||||||
clip-path="url(#clipPath128)"
|
fill="#bf43f5"
|
||||||
transform="matrix(1.3229974,0,0,1.3214002,-82.687282,-82.278451)" />
|
d="M167.719 257.136c1.79.041 3.175.105 4.979.185.569 3.091.719 6.166.87 9.24l1.623.577c2.3-3.392 4.599-6.785 7.467-10.458 2.456-.382 4.343-.483 6.573-.598 1.405-.133 2.466-.342 3.53-.356 12.08-.162 24.16-.295 36.693-.368 3.463.111 6.473.155 9.484.2-1.12 6.677-2.306 13.345-3.347 20.035-4.715 30.285-5.404 60.697-3.186 91.651-2.469.746-4.517 1.048-6.565 1.35-56.117-.025-112.236-.135-168.353.061-5.334.018-8.298-1.559-10.185-6.415-1.874-4.824-4.295-9.436-6.907-15.069h17.147c53.955 0 107.909.013 161.863-.044 2.026-.002 4.864 1.218 5.327-2.599.469-3.862-1.271-4.625-4.781-4.616-38.803.103-77.607.061-116.411.068-20.405.003-40.811-.065-61.215.125-3.545.033-5.36-1.044-6.324-4.419-1.642-5.75-3.577-11.416-5.879-18.659 65.363-.259 129.677-.027 194.424-.144l.372-6.533c-1.901-.099-3.398-.244-4.896-.245-58.283-.032-116.565-.056-174.848-.06-4.48 0-8.964.279-13.439.163-1.138-.029-3.078-.897-3.247-1.681-1.676-7.766-3.056-15.595-4.624-23.961 8.433 0 15.808-.031 23.182.02 1.998.014 3.995.4 5.992.401 55.964.023 111.928.02 167.892.017 6.075 0 6.307-.256 6.266-7.198H23.431c-.284-6.643-.72-12.739-.592-18.823.016-.786 2.94-2.144 4.53-2.165 15.149-.197 30.3-.177 45.45-.191 17.623-.016 35.248-.072 52.871.018 13.876.07 27.75.335 42.029.491"
|
||||||
|
id="path3"
|
||||||
|
style="fill:#fea265;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
fill="#985ded"
|
||||||
|
d="M225.868 369.021c2.02-.729 4.068-1.031 6.551-1.351 2.672 17.851 4.169 35.853 7.334 53.556 4.047 22.64 9.785 44.94 18.63 66.298.29.699.498 1.433.742 2.142-25.39 10.452-124.622-22.609-146.929-49.453h122.669c.302-4.81-.85-6.915-5.85-6.891-39.883.193-79.768.055-119.652.182-4.441.014-8.036-.845-11.208-4.17-6.87-7.203-13.99-14.166-21.008-21.228l.69-1.319H229.63l-1.24-7.289h-5.726c-42.821 0-85.642.011-128.464-.013-6.18-.003-12.371-.428-18.537-.173-3.704.154-6.14-1.066-8.104-4.073-4.111-6.292-8.367-12.489-13.256-19.755h171.593c0-2.433 0-4.234-.027-6.463m35.103.062c2.442-.418 4.85-.422 7.641-.431.482 1.987.581 3.979.706 6.499H457.62c-3.126 4.951-5.544 8.946-8.123 12.835-7.64 11.521-7.665 11.508-21.226 11.509l-147.5.003h-5.407c-.602 6.688-.15 7.214 5.824 7.214q73.75.004 147.5.004h6.891c-4.048 4.533-7.454 7.812-10.233 11.556-9.047 12.19-20.575 16.124-35.967 15.542-33.039-1.25-66.159-.384-99.246-.384h-5.45c-.275 5.77.583 6.774 5.594 6.776 34.478.012 68.957.006 103.435.007h5.302l.443 1.274c-3.495 2.62-6.91 5.358-10.5 7.842-23.505 16.265-49.192 27.744-76.893 34.696-3.263.819-6.763 1.374-10.069 1.085-1.874-.164-4.144-1.915-5.266-3.597-9.503-14.258-15.474-30.133-21.055-46.227-7.418-21.394-11.59-43.465-14.702-66.203"
|
||||||
|
id="path4"
|
||||||
|
style="fill:#fe8463;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
fill="#ff43c4"
|
||||||
|
d="M360.319 254.985c-3.232.395-6.479.407-10.189.359 2.612-14.328 2.295-28.523-1.162-42.703-4.74-19.439-15.808-34.254-32.502-45.039-.639-.413-1.27-.839-1.852-2.137h52.547l.213-1.506c-7.026-2.665-13.978-5.752-21.733-5.819-15.455-.136-30.914.047-46.369-.12-3.092-.034-6.173-1.044-9.202-2.411 18.374-7.385 37.172-6.583 56.061-3.6 19.128 3.021 35.771 12.957 54.614 20.622l-3.662-6.95c1.846-.148 3.252-.359 4.658-.36 21.485-.021 42.97.048 64.454-.082 3.262-.019 5.062.848 6.121 4.101 2.319 7.128 5.012 14.134 7.891 22.129h-127.22c.144 4.537 2.105 5.796 5.897 5.783q43.588-.154 87.175-.028c10.803.031 21.607.309 32.402.688 1.327.047 3.486 1.183 3.763 2.215 1.549 5.774 2.638 11.671 4.021 18.169H361.127c-.548 6.29-.254 6.61 5.207 6.619 38.949.061 77.898.158 116.847.146 2.863-.001 4.211.672 4.397 3.772.304 5.076.956 10.136 1.609 15.183.414 3.199-.637 4.443-4.005 4.328-6.635-.228-13.283-.105-19.926-.106q-49.152-.005-98.304.001c-6.266.001-6.266.007-6.633 6.746"
|
||||||
|
id="path5"
|
||||||
|
style="fill:#ff7f2a;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
fill="#ff42c3"
|
||||||
|
d="M214.837 27.347c41.832-7.02 81.069-2.12 103 5.453-3.084 7.222-6.153 14.42-9.231 21.612-1.64 3.833-3.549 7.574-4.869 11.513-1.091 3.256-2.992 4.06-6.217 4.042-22.092-.119-44.185-.062-67.454-.062 3.94 4.046 6.873 7.296 12.308 7.245 16.689-.157 33.381-.056 50.072-.055h6.745c-3.661 6.1-6.056 11.84-9.975 16.217-6.139 6.856-13.44 12.659-19.972 19.184-2.516 2.514-3.687 2.416-6.101-.229-9.873-10.813-19.809-21.593-30.196-31.908-11.454-11.376-25.983-16.088-41.742-17.908-14.011-1.618-27.312.965-40.451 5.507a34.7 34.7 0 0 1-9.886 1.86c-7.248.275-14.513.085-21.995-.508 28.501-21.58 60.452-35.31 95.964-41.963m53.746 77.311 3.605-4.283h-11.056c1.525 2.155 2.339 3.846 3.653 4.931.643.531 2.216-.065 3.798-.648"
|
||||||
|
id="path6"
|
||||||
|
style="fill:#63915a;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
fill="#ff44c4"
|
||||||
|
d="M377.152 144.943c-12.092-9.869-26.287-13.386-40.919-15.513-16.956-2.465-33.583-1.51-50.074 5.653.952-1.742 1.722-3.617 2.884-5.206 15.646-21.395 34.923-38.76 58.357-51.192 3.545-1.881 8.365-1.78 12.607-1.849 13.445-.22 26.898-.165 40.345-.002 2.017.024 4.514.652 5.947 1.938 7.01 6.292 13.741 12.894 20.545 19.414.386.37.542.98 1.172 2.175h-5.468c-30.918 0-61.837.116-92.753-.114-5.213-.039-8.095 2.606-11.98 6.969h6.295c35.092-.001 70.184.065 105.275-.091 4.005-.018 6.738 1.186 8.994 4.365 3.728 5.252 7.642 10.372 12.234 16.566h-90.207l-.153 1.134c6.582 2.444 12.387 6.339 20.175 6.183 23.179-.463 46.374-.087 69.561-.245 3.754-.026 6.054 1.177 7.725 4.48 2.979 5.887 6.211 11.646 9.711 18.154-2.304.15-3.753.325-5.203.326-22.415.017-44.831-.042-67.246.074-3.19.016-5.54-.802-7.705-3.211-3.093-3.441-6.561-6.545-10.119-10.008M267.626 255.455a972 972 0 0 1-7.18.028c2.056-26.604 4.319-53.217 12.215-78.952 1.17-3.813 2.458-5.484 6.241-2.773 3.757 2.69 8.105 4.741 11.346 7.934 22.076 21.743 42.878 44.52 56.347 73.308-3.623.356-7.36.406-11.542.092-1.222-4.579-3.365-6.359-8.021-6.284-17.697.286-35.402.122-53.104.126h-6.302zm2.176-30.951h44.834l.519-1.678c-1.826-.906-3.637-2.562-5.479-2.597-12.466-.234-24.937-.104-37.407-.144-2.831-.009-4.108.992-2.467 4.419m10.378-31.312c-3.285-.223-6.209-.007-5.651 4.577h16.788c-2.211-5.078-6.298-4.716-11.137-4.577m-41.043 62.082c-3.21.24-6.22.195-9.566-.301-.214-2.054-.093-3.657.08-5.95-11.47 0-22.329-.006-33.188.003-5.917.004-6.716.761-7.574 7.07-1.888.101-3.775.202-6.063.302 4.551-9.736 8.81-19.906 14.604-29.11 10.304-16.372 21.983-31.76 37.616-43.656 7.217-5.492 15.096-9.592 23.847-11.977 1.13-.308 2.333-.345 4.833-.691-10.43 27.968-18.906 55.583-24.589 84.31m-25.72-36.778c-4.442-.439-5.459 2.888-7.32 6.624 9.882 0 19.096-.135 28.302.061 4.188.089 5.338-1.767 4.777-6.598-8.393 0-16.684 0-25.759-.087m33.855-22.914c-1.112-.66-2.178-1.777-3.343-1.89-2.903-.28-5.86.032-8.779-.147-3.761-.229-5.839 1.749-7.932 5.507 6.203 0 11.685.126 17.15-.12.95-.043 1.829-1.662 2.904-3.35m96.491-154.518c17.922 7.326 34.473 16.35 49.706 28.527-30.671-2.027-59.888 3.402-88.579 15.8.855-4.673 2.395-7.566 6.408-8.806 5.86-1.811 11.674-3.77 17.472-6.488h-16.478c5.867-11.505 11.161-22.041 16.71-32.442.395-.74 2.807-.966 4.029-.597 3.534 1.07 6.939 2.564 10.732 4.006"
|
||||||
|
id="path7"
|
||||||
|
style="fill:#ff7f2a;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-opacity:1"
|
||||||
|
d="m 130,278.4 c 69.2,16 30.4,65.6 30.4,65.6 0,0 -14.8,-92.4 28.8,-46.4 43.6,46 -59.2,-19.2 -59.2,-19.2 z"
|
||||||
|
id="path8" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-opacity:1"
|
||||||
|
d="m 76.08469,213.54625 c 17.819091,7.91959 0.282842,24.32447 22.061731,7.91959 21.778889,-16.40487 53.174429,-48.3661 21.778889,-16.40487 -31.395541,31.96122 -43.84062,8.48528 -43.84062,8.48528 z"
|
||||||
|
id="path9" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-opacity:1"
|
||||||
|
d="m 310.4,292.8 c 36,20.8 16,50.4 40,18.8 24,-31.6 46.8,-57.2 14.8,-33.6 -32,23.6 -54.8,14.8 -54.8,14.8 z"
|
||||||
|
id="path10" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-opacity:1"
|
||||||
|
d="m 380.8,197.2 c 41.6,30.4 18.4,62.8 42,30.4 23.6,-32.4 10,-68.8 23.6,-32.4 13.6,36.4 58,64.4 13.6,36.4 -44.4,-28 -79.2,-34.4 -79.2,-34.4 z"
|
||||||
|
id="path11" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-opacity:1"
|
||||||
|
d="M 99.6,145.2 C 146,120.4 170.4,80.8 146,120.4 121.6,160 121.2,187.6 120.4,159.6 119.6,131.6 99.6,145.2 99.6,145.2 Z"
|
||||||
|
id="path12" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-opacity:1"
|
||||||
|
d="m 166.4,395.2 c 36.4,-34.4 26.8,-68.4 35.2,-32.8 8.4,35.6 -36,4.8 -36,4.8 z"
|
||||||
|
id="path13" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-opacity:1"
|
||||||
|
d="M 325.6,419.2 C 390,378.4 402,310 388.8,379.6 c -13.2,69.6 7.6,39.6 -15.6,67.6 -23.2,28 81.6,-113.2 50,-90.8 -31.6,22.4 -97.6,62.8 -97.6,62.8 z"
|
||||||
|
id="path14" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-opacity:1"
|
||||||
|
d="m 298.11622,232.77955 c 9.33381,30.82986 27.43574,16.68772 9.05097,29.41564 -18.38478,12.72793 -23.19311,44.12347 -17.53625,11.59656 5.65685,-32.52692 8.48528,-41.0122 8.48528,-41.0122 z"
|
||||||
|
id="path15" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-opacity:1"
|
||||||
|
d="M 54.305801,291.32799 C 110.5915,257.10403 141.42136,225.1428 108.89444,258.51824 76.367532,291.89368 96.166522,307.73287 78.913117,291.04515 61.659711,274.35743 54.022958,289.06525 54.022958,289.06525 l 53.174432,-31.1127 z"
|
||||||
|
id="path16" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
BIN
dist/eden.bmp
vendored
|
Before Width: | Height: | Size: 256 KiB |
BIN
dist/eden.icns
vendored
BIN
dist/eden.ico
vendored
|
Before Width: | Height: | Size: 335 KiB After Width: | Height: | Size: 403 KiB |
230
dist/eden.icon/Assets/dev.eden_emu.eden.svg
vendored
|
|
@ -1,230 +0,0 @@
|
||||||
<?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.2026_01_12_14_43_47.0.svg"
|
|
||||||
inkscape:version="1.4.2 (ebf0e94, 2025-05-08)"
|
|
||||||
inkscape:export-filename="base.svg.2026_01_12_14_43_47.0.svg"
|
|
||||||
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">
|
|
||||||
<defs
|
|
||||||
id="defs7">
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient1"
|
|
||||||
inkscape:collect="always">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ff2e88;stop-opacity:0.5;"
|
|
||||||
offset="0"
|
|
||||||
id="stop3" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#bf42f6;stop-opacity:0.5;"
|
|
||||||
offset="0.44631511"
|
|
||||||
id="stop4" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#5da5ed;stop-opacity:0.5;"
|
|
||||||
offset="0.90088946"
|
|
||||||
id="stop2" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient138"
|
|
||||||
inkscape:collect="always">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ff2e88;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop152" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#bf42f6;stop-opacity:1;"
|
|
||||||
offset="0.44971901"
|
|
||||||
id="stop137" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#5da5ed;stop-opacity:1;"
|
|
||||||
offset="0.89793283"
|
|
||||||
id="stop138" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch37"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop37" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch28"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#252525;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop28" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch27"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#000000;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop27" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch15"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop16" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient14"
|
|
||||||
inkscape:swatch="gradient">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop14" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:0;"
|
|
||||||
offset="1"
|
|
||||||
id="stop15" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch9"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop10" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch8"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop9" />
|
|
||||||
</linearGradient>
|
|
||||||
<rect
|
|
||||||
x="22.627417"
|
|
||||||
y="402.76802"
|
|
||||||
width="521.34025"
|
|
||||||
height="248.94868"
|
|
||||||
id="rect24" />
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient11"
|
|
||||||
inkscape:collect="always">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ff2e88;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop11" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#bf42f6;stop-opacity:1;"
|
|
||||||
offset="0.44971901"
|
|
||||||
id="stop154" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#5da5ed;stop-opacity:1;"
|
|
||||||
offset="0.89793283"
|
|
||||||
id="stop12" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient138"
|
|
||||||
id="linearGradient6"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(1.118028,0,0,1.116699,-46.314723,-42.388667)"
|
|
||||||
x1="270.39996"
|
|
||||||
y1="40.000019"
|
|
||||||
x2="270.39996"
|
|
||||||
y2="494.39996"
|
|
||||||
spreadMethod="pad" />
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath18">
|
|
||||||
<circle
|
|
||||||
style="opacity:1;mix-blend-mode:normal;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10.8382;stroke-opacity:0.566238;paint-order:stroke fill markers"
|
|
||||||
id="circle18"
|
|
||||||
cx="-246.8315"
|
|
||||||
cy="246.8338"
|
|
||||||
inkscape:label="Circle"
|
|
||||||
r="191.89999" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath22">
|
|
||||||
<circle
|
|
||||||
style="opacity:1;mix-blend-mode:normal;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10.8382;stroke-opacity:0.566238;paint-order:stroke fill markers"
|
|
||||||
id="circle22"
|
|
||||||
cx="256"
|
|
||||||
cy="256"
|
|
||||||
inkscape:label="Circle"
|
|
||||||
r="191.89999" />
|
|
||||||
</clipPath>
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient11"
|
|
||||||
id="linearGradient27"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="translate(-6.9401139e-5,-2.8678628)"
|
|
||||||
x1="256.00012"
|
|
||||||
y1="102.94693"
|
|
||||||
x2="256.00012"
|
|
||||||
y2="409.05307" />
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath128">
|
|
||||||
<circle
|
|
||||||
style="fill:none;fill-opacity:1;stroke:#03ffff;stroke-width:0;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
id="circle128"
|
|
||||||
cx="256"
|
|
||||||
cy="256"
|
|
||||||
r="192" />
|
|
||||||
</clipPath>
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient1"
|
|
||||||
id="linearGradient2"
|
|
||||||
x1="256"
|
|
||||||
y1="64"
|
|
||||||
x2="256"
|
|
||||||
y2="448"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(1.3229974,0,0,1.3214002,-82.687336,-82.290326)" />
|
|
||||||
</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.4142136"
|
|
||||||
inkscape:cx="261.62951"
|
|
||||||
inkscape:cy="230.87036"
|
|
||||||
inkscape:window-width="1920"
|
|
||||||
inkscape:window-height="1008"
|
|
||||||
inkscape:window-x="1080"
|
|
||||||
inkscape:window-y="351"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="svg7" />
|
|
||||||
<path
|
|
||||||
id="path8-7"
|
|
||||||
style="display:inline;mix-blend-mode:multiply;fill:url(#linearGradient6);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2);stroke-width:3.9666;stroke-dasharray:none;stroke-opacity:0.566238;paint-order:stroke fill markers"
|
|
||||||
inkscape:label="Circle"
|
|
||||||
d="M 256,2.2792898 A 254.0155,253.71401 0 0 0 150.68475,25.115202 c 19.54414,1.070775 38.74692,5.250294 51.56848,11.647658 14.14361,7.056691 28.63804,19.185961 39.4212,29.347551 h 40.60981 c 1.03847,-0.68139 2.10297,-1.36938 3.1938,-2.05957 5.45602,-15.78533 14.79164,-43.183497 19.49612,-57.0097682 A 254.0155,253.71401 0 0 0 256,2.2792898 Z m 61.57106,7.567234 -18.26098,46.1544672 c 7.79702,-4.13918 16.35655,-7.87447 25.20671,-10.87081 23.1229,-7.828433 43.96931,-10.170904 54.94058,-10.868226 A 254.0155,253.71401 0 0 0 317.57106,9.8465238 Z m 65.39277,26.4001532 c -9.68256,4.806644 -33.05532,16.642034 -55.68217,29.863734 H 424.4677 A 254.0155,253.71401 0 0 0 382.96383,36.246677 Z M 113.90698,45.690231 A 254.0155,253.71401 0 0 0 87.532302,66.110411 H 194.2739 c -1.47402,-0.80231 -2.35141,-1.25949 -2.35141,-1.25949 l 10.4496,-11.83348 -38.40568,7.01234 c 0,1e-5 -12.21537,-4.60266 -40.17313,-12.27223 -3.45336,-0.94731 -6.75329,-1.61824 -9.8863,-2.06732 z m -36.803618,30.18635 a 254.0155,253.71401 0 0 0 -34.88372,43.090929 h 59.976738 c 18.11461,-12.04145 40.14252,-22.882149 62.31266,-24.534159 52.93006,-3.9444 70.16538,1.86342 70.16538,1.86342 0,0 -4.612,-4.8206 -14.51938,-13.36656 -2.72366,-2.34942 -6.0844,-4.77373 -9.52455,-7.05363 z m 174.472868,0 c 4.57322,4.7186 7.29716,7.83565 7.29716,7.83565 0,0 3.53501,-3.18484 9.62532,-7.83565 z m 60.27649,0 c -21.56573,15.45339 -25.4703,27.979669 -25.4703,27.979669 0,0 54.83326,-19.215729 100.70543,-0.31228 11.63986,4.79661 21.58481,10.13159 29.94832,15.42354 h 52.74419 A 254.0155,253.71401 0 0 0 434.89664,75.876581 Z M 36.250648,128.73367 A 254.0155,253.71401 0 0 0 16.372095,171.82459 H 147.45478 c 1.45695,-2.5815 3.06539,-5.08648 4.83979,-7.48982 14.23694,-19.28301 27.92088,-30.0088 36.86047,-35.6011 h -30.25323 c -5.87346,0.93472 -12.04945,1.99094 -18.28166,3.16937 -30.12936,5.69727 -81.157618,22.78945 -81.157618,22.78945 0,0 11.47125,-12.39249 29.11369,-25.95882 z m 265.630492,0 c 33.48676,11.2434 52.42799,26.78443 62.7752,43.09092 h 130.97157 a 254.0155,253.71401 0 0 0 -19.87856,-43.09092 h -44.81136 c 14.85233,11.5863 21.59948,20.9854 21.59948,20.9854 0,0 -33.5226,-12.37087 -66.0646,-20.9854 z m -45.96641,16.27007 c -1.00419,0.0106 -10.12705,0.72026 -44.98966,20.64729 -3.12132,1.78406 -6.25434,3.86182 -9.37468,6.17356 h 41.81911 c 7.17181,-17.34774 12.64083,-26.82085 12.64083,-26.82085 0,0 -0.0287,-7.1e-4 -0.0957,0 z m 14.18088,0.0465 c 0,0 -3.31228,9.32762 -7.30492,26.77438 h 51.78554 C 287.6577,146.14158 270.09561,145.0502 270.09561,145.0502 Z M 13.152456,181.59075 A 254.0155,253.71401 0 0 0 3.927651,224.68167 H 134.1447 c 0.56161,-12.72411 2.67825,-28.50188 8.61499,-43.09092 z m 176.661504,0 c -14.27121,13.10564 -27.60733,29.58761 -37.56073,43.09092 h 73.3721 c 4.47018,-16.79061 9.35068,-31.26371 13.86562,-43.09092 z m 70.85787,0 c -2.41384,11.76417 -4.9032,26.20707 -6.94831,43.09092 H 360.4832 c -8.32133,-10.88917 -20.66988,-26.17008 -36.35141,-43.09092 z m 109.17313,0 c 6.63611,15.24089 6.92441,30.5373 5.57882,43.09092 h 132.64857 a 254.0155,253.71401 0 0 0 -9.22481,-43.09092 z M 2.90181,234.44783 A 254.0155,253.71401 0 0 0 1.984498,255.9933 254.0155,253.71401 0 0 0 2.90181,277.53876 h 211.89923 c 2.25762,-15.52555 5.14325,-29.93448 8.3385,-43.09093 h -77.8863 c -6.46396,9.27617 -10.33076,15.56549 -10.33076,15.56549 0,0 -0.82623,-6.14945 -0.9354,-15.56549 z m 249.72093,0 c -1.3692,13.09684 -2.4456,27.49209 -3.02068,43.09093 h 259.49613 a 254.0155,253.71401 0 0 0 0.91731,-21.54546 254.0155,253.71401 0 0 0 -0.91731,-21.54547 H 374.02584 c -0.445,2.5469 -0.90878,4.89768 -1.32817,7.01751 0,0 -1.69726,-2.53821 -4.94056,-7.01751 z M 3.927651,287.30493 a 254.0155,253.71401 0 0 0 9.224805,43.09091 H 214.04393 c -1.29238,-15.40742 -1.57503,-30.04388 -0.41861,-43.09091 z m 245.385009,0 c -0.30355,13.54349 -0.22032,27.92598 0.36951,43.09091 h 249.16537 a 254.0155,253.71401 0 0 0 9.22481,-43.09091 z M 16.369511,340.16201 a 254.0155,253.71401 0 0 0 19.878554,43.09091 H 221.4677 c -2.69781,-14.4523 -4.96108,-29.01285 -6.4832,-43.09091 z m 233.842379,0 c 1.15864,15.47765 3.81286,29.83979 7.51679,43.09091 h 218.02325 a 254.0155,253.71401 0 0 0 19.87856,-43.09091 z M 42.217052,393.01909 a 254.0155,253.71401 0 0 0 34.88372,43.09093 H 233.09561 c -3.40902,-13.67281 -6.76794,-28.2531 -9.73902,-43.09093 z m 218.490958,0 c 5.34985,16.15926 12.22007,30.51982 19.68733,43.09093 h 154.50389 a 254.0155,253.71401 0 0 0 34.88371,-43.09093 z M 87.529722,445.87618 a 254.0155,253.71401 0 0 0 166.229968,63.8208 c -3.67805,-12.0825 -10.85464,-35.49828 -18.18088,-63.8208 z m 199.010328,0 c 17.5887,26.43772 36.99259,43.60598 47.33592,51.61309 a 254.0155,253.71401 0 0 0 90.59431,-51.61309 z" />
|
|
||||||
<path
|
|
||||||
id="path27"
|
|
||||||
style="display:inline;mix-blend-mode:multiply;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient27);stroke-width:3;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
|
|
||||||
d="m 318.98012,441.7375 c -9.87518,-6.73978 -64.39137,-49.0272 -67.68975,-127.81978 -3.69298,-88.21893 15.36468,-141.91029 15.36468,-141.91029 0,0 16.00378,0.99513 39.80316,26.53195 23.79939,25.53753 37.74965,46.43102 37.74965,46.43102 3.91262,-19.79992 12.84563,-66.32402 -60.72865,-87.55523 0,0 12.82326,-5.38883 39.3925,-3.81382 26.56907,1.57572 81.6822,21.93799 81.6822,21.93799 0,0 -14.79766,-20.63773 -49.47063,-34.94295 -34.67291,-14.30533 -76.1182,0.23644 -76.1182,0.23644 0,0 3.86959,-12.43127 27.22669,-26.38478 23.35718,-13.9537 49.27409,-26.501533 49.27409,-26.501533 0,0 -21.97854,-0.26548 -47.67725,8.44535 -6.68948,2.267506 -13.15863,5.094213 -19.05208,8.226563 l 16.05803,-40.634103 -4.4617,-1.89059 -5.1305,-0.95965 c 0,0 -11.24072,33.12428 -16.92051,49.576513 -12.13137,7.68489 -20.11005,14.87735 -20.11005,14.87735 0,0 -21.90573,-25.09227 -42.79668,-35.527803 -26.03412,-13.00525 -86.88249,-13.90359 -94.0044,10.401173 0,0 13.56804,-7.884703 34.70032,-2.080917 21.13214,5.803997 30.3644,9.287307 30.3644,9.287307 l 29.02989,-5.30681 -7.89811,8.95527 c 0,0 13.8496,7.21324 21.33822,13.68063 7.48859,6.46722 10.9757,10.11472 10.9757,10.11472 0,0 -13.02739,-4.39388 -53.03507,-1.40893 -40.00771,2.98473 -79.40016,45.60209 -79.40016,45.60209 0,0 38.57037,-12.93531 61.34393,-17.24677 22.77354,-4.31126 44.52166,-6.46757 44.52166,-6.46757 0,0 -17.23298,5.97003 -35.69792,31.00932 -18.46522,25.03987 -13.13146,64.83866 -13.13146,64.83866 0,0 29.33874,-47.7577 57.44675,-63.84249 28.10798,-16.08527 34.0799,-15.6238 34.0799,-15.6238 0,0 -22.56785,39.13486 -31.39017,101.98268 -8.03005,57.2039 26.77689,163.75449 31.1572,178.89699"
|
|
||||||
sodipodi:nodetypes="cscsccscscscsccccccscscccscscscscscsc"
|
|
||||||
inkscape:label="MainOutline"
|
|
||||||
clip-path="url(#clipPath128)"
|
|
||||||
transform="matrix(1.3229974,0,0,1.3214002,-82.687282,-82.278451)" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 13 KiB |
37
dist/eden.icon/icon.json
vendored
|
|
@ -1,37 +0,0 @@
|
||||||
{
|
|
||||||
"fill" : {
|
|
||||||
"automatic-gradient" : "srgb:0.00000,0.00000,0.00000,1.00000"
|
|
||||||
},
|
|
||||||
"groups" : [
|
|
||||||
{
|
|
||||||
"layers" : [
|
|
||||||
{
|
|
||||||
"fill" : "none",
|
|
||||||
"image-name" : "dev.eden_emu.eden.svg",
|
|
||||||
"name" : "dev.eden_emu.eden",
|
|
||||||
"position" : {
|
|
||||||
"scale" : 1.8,
|
|
||||||
"translation-in-points" : [
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"shadow" : {
|
|
||||||
"kind" : "neutral",
|
|
||||||
"opacity" : 0.5
|
|
||||||
},
|
|
||||||
"translucency" : {
|
|
||||||
"enabled" : true,
|
|
||||||
"value" : 0.5
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"supported-platforms" : {
|
|
||||||
"circles" : [
|
|
||||||
"watchOS"
|
|
||||||
],
|
|
||||||
"squares" : "shared"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
110
dist/eden_named.svg
vendored
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
dist/eden_profile.jpg
vendored
|
Before Width: | Height: | Size: 5 KiB |
289
dist/icon_variations/1an.svg
vendored
|
|
@ -1,289 +0,0 @@
|
||||||
<?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="1stanni.svg"
|
|
||||||
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
|
|
||||||
inkscape:export-filename="base.svg.2026_01_12_14_43_47.0.svg"
|
|
||||||
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">
|
|
||||||
<defs
|
|
||||||
id="defs7">
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient34"
|
|
||||||
inkscape:collect="always">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffd700;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop34" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffd700;stop-opacity:0.48031053;"
|
|
||||||
offset="1"
|
|
||||||
id="stop35" />
|
|
||||||
</linearGradient>
|
|
||||||
<rect
|
|
||||||
x="20.999999"
|
|
||||||
y="287.30493"
|
|
||||||
width="487.07235"
|
|
||||||
height="134.69506"
|
|
||||||
id="rect22" />
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient21"
|
|
||||||
inkscape:collect="always">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#3a0057;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop21" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#830091;stop-opacity:1;"
|
|
||||||
offset="1"
|
|
||||||
id="stop22" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch37"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop37" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch28"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#252525;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop28" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch27"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#000000;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop27" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch15"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop16" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient14"
|
|
||||||
inkscape:swatch="gradient">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop14" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:0;"
|
|
||||||
offset="1"
|
|
||||||
id="stop15" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch9"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop10" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch8"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop9" />
|
|
||||||
</linearGradient>
|
|
||||||
<rect
|
|
||||||
x="22.627417"
|
|
||||||
y="402.76802"
|
|
||||||
width="521.34025"
|
|
||||||
height="248.94868"
|
|
||||||
id="rect24" />
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath18">
|
|
||||||
<circle
|
|
||||||
style="opacity:1;mix-blend-mode:normal;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10.8382;stroke-opacity:0.566238;paint-order:stroke fill markers"
|
|
||||||
id="circle18"
|
|
||||||
cx="-246.8315"
|
|
||||||
cy="246.8338"
|
|
||||||
inkscape:label="Circle"
|
|
||||||
r="191.89999" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath22">
|
|
||||||
<circle
|
|
||||||
style="opacity:1;mix-blend-mode:normal;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10.8382;stroke-opacity:0.566238;paint-order:stroke fill markers"
|
|
||||||
id="circle22"
|
|
||||||
cx="256"
|
|
||||||
cy="256"
|
|
||||||
inkscape:label="Circle"
|
|
||||||
r="191.89999" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath128">
|
|
||||||
<circle
|
|
||||||
style="fill:none;fill-opacity:1;stroke:#03ffff;stroke-width:0;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
id="circle128"
|
|
||||||
cx="256"
|
|
||||||
cy="256"
|
|
||||||
r="192" />
|
|
||||||
</clipPath>
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient21"
|
|
||||||
id="linearGradient22"
|
|
||||||
x1="256"
|
|
||||||
y1="0"
|
|
||||||
x2="256"
|
|
||||||
y2="512"
|
|
||||||
gradientUnits="userSpaceOnUse" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient34"
|
|
||||||
id="linearGradient35"
|
|
||||||
x1="256"
|
|
||||||
y1="-0.048701428"
|
|
||||||
x2="256"
|
|
||||||
y2="512.04932"
|
|
||||||
gradientUnits="userSpaceOnUse" />
|
|
||||||
<filter
|
|
||||||
inkscape:label="Glowing Bubble"
|
|
||||||
inkscape:menu="Ridges"
|
|
||||||
inkscape:menu-tooltip="Bubble effect with refraction and glow"
|
|
||||||
x="-0.19420711"
|
|
||||||
y="-0.11239541"
|
|
||||||
width="1.3884142"
|
|
||||||
height="1.2247908"
|
|
||||||
style="color-interpolation-filters:sRGB;"
|
|
||||||
id="filter61">
|
|
||||||
<feGaussianBlur
|
|
||||||
stdDeviation="1"
|
|
||||||
result="result1"
|
|
||||||
id="feGaussianBlur56" />
|
|
||||||
<feGaussianBlur
|
|
||||||
stdDeviation="10"
|
|
||||||
result="result6"
|
|
||||||
in="result1"
|
|
||||||
id="feGaussianBlur57" />
|
|
||||||
<feComposite
|
|
||||||
operator="atop"
|
|
||||||
in="result6"
|
|
||||||
in2="result1"
|
|
||||||
result="result8"
|
|
||||||
id="feComposite57" />
|
|
||||||
<feComposite
|
|
||||||
operator="xor"
|
|
||||||
result="fbSourceGraphic"
|
|
||||||
in="result6"
|
|
||||||
in2="result8"
|
|
||||||
id="feComposite58" />
|
|
||||||
<feColorMatrix
|
|
||||||
result="fbSourceGraphicAlpha"
|
|
||||||
in="fbSourceGraphic"
|
|
||||||
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 2 0 "
|
|
||||||
id="feColorMatrix58" />
|
|
||||||
<feGaussianBlur
|
|
||||||
result="result0"
|
|
||||||
in="fbSourceGraphicAlpha"
|
|
||||||
stdDeviation="1"
|
|
||||||
id="feGaussianBlur58" />
|
|
||||||
<feSpecularLighting
|
|
||||||
specularExponent="35"
|
|
||||||
specularConstant="1.5"
|
|
||||||
surfaceScale="-2"
|
|
||||||
lighting-color="rgb(255,255,255)"
|
|
||||||
result="result1"
|
|
||||||
in="result0"
|
|
||||||
id="feSpecularLighting58">
|
|
||||||
<feDistantLight
|
|
||||||
azimuth="230"
|
|
||||||
elevation="60"
|
|
||||||
id="feDistantLight58" />
|
|
||||||
</feSpecularLighting>
|
|
||||||
<feComposite
|
|
||||||
operator="in"
|
|
||||||
result="result2"
|
|
||||||
in="result1"
|
|
||||||
in2="fbSourceGraphicAlpha"
|
|
||||||
id="feComposite59" />
|
|
||||||
<feComposite
|
|
||||||
k3="1.2"
|
|
||||||
k2="1.1"
|
|
||||||
operator="arithmetic"
|
|
||||||
result="result4"
|
|
||||||
in="fbSourceGraphic"
|
|
||||||
in2="result2"
|
|
||||||
id="feComposite60" />
|
|
||||||
<feGaussianBlur
|
|
||||||
result="result80"
|
|
||||||
in="result4"
|
|
||||||
stdDeviation="0.5"
|
|
||||||
id="feGaussianBlur60" />
|
|
||||||
<feComposite
|
|
||||||
operator="atop"
|
|
||||||
in="result9"
|
|
||||||
in2="result80"
|
|
||||||
result="result91"
|
|
||||||
id="feComposite61" />
|
|
||||||
<feBlend
|
|
||||||
mode="multiply"
|
|
||||||
in2="result91"
|
|
||||||
id="feBlend61" />
|
|
||||||
</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"
|
|
||||||
inkscape:cx="213.49999"
|
|
||||||
inkscape:cy="248.99999"
|
|
||||||
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(#linearGradient22);fill-opacity:1;stroke:none;stroke-width:8"
|
|
||||||
id="path21"
|
|
||||||
cx="256"
|
|
||||||
cy="256"
|
|
||||||
r="256" />
|
|
||||||
<path
|
|
||||||
id="path8-7"
|
|
||||||
style="display:inline;mix-blend-mode:normal;fill:url(#linearGradient35);fill-opacity:1;fill-rule:nonzero;stroke:#320081;stroke-width:4.067;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
|
||||||
inkscape:label="Circle"
|
|
||||||
d="M 256,2.2792898 A 254.0155,253.71401 0 0 0 150.68475,25.115202 c 19.54414,1.070775 38.74692,5.250294 51.56848,11.647658 14.14361,7.056691 28.63804,19.185961 39.4212,29.347551 h 40.60981 c 1.03847,-0.68139 2.10297,-1.36938 3.1938,-2.05957 5.45602,-15.78533 14.79164,-43.183497 19.49612,-57.0097682 A 254.0155,253.71401 0 0 0 256,2.2792898 Z m 61.57106,7.567234 -18.26098,46.1544672 c 7.79702,-4.13918 16.35655,-7.87447 25.20671,-10.87081 23.1229,-7.828433 43.96931,-10.170904 54.94058,-10.868226 A 254.0155,253.71401 0 0 0 317.57106,9.8465238 Z m 65.39277,26.4001532 c -9.68256,4.806644 -33.05532,16.642034 -55.68217,29.863734 H 424.4677 A 254.0155,253.71401 0 0 0 382.96383,36.246677 Z M 113.90698,45.690231 A 254.0155,253.71401 0 0 0 87.532302,66.110411 H 194.2739 c -1.47402,-0.80231 -2.35141,-1.25949 -2.35141,-1.25949 l 10.4496,-11.83348 -38.40568,7.01234 c 0,1e-5 -12.21537,-4.60266 -40.17313,-12.27223 -3.45336,-0.94731 -6.75329,-1.61824 -9.8863,-2.06732 z m -36.803618,30.18635 a 254.0155,253.71401 0 0 0 -34.88372,43.090929 h 59.976738 c 18.11461,-12.04145 40.14252,-22.882149 62.31266,-24.534159 52.93006,-3.9444 70.16538,1.86342 70.16538,1.86342 0,0 -4.612,-4.8206 -14.51938,-13.36656 -2.72366,-2.34942 -6.0844,-4.77373 -9.52455,-7.05363 z m 174.472868,0 c 4.57322,4.7186 7.29716,7.83565 7.29716,7.83565 0,0 3.53501,-3.18484 9.62532,-7.83565 z m 60.27649,0 c -21.56573,15.45339 -25.4703,27.979669 -25.4703,27.979669 0,0 54.83326,-19.215729 100.70543,-0.31228 11.63986,4.79661 21.58481,10.13159 29.94832,15.42354 h 52.74419 A 254.0155,253.71401 0 0 0 434.89664,75.876581 Z M 36.250648,128.73367 A 254.0155,253.71401 0 0 0 16.372095,171.82459 H 147.45478 c 1.45695,-2.5815 3.06539,-5.08648 4.83979,-7.48982 14.23694,-19.28301 27.92088,-30.0088 36.86047,-35.6011 h -30.25323 c -5.87346,0.93472 -12.04945,1.99094 -18.28166,3.16937 -30.12936,5.69727 -81.157618,22.78945 -81.157618,22.78945 0,0 11.47125,-12.39249 29.11369,-25.95882 z m 265.630492,0 c 33.48676,11.2434 52.42799,26.78443 62.7752,43.09092 h 130.97157 a 254.0155,253.71401 0 0 0 -19.87856,-43.09092 h -44.81136 c 14.85233,11.5863 21.59948,20.9854 21.59948,20.9854 0,0 -33.5226,-12.37087 -66.0646,-20.9854 z m -45.96641,16.27007 c -1.00419,0.0106 -10.12705,0.72026 -44.98966,20.64729 -3.12132,1.78406 -6.25434,3.86182 -9.37468,6.17356 h 41.81911 c 7.17181,-17.34774 12.64083,-26.82085 12.64083,-26.82085 0,0 -0.0287,-7.1e-4 -0.0957,0 z m 14.18088,0.0465 c 0,0 -3.31228,9.32762 -7.30492,26.77438 h 51.78554 C 287.6577,146.14158 270.09561,145.0502 270.09561,145.0502 Z M 13.152456,181.59075 A 254.0155,253.71401 0 0 0 3.927651,224.68167 H 134.1447 c 0.56161,-12.72411 2.67825,-28.50188 8.61499,-43.09092 z m 176.661504,0 c -14.27121,13.10564 -27.60733,29.58761 -37.56073,43.09092 h 73.3721 c 4.47018,-16.79061 9.35068,-31.26371 13.86562,-43.09092 z m 70.85787,0 c -2.41384,11.76417 -4.9032,26.20707 -6.94831,43.09092 H 360.4832 c -8.32133,-10.88917 -20.66988,-26.17008 -36.35141,-43.09092 z m 109.17313,0 c 6.63611,15.24089 6.92441,30.5373 5.57882,43.09092 h 132.64857 a 254.0155,253.71401 0 0 0 -9.22481,-43.09092 z M 2.90181,234.44783 A 254.0155,253.71401 0 0 0 1.984498,255.9933 254.0155,253.71401 0 0 0 2.90181,277.53876 h 211.89923 c 2.25762,-15.52555 5.14325,-29.93448 8.3385,-43.09093 h -77.8863 c -6.46396,9.27617 -10.33076,15.56549 -10.33076,15.56549 0,0 -0.82623,-6.14945 -0.9354,-15.56549 z m 249.72093,0 c -1.3692,13.09684 -2.4456,27.49209 -3.02068,43.09093 h 259.49613 a 254.0155,253.71401 0 0 0 0.91731,-21.54546 254.0155,253.71401 0 0 0 -0.91731,-21.54547 H 374.02584 c -0.445,2.5469 -0.90878,4.89768 -1.32817,7.01751 0,0 -1.69726,-2.53821 -4.94056,-7.01751 z M 3.927651,287.30493 a 254.0155,253.71401 0 0 0 9.224805,43.09091 H 214.04393 c -1.29238,-15.40742 -1.57503,-30.04388 -0.41861,-43.09091 z m 245.385009,0 c -0.30355,13.54349 -0.22032,27.92598 0.36951,43.09091 h 249.16537 a 254.0155,253.71401 0 0 0 9.22481,-43.09091 z M 16.369511,340.16201 a 254.0155,253.71401 0 0 0 19.878554,43.09091 H 221.4677 c -2.69781,-14.4523 -4.96108,-29.01285 -6.4832,-43.09091 z m 233.842379,0 c 1.15864,15.47765 3.81286,29.83979 7.51679,43.09091 h 218.02325 a 254.0155,253.71401 0 0 0 19.87856,-43.09091 z M 42.217052,393.01909 a 254.0155,253.71401 0 0 0 34.88372,43.09093 H 233.09561 c -3.40902,-13.67281 -6.76794,-28.2531 -9.73902,-43.09093 z m 218.490958,0 c 5.34985,16.15926 12.22007,30.51982 19.68733,43.09093 h 154.50389 a 254.0155,253.71401 0 0 0 34.88371,-43.09093 z M 87.529722,445.87618 a 254.0155,253.71401 0 0 0 166.229968,63.8208 c -3.67805,-12.0825 -10.85464,-35.49828 -18.18088,-63.8208 z m 199.010328,0 c 17.5887,26.43772 36.99259,43.60598 47.33592,51.61309 a 254.0155,253.71401 0 0 0 90.59431,-51.61309 z" />
|
|
||||||
<path
|
|
||||||
id="path27"
|
|
||||||
style="display:inline;mix-blend-mode:multiply;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
|
|
||||||
d="m 318.98012,441.7375 c -9.87518,-6.73978 -64.39137,-49.0272 -67.68975,-127.81978 -3.69298,-88.21893 15.36468,-141.91029 15.36468,-141.91029 0,0 16.00378,0.99513 39.80316,26.53195 23.79939,25.53753 37.74965,46.43102 37.74965,46.43102 3.91262,-19.79992 12.84563,-66.32402 -60.72865,-87.55523 0,0 12.82326,-5.38883 39.3925,-3.81382 26.56907,1.57572 81.6822,21.93799 81.6822,21.93799 0,0 -14.79766,-20.63773 -49.47063,-34.94295 -34.67291,-14.30533 -76.1182,0.23644 -76.1182,0.23644 0,0 3.86959,-12.43127 27.22669,-26.38478 23.35718,-13.9537 49.27409,-26.501533 49.27409,-26.501533 0,0 -21.97854,-0.26548 -47.67725,8.44535 -6.68948,2.267506 -13.15863,5.094213 -19.05208,8.226563 l 16.05803,-40.634103 -4.4617,-1.89059 -5.1305,-0.95965 c 0,0 -11.24072,33.12428 -16.92051,49.576513 -12.13137,7.68489 -20.11005,14.87735 -20.11005,14.87735 0,0 -21.90573,-25.09227 -42.79668,-35.527803 -26.03412,-13.00525 -86.88249,-13.90359 -94.0044,10.401173 0,0 13.56804,-7.884703 34.70032,-2.080917 21.13214,5.803997 30.3644,9.287307 30.3644,9.287307 l 29.02989,-5.30681 -7.89811,8.95527 c 0,0 13.8496,7.21324 21.33822,13.68063 7.48859,6.46722 10.9757,10.11472 10.9757,10.11472 0,0 -13.02739,-4.39388 -53.03507,-1.40893 -40.00771,2.98473 -79.40016,45.60209 -79.40016,45.60209 0,0 38.57037,-12.93531 61.34393,-17.24677 22.77354,-4.31126 44.52166,-6.46757 44.52166,-6.46757 0,0 -17.23298,5.97003 -35.69792,31.00932 -18.46522,25.03987 -13.13146,64.83866 -13.13146,64.83866 0,0 29.33874,-47.7577 57.44675,-63.84249 28.10798,-16.08527 34.0799,-15.6238 34.0799,-15.6238 0,0 -22.56785,39.13486 -31.39017,101.98268 -8.03005,57.2039 26.77689,163.75449 31.1572,178.89699"
|
|
||||||
sodipodi:nodetypes="cscsccscscscsccccccscscccscscscscscsc"
|
|
||||||
inkscape:label="MainOutline"
|
|
||||||
clip-path="url(#clipPath128)"
|
|
||||||
transform="matrix(1.3229974,0,0,1.3214002,-82.687282,-82.278451)" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 14 KiB |
1
dist/icon_variations/1an_bgcolor
vendored
|
|
@ -1 +0,0 @@
|
||||||
#ffd700
|
|
||||||
144
dist/icon_variations/2025.svg
vendored
|
|
@ -1,144 +0,0 @@
|
||||||
<?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>
|
|
||||||
|
Before Width: | Height: | Size: 6.9 KiB |
9
dist/icon_variations/README.md
vendored
|
|
@ -1,9 +0,0 @@
|
||||||
# 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 (deprecated).
|
|
||||||
- `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.
|
|
||||||
89
dist/icon_variations/aprilfools2026.svg
vendored
|
Before Width: | Height: | Size: 19 KiB |
1
dist/icon_variations/aprilfools2026_bgcolor
vendored
|
|
@ -1 +0,0 @@
|
||||||
#43fcfcff
|
|
||||||
231
dist/icon_variations/base.svg
vendored
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 9.2 KiB |
1
dist/icon_variations/base_bgcolor
vendored
|
|
@ -1 +0,0 @@
|
||||||
#1F143C
|
|
||||||
81
dist/icon_variations/base_named.svg
vendored
Normal file
|
After Width: | Height: | Size: 37 KiB |
110
dist/icon_variations/halloween2025_named.svg
vendored
Normal file
|
After Width: | Height: | Size: 39 KiB |
672
dist/icon_variations/newyear2025.svg
vendored
|
|
@ -1,672 +0,0 @@
|
||||||
<?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>
|
|
||||||
|
Before Width: | Height: | Size: 21 KiB |
1
dist/icon_variations/newyear2025_bgcolor
vendored
|
|
@ -1 +0,0 @@
|
||||||
#1F143C
|
|
||||||
1
dist/icon_variations/original.svg
vendored
|
Before Width: | Height: | Size: 9.2 KiB |