Compare commits
No commits in common. "master" and "v0.0.3.git" have entirely different histories.
master
...
v0.0.3.git
|
|
@ -1,137 +1,21 @@
|
||||||
#!/bin/sh -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
# SPDX-FileCopyrightText: 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 assembleRelease
|
||||||
|
./gradlew bundleRelease
|
||||||
|
|
||||||
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}/"
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 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}/"
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
#!/usr/bin/ruby
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
license_header = <<~EOF
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
EOF
|
||||||
|
|
||||||
|
print 'Getting branch changes...'
|
||||||
|
branch_name = `git rev-parse --abbrev-ref HEAD`.chomp
|
||||||
|
branch_commits = `git log #{branch_name} --not master --pretty=format:"%h"`.split("\n")
|
||||||
|
branch_commit_range = "#{branch_commits[-1]}^..#{branch_commits[0]}"
|
||||||
|
branch_changed_files = `git diff-tree --no-commit-id --name-only #{branch_commit_range} -r`.split("\n")
|
||||||
|
puts 'done'
|
||||||
|
|
||||||
|
print 'Checking files...'
|
||||||
|
issue_files = []
|
||||||
|
branch_changed_files.each do |file_name|
|
||||||
|
if file_name.end_with?('.cpp', '.h', '.kt', '.kts') and File.file?(file_name)
|
||||||
|
file_content = File.read(file_name)
|
||||||
|
if not file_content.start_with?(license_header)
|
||||||
|
issue_files.push(file_name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
puts 'done'
|
||||||
|
|
||||||
|
if issue_files.empty?
|
||||||
|
puts "\nAll changed files have correct headers"
|
||||||
|
exit 0
|
||||||
|
end
|
||||||
|
|
||||||
|
puts <<-EOF
|
||||||
|
|
||||||
|
The following #{issue_files.length} files have incorrect license headers:
|
||||||
|
#{issue_files.join("\n")}
|
||||||
|
|
||||||
|
The following license header should be added to the start of all offending files:
|
||||||
|
=== BEGIN ===
|
||||||
|
#{license_header}
|
||||||
|
=== END ===
|
||||||
|
|
||||||
|
If some of the code in this PR is not being contributed by the original author, the files which have been exclusively changed by that code can be ignored.
|
||||||
|
If this happens, this PR requirement can be bypassed once all other files are addressed.
|
||||||
|
EOF
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
|
@ -1,248 +1,86 @@
|
||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
HEADER="$(cat "$PWD/.ci/license/header.txt")"
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# specify full path if dupes may exist
|
echo "Getting branch changes"
|
||||||
EXCLUDE_FILES="CPM.cmake CPMUtil.cmake GetSCMRev.cmake renderdoc_app.h tools/cpm tools/shellcheck.sh tools/update-cpm.sh tools/windows/vcvarsall.sh externals/stb externals/glad externals/getopt externals/gamemode externals/FidelityFX-FSR externals/demangle externals/bc_decoder externals/cmake-modules"
|
|
||||||
|
|
||||||
# license header constants, please change when needed :))))
|
BRANCH=`git rev-parse --abbrev-ref HEAD`
|
||||||
YEAR=2026
|
COMMITS=`git log ${BRANCH} --not master --pretty=format:"%h"`
|
||||||
HOLDER="Eden Emulator Project"
|
RANGE="${COMMITS[${#COMMITS[@]}-1]}^..${COMMITS[0]}"
|
||||||
LICENSE="GPL-3.0-or-later"
|
FILES=`git diff-tree --no-commit-id --name-only ${RANGE} -r`
|
||||||
|
|
||||||
usage() {
|
#FILES=$(git diff --name-only master)
|
||||||
cat << EOF
|
|
||||||
Usage: $0 [uc]
|
|
||||||
Compares the current HEAD to the master branch to check for license
|
|
||||||
header discrepancies. Each file changed in a branch MUST have a
|
|
||||||
license header, and this script attempts to enforce that.
|
|
||||||
|
|
||||||
Options:
|
echo "Done"
|
||||||
-u, --update Fix license headers, if applicable;
|
|
||||||
if the license header exists but has the incorrect
|
|
||||||
year or is otherwise malformed, it will be fixed.
|
|
||||||
|
|
||||||
-c, --commit Commit changes to Git (requires --update)
|
|
||||||
|
|
||||||
Copyright $YEAR $HOLDER
|
|
||||||
Licensed under $LICENSE
|
|
||||||
|
|
||||||
The following files/directories are marked as external
|
|
||||||
and thus will not have license headers asserted:
|
|
||||||
EOF
|
|
||||||
|
|
||||||
for file in $EXCLUDE_FILES; do
|
|
||||||
echo "- $file"
|
|
||||||
done
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
while true; do
|
|
||||||
case "$1" in
|
|
||||||
(-u|--update) UPDATE=true ;;
|
|
||||||
(-c|--commit) UPDATE=true; COMMIT=true ;;
|
|
||||||
("$0") break ;;
|
|
||||||
("") break ;;
|
|
||||||
(*) usage ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
# human-readable header string
|
|
||||||
header() {
|
|
||||||
header_line1 "$1"
|
|
||||||
header_line2 "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
header_line1() {
|
|
||||||
echo "$1 SPDX-FileCopyrightText: Copyright $YEAR $HOLDER"
|
|
||||||
}
|
|
||||||
|
|
||||||
header_line2() {
|
|
||||||
echo "$1 SPDX-License-Identifier: $LICENSE"
|
|
||||||
}
|
|
||||||
|
|
||||||
check_header() {
|
|
||||||
begin="$1"
|
|
||||||
file="$2"
|
|
||||||
|
|
||||||
# separate things out as spaces to make our lives 100000000x easier
|
|
||||||
content="$(head -n5 < "$2" | tr '\n' ' ')"
|
|
||||||
|
|
||||||
line1="$(header_line1 "$begin")"
|
|
||||||
line2="$(header_line2 "$begin")"
|
|
||||||
|
|
||||||
# perl and awk are actually awful, so to avoid this problem we avoid it by avoiding it
|
|
||||||
if ! echo "$content" | grep -o "$line1 $line2" >/dev/null; then
|
|
||||||
# SRC_FILES is Kotlin/C++
|
|
||||||
# OTHER_FILES is sh, CMake
|
|
||||||
case "$begin" in
|
|
||||||
"//")
|
|
||||||
SRC_FILES="$SRC_FILES $file"
|
|
||||||
;;
|
|
||||||
"#")
|
|
||||||
OTHER_FILES="$OTHER_FILES $file"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
BASE=$(git merge-base master HEAD)
|
|
||||||
FILES=$(git diff --name-only "$BASE")
|
|
||||||
|
|
||||||
for file in $FILES; do
|
for file in $FILES; do
|
||||||
[ -f "$file" ] || continue
|
[ -f "$file" ] || continue
|
||||||
|
|
||||||
# skip files that are third party (crueter's CMake modules, sse2neon, etc)
|
EXTENSION="${file##*.}"
|
||||||
for pattern in $EXCLUDE_FILES; do
|
case "$EXTENSION" in
|
||||||
case "$file" in
|
kts|kt|cpp|h)
|
||||||
*"$pattern"*)
|
CONTENT="`cat $file`"
|
||||||
excluded=true
|
case "$CONTENT" in
|
||||||
break
|
"$HEADER"*) ;;
|
||||||
;;
|
*) BAD_FILES="$BAD_FILES $file" ;;
|
||||||
*)
|
esac
|
||||||
excluded=false
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
|
||||||
|
|
||||||
[ "$excluded" = "true" ] && continue
|
|
||||||
|
|
||||||
case "$file" in
|
|
||||||
*.cmake|*.sh|*CMakeLists.txt)
|
|
||||||
begin="#"
|
|
||||||
;;
|
|
||||||
*.kt*|*.cpp|*.h)
|
|
||||||
begin="//"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
continue
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
check_header "$begin" "$file"
|
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ -z "$SRC_FILES" ] && [ -z "$OTHER_FILES" ]; then
|
if [ "$BAD_FILES" = "" ]; then
|
||||||
echo "-- All good."
|
echo
|
||||||
|
echo "All good."
|
||||||
|
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo "The following files have incorrect license headers:"
|
||||||
echo
|
echo
|
||||||
|
|
||||||
if [ "$SRC_FILES" != "" ]; then
|
for file in $BAD_FILES; do echo $file; done
|
||||||
echo "-- The following source files have incorrect license headers:"
|
|
||||||
|
|
||||||
HEADER=$(header "//")
|
|
||||||
|
|
||||||
for file in $SRC_FILES; do echo "-- * $file"; done
|
|
||||||
|
|
||||||
cat << EOF
|
|
||||||
|
|
||||||
-- The following license header should be added to the start of these offending files:
|
|
||||||
|
|
||||||
=== BEGIN ===
|
|
||||||
$HEADER
|
|
||||||
=== END ===
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$OTHER_FILES" != "" ]; then
|
|
||||||
echo "-- The following CMake and shell scripts have incorrect license headers:"
|
|
||||||
|
|
||||||
HEADER=$(header "#")
|
|
||||||
|
|
||||||
for file in $OTHER_FILES; do echo "-- * $file"; done
|
|
||||||
|
|
||||||
cat << EOF
|
|
||||||
|
|
||||||
-- The following license header should be added to the start of these offending files:
|
|
||||||
|
|
||||||
=== BEGIN ===
|
|
||||||
$HEADER
|
|
||||||
=== END ===
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat << EOF
|
cat << EOF
|
||||||
If some of the code in this PR is not being contributed by the original author,
|
|
||||||
the files which have been exclusively changed by that code can be ignored.
|
|
||||||
If this happens, this PR requirement can be bypassed once all other files are addressed.
|
|
||||||
|
|
||||||
|
The following license header should be added to the start of all offending files:
|
||||||
|
|
||||||
|
=== BEGIN ===
|
||||||
|
$HEADER
|
||||||
|
=== END ===
|
||||||
|
|
||||||
|
If some of the code in this PR is not being contributed by the original author,
|
||||||
|
the files which have been exclusively changed by that code can be ignored.
|
||||||
|
If this happens, this PR requirement can be bypassed once all other files are addressed.
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if [ "$UPDATE" = "true" ]; then
|
if [ "$FIX" = "true" ]; then
|
||||||
TMP_DIR=$(mktemp -d)
|
echo
|
||||||
echo "-- Fixing headers..."
|
echo "FIX set to true. Fixing headers."
|
||||||
|
echo
|
||||||
|
|
||||||
for file in $SRC_FILES $OTHER_FILES; do
|
for file in $BAD_FILES; do
|
||||||
case $(basename -- "$file") in
|
cat $file > $file.bak
|
||||||
*.cmake|*CMakeLists.txt)
|
|
||||||
begin="#"
|
|
||||||
shell="false"
|
|
||||||
;;
|
|
||||||
*.sh)
|
|
||||||
begin="#"
|
|
||||||
shell=true
|
|
||||||
;;
|
|
||||||
*.kt*|*.cpp|*.h)
|
|
||||||
begin="//"
|
|
||||||
shell="false"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# This is fun
|
cat .ci/license/header.txt > $file
|
||||||
match="$begin SPDX-FileCopyrightText.*$HOLDER"
|
echo >> $file
|
||||||
|
cat $file.bak >> $file
|
||||||
|
|
||||||
# basically if the copyright holder is already defined we can just replace the year
|
rm $file.bak
|
||||||
if head -n5 < "$file" | grep -e "$match" >/dev/null; then
|
|
||||||
replace=$(header_line1 "$begin")
|
|
||||||
sed "s|$match|$replace|" "$file" > "$file".bak
|
|
||||||
mv "$file".bak "$file"
|
|
||||||
else
|
|
||||||
header "$begin" > "$TMP_DIR"/header
|
|
||||||
|
|
||||||
if [ "$shell" = "true" ]; then
|
git add $file
|
||||||
# grab shebang
|
|
||||||
head -n1 "$file" > "$TMP_DIR/shebang"
|
|
||||||
echo >> "$TMP_DIR/shebang"
|
|
||||||
|
|
||||||
# remove shebang
|
|
||||||
sed '1d' "$file" > "$file".bak
|
|
||||||
mv "$file".bak "$file"
|
|
||||||
|
|
||||||
# add to header
|
|
||||||
cat "$TMP_DIR"/shebang "$TMP_DIR"/header > "$TMP_DIR"/new-header
|
|
||||||
mv "$TMP_DIR"/new-header "$TMP_DIR"/header
|
|
||||||
else
|
|
||||||
echo >> "$TMP_DIR/header"
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat "$TMP_DIR"/header "$file" > "$file".bak
|
|
||||||
mv "$file".bak "$file"
|
|
||||||
fi
|
|
||||||
|
|
||||||
[ "$shell" = "true" ] && chmod a+x "$file"
|
|
||||||
[ "$COMMIT" = "true" ] && git add "$file"
|
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "-- Done"
|
echo "License headers fixed."
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$COMMIT" = "true" ]; then
|
if [ "$COMMIT" = "true" ]; then
|
||||||
echo "-- Committing changes"
|
echo
|
||||||
|
echo "COMMIT set to true. Committing changes."
|
||||||
|
echo
|
||||||
|
|
||||||
git commit -m "Fix license headers"
|
git commit -m "Fix license headers"
|
||||||
|
|
||||||
echo "-- Changes committed. You may now push."
|
echo "Changes committed. You may now push."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -d "$TMP_DIR" ] && rm -rf "$TMP_DIR"
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,2 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2025 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
|
||||||
|
|
||||||
#include "qt_progress_dialog.h"
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
# SPDX-FileCopyrightText: 2025 eden Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
|
|
@ -67,9 +67,8 @@ else
|
||||||
export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DYUZU_USE_PRECOMPILED_HEADERS=OFF)
|
export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DYUZU_USE_PRECOMPILED_HEADERS=OFF)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
if [ "$DEVEL" != "true" ]; then
|
if [ "$DEVEL" != "true" ]; then
|
||||||
export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DENABLE_UPDATE_CHECKER=ON)
|
export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DENABLE_QT_UPDATE_CHECKER=ON)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$USE_WEBENGINE" = "true" ]; then
|
if [ "$USE_WEBENGINE" = "true" ]; then
|
||||||
|
|
@ -104,7 +103,7 @@ cmake .. -G Ninja \
|
||||||
-DYUZU_USE_QT_MULTIMEDIA=$MULTIMEDIA \
|
-DYUZU_USE_QT_MULTIMEDIA=$MULTIMEDIA \
|
||||||
-DYUZU_USE_QT_WEB_ENGINE=$WEBENGINE \
|
-DYUZU_USE_QT_WEB_ENGINE=$WEBENGINE \
|
||||||
-DYUZU_USE_FASTER_LD=ON \
|
-DYUZU_USE_FASTER_LD=ON \
|
||||||
-DENABLE_LTO=ON \
|
-DYUZU_ENABLE_LTO=ON \
|
||||||
"${EXTRA_CMAKE_FLAGS[@]}"
|
"${EXTRA_CMAKE_FLAGS[@]}"
|
||||||
|
|
||||||
ninja -j${NPROC}
|
ninja -j${NPROC}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
# SPDX-FileCopyrightText: 2025 eden Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# This script assumes you're in the source directory
|
# This script assumes you're in the source directory
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
for i in dist/languages/*.ts; do
|
||||||
|
SRC=en_US
|
||||||
|
TARGET=`head -n1 $i | awk -F 'language="' '{split($2, a, "\""); print a[1]}'`
|
||||||
|
|
||||||
|
# requires fd
|
||||||
|
SOURCES=`fd . src/yuzu -tf -e ui -e cpp -e h -e plist`
|
||||||
|
|
||||||
|
lupdate -source-language $SRC -target-language $TARGET $SOURCES -ts /data/code/eden/$i
|
||||||
|
done
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/sh -e
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2025 eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
which png2icns || [ which yay && yay libicns ] || exit
|
||||||
|
which magick || exit
|
||||||
|
|
||||||
|
export EDEN_SVG_ICO="dist/dev.eden_emu.eden.svg"
|
||||||
|
svgo --multipass $EDEN_SVG_ICO
|
||||||
|
|
||||||
|
magick -density 256x256 -background transparent $EDEN_SVG_ICO \
|
||||||
|
-define icon:auto-resize -colors 256 dist/eden.ico || exit
|
||||||
|
convert -density 256x256 -resize 256x256 -background transparent $EDEN_SVG_ICO \
|
||||||
|
dist/yuzu.bmp || exit
|
||||||
|
|
||||||
|
export TMP_PNG="dist/eden-tmp.png"
|
||||||
|
magick -size 1024x1024 -background transparent $EDEN_SVG_ICO $TMP_PNG || exit
|
||||||
|
png2icns dist/eden.icns $TMP_PNG || exit
|
||||||
|
cp dist/eden.icns dist/yuzu.icns
|
||||||
|
rm $TMP_PNG
|
||||||
|
|
@ -1,44 +1,58 @@
|
||||||
#!/bin/bash -ex
|
#!/bin/bash -e
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
# SPDX-FileCopyrightText: 2025 eden Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
if [ "$COMPILER" == "clang" ]
|
if [ "$DEVEL" != "true" ]; then
|
||||||
then
|
export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DENABLE_QT_UPDATE_CHECKER=ON)
|
||||||
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
|
fi
|
||||||
|
|
||||||
[ -z "$WINDEPLOYQT" ] && { echo "WINDEPLOYQT environment variable required."; exit 1; }
|
if [ "$CCACHE" = "true" ]; then
|
||||||
|
export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DUSE_CCACHE=ON)
|
||||||
|
fi
|
||||||
|
|
||||||
echo $EXTRA_CMAKE_FLAGS
|
if [ "$BUNDLE_QT" = "true" ]; then
|
||||||
|
export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DYUZU_USE_BUNDLED_QT=ON)
|
||||||
|
else
|
||||||
|
export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DYUZU_USE_BUNDLED_QT=OFF)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$BUILD_TYPE" ]; then
|
||||||
|
export BUILD_TYPE="Release"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$WINDEPLOYQT" == "" ]; then
|
||||||
|
echo "You must supply the WINDEPLOYQT environment variable."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$USE_WEBENGINE" = "true" ]; then
|
||||||
|
WEBENGINE=ON
|
||||||
|
else
|
||||||
|
WEBENGINE=OFF
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$USE_MULTIMEDIA" = "false" ]; then
|
||||||
|
MULTIMEDIA=OFF
|
||||||
|
else
|
||||||
|
MULTIMEDIA=ON
|
||||||
|
fi
|
||||||
|
|
||||||
|
export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" $@)
|
||||||
|
|
||||||
mkdir -p build && cd build
|
mkdir -p build && cd build
|
||||||
cmake .. -G Ninja \
|
cmake .. -G Ninja \
|
||||||
-DCMAKE_BUILD_TYPE="${BUILD_TYPE:-Release}" \
|
-DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
|
||||||
-DENABLE_QT_TRANSLATION=ON \
|
-DENABLE_QT_TRANSLATION=ON \
|
||||||
-DUSE_DISCORD_PRESENCE=ON \
|
-DUSE_DISCORD_PRESENCE=ON \
|
||||||
-DYUZU_USE_BUNDLED_SDL2=ON \
|
-DYUZU_USE_BUNDLED_SDL2=ON \
|
||||||
-DBUILD_TESTING=OFF \
|
|
||||||
-DYUZU_TESTS=OFF \
|
-DYUZU_TESTS=OFF \
|
||||||
-DDYNARMIC_TESTS=OFF \
|
|
||||||
-DYUZU_CMD=OFF \
|
-DYUZU_CMD=OFF \
|
||||||
-DYUZU_ROOM_STANDALONE=OFF \
|
-DYUZU_ROOM_STANDALONE=OFF \
|
||||||
-DYUZU_USE_QT_MULTIMEDIA=${USE_MULTIMEDIA:-false} \
|
-DYUZU_USE_QT_MULTIMEDIA=$MULTIMEDIA \
|
||||||
-DYUZU_USE_QT_WEB_ENGINE=${USE_WEBENGINE:-false} \
|
-DYUZU_USE_QT_WEB_ENGINE=$WEBENGINE \
|
||||||
-DENABLE_LTO=ON \
|
-DYUZU_ENABLE_LTO=ON \
|
||||||
-DCMAKE_EXE_LINKER_FLAGS=" /LTCG" \
|
"${EXTRA_CMAKE_FLAGS[@]}"
|
||||||
-DYUZU_USE_BUNDLED_QT=${BUNDLE_QT:-false} \
|
|
||||||
-DUSE_CCACHE=${CCACHE:-false} \
|
|
||||||
-DENABLE_UPDATE_CHECKER=${DEVEL:-true} \
|
|
||||||
"${EXTRA_CMAKE_FLAGS[@]}" \
|
|
||||||
"$@"
|
|
||||||
|
|
||||||
ninja
|
ninja
|
||||||
|
|
||||||
|
|
@ -47,5 +61,4 @@ rm -f bin/*.pdb
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
$WINDEPLOYQT --release --no-compiler-runtime --no-opengl-sw --no-system-dxc-compiler --no-system-d3d-compiler --dir pkg bin/eden.exe
|
$WINDEPLOYQT --release --no-compiler-runtime --no-opengl-sw --no-system-dxc-compiler --no-system-d3d-compiler --dir pkg bin/eden.exe
|
||||||
|
|
||||||
cp bin/* pkg
|
cp bin/* pkg
|
||||||
|
|
|
||||||
|
|
@ -1,43 +1,19 @@
|
||||||
# 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
|
$VulkanSDKVer = "1.4.321.1"
|
||||||
try {
|
$ExeFile = "vulkansdk-windows-X64-$VulkanSDKVer.exe"
|
||||||
net session 1>$null 2>$null
|
$Uri = "https://sdk.lunarg.com/sdk/download/$VulkanSDKVer/windows/$ExeFile"
|
||||||
} catch {
|
|
||||||
Write-Host "This script must be run with administrator privileges!"
|
|
||||||
Exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
$VulkanSDKVer = "1.4.341.1"
|
|
||||||
if ((Get-WmiObject -Class Win32_ComputerSystem).SystemType -match '(x64)' -eq "True") {
|
|
||||||
$VulkanSDKArch = "X64"
|
|
||||||
$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"
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
blank_issues_enabled: false
|
blank_issues_enabled: false
|
||||||
contact_links:
|
contact_links:
|
||||||
- name: Eden Discord
|
- name: yuzu Discord
|
||||||
url: https://discord.gg/HstXbPch7X
|
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.
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,152 @@
|
||||||
|
# TODO: This document needs to be formatted,
|
||||||
|
# some stuff needs cleaned up etc
|
||||||
|
name: eden-build
|
||||||
|
|
||||||
|
#on:
|
||||||
|
# push:
|
||||||
|
# branches: [ "master" ]
|
||||||
|
|
||||||
|
# TODO: combine build.yml into trigger_release.yml
|
||||||
|
jobs:
|
||||||
|
source:
|
||||||
|
if: ${{ !github.head_ref }}
|
||||||
|
runs-on: source
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Pack
|
||||||
|
run: ./.ci/source.sh
|
||||||
|
|
||||||
|
- name: Upload
|
||||||
|
uses: forgejo/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
retention-days: 2
|
||||||
|
name: source.zip
|
||||||
|
path: artifacts/
|
||||||
|
|
||||||
|
windows:
|
||||||
|
runs-on: windows
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
target: ["msvc"] # TODO: Add msys2
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: ${{ (matrix.target == 'msys2' && 'msys2') || 'bash' }} {0}
|
||||||
|
env:
|
||||||
|
CCACHE_DIR: ${{ runner.workspace }}/.cache/.ccache
|
||||||
|
CCACHE_COMPILERCHECK: content
|
||||||
|
CCACHE_SLOPPINESS: time_macros
|
||||||
|
OS: windows
|
||||||
|
TARGET: ${{ matrix.target }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
fetch-depth: 0
|
||||||
|
fetch-tags: true
|
||||||
|
|
||||||
|
- name: Set up vcpkg cache
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
${{ github.workspace }}/build/vcpkg_installed
|
||||||
|
${{ github.workspace }}/build/externals
|
||||||
|
${{ github.workspace }}/.vcpkg
|
||||||
|
key: ${{ runner.os }}-${{ matrix.target }}-vcpkg-${{ hashFiles('**/CMakeLists.txt', '**/vcpkg.json') }}-${{ github.run_id }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-${{ matrix.target }}-vcpkg-
|
||||||
|
|
||||||
|
- name: Set up MSVC
|
||||||
|
uses: https://github.com/ilammy/msvc-dev-cmd@v1
|
||||||
|
if: ${{ matrix.target == 'msvc' }}
|
||||||
|
|
||||||
|
- name: Cygwin with autoconf # NEEDED FOR LIBUSB
|
||||||
|
shell: cmd
|
||||||
|
run: ./.ci/windows/cygwin.bat
|
||||||
|
|
||||||
|
- name: Configure & Build
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
./.ci/windows/qt-envvars.sh
|
||||||
|
DEVEL=true WINDEPLOYQT="/c/Qt/6.9.0/msvc2022_64/bin/windeployqt6.exe" .ci/windows/build.sh -DCMAKE_PREFIX_PATH=C:/Qt/6.9.0/msvc2022_64/lib/cmake/Qt6
|
||||||
|
|
||||||
|
- name: Package artifacts
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
./.ci/windows/qt-envvars.sh
|
||||||
|
./.ci/windows/package.sh
|
||||||
|
|
||||||
|
- name: Upload Windows artifacts
|
||||||
|
uses: forgejo/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
retention-days: 2
|
||||||
|
name: ${{ matrix.target }}.zip
|
||||||
|
path: artifacts/*
|
||||||
|
|
||||||
|
linux:
|
||||||
|
runs-on: linux
|
||||||
|
env:
|
||||||
|
CCACHE_DIR: /home/runner/.cache/ccache
|
||||||
|
CCACHE_COMPILERCHECK: content
|
||||||
|
CCACHE_SLOPPINESS: time_macros
|
||||||
|
OS: linux
|
||||||
|
TARGET: fresh
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
fetch-depth: 0
|
||||||
|
fetch-tags: true
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: TARGET=appimage DEVEL=true ./.ci/linux/build.sh
|
||||||
|
|
||||||
|
- name: Package AppImage
|
||||||
|
run: DEVEL=true ./.ci/linux/package.sh &> /dev/null
|
||||||
|
|
||||||
|
- name: Upload Linux artifacts
|
||||||
|
uses: forgejo/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
retention-days: 3
|
||||||
|
name: linux.zip
|
||||||
|
path: ./*.AppImage
|
||||||
|
|
||||||
|
android:
|
||||||
|
runs-on: android
|
||||||
|
|
||||||
|
env:
|
||||||
|
OS: android
|
||||||
|
TARGET: universal
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
fetch-depth: 0
|
||||||
|
fetch-tags: true
|
||||||
|
|
||||||
|
- name: Set tag name
|
||||||
|
run: |
|
||||||
|
if [[ "$GITHUB_REF_TYPE" == "tag" ]]; then
|
||||||
|
echo "GIT_TAG_NAME=$GITHUB_REF_NAME" >> $GITHUB_ENV
|
||||||
|
fi
|
||||||
|
echo $GIT_TAG_NAME
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: ANDROID_HOME=/home/runner/sdk ./.ci/android/build.sh
|
||||||
|
env:
|
||||||
|
ANDROID_KEYSTORE_B64: ${{ secrets.ANDROID_KEYSTORE_B64 }}
|
||||||
|
ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
|
||||||
|
ANDROID_KEYSTORE_PASS: ${{ secrets.ANDROID_KEYSTORE_PASS }}
|
||||||
|
|
||||||
|
- name: Package Android artifacts
|
||||||
|
run: ./.ci/android/package.sh
|
||||||
|
|
||||||
|
- name: Upload Android artifacts
|
||||||
|
uses: forgejo/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
retention-days: 2
|
||||||
|
name: android.zip
|
||||||
|
path: artifacts/*
|
||||||
|
|
@ -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,22 +0,0 @@
|
||||||
name: Check Strings
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ master ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
check-strings:
|
|
||||||
runs-on: source
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Find Unused Strings
|
|
||||||
run: ./tools/unused-strings.sh
|
|
||||||
|
|
||||||
- name: Find Stale Translations
|
|
||||||
run: ./tools/stale-translations.sh
|
|
||||||
|
|
||||||
- name: Diff
|
|
||||||
run: git --no-pager diff --exit-code HEAD
|
|
||||||
|
|
@ -1,62 +0,0 @@
|
||||||
name: tx-pull
|
|
||||||
|
|
||||||
on:
|
|
||||||
# monday, wednesday, saturday at 2pm
|
|
||||||
schedule:
|
|
||||||
cron:
|
|
||||||
- '0 14 * * 1,3,6'
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
tx-update:
|
|
||||||
runs-on: source
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Get New Translations
|
|
||||||
run: tx-cli pull -t -f
|
|
||||||
|
|
||||||
- name: Push branch
|
|
||||||
run: |
|
|
||||||
git config --local user.name "Eden CI"
|
|
||||||
git config --local user.email "ci@eden-emu.dev"
|
|
||||||
git config --local user.signingkey "D57652791BB25D2A"
|
|
||||||
git config --local push.autoSetupRemote true
|
|
||||||
|
|
||||||
git remote set-url origin ci:eden-emu/eden.git
|
|
||||||
|
|
||||||
TIMESTAMP=$(date +"%s")
|
|
||||||
echo "TIMESTAMP=$TIMESTAMP" >> "$GITHUB_ENV"
|
|
||||||
|
|
||||||
git switch -c update-translations-$TIMESTAMP
|
|
||||||
git add dist src/android/app/src/main/res
|
|
||||||
|
|
||||||
git commit -sS -m "[dist, android] Update translations from Transifex"
|
|
||||||
git push
|
|
||||||
|
|
||||||
- name: Create PR
|
|
||||||
run: |
|
|
||||||
DATE=$(date +"%b %d")
|
|
||||||
TITLE="[dist, android] Update translations from Transifex for $DATE"
|
|
||||||
BODY="Automatic translation update for $DATE"
|
|
||||||
BASE=master
|
|
||||||
HEAD=update-translations-$TIMESTAMP
|
|
||||||
|
|
||||||
cat << EOF > data.json
|
|
||||||
{
|
|
||||||
"base": "$BASE",
|
|
||||||
"body": "$BODY",
|
|
||||||
"head": "$HEAD",
|
|
||||||
"title": "$TITLE"
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
curl -X 'POST' \
|
|
||||||
'https://git.eden-emu.dev/api/v1/repos/eden-emu/eden/pulls' \
|
|
||||||
-H 'accept: application/json' \
|
|
||||||
-H 'Authorization: Bearer ${{ secrets.CI_FJ_TOKEN }}' \
|
|
||||||
-H 'Content-Type: application/json' \
|
|
||||||
-d "@data.json" --fail
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,203 @@
|
||||||
|
name: Build Application and Make Release
|
||||||
|
|
||||||
|
#on:
|
||||||
|
# push:
|
||||||
|
# tags: [ "*" ]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
source:
|
||||||
|
runs-on: source
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
- name: Pack
|
||||||
|
run: ./.ci/source.sh
|
||||||
|
- name: Upload
|
||||||
|
uses: forgejo/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
retention-days: 2
|
||||||
|
name: source.zip
|
||||||
|
path: artifacts/
|
||||||
|
|
||||||
|
windows:
|
||||||
|
runs-on: windows
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
target: ["msvc"] # TODO: Add msys2
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: ${{ (matrix.target == 'msys2' && 'msys2') || 'bash' }} {0}
|
||||||
|
env:
|
||||||
|
CCACHE_DIR: ${{ runner.workspace }}/.cache/.ccache
|
||||||
|
CCACHE_COMPILERCHECK: content
|
||||||
|
CCACHE_SLOPPINESS: time_macros
|
||||||
|
OS: windows
|
||||||
|
TARGET: ${{ matrix.target }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
fetch-depth: 0
|
||||||
|
fetch-tags: true
|
||||||
|
|
||||||
|
- name: Set up vcpkg cache
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
${{ github.workspace }}/build/vcpkg_installed
|
||||||
|
${{ github.workspace }}/build/externals
|
||||||
|
${{ github.workspace }}/.vcpkg
|
||||||
|
key: ${{ runner.os }}-${{ matrix.target }}-vcpkg-${{ hashFiles('**/CMakeLists.txt', '**/vcpkg.json') }}-${{ github.run_id }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-${{ matrix.target }}-vcpkg-
|
||||||
|
|
||||||
|
- name: Set up MSVC
|
||||||
|
uses: https://github.com/ilammy/msvc-dev-cmd@v1
|
||||||
|
if: ${{ matrix.target == 'msvc' }}
|
||||||
|
|
||||||
|
- name: Cygwin with autoconf # NEEDED FOR LIBUSB
|
||||||
|
shell: cmd
|
||||||
|
run: ./.ci/windows/cygwin.bat
|
||||||
|
|
||||||
|
- name: Configure & Build
|
||||||
|
shell: bash
|
||||||
|
run: DEVEL=false ./.ci/windows/build.sh
|
||||||
|
|
||||||
|
- name: Package artifacts
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
export PATH="${PATH}:/c/Qt/6.9.0/msvc2022_64/bin"
|
||||||
|
./.ci/windows/package.sh
|
||||||
|
|
||||||
|
- name: Upload Windows artifacts
|
||||||
|
uses: forgejo/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
retention-days: 2
|
||||||
|
name: ${{ matrix.target }}.zip
|
||||||
|
path: artifacts/*
|
||||||
|
|
||||||
|
linux:
|
||||||
|
runs-on: linux
|
||||||
|
env:
|
||||||
|
CCACHE_DIR: /home/runner/.cache/ccache
|
||||||
|
CCACHE_COMPILERCHECK: content
|
||||||
|
CCACHE_SLOPPINESS: time_macros
|
||||||
|
OS: linux
|
||||||
|
TARGET: fresh
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
fetch-depth: 0
|
||||||
|
fetch-tags: true
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: TARGET=appimage RELEASE=1 ./.ci/linux/build.sh v3 8
|
||||||
|
|
||||||
|
- name: Package AppImage
|
||||||
|
run: ./.ci/linux/package.sh v3 &> /dev/null
|
||||||
|
|
||||||
|
- name: Upload Linux artifacts
|
||||||
|
uses: forgejo/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
retention-days: 2
|
||||||
|
name: linux.zip
|
||||||
|
path: ./*.AppImage*
|
||||||
|
|
||||||
|
android:
|
||||||
|
runs-on: android
|
||||||
|
|
||||||
|
env:
|
||||||
|
CCACHE_DIR: /home/runner/.cache/ccache
|
||||||
|
CCACHE_COMPILERCHECK: content
|
||||||
|
CCACHE_SLOPPINESS: time_macros
|
||||||
|
OS: android
|
||||||
|
TARGET: universal
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
fetch-depth: 0
|
||||||
|
fetch-tags: true
|
||||||
|
|
||||||
|
- name: Set tag name
|
||||||
|
run: |
|
||||||
|
if [[ "$GITHUB_REF_TYPE" == "tag" ]]; then
|
||||||
|
echo "GIT_TAG_NAME=$GITHUB_REF_NAME" >> $GITHUB_ENV
|
||||||
|
fi
|
||||||
|
echo $GIT_TAG_NAME
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: ANDROID_HOME=/home/runner/sdk ./.ci/android/build.sh
|
||||||
|
env:
|
||||||
|
ANDROID_KEYSTORE_B64: ${{ secrets.ANDROID_KEYSTORE_B64 }}
|
||||||
|
ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
|
||||||
|
ANDROID_KEYSTORE_PASS: ${{ secrets.ANDROID_KEYSTORE_PASS }}
|
||||||
|
|
||||||
|
- name: Package Android artifacts
|
||||||
|
run: ./.ci/android/package.sh
|
||||||
|
|
||||||
|
- name: Upload Android artifacts
|
||||||
|
uses: forgejo/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
retention-days: 2
|
||||||
|
name: android.zip
|
||||||
|
path: artifacts/*
|
||||||
|
|
||||||
|
create_release:
|
||||||
|
needs: [linux, windows, android]
|
||||||
|
runs-on: linux
|
||||||
|
outputs:
|
||||||
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
submodules: 'recursive'
|
||||||
|
path: 'eden-source'
|
||||||
|
|
||||||
|
- name: Download artifacts
|
||||||
|
uses: forgejo/download-artifact@v4
|
||||||
|
with:
|
||||||
|
path: artifacts
|
||||||
|
|
||||||
|
- name: Grab and store version
|
||||||
|
run: |
|
||||||
|
cd eden-source
|
||||||
|
tag_name=$(git describe --tags --abbrev=0)
|
||||||
|
echo "VERSION=$tag_name" >> $GITHUB_ENV
|
||||||
|
echo $tag_name
|
||||||
|
|
||||||
|
- name: Package artifacts properly
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -ex
|
||||||
|
mv ${{ github.workspace }}/eden-source eden-${{ env.VERSION }}
|
||||||
|
cd artifacts
|
||||||
|
ls *.zip
|
||||||
|
|
||||||
|
mkdir -p dist
|
||||||
|
|
||||||
|
cp linux.zip/Eden-*.AppImage dist/Eden-Linux-${{ env.VERSION }}-amd64.AppImage
|
||||||
|
cp linux.zip/Eden-*.AppImage.zsync dist/Eden-Linux-${{ env.VERSION }}-amd64.AppImage.zsync
|
||||||
|
cp msvc.zip/eden-windows-msvc*.zip dist/Eden-Windows-MSVC-${{ env.VERSION }}-amd64.zip
|
||||||
|
cp android.zip/eden-android*.apk dist/Eden-Android-${{ env.VERSION }}.apk
|
||||||
|
cp android.zip/eden-android*.aab dist/Eden-Android-${{ env.VERSION }}.aab
|
||||||
|
cp source.zip/eden-unified-source*.tar.xz dist/Eden-Source-${{ env.VERSION }}.tar.xz
|
||||||
|
cp source.zip/eden-unified-source*.tar.xz.sha256sum dist/Eden-Source-${{ env.VERSION }}.tar.xz.sha256sum
|
||||||
|
|
||||||
|
- name: Create release
|
||||||
|
id: create_release
|
||||||
|
uses: actions/forgejo-release@v2.6.0
|
||||||
|
with:
|
||||||
|
direction: upload
|
||||||
|
tag: ${{ env.VERSION }}
|
||||||
|
title: Eden ${{ env.VERSION }}
|
||||||
|
release-dir: artifacts/dist/
|
||||||
|
|
@ -7,16 +7,9 @@
|
||||||
# Build directory
|
# Build directory
|
||||||
/[Bb]uild*/
|
/[Bb]uild*/
|
||||||
doc-build/
|
doc-build/
|
||||||
out/
|
|
||||||
AppDir/
|
AppDir/
|
||||||
uruntime
|
uruntime
|
||||||
|
|
||||||
# dtrace and ktrace stuffs
|
|
||||||
[dk]trace-out/
|
|
||||||
[dk]trace.out
|
|
||||||
*.core
|
|
||||||
log.txt
|
|
||||||
|
|
||||||
# Generated source files
|
# Generated source files
|
||||||
src/common/scm_rev.cpp
|
src/common/scm_rev.cpp
|
||||||
dist/english_plurals/generated_en.ts
|
dist/english_plurals/generated_en.ts
|
||||||
|
|
@ -37,8 +30,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
|
||||||
|
|
@ -62,4 +53,3 @@ eden-windows-msvc
|
||||||
artifacts
|
artifacts
|
||||||
*.AppImage*
|
*.AppImage*
|
||||||
/install*
|
/install*
|
||||||
vulkansdk*.exe
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
# SPDX-FileCopyrightText: 2014 Citra Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
[submodule "libusb"]
|
||||||
|
path = externals/libusb/libusb
|
||||||
|
url = https://github.com/libusb/libusb.git
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
diff --git a/libs/cobalt/include/boost/cobalt/concepts.hpp b/libs/cobalt/include/boost/cobalt/concepts.hpp
|
|
||||||
index d49f2ec..a9bdb80 100644
|
|
||||||
--- a/libs/cobalt/include/boost/cobalt/concepts.hpp
|
|
||||||
+++ b/libs/cobalt/include/boost/cobalt/concepts.hpp
|
|
||||||
@@ -62,7 +62,7 @@ struct enable_awaitables
|
|
||||||
template <typename T>
|
|
||||||
concept with_get_executor = requires (T& t)
|
|
||||||
{
|
|
||||||
- {t.get_executor()} -> asio::execution::executor;
|
|
||||||
+ t.get_executor();
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
diff --git a/src/catch2/matchers/catch_matchers_floating_point.cpp b/src/catch2/matchers/catch_matchers_floating_point.cpp
|
|
||||||
index fc7b444..0e1a3c2 100644
|
|
||||||
--- a/src/catch2/matchers/catch_matchers_floating_point.cpp
|
|
||||||
+++ b/src/catch2/matchers/catch_matchers_floating_point.cpp
|
|
||||||
@@ -5,6 +5,7 @@
|
|
||||||
// https://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// SPDX-License-Identifier: BSL-1.0
|
|
||||||
+#include <catch2/internal/catch_polyfills.hpp>
|
|
||||||
#include <catch2/matchers/catch_matchers_floating_point.hpp>
|
|
||||||
#include <catch2/internal/catch_enforce.hpp>
|
|
||||||
#include <catch2/internal/catch_polyfills.hpp>
|
|
||||||
|
|
@ -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 {
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index 8c1761f..52c4ca4 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -69,42 +69,3 @@ endif()
|
||||||
|
if(CPP_JWT_BUILD_EXAMPLES)
|
||||||
|
add_subdirectory(examples)
|
||||||
|
endif()
|
||||||
|
-
|
||||||
|
-# ##############################################################################
|
||||||
|
-# INSTALL
|
||||||
|
-# ##############################################################################
|
||||||
|
-
|
||||||
|
-include(GNUInstallDirs)
|
||||||
|
-include(CMakePackageConfigHelpers)
|
||||||
|
-set(CPP_JWT_CONFIG_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/cmake/${PROJECT_NAME})
|
||||||
|
-
|
||||||
|
-install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}Targets)
|
||||||
|
-install(
|
||||||
|
- EXPORT ${PROJECT_NAME}Targets
|
||||||
|
- DESTINATION ${CPP_JWT_CONFIG_INSTALL_DIR}
|
||||||
|
- NAMESPACE ${PROJECT_NAME}::
|
||||||
|
- COMPONENT dev)
|
||||||
|
-configure_package_config_file(cmake/Config.cmake.in ${PROJECT_NAME}Config.cmake
|
||||||
|
- INSTALL_DESTINATION ${CPP_JWT_CONFIG_INSTALL_DIR}
|
||||||
|
- NO_SET_AND_CHECK_MACRO)
|
||||||
|
-write_basic_package_version_file(${PROJECT_NAME}ConfigVersion.cmake
|
||||||
|
- COMPATIBILITY SameMajorVersion
|
||||||
|
- ARCH_INDEPENDENT)
|
||||||
|
-install(
|
||||||
|
- FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
|
||||||
|
- ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
|
||||||
|
- DESTINATION ${CPP_JWT_CONFIG_INSTALL_DIR}
|
||||||
|
- COMPONENT dev)
|
||||||
|
-
|
||||||
|
-if(NOT CPP_JWT_USE_VENDORED_NLOHMANN_JSON)
|
||||||
|
- set(CPP_JWT_VENDORED_NLOHMANN_JSON_INSTALL_PATTERN PATTERN "json" EXCLUDE)
|
||||||
|
-endif()
|
||||||
|
-install(
|
||||||
|
- DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jwt/
|
||||||
|
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/jwt
|
||||||
|
- COMPONENT dev
|
||||||
|
- FILES_MATCHING
|
||||||
|
- PATTERN "*.hpp"
|
||||||
|
- PATTERN "*.ipp"
|
||||||
|
- PATTERN "test" EXCLUDE
|
||||||
|
- ${CPP_JWT_VENDORED_NLOHMANN_JSON_INSTALL_PATTERN})
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/include/jwt/algorithm.hpp b/include/jwt/algorithm.hpp
|
||||||
|
index 0e3b843..1156e6a 100644
|
||||||
|
--- a/include/jwt/algorithm.hpp
|
||||||
|
+++ b/include/jwt/algorithm.hpp
|
||||||
|
@@ -64,6 +64,8 @@ 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 {
|
||||||
|
|
||||||
|
//Me: TODO: All these can be done using code generaion.
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index 5dad9e9..760a1b2 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-cmake_minimum_required (VERSION 3.2.0)
|
||||||
|
+cmake_minimum_required (VERSION 3.10)
|
||||||
|
project (DiscordRPC)
|
||||||
|
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index 760a1b2..540d643 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -12,20 +12,6 @@ file(GLOB_RECURSE ALL_SOURCE_FILES
|
||||||
|
src/*.cpp src/*.h src/*.c
|
||||||
|
)
|
||||||
|
|
||||||
|
-# Set CLANG_FORMAT_SUFFIX if you are using custom clang-format, e.g. clang-format-5.0
|
||||||
|
-find_program(CLANG_FORMAT_CMD clang-format${CLANG_FORMAT_SUFFIX})
|
||||||
|
-
|
||||||
|
-if (CLANG_FORMAT_CMD)
|
||||||
|
- add_custom_target(
|
||||||
|
- clangformat
|
||||||
|
- COMMAND ${CLANG_FORMAT_CMD}
|
||||||
|
- -i -style=file -fallback-style=none
|
||||||
|
- ${ALL_SOURCE_FILES}
|
||||||
|
- DEPENDS
|
||||||
|
- ${ALL_SOURCE_FILES}
|
||||||
|
- )
|
||||||
|
-endif(CLANG_FORMAT_CMD)
|
||||||
|
-
|
||||||
|
# thirdparty stuff
|
||||||
|
execute_process(
|
||||||
|
COMMAND mkdir ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty
|
||||||
|
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
|
||||||
|
index 290d761..cd2cc92 100644
|
||||||
|
--- a/src/CMakeLists.txt
|
||||||
|
+++ b/src/CMakeLists.txt
|
||||||
|
@@ -120,10 +120,6 @@ if (${BUILD_SHARED_LIBS})
|
||||||
|
target_compile_definitions(discord-rpc PRIVATE -DDISCORD_BUILDING_SDK)
|
||||||
|
endif(${BUILD_SHARED_LIBS})
|
||||||
|
|
||||||
|
-if (CLANG_FORMAT_CMD)
|
||||||
|
- add_dependencies(discord-rpc clangformat)
|
||||||
|
-endif(CLANG_FORMAT_CMD)
|
||||||
|
-
|
||||||
|
# install
|
||||||
|
|
||||||
|
install(
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index 540d643..5d12f3d 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -17,12 +17,14 @@ execute_process(
|
||||||
|
COMMAND mkdir ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty
|
||||||
|
ERROR_QUIET
|
||||||
|
)
|
||||||
|
+# new commit that fixes c++17
|
||||||
|
+set(RAPIDJSON_SHA 3b2441b87f99ab65f37b141a7b548ebadb607b96)
|
||||||
|
|
||||||
|
-find_file(RAPIDJSONTEST NAMES rapidjson rapidjson-1.1.0 PATHS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty CMAKE_FIND_ROOT_PATH_BOTH)
|
||||||
|
+find_file(RAPIDJSONTEST NAMES rapidjson rapidjson-${RAPIDJSON_SHA} PATHS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty CMAKE_FIND_ROOT_PATH_BOTH)
|
||||||
|
if (NOT RAPIDJSONTEST)
|
||||||
|
message("no rapidjson, download")
|
||||||
|
- set(RJ_TAR_FILE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/v1.1.0.tar.gz)
|
||||||
|
- file(DOWNLOAD https://github.com/miloyip/rapidjson/archive/v1.1.0.tar.gz ${RJ_TAR_FILE})
|
||||||
|
+ set(RJ_TAR_FILE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/${RAPIDJSON_SHA}.tar.gz)
|
||||||
|
+ file(DOWNLOAD https://github.com/miloyip/rapidjson/archive/${RAPIDJSON_SHA}.tar.gz ${RJ_TAR_FILE})
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E tar xzf ${RJ_TAR_FILE}
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty
|
||||||
|
@@ -30,7 +32,7 @@ if (NOT RAPIDJSONTEST)
|
||||||
|
file(REMOVE ${RJ_TAR_FILE})
|
||||||
|
endif(NOT RAPIDJSONTEST)
|
||||||
|
|
||||||
|
-find_file(RAPIDJSON NAMES rapidjson rapidjson-1.1.0 PATHS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty CMAKE_FIND_ROOT_PATH_BOTH)
|
||||||
|
+find_file(RAPIDJSON NAMES rapidjson rapidjson-${RAPIDJSON_SHA} PATHS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty CMAKE_FIND_ROOT_PATH_BOTH)
|
||||||
|
|
||||||
|
add_library(rapidjson STATIC IMPORTED ${RAPIDJSON})
|
||||||
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
|
|
||||||
index be7f442..5fd0438 100644
|
|
||||||
--- a/StandAlone/StandAlone.cpp
|
|
||||||
+++ b/StandAlone/StandAlone.cpp
|
|
||||||
@@ -1766,9 +1766,10 @@ int singleMain()
|
|
||||||
glslang::FinalizeProcess();
|
|
||||||
} else {
|
|
||||||
ShInitialize();
|
|
||||||
+#ifndef __HAIKU__
|
|
||||||
ShInitialize(); // also test reference counting of users
|
|
||||||
ShFinalize(); // also test reference counting of users
|
|
||||||
-
|
|
||||||
+#endif
|
|
||||||
bool printShaderNames = workList.size() > 1;
|
|
||||||
|
|
||||||
if (Options & EOptionMultiThreaded) {
|
|
||||||
@@ -1793,8 +1794,9 @@ int singleMain()
|
|
||||||
PutsIfNonEmpty(WorkItems[w]->results.c_str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-
|
|
||||||
+#ifndef __HAIKU__
|
|
||||||
ShFinalize();
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
if (CompileFailed.load())
|
|
||||||
@@ -1809,8 +1811,10 @@ int C_DECL main(int argc, char* argv[])
|
|
||||||
{
|
|
||||||
ProcessArguments(WorkItems, argc, argv);
|
|
||||||
|
|
||||||
+#ifdef __HAIKU__
|
|
||||||
+ return singleMain();
|
|
||||||
+#else
|
|
||||||
int ret = 0;
|
|
||||||
-
|
|
||||||
// Loop over the entire init/finalize cycle to watch memory changes
|
|
||||||
const int iterations = 1;
|
|
||||||
if (iterations > 1)
|
|
||||||
@@ -1820,8 +1824,8 @@ int C_DECL main(int argc, char* argv[])
|
|
||||||
if (iterations > 1)
|
|
||||||
glslang::OS_DumpMemoryCounters();
|
|
||||||
}
|
|
||||||
-
|
|
||||||
return ret;
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
|
|
@ -1,62 +0,0 @@
|
||||||
From 436fc1978c78edd085d99b33275b24be0ac96aa0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: crueter <crueter@eden-emu.dev>
|
|
||||||
Date: Sun, 1 Feb 2026 16:21:10 -0500
|
|
||||||
Subject: [PATCH] Fix build on MinGW
|
|
||||||
|
|
||||||
MinGW doesn't define GetAddrInfoExCancel.
|
|
||||||
|
|
||||||
Signed-off-by: crueter <crueter@eden-emu.dev>
|
|
||||||
---
|
|
||||||
httplib.h | 18 ++++++++++++++++--
|
|
||||||
1 file changed, 16 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/httplib.h b/httplib.h
|
|
||||||
index ec8d2a2..5f9a510 100644
|
|
||||||
--- a/httplib.h
|
|
||||||
+++ b/httplib.h
|
|
||||||
@@ -203,14 +203,17 @@
|
|
||||||
#error Sorry, Visual Studio versions prior to 2015 are not supported
|
|
||||||
#endif
|
|
||||||
|
|
||||||
-#pragma comment(lib, "ws2_32.lib")
|
|
||||||
-
|
|
||||||
#ifndef _SSIZE_T_DEFINED
|
|
||||||
using ssize_t = __int64;
|
|
||||||
#define _SSIZE_T_DEFINED
|
|
||||||
#endif
|
|
||||||
#endif // _MSC_VER
|
|
||||||
|
|
||||||
+#if defined(_MSC_VER) || defined(__MINGW32__)
|
|
||||||
+#pragma comment(lib, "ws2_32.lib")
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+
|
|
||||||
#ifndef S_ISREG
|
|
||||||
#define S_ISREG(m) (((m) & S_IFREG) == S_IFREG)
|
|
||||||
#endif // S_ISREG
|
|
||||||
@@ -4528,7 +4531,17 @@ inline int getaddrinfo_with_timeout(const char *node, const char *service,
|
|
||||||
auto wait_result =
|
|
||||||
::WaitForSingleObject(event, static_cast<DWORD>(timeout_sec * 1000));
|
|
||||||
if (wait_result == WAIT_TIMEOUT) {
|
|
||||||
+#ifdef __MINGW32__
|
|
||||||
+ typedef INT(WSAAPI * PFN_GETADDRINFOEXCANCEL)(HANDLE * CancelHandle);
|
|
||||||
+ auto wsdll = LoadLibraryW((wchar_t *)"ws2_32.lib");
|
|
||||||
+ PFN_GETADDRINFOEXCANCEL GetAddrInfoExCancel =
|
|
||||||
+ (PFN_GETADDRINFOEXCANCEL)GetProcAddress(wsdll, "GetAddrInfoExCancel");
|
|
||||||
+
|
|
||||||
+ if (cancel_handle) { GetAddrInfoExCancel(&cancel_handle); }
|
|
||||||
+#else
|
|
||||||
if (cancel_handle) { ::GetAddrInfoExCancel(&cancel_handle); }
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
::CloseHandle(event);
|
|
||||||
return EAI_AGAIN;
|
|
||||||
}
|
|
||||||
@@ -13952,3 +13965,4 @@ inline SSL_CTX *Client::ssl_context() const {
|
|
||||||
} // namespace httplib
|
|
||||||
|
|
||||||
#endif // CPPHTTPLIB_HTTPLIB_H
|
|
||||||
+
|
|
||||||
--
|
|
||||||
2.51.2
|
|
||||||
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
diff --git a/libusb/os/netbsd_usb.c b/libusb/os/netbsd_usb.c
|
|
||||||
index a9a50b2..56e681b 100644
|
|
||||||
--- a/libusb/os/netbsd_usb.c
|
|
||||||
+++ b/libusb/os/netbsd_usb.c
|
|
||||||
@@ -580,6 +580,20 @@ _access_endpoint(struct libusb_transfer *transfer)
|
|
||||||
return hpriv->endpoints[endpt];
|
|
||||||
}
|
|
||||||
|
|
||||||
+void usbi_get_monotonic_time(struct timespec *tp) {
|
|
||||||
+ struct timeval tv;
|
|
||||||
+ gettimeofday(&tv, NULL);
|
|
||||||
+ tp->tv_sec = tv.tv_sec;
|
|
||||||
+ tp->tv_nsec = tv.tv_usec * 1000ull;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void usbi_get_real_time(struct timespec *tp) {
|
|
||||||
+ struct timeval tv;
|
|
||||||
+ gettimeofday(&tv, NULL);
|
|
||||||
+ tp->tv_sec = tv.tv_sec;
|
|
||||||
+ tp->tv_nsec = tv.tv_usec * 1000ull;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
int
|
|
||||||
_sync_gen_transfer(struct usbi_transfer *itransfer)
|
|
||||||
{
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
diff --git a/library/aesni.h b/library/aesni.h
|
|
||||||
index 754c984c79..59e27afd3e 100644
|
|
||||||
--- a/library/aesni.h
|
|
||||||
+++ b/library/aesni.h
|
|
||||||
@@ -35,7 +35,7 @@
|
|
||||||
/* GCC-like compilers: currently, we only support intrinsics if the requisite
|
|
||||||
* target flag is enabled when building the library (e.g. `gcc -mpclmul -msse2`
|
|
||||||
* or `clang -maes -mpclmul`). */
|
|
||||||
-#if (defined(__GNUC__) || defined(__clang__)) && defined(__AES__) && defined(__PCLMUL__)
|
|
||||||
+#if defined(__GNUC__) || defined(__clang__)
|
|
||||||
#define MBEDTLS_AESNI_HAVE_INTRINSICS
|
|
||||||
#endif
|
|
||||||
/* For 32-bit, we only support intrinsics */
|
|
||||||
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)
|
|
||||||
/*
|
|
||||||
|
|
@ -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()
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
diff --git a/library/common.h b/library/common.h
|
|
||||||
index 50f2a29..c60d9dc 100644
|
|
||||||
--- a/library/common.h
|
|
||||||
+++ b/library/common.h
|
|
||||||
@@ -19,11 +19,11 @@
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stddef.h>
|
|
||||||
|
|
||||||
-#if defined(__ARM_NEON)
|
|
||||||
-#include <arm_neon.h>
|
|
||||||
+#if defined(MBEDTLS_PLATFORM_IS_WINDOWS_ON_ARM64)
|
|
||||||
+#include <arm64_neon.h>
|
|
||||||
#define MBEDTLS_HAVE_NEON_INTRINSICS
|
|
||||||
-#elif defined(MBEDTLS_PLATFORM_IS_WINDOWS_ON_ARM64)
|
|
||||||
-#include <arm64_neon.h>
|
|
||||||
+#elif (defined(__ANDROID__) && defined(__ARM_FP)) || defined(__ARM_NEON)
|
|
||||||
+#include <arm_neon.h>
|
|
||||||
#define MBEDTLS_HAVE_NEON_INTRINSICS
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
||||||
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,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)
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
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,287 +0,0 @@
|
||||||
From 67bf3d1381b1faf59e87001d6156ba4e21cada14 Mon Sep 17 00:00:00 2001
|
|
||||||
From: crueter <crueter@eden-emu.dev>
|
|
||||||
Date: Mon, 29 Dec 2025 21:22:36 -0500
|
|
||||||
Subject: [PATCH] [cmake] refactor: shared/static handling
|
|
||||||
|
|
||||||
This significantly redoes the way shared and static libraries are
|
|
||||||
handled. Now, it's controlled by two options: `SPIRV_TOOLS_BUILD_STATIC`
|
|
||||||
and `SPIRV_TOOLS_BUILD_SHARED`.
|
|
||||||
|
|
||||||
The default configuration (no `BUILD_SHARED_LIBS` set, options left at
|
|
||||||
default) is to build shared ONLY if this is the master project, or
|
|
||||||
static ONLY if this is a subproject (e.g. FetchContent, CPM.cmake). Also
|
|
||||||
I should note that static-only (i.e. no shared) is now a supported
|
|
||||||
target, this is done because projects including it as a submodule e.g.
|
|
||||||
on Android or Windows may prefer this.
|
|
||||||
|
|
||||||
Now the shared/static handling:
|
|
||||||
- static ON, shared OFF: Only generates `.a` libraries.
|
|
||||||
- static ON, shared ON: Generates `.a` libraries, but also
|
|
||||||
`libSPIRV-Tools.so`
|
|
||||||
- static OFF, shared ON: Only generates `.so` libraries.
|
|
||||||
|
|
||||||
Notable TODOs:
|
|
||||||
- SPIRV-Tools-shared.pc seems redundant--how should we handle which one
|
|
||||||
to use in the case of distributions that distribute both types (MSYS2
|
|
||||||
for instance)?
|
|
||||||
* *Note: pkgconfig sucks at this and usually just leaves it up to the
|
|
||||||
user, so the optimal solution may indeed be doing absolutely
|
|
||||||
nothing.* CMake is unaffected :)
|
|
||||||
- use namespaces in the CMake config files pleaaaaase
|
|
||||||
|
|
||||||
This is going to change things a good bit for package maintainers, but
|
|
||||||
cest la vie. It's for the greater good, I promise.
|
|
||||||
|
|
||||||
Signed-off-by: crueter <crueter@eden-emu.dev>
|
|
||||||
---
|
|
||||||
CMakeLists.txt | 108 +++++++++++++++++++++++++-----------------
|
|
||||||
source/CMakeLists.txt | 62 ++++++++++++------------
|
|
||||||
2 files changed, 94 insertions(+), 76 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
||||||
index 4d843b4d2f..07201f690f 100644
|
|
||||||
--- a/CMakeLists.txt
|
|
||||||
+++ b/CMakeLists.txt
|
|
||||||
@@ -14,6 +14,15 @@
|
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.22.1)
|
|
||||||
|
|
||||||
+# master project detection--useful for FetchContent/submodule inclusion
|
|
||||||
+set(master_project OFF)
|
|
||||||
+set(subproject ON)
|
|
||||||
+
|
|
||||||
+if (NOT DEFINED PROJECT_NAME)
|
|
||||||
+ set(master_project ON)
|
|
||||||
+ set(subproject OFF)
|
|
||||||
+endif()
|
|
||||||
+
|
|
||||||
project(spirv-tools)
|
|
||||||
|
|
||||||
# Avoid a bug in CMake 3.22.1. By default it will set -std=c++11 for
|
|
||||||
@@ -135,46 +144,49 @@ if (DEFINED SPIRV_TOOLS_EXTRA_DEFINITIONS)
|
|
||||||
add_definitions(${SPIRV_TOOLS_EXTRA_DEFINITIONS})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
-# Library build setting definitions:
|
|
||||||
-#
|
|
||||||
-# * SPIRV_TOOLS_BUILD_STATIC - ON or OFF - Defaults to ON.
|
|
||||||
-# If enabled the following targets will be created:
|
|
||||||
-# ${SPIRV_TOOLS}-static - STATIC library.
|
|
||||||
-# Has full public symbol visibility.
|
|
||||||
-# ${SPIRV_TOOLS}-shared - SHARED library.
|
|
||||||
-# Has default-hidden symbol visibility.
|
|
||||||
-# ${SPIRV_TOOLS} - will alias to one of above, based on BUILD_SHARED_LIBS.
|
|
||||||
-# If disabled the following targets will be created:
|
|
||||||
-# ${SPIRV_TOOLS} - either STATIC or SHARED based on SPIRV_TOOLS_LIBRARY_TYPE.
|
|
||||||
-# Has full public symbol visibility.
|
|
||||||
-# ${SPIRV_TOOLS}-shared - SHARED library.
|
|
||||||
-# Has default-hidden symbol visibility.
|
|
||||||
-#
|
|
||||||
-# * SPIRV_TOOLS_LIBRARY_TYPE - SHARED or STATIC.
|
|
||||||
-# Specifies the library type used for building SPIRV-Tools libraries.
|
|
||||||
-# Defaults to SHARED when BUILD_SHARED_LIBS=1, otherwise STATIC.
|
|
||||||
-#
|
|
||||||
-# * SPIRV_TOOLS_FULL_VISIBILITY - "${SPIRV_TOOLS}-static" or "${SPIRV_TOOLS}"
|
|
||||||
-# Evaluates to the SPIRV_TOOLS target library name that has no hidden symbols.
|
|
||||||
-# This is used by internal targets for accessing symbols that are non-public.
|
|
||||||
-# Note this target provides no API stability guarantees.
|
|
||||||
-#
|
|
||||||
-# Ideally, all of these will go away - see https://github.com/KhronosGroup/SPIRV-Tools/issues/3909.
|
|
||||||
-option(ENABLE_EXCEPTIONS_ON_MSVC "Build SPIRV-TOOLS with c++ exceptions enabled in MSVC" ON)
|
|
||||||
-option(SPIRV_TOOLS_BUILD_STATIC "Build ${SPIRV_TOOLS}-static target. ${SPIRV_TOOLS} will alias to ${SPIRV_TOOLS}-static or ${SPIRV_TOOLS}-shared based on BUILD_SHARED_LIBS" ON)
|
|
||||||
-if(SPIRV_TOOLS_BUILD_STATIC)
|
|
||||||
- set(SPIRV_TOOLS_FULL_VISIBILITY ${SPIRV_TOOLS}-static)
|
|
||||||
+# If BUILD_SHARED_LIBS is undefined, set it based on whether we are
|
|
||||||
+# the master project or a subproject
|
|
||||||
+if (NOT DEFINED BUILD_SHARED_LIBS)
|
|
||||||
+ set(BUILD_SHARED_LIBS ${master_project})
|
|
||||||
+endif()
|
|
||||||
+
|
|
||||||
+if (BUILD_SHARED_LIBS)
|
|
||||||
+ set(static_default OFF)
|
|
||||||
+else()
|
|
||||||
+ set(static_default ON)
|
|
||||||
+endif()
|
|
||||||
+
|
|
||||||
+option(SPIRV_TOOLS_BUILD_SHARED "Build ${SPIRV_TOOLS} as a shared library"
|
|
||||||
+ ${BUILD_SHARED_LIBS})
|
|
||||||
+option(SPIRV_TOOLS_BUILD_STATIC "Build ${SPIRV_TOOLS} as a static library"
|
|
||||||
+ ${static_default})
|
|
||||||
+
|
|
||||||
+# Avoid conflict between the dll import library and
|
|
||||||
+# the static library (thanks microsoft)
|
|
||||||
+if(CMAKE_STATIC_LIBRARY_PREFIX STREQUAL "" AND
|
|
||||||
+ CMAKE_STATIC_LIBRARY_SUFFIX STREQUAL ".lib")
|
|
||||||
+ set(SPIRV_TOOLS_STATIC_LIBNAME "${SPIRV_TOOLS}-static")
|
|
||||||
+else()
|
|
||||||
+ set(SPIRV_TOOLS_STATIC_LIBNAME "${SPIRV_TOOLS}")
|
|
||||||
+endif()
|
|
||||||
+
|
|
||||||
+if (SPIRV_TOOLS_BUILD_STATIC)
|
|
||||||
+ # If building a static library at all, always build other libraries as static,
|
|
||||||
+ # and link to the static SPIRV-Tools library.
|
|
||||||
set(SPIRV_TOOLS_LIBRARY_TYPE "STATIC")
|
|
||||||
-else(SPIRV_TOOLS_BUILD_STATIC)
|
|
||||||
- set(SPIRV_TOOLS_FULL_VISIBILITY ${SPIRV_TOOLS})
|
|
||||||
- if (NOT DEFINED SPIRV_TOOLS_LIBRARY_TYPE)
|
|
||||||
- if(BUILD_SHARED_LIBS)
|
|
||||||
- set(SPIRV_TOOLS_LIBRARY_TYPE "SHARED")
|
|
||||||
- else()
|
|
||||||
- set(SPIRV_TOOLS_LIBRARY_TYPE "STATIC")
|
|
||||||
- endif()
|
|
||||||
- endif()
|
|
||||||
-endif(SPIRV_TOOLS_BUILD_STATIC)
|
|
||||||
+ set(SPIRV_TOOLS_FULL_VISIBILITY ${SPIRV_TOOLS}-static)
|
|
||||||
+elseif (SPIRV_TOOLS_BUILD_SHARED)
|
|
||||||
+ # If only building a shared library, link other libraries to the
|
|
||||||
+ # shared library. Also, other libraries should be shared
|
|
||||||
+ set(SPIRV_TOOLS_LIBRARY_TYPE "SHARED")
|
|
||||||
+ set(SPIRV_TOOLS_FULL_VISIBILITY ${SPIRV_TOOLS}-shared)
|
|
||||||
+else()
|
|
||||||
+ message(FATAL_ERROR "You must set one of "
|
|
||||||
+ "SPIRV_TOOLS_BUILD_STATIC or SPIRV_TOOLS_BUILD_SHARED!")
|
|
||||||
+endif()
|
|
||||||
+
|
|
||||||
+option(ENABLE_EXCEPTIONS_ON_MSVC
|
|
||||||
+ "Build SPIRV-TOOLS with C++ exceptions enabled in MSVC" ON)
|
|
||||||
|
|
||||||
function(spvtools_default_compile_options TARGET)
|
|
||||||
target_compile_options(${TARGET} PRIVATE ${SPIRV_WARNINGS})
|
|
||||||
@@ -372,7 +384,7 @@ if (NOT "${SPIRV_SKIP_TESTS}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(SPIRV_LIBRARIES "-lSPIRV-Tools-opt -lSPIRV-Tools -lSPIRV-Tools-link")
|
|
||||||
-set(SPIRV_SHARED_LIBRARIES "-lSPIRV-Tools-shared")
|
|
||||||
+set(SPIRV_SHARED_LIBRARIES "-lSPIRV-Tools")
|
|
||||||
|
|
||||||
# Build pkg-config file
|
|
||||||
# Use a first-class target so it's regenerated when relevant files are updated.
|
|
||||||
@@ -388,7 +400,12 @@ add_custom_command(
|
|
||||||
-DSPIRV_LIBRARIES=${SPIRV_LIBRARIES}
|
|
||||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/write_pkg_config.cmake
|
|
||||||
DEPENDS "CHANGES" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/SPIRV-Tools.pc.in" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/write_pkg_config.cmake")
|
|
||||||
-add_custom_command(
|
|
||||||
+
|
|
||||||
+set(pc_files ${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools.pc)
|
|
||||||
+
|
|
||||||
+# TODO(crueter): remove?
|
|
||||||
+if (SPIRV_TOOLS_BUILD_SHARED)
|
|
||||||
+ add_custom_command(
|
|
||||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools-shared.pc
|
|
||||||
COMMAND ${CMAKE_COMMAND}
|
|
||||||
-DCHANGES_FILE=${CMAKE_CURRENT_SOURCE_DIR}/CHANGES
|
|
||||||
@@ -400,9 +417,12 @@ add_custom_command(
|
|
||||||
-DSPIRV_SHARED_LIBRARIES=${SPIRV_SHARED_LIBRARIES}
|
|
||||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/write_pkg_config.cmake
|
|
||||||
DEPENDS "CHANGES" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/SPIRV-Tools-shared.pc.in" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/write_pkg_config.cmake")
|
|
||||||
-add_custom_target(spirv-tools-pkg-config
|
|
||||||
- ALL
|
|
||||||
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools-shared.pc ${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools.pc)
|
|
||||||
+ set(pc_files ${pc_files} ${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools-shared.pc)
|
|
||||||
+endif()
|
|
||||||
+
|
|
||||||
+add_custom_target(spirv-tools-pkg-config
|
|
||||||
+ ALL
|
|
||||||
+ DEPENDS ${pc_files})
|
|
||||||
|
|
||||||
# Install pkg-config file
|
|
||||||
if (ENABLE_SPIRV_TOOLS_INSTALL)
|
|
||||||
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
|
|
||||||
index bfa1e661bc..fd3712c70c 100644
|
|
||||||
--- a/source/CMakeLists.txt
|
|
||||||
+++ b/source/CMakeLists.txt
|
|
||||||
@@ -337,49 +337,44 @@ function(spirv_tools_default_target_options target)
|
|
||||||
)
|
|
||||||
set_property(TARGET ${target} PROPERTY FOLDER "SPIRV-Tools libraries")
|
|
||||||
spvtools_check_symbol_exports(${target})
|
|
||||||
- add_dependencies(${target} spirv-tools-build-version core_tables extinst_tables)
|
|
||||||
+ add_dependencies(${target}
|
|
||||||
+ spirv-tools-build-version core_tables extinst_tables)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
-# Always build ${SPIRV_TOOLS}-shared. This is expected distro packages, and
|
|
||||||
-# unlike the other SPIRV_TOOLS target, defaults to hidden symbol visibility.
|
|
||||||
-add_library(${SPIRV_TOOLS}-shared SHARED ${SPIRV_SOURCES})
|
|
||||||
-if (SPIRV_TOOLS_USE_MIMALLOC)
|
|
||||||
- target_link_libraries(${SPIRV_TOOLS}-shared PRIVATE mimalloc-static)
|
|
||||||
+if (SPIRV_TOOLS_BUILD_SHARED)
|
|
||||||
+ add_library(${SPIRV_TOOLS}-shared SHARED ${SPIRV_SOURCES})
|
|
||||||
+ if (SPIRV_TOOLS_USE_MIMALLOC)
|
|
||||||
+ target_link_libraries(${SPIRV_TOOLS}-shared PRIVATE mimalloc-static)
|
|
||||||
+ endif()
|
|
||||||
+
|
|
||||||
+ set_target_properties(${SPIRV_TOOLS}-shared PROPERTIES
|
|
||||||
+ OUTPUT_NAME "${SPIRV_TOOLS}")
|
|
||||||
+ spirv_tools_default_target_options(${SPIRV_TOOLS}-shared)
|
|
||||||
+
|
|
||||||
+ target_compile_definitions(${SPIRV_TOOLS}-shared
|
|
||||||
+ PRIVATE SPIRV_TOOLS_IMPLEMENTATION
|
|
||||||
+ PUBLIC SPIRV_TOOLS_SHAREDLIB)
|
|
||||||
+
|
|
||||||
+ list(APPEND SPIRV_TOOLS_TARGETS ${SPIRV_TOOLS}-shared)
|
|
||||||
endif()
|
|
||||||
-spirv_tools_default_target_options(${SPIRV_TOOLS}-shared)
|
|
||||||
-set_target_properties(${SPIRV_TOOLS}-shared PROPERTIES CXX_VISIBILITY_PRESET hidden)
|
|
||||||
-target_compile_definitions(${SPIRV_TOOLS}-shared
|
|
||||||
- PRIVATE SPIRV_TOOLS_IMPLEMENTATION
|
|
||||||
- PUBLIC SPIRV_TOOLS_SHAREDLIB
|
|
||||||
-)
|
|
||||||
|
|
||||||
if(SPIRV_TOOLS_BUILD_STATIC)
|
|
||||||
add_library(${SPIRV_TOOLS}-static STATIC ${SPIRV_SOURCES})
|
|
||||||
if (SPIRV_TOOLS_USE_MIMALLOC AND SPIRV_TOOLS_USE_MIMALLOC_IN_STATIC_BUILD)
|
|
||||||
target_link_libraries(${SPIRV_TOOLS}-shared PRIVATE mimalloc-static)
|
|
||||||
endif()
|
|
||||||
+
|
|
||||||
spirv_tools_default_target_options(${SPIRV_TOOLS}-static)
|
|
||||||
- # The static target does not have the '-static' suffix.
|
|
||||||
- set_target_properties(${SPIRV_TOOLS}-static PROPERTIES OUTPUT_NAME "${SPIRV_TOOLS}")
|
|
||||||
-
|
|
||||||
- # Create the "${SPIRV_TOOLS}" target as an alias to either "${SPIRV_TOOLS}-static"
|
|
||||||
- # or "${SPIRV_TOOLS}-shared" depending on the value of BUILD_SHARED_LIBS.
|
|
||||||
- if(BUILD_SHARED_LIBS)
|
|
||||||
- add_library(${SPIRV_TOOLS} ALIAS ${SPIRV_TOOLS}-shared)
|
|
||||||
- else()
|
|
||||||
- add_library(${SPIRV_TOOLS} ALIAS ${SPIRV_TOOLS}-static)
|
|
||||||
- endif()
|
|
||||||
+ set_target_properties(${SPIRV_TOOLS}-static PROPERTIES
|
|
||||||
+ OUTPUT_NAME "${SPIRV_TOOLS_STATIC_LIBNAME}")
|
|
||||||
|
|
||||||
- set(SPIRV_TOOLS_TARGETS ${SPIRV_TOOLS}-static ${SPIRV_TOOLS}-shared)
|
|
||||||
-else()
|
|
||||||
- add_library(${SPIRV_TOOLS} ${SPIRV_TOOLS_LIBRARY_TYPE} ${SPIRV_SOURCES})
|
|
||||||
- if (SPIRV_TOOLS_USE_MIMALLOC)
|
|
||||||
- target_link_libraries(${SPIRV_TOOLS} PRIVATE mimalloc-static)
|
|
||||||
- endif()
|
|
||||||
- spirv_tools_default_target_options(${SPIRV_TOOLS})
|
|
||||||
- set(SPIRV_TOOLS_TARGETS ${SPIRV_TOOLS} ${SPIRV_TOOLS}-shared)
|
|
||||||
+ list(APPEND SPIRV_TOOLS_TARGETS ${SPIRV_TOOLS}-static)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
+# Create the "SPIRV-Tools" target as an alias to either "SPIRV-Tools-static"
|
|
||||||
+# or "SPIRV-Tools-shared" depending on the value of SPIRV_TOOLS_BUILD_SHARED.
|
|
||||||
+add_library(${SPIRV_TOOLS} ALIAS ${SPIRV_TOOLS_FULL_VISIBILITY})
|
|
||||||
+
|
|
||||||
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
|
|
||||||
find_library(LIBRT rt)
|
|
||||||
if(LIBRT)
|
|
||||||
@@ -390,14 +385,17 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(ENABLE_SPIRV_TOOLS_INSTALL)
|
|
||||||
- if (SPIRV_TOOLS_USE_MIMALLOC AND (NOT SPIRV_TOOLS_BUILD_STATIC OR SPIRV_TOOLS_USE_MIMALLOC_IN_STATIC_BUILD))
|
|
||||||
+ if (SPIRV_TOOLS_USE_MIMALLOC AND
|
|
||||||
+ (NOT SPIRV_TOOLS_BUILD_STATIC OR SPIRV_TOOLS_USE_MIMALLOC_IN_STATIC_BUILD))
|
|
||||||
list(APPEND SPIRV_TOOLS_TARGETS mimalloc-static)
|
|
||||||
endif()
|
|
||||||
install(TARGETS ${SPIRV_TOOLS_TARGETS} EXPORT ${SPIRV_TOOLS}Targets)
|
|
||||||
export(EXPORT ${SPIRV_TOOLS}Targets FILE ${SPIRV_TOOLS}Target.cmake)
|
|
||||||
|
|
||||||
spvtools_config_package_dir(${SPIRV_TOOLS} PACKAGE_DIR)
|
|
||||||
- install(EXPORT ${SPIRV_TOOLS}Targets FILE ${SPIRV_TOOLS}Target.cmake DESTINATION ${PACKAGE_DIR})
|
|
||||||
+ install(EXPORT ${SPIRV_TOOLS}Targets
|
|
||||||
+ FILE ${SPIRV_TOOLS}Target.cmake
|
|
||||||
+ DESTINATION ${PACKAGE_DIR})
|
|
||||||
|
|
||||||
# Special config file for root library compared to other libs.
|
|
||||||
file(WRITE ${CMAKE_BINARY_DIR}/${SPIRV_TOOLS}Config.cmake
|
|
||||||
|
|
@ -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> {
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
From e59d30b7b12e1d04cc2fc9c6219e35bda447c17e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lizzie <159065448+Lizzie841@users.noreply.github.com>
|
||||||
|
Date: Fri, 16 May 2025 04:12:13 +0100
|
||||||
|
Subject: [PATCH] Update CMakeLists.txt
|
||||||
|
|
||||||
|
---
|
||||||
|
CMakeLists.txt | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index b5f4c4f..c5c6f31 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -24,7 +24,7 @@ target_include_directories(
|
||||||
|
|
||||||
|
target_compile_features(unordered_dense INTERFACE cxx_std_17)
|
||||||
|
|
||||||
|
-if(_unordered_dense_is_toplevel_project)
|
||||||
|
+if(_unordered_dense_is_toplevel_project OR UNORDERED_DENSE_INSTALL)
|
||||||
|
# locations are provided by GNUInstallDirs
|
||||||
|
install(
|
||||||
|
TARGETS unordered_dense
|
||||||
44
.reuse/dep5
|
|
@ -14,11 +14,11 @@ 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/yuzu.bmp
|
dist/yuzu.bmp
|
||||||
dist/eden.icns
|
dist/yuzu.icns
|
||||||
dist/eden.ico
|
dist/eden.ico
|
||||||
dist/dev.eden_emu.eden.svg
|
dist/eden.svg
|
||||||
Copyright: 2025 Eden Emulator Project
|
Copyright: yuzu Emulator Project
|
||||||
License: GPL-3.0-or-later
|
License: GPL-2.0-or-later
|
||||||
|
|
||||||
Files: dist/qt_themes/qdarkstyle*/LICENSE.*
|
Files: dist/qt_themes/qdarkstyle*/LICENSE.*
|
||||||
dist/qt_themes/qdarkstyle*/style.qrc
|
dist/qt_themes/qdarkstyle*/style.qrc
|
||||||
|
|
@ -155,39 +155,3 @@ License: BSD-3-Clause
|
||||||
Files: src/android/app/debug.keystore
|
Files: src/android/app/debug.keystore
|
||||||
Copyright: 2023 yuzu Emulator Project
|
Copyright: 2023 yuzu Emulator Project
|
||||||
License: GPL-3.0-or-later
|
License: GPL-3.0-or-later
|
||||||
|
|
||||||
Files: dist/qt_themes/colorful/icons/48x48/user-trash.png
|
|
||||||
dist/qt_themes/colorful/icons/48x48/upload.png
|
|
||||||
dist/qt_themes/colorful/icons/48x48/download.png
|
|
||||||
Copyright: 2014 Uri Herrera
|
|
||||||
1996-2025 KDE Software Foundation
|
|
||||||
License: LGPL-2.0-or-later
|
|
||||||
|
|
||||||
Files: dist/qt_themes/default/icons/48x48/user-trash.png
|
|
||||||
dist/qt_themes/default/icons/48x48/upload.png
|
|
||||||
dist/qt_themes/default/icons/48x48/download.png
|
|
||||||
dist/qt_themes/default_dark/icons/48x48/user-trash.png
|
|
||||||
dist/qt_themes/default_dark/icons/48x48/upload.png
|
|
||||||
dist/qt_themes/default_dark/icons/48x48/download.png
|
|
||||||
Copyright: 2025 Fonticons, Inc.
|
|
||||||
License: CC-BY-4.0
|
|
||||||
Comment: All of these icons have been modified by crueter <crueter@crueter.xyz>
|
|
||||||
|
|
||||||
Files: CMakeModules/CPM.cmake
|
|
||||||
Copyright: 2019-2023 Lars Melchior
|
|
||||||
License: MIT
|
|
||||||
|
|
||||||
Files: CMakeModules/CPMUtil.cmake
|
|
||||||
CMakeModules/CPM.cmake
|
|
||||||
CMakeModules/GetSCMRev.cmake
|
|
||||||
CMakeModules/DetectArchitecture.cmake
|
|
||||||
tools/cpm/*
|
|
||||||
tools/update-cpm.sh
|
|
||||||
tools/shellcheck.sh
|
|
||||||
docs/CPMUtil.md
|
|
||||||
**cpmfile.json
|
|
||||||
Copyright: 2025 crueter <crueter@crueter.xyz>
|
|
||||||
License: GPL-3.0-or-later
|
|
||||||
Comment: CPM.cmake has had additional modifications from crueter to better work with CPMUtil
|
|
||||||
https://git.crueter.xyz/CMake/CPMUtil
|
|
||||||
https://git.crueter.xyz/CMake/Modules
|
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
shell=sh
|
|
||||||
21
.tx/config
|
|
@ -1,21 +0,0 @@
|
||||||
[main]
|
|
||||||
host = https://app.transifex.com
|
|
||||||
|
|
||||||
[o:edenemu:p:eden-emulator:r:android-translations]
|
|
||||||
file_filter = src/android/app/src/main/res/values-<lang>/strings.xml
|
|
||||||
source_file = src/android/app/src/main/res/values/strings.xml
|
|
||||||
type = ANDROID
|
|
||||||
minimum_perc = 0
|
|
||||||
resource_name = Android Translations
|
|
||||||
replace_edited_strings = false
|
|
||||||
keep_translations = false
|
|
||||||
lang_map = zh_CN: zh-rCN, zh_TW: zh-rTW, pt_BR: pt-rBR, pt_PT: pt-rPT, vi_VN: vi, ku: ckb, ja_JP: ja, ko_KR: ko, ru_RU: ru
|
|
||||||
|
|
||||||
[o:edenemu:p:eden-emulator:r:qt-translations]
|
|
||||||
file_filter = dist/languages/<lang>.ts
|
|
||||||
source_file = dist/languages/en.ts
|
|
||||||
type = QT
|
|
||||||
minimum_perc = 0
|
|
||||||
resource_name = Qt Translations
|
|
||||||
replace_edited_strings = false
|
|
||||||
keep_translations = false
|
|
||||||
959
CMakeLists.txt
|
|
@ -743,11 +743,9 @@ function(CPMAddPackage)
|
||||||
if(NOT DEFINED CPM_ARGS_NAME)
|
if(NOT DEFINED CPM_ARGS_NAME)
|
||||||
set(CPM_ARGS_NAME ${nameFromUrl})
|
set(CPM_ARGS_NAME ${nameFromUrl})
|
||||||
endif()
|
endif()
|
||||||
|
if(NOT DEFINED CPM_ARGS_VERSION)
|
||||||
# this is dumb and should not be done
|
set(CPM_ARGS_VERSION ${verFromUrl})
|
||||||
# if(NOT DEFINED CPM_ARGS_VERSION)
|
endif()
|
||||||
# set(CPM_ARGS_VERSION ${verFromUrl})
|
|
||||||
# endif()
|
|
||||||
|
|
||||||
list(APPEND CPM_ARGS_UNPARSED_ARGUMENTS URL "${CPM_ARGS_URL}")
|
list(APPEND CPM_ARGS_UNPARSED_ARGUMENTS URL "${CPM_ARGS_URL}")
|
||||||
endif()
|
endif()
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,20 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 crueter
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
# 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)
|
# SPDX-FileCopyrightText: Copyright 2025 crueter
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
if(MSVC OR ANDROID)
|
# Created-By: crueter
|
||||||
set(BUNDLED_DEFAULT ON)
|
# Docs will come at a later date, mostly this is to just reduce boilerplate
|
||||||
else()
|
# and some cmake magic to allow for runtime viewing of dependency versions
|
||||||
|
|
||||||
|
# Future crueter: Wow this was a lie and a half, at this point I might as well make my own CPN
|
||||||
|
# haha just kidding... unless?
|
||||||
|
|
||||||
|
if (MSVC OR ANDROID)
|
||||||
set(BUNDLED_DEFAULT OFF)
|
set(BUNDLED_DEFAULT OFF)
|
||||||
|
else()
|
||||||
|
set(BUNDLED_DEFAULT ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(CPMUTIL_FORCE_BUNDLED
|
option(CPMUTIL_FORCE_BUNDLED
|
||||||
|
|
@ -18,34 +26,21 @@ option(CPMUTIL_FORCE_SYSTEM
|
||||||
cmake_minimum_required(VERSION 3.22)
|
cmake_minimum_required(VERSION 3.22)
|
||||||
include(CPM)
|
include(CPM)
|
||||||
|
|
||||||
# cpmfile parsing
|
# TODO(crueter): Better solution for separate cpmfiles e.g. per-directory
|
||||||
set(CPMUTIL_JSON_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cpmfile.json")
|
set(CPMUTIL_JSON_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cpmfile.json" CACHE STRING "Location of 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
|
||||||
function(cpm_utils_message level name message)
|
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
|
# utility
|
||||||
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")
|
||||||
|
|
||||||
|
|
@ -58,17 +53,18 @@ function(array_to_list array length out)
|
||||||
set("${out}" "${NEW_LIST}" PARENT_SCOPE)
|
set("${out}" "${NEW_LIST}" PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
# utility
|
||||||
function(get_json_element object out member default)
|
function(get_json_element object out member default)
|
||||||
string(JSON out_type ERROR_VARIABLE err TYPE "${object}" ${member})
|
string(JSON out_type ERROR_VARIABLE err TYPE "${object}" ${member})
|
||||||
|
|
||||||
if(err)
|
if (err)
|
||||||
set("${out}" "${default}" PARENT_SCOPE)
|
set("${out}" "${default}" PARENT_SCOPE)
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
string(JSON outvar GET "${object}" ${member})
|
string(JSON outvar GET "${object}" ${member})
|
||||||
|
|
||||||
if(out_type STREQUAL "ARRAY")
|
if (out_type STREQUAL "ARRAY")
|
||||||
string(JSON _len LENGTH "${object}" ${member})
|
string(JSON _len LENGTH "${object}" ${member})
|
||||||
# array_to_list("${outvar}" ${_len} outvar)
|
# array_to_list("${outvar}" ${_len} outvar)
|
||||||
set("${out}_LENGTH" "${_len}" PARENT_SCOPE)
|
set("${out}_LENGTH" "${_len}" PARENT_SCOPE)
|
||||||
|
|
@ -77,139 +73,96 @@ 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.
|
# Kinda cancerous but whatever
|
||||||
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
|
||||||
|
SYSTEM_PACKAGE
|
||||||
|
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 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)
|
||||||
get_json_element("${object}" version version "")
|
get_json_element("${object}" version version "")
|
||||||
|
|
||||||
if(ci)
|
if (ci)
|
||||||
get_json_element("${object}" name name "${JSON_NAME}")
|
get_json_element("${object}" name name "${JSON_NAME}")
|
||||||
get_json_element("${object}" extension extension "tar.zst")
|
get_json_element("${object}" extension extension "tar.zst")
|
||||||
get_json_element("${object}" min_version min_version "")
|
get_json_element("${object}" min_version min_version "")
|
||||||
|
get_json_element("${object}" cmake_filename cmake_filename "")
|
||||||
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}
|
||||||
|
CMAKE_FILENAME ${cmake_filename}
|
||||||
|
)
|
||||||
|
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}" sha sha "")
|
get_json_element("${object}" sha sha "")
|
||||||
get_json_element("${object}" url url "")
|
get_json_element("${object}" url url "")
|
||||||
get_json_element("${object}" key key "")
|
get_json_element("${object}" key key "")
|
||||||
get_json_element("${object}" tag tag "")
|
get_json_element("${object}" tag tag "")
|
||||||
get_json_element("${object}" artifact artifact "")
|
get_json_element("${object}" artifact artifact "")
|
||||||
get_json_element("${object}" git_version git_version "")
|
get_json_element("${object}" git_version git_version "")
|
||||||
get_json_element("${object}" git_host git_host "")
|
|
||||||
get_json_element("${object}" source_subdir source_subdir "")
|
get_json_element("${object}" source_subdir source_subdir "")
|
||||||
get_json_element("${object}" bundled bundled "unset")
|
get_json_element("${object}" bundled bundled "unset")
|
||||||
get_json_element("${object}" find_args find_args "")
|
get_json_element("${object}" find_args find_args "")
|
||||||
get_json_element("${object}" raw_patches patches "")
|
get_json_element("${object}" raw_patches patches "")
|
||||||
|
|
||||||
# okay here comes the fun part: REPLACEMENTS!
|
|
||||||
# first: tag gets %VERSION% replaced if applicable,
|
|
||||||
# with either git_version (preferred) or version
|
|
||||||
# second: artifact gets %VERSION% and %TAG% replaced
|
|
||||||
# accordingly (same rules for VERSION)
|
|
||||||
|
|
||||||
if(git_version)
|
|
||||||
set(version_replace ${git_version})
|
|
||||||
else()
|
|
||||||
set(version_replace ${version})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# TODO(crueter): fmt module for cmake
|
|
||||||
if(tag)
|
|
||||||
string(REPLACE "%VERSION%" "${version_replace}" tag ${tag})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(artifact)
|
|
||||||
string(REPLACE "%VERSION%" "${version_replace}"
|
|
||||||
artifact ${artifact})
|
|
||||||
string(REPLACE "%TAG%" "${tag}" artifact ${artifact})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# format patchdir
|
# format patchdir
|
||||||
if(raw_patches)
|
if (raw_patches)
|
||||||
math(EXPR range "${raw_patches_LENGTH} - 1")
|
math(EXPR range "${raw_patches_LENGTH} - 1")
|
||||||
|
|
||||||
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} "specifies patch ${full_patch} which does not exist")
|
||||||
cpm_utils_message(FATAL_ERROR ${JSON_NAME}
|
|
||||||
"specifies patch ${full_patch} which does not exist")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
list(APPEND patches "${full_patch}")
|
list(APPEND patches "${full_patch}")
|
||||||
|
|
@ -220,83 +173,24 @@ macro(parse_object object)
|
||||||
# options
|
# options
|
||||||
get_json_element("${object}" raw_options options "")
|
get_json_element("${object}" raw_options options "")
|
||||||
|
|
||||||
if(raw_options)
|
if (raw_options)
|
||||||
array_to_list("${raw_options}" ${raw_options_LENGTH} options)
|
array_to_list("${raw_options}" ${raw_options_LENGTH} options)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(options ${options} ${JSON_OPTIONS})
|
set(options ${options} ${JSON_OPTIONS})
|
||||||
|
|
||||||
# end options
|
# end options
|
||||||
|
|
||||||
# system/bundled
|
# system/bundled
|
||||||
if(bundled STREQUAL "unset" AND DEFINED JSON_BUNDLED_PACKAGE)
|
if (bundled STREQUAL "unset" AND DEFINED JSON_BUNDLED_PACKAGE)
|
||||||
set(bundled ${JSON_BUNDLED_PACKAGE})
|
set(bundled ${JSON_BUNDLED_PACKAGE})
|
||||||
endif()
|
endif()
|
||||||
endif()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
# The preferred usage
|
|
||||||
function(AddJsonPackage)
|
|
||||||
set(oneValueArgs
|
|
||||||
NAME
|
|
||||||
|
|
||||||
# these are overrides that can be generated at runtime,
|
|
||||||
# so can be defined separately from the json
|
|
||||||
DOWNLOAD_ONLY
|
|
||||||
BUNDLED_PACKAGE
|
|
||||||
FORCE_BUNDLED_PACKAGE)
|
|
||||||
|
|
||||||
set(multiValueArgs OPTIONS)
|
|
||||||
|
|
||||||
cmake_parse_arguments(JSON "" "${oneValueArgs}" "${multiValueArgs}"
|
|
||||||
"${ARGN}")
|
|
||||||
|
|
||||||
list(LENGTH ARGN argnLength)
|
|
||||||
|
|
||||||
# single name argument
|
|
||||||
if(argnLength EQUAL 1)
|
|
||||||
set(JSON_NAME "${ARGV0}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT DEFINED CPMFILE_CONTENT)
|
|
||||||
cpm_utils_message(WARNING ${name}
|
|
||||||
"No cpmfile, AddJsonPackage is a no-op")
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT DEFINED JSON_NAME)
|
|
||||||
cpm_utils_message(FATAL_ERROR "json package" "No name specified")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
string(JSON object ERROR_VARIABLE
|
|
||||||
err GET "${CPMFILE_CONTENT}" "${JSON_NAME}")
|
|
||||||
|
|
||||||
if(err)
|
|
||||||
cpm_utils_message(FATAL_ERROR ${JSON_NAME} "Not found in cpmfile")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
parse_object(${object})
|
|
||||||
|
|
||||||
if(ci)
|
|
||||||
AddCIPackage(
|
|
||||||
VERSION ${version}
|
|
||||||
NAME ${name}
|
|
||||||
REPO ${repo}
|
|
||||||
PACKAGE ${package}
|
|
||||||
EXTENSION ${extension}
|
|
||||||
MIN_VERSION ${min_version}
|
|
||||||
DISABLED_PLATFORMS ${disabled_platforms})
|
|
||||||
|
|
||||||
else()
|
|
||||||
if (NOT DEFINED JSON_FORCE_BUNDLED_PACKAGE)
|
|
||||||
set(JSON_FORCE_BUNDLED_PACKAGE OFF)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
AddPackage(
|
AddPackage(
|
||||||
NAME "${package}"
|
NAME "${package}"
|
||||||
VERSION "${version}"
|
VERSION "${version}"
|
||||||
URL "${url}"
|
URL "${url}"
|
||||||
HASH "${hash}"
|
HASH "${hash}"
|
||||||
HASH_SUFFIX "${hash_suffix}"
|
|
||||||
SHA "${sha}"
|
SHA "${sha}"
|
||||||
REPO "${repo}"
|
REPO "${repo}"
|
||||||
KEY "${key}"
|
KEY "${key}"
|
||||||
|
|
@ -304,26 +198,27 @@ 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}
|
|
||||||
|
|
||||||
ARTIFACT ${artifact}
|
ARTIFACT ${artifact}
|
||||||
TAG ${tag})
|
TAG ${tag}
|
||||||
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}"
|
||||||
|
PARENT_SCOPE)
|
||||||
|
set(${package}_BINARY_DIR "${${package}_BINARY_DIR}"
|
||||||
|
PARENT_SCOPE)
|
||||||
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(AddPackage)
|
function(AddPackage)
|
||||||
cpm_set_policies()
|
cpm_set_policies()
|
||||||
|
|
||||||
# TODO(crueter): git clone?
|
# TODO(crueter): docs, git clone
|
||||||
|
|
||||||
#[[
|
#[[
|
||||||
URL configurations, descending order of precedence:
|
URL configurations, descending order of precedence:
|
||||||
|
|
@ -345,7 +240,6 @@ function(AddPackage)
|
||||||
NAME
|
NAME
|
||||||
VERSION
|
VERSION
|
||||||
GIT_VERSION
|
GIT_VERSION
|
||||||
GIT_HOST
|
|
||||||
|
|
||||||
REPO
|
REPO
|
||||||
TAG
|
TAG
|
||||||
|
|
@ -363,99 +257,84 @@ function(AddPackage)
|
||||||
|
|
||||||
KEY
|
KEY
|
||||||
BUNDLED_PACKAGE
|
BUNDLED_PACKAGE
|
||||||
FORCE_BUNDLED_PACKAGE
|
FIND_PACKAGE_ARGUMENTS
|
||||||
FIND_PACKAGE_ARGUMENTS)
|
)
|
||||||
|
|
||||||
set(multiValueArgs OPTIONS PATCHES)
|
set(multiValueArgs OPTIONS PATCHES)
|
||||||
|
|
||||||
cmake_parse_arguments(PKG_ARGS "" "${oneValueArgs}" "${multiValueArgs}"
|
cmake_parse_arguments(PKG_ARGS "" "${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
|
if (DEFINED PKG_ARGS_URL)
|
||||||
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)
|
|
||||||
set(git_host github.com)
|
|
||||||
else()
|
|
||||||
set(git_host ${PKG_ARGS_GIT_HOST})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(DEFINED PKG_ARGS_URL)
|
|
||||||
set(pkg_url ${PKG_ARGS_URL})
|
set(pkg_url ${PKG_ARGS_URL})
|
||||||
|
|
||||||
if(DEFINED PKG_ARGS_REPO)
|
if (DEFINED PKG_ARGS_REPO)
|
||||||
set(pkg_git_url https://${git_host}/${PKG_ARGS_REPO})
|
set(pkg_git_url https://github.com/${PKG_ARGS_REPO})
|
||||||
else()
|
else()
|
||||||
if(DEFINED PKG_ARGS_GIT_URL)
|
if (DEFINED PKG_ARGS_GIT_URL)
|
||||||
set(pkg_git_url ${PKG_ARGS_GIT_URL})
|
set(pkg_git_url ${PKG_ARGS_GIT_URL})
|
||||||
else()
|
else()
|
||||||
set(pkg_git_url ${pkg_url})
|
set(pkg_git_url ${pkg_url})
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
elseif(DEFINED PKG_ARGS_REPO)
|
elseif (DEFINED PKG_ARGS_REPO)
|
||||||
set(pkg_git_url https://${git_host}/${PKG_ARGS_REPO})
|
set(pkg_git_url https://github.com/${PKG_ARGS_REPO})
|
||||||
|
|
||||||
if(DEFINED PKG_ARGS_TAG)
|
if (DEFINED PKG_ARGS_TAG)
|
||||||
set(pkg_key ${PKG_ARGS_TAG})
|
set(pkg_key ${PKG_ARGS_TAG})
|
||||||
|
|
||||||
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)
|
||||||
endif()
|
endif()
|
||||||
elseif(DEFINED PKG_ARGS_SHA)
|
elseif (DEFINED PKG_ARGS_SHA)
|
||||||
set(pkg_url "${pkg_git_url}/archive/${PKG_ARGS_SHA}.tar.gz")
|
set(pkg_url "${pkg_git_url}/archive/${PKG_ARGS_SHA}.zip")
|
||||||
else()
|
else()
|
||||||
if(DEFINED PKG_ARGS_BRANCH)
|
if (DEFINED PKG_ARGS_BRANCH)
|
||||||
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}.zip)
|
||||||
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 (DEFINED PKG_ARGS_GIT_VERSION)
|
||||||
if(DEFINED PKG_ARGS_SHA)
|
set(git_version ${PKG_ARGS_GIT_VERSION})
|
||||||
|
elseif(DEFINED PKG_ARGS_VERSION)
|
||||||
|
set(git_version ${PKG_ARGS_VERSION})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (NOT DEFINED PKG_ARGS_KEY)
|
||||||
|
if (DEFINED PKG_ARGS_SHA)
|
||||||
string(SUBSTRING ${PKG_ARGS_SHA} 0 4 pkg_key)
|
string(SUBSTRING ${PKG_ARGS_SHA} 0 4 pkg_key)
|
||||||
cpm_utils_message(DEBUG ${PKG_ARGS_NAME}
|
cpm_utils_message(DEBUG ${PKG_ARGS_NAME}
|
||||||
"No custom key defined, using ${pkg_key} from sha")
|
"No custom key defined, using ${pkg_key} from sha")
|
||||||
elseif(DEFINED PKG_ARGS_GIT_VERSION)
|
elseif (DEFINED git_version)
|
||||||
set(pkg_key ${PKG_ARGS_GIT_VERSION})
|
set(pkg_key ${git_version})
|
||||||
cpm_utils_message(DEBUG ${PKG_ARGS_NAME}
|
cpm_utils_message(DEBUG ${PKG_ARGS_NAME}
|
||||||
"No custom key defined, using ${pkg_key}")
|
"No custom key defined, using ${pkg_key}")
|
||||||
elseif(DEFINED PKG_ARGS_TAG)
|
elseif (DEFINED PKG_ARGS_TAG)
|
||||||
set(pkg_key ${PKG_ARGS_TAG})
|
set(pkg_key ${PKG_ARGS_TAG})
|
||||||
cpm_utils_message(DEBUG ${PKG_ARGS_NAME}
|
cpm_utils_message(DEBUG ${PKG_ARGS_NAME}
|
||||||
"No custom key defined, using ${pkg_key}")
|
"No custom key defined, using ${pkg_key}")
|
||||||
elseif(DEFINED PKG_ARGS_VERSION)
|
|
||||||
set(pkg_key ${PKG_ARGS_VERSION})
|
|
||||||
cpm_utils_message(DEBUG ${PKG_ARGS_NAME}
|
|
||||||
"No custom key defined, using ${pkg_key}")
|
|
||||||
else()
|
else()
|
||||||
cpm_utils_message(WARNING ${PKG_ARGS_NAME}
|
cpm_utils_message(WARNING ${PKG_ARGS_NAME}
|
||||||
"Could not determine cache key, using CPM defaults")
|
"Could not determine cache key, using CPM defaults")
|
||||||
|
|
@ -464,48 +343,47 @@ function(AddPackage)
|
||||||
set(pkg_key ${PKG_ARGS_KEY})
|
set(pkg_key ${PKG_ARGS_KEY})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(DEFINED PKG_ARGS_HASH_ALGO)
|
if (DEFINED PKG_ARGS_HASH_ALGO)
|
||||||
set(hash_algo ${PKG_ARGS_HASH_ALGO})
|
set(hash_algo ${PKG_ARGS_HASH_ALGO})
|
||||||
else()
|
else()
|
||||||
set(hash_algo SHA512)
|
set(hash_algo SHA512)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(DEFINED PKG_ARGS_HASH)
|
if (DEFINED PKG_ARGS_HASH)
|
||||||
set(pkg_hash "${hash_algo}=${PKG_ARGS_HASH}")
|
set(pkg_hash "${hash_algo}=${PKG_ARGS_HASH}")
|
||||||
elseif(DEFINED PKG_ARGS_HASH_SUFFIX)
|
elseif (DEFINED PKG_ARGS_HASH_SUFFIX)
|
||||||
# funny sanity check
|
# funny sanity check
|
||||||
string(TOLOWER ${hash_algo} hash_algo_lower)
|
string(TOLOWER ${hash_algo} hash_algo_lower)
|
||||||
string(TOLOWER ${PKG_ARGS_HASH_SUFFIX} suffix_lower)
|
string(TOLOWER ${PKG_ARGS_HASH_SUFFIX} suffix_lower)
|
||||||
if(NOT ${suffix_lower} MATCHES ${hash_algo_lower})
|
if (NOT ${suffix_lower} MATCHES ${hash_algo_lower})
|
||||||
cpm_utils_message(WARNING
|
cpm_utils_message(WARNING
|
||||||
"Hash algorithm and hash suffix do not match, errors may occur")
|
"Hash algorithm and hash suffix do not match, errors may occur")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(hash_url ${pkg_url}.${PKG_ARGS_HASH_SUFFIX})
|
set(hash_url ${pkg_url}.${PKG_ARGS_HASH_SUFFIX})
|
||||||
elseif(DEFINED PKG_ARGS_HASH_URL)
|
elseif (DEFINED PKG_ARGS_HASH_URL)
|
||||||
set(hash_url ${PKG_ARGS_HASH_URL})
|
set(hash_url ${PKG_ARGS_HASH_URL})
|
||||||
else()
|
else()
|
||||||
cpm_utils_message(WARNING ${PKG_ARGS_NAME}
|
cpm_utils_message(WARNING ${PKG_ARGS_NAME}
|
||||||
"No hash or hash URL found")
|
"No hash or hash URL found")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(DEFINED hash_url)
|
if (DEFINED hash_url)
|
||||||
set(outfile ${CMAKE_CURRENT_BINARY_DIR}/${PKG_ARGS_NAME}.hash)
|
set(outfile ${CMAKE_CURRENT_BINARY_DIR}/${PKG_ARGS_NAME}.hash)
|
||||||
|
|
||||||
# TODO(crueter): This is kind of a bad solution
|
# TODO(crueter): This is kind of a bad solution
|
||||||
# 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()
|
||||||
|
|
||||||
if(EXISTS ${outfile})
|
if (EXISTS ${outfile})
|
||||||
file(READ ${outfile} pkg_hash_tmp)
|
file(READ ${outfile} pkg_hash_tmp)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(DEFINED ${pkg_hash_tmp})
|
if (DEFINED ${pkg_hash_tmp})
|
||||||
set(pkg_hash "${hash_algo}=${pkg_hash_tmp}")
|
set(pkg_hash "${hash_algo}=${pkg_hash_tmp}")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
@ -523,20 +401,17 @@ 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_NAME}_FORCE_SYSTEM)
|
||||||
set_precedence(OFF OFF)
|
|
||||||
elseif(${PKG_ARGS_NAME}_FORCE_SYSTEM)
|
|
||||||
set_precedence(ON ON)
|
set_precedence(ON ON)
|
||||||
elseif(${PKG_ARGS_NAME}_FORCE_BUNDLED)
|
elseif (${PKG_ARGS_NAME}_FORCE_BUNDLED)
|
||||||
set_precedence(OFF OFF)
|
set_precedence(OFF OFF)
|
||||||
elseif(CPMUTIL_FORCE_SYSTEM)
|
elseif (CPMUTIL_FORCE_SYSTEM)
|
||||||
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()
|
||||||
set(local ON)
|
set(local ON)
|
||||||
|
|
@ -547,13 +422,9 @@ function(AddPackage)
|
||||||
set_precedence(ON OFF)
|
set_precedence(ON OFF)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(DEFINED PKG_ARGS_VERSION)
|
|
||||||
list(APPEND EXTRA_ARGS
|
|
||||||
VERSION ${PKG_ARGS_VERSION})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
CPMAddPackage(
|
CPMAddPackage(
|
||||||
NAME ${PKG_ARGS_NAME}
|
NAME ${PKG_ARGS_NAME}
|
||||||
|
VERSION ${PKG_ARGS_VERSION}
|
||||||
URL ${pkg_url}
|
URL ${pkg_url}
|
||||||
URL_HASH ${pkg_hash}
|
URL_HASH ${pkg_hash}
|
||||||
CUSTOM_CACHE_KEY ${pkg_key}
|
CUSTOM_CACHE_KEY ${pkg_key}
|
||||||
|
|
@ -564,33 +435,29 @@ function(AddPackage)
|
||||||
PATCHES ${PKG_ARGS_PATCHES}
|
PATCHES ${PKG_ARGS_PATCHES}
|
||||||
EXCLUDE_FROM_ALL ON
|
EXCLUDE_FROM_ALL ON
|
||||||
|
|
||||||
${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})
|
||||||
|
|
||||||
if(${PKG_ARGS_NAME}_ADDED)
|
if (${PKG_ARGS_NAME}_ADDED)
|
||||||
if(DEFINED PKG_ARGS_SHA)
|
if (DEFINED PKG_ARGS_SHA)
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS
|
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS
|
||||||
${PKG_ARGS_SHA})
|
${PKG_ARGS_SHA})
|
||||||
elseif(DEFINED PKG_ARGS_GIT_VERSION)
|
elseif(DEFINED git_version)
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS
|
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS
|
||||||
${PKG_ARGS_GIT_VERSION})
|
${git_version})
|
||||||
elseif(DEFINED PKG_ARGS_TAG)
|
elseif (DEFINED PKG_ARGS_TAG)
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS
|
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS
|
||||||
${PKG_ARGS_TAG})
|
${PKG_ARGS_TAG})
|
||||||
elseif(DEFINED PKG_ARGS_VERSION)
|
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS
|
|
||||||
${PKG_ARGS_VERSION})
|
|
||||||
else()
|
else()
|
||||||
cpm_utils_message(WARNING ${PKG_ARGS_NAME}
|
cpm_utils_message(WARNING ${PKG_ARGS_NAME}
|
||||||
"Package has no specified sha, tag, or version")
|
"Package has no specified sha, tag, or version")
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS "unknown")
|
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS "unknown")
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
if(DEFINED CPM_PACKAGE_${PKG_ARGS_NAME}_VERSION AND NOT
|
if (DEFINED CPM_PACKAGE_${PKG_ARGS_NAME}_VERSION AND NOT
|
||||||
"${CPM_PACKAGE_${PKG_ARGS_NAME}_VERSION}" STREQUAL "")
|
"${CPM_PACKAGE_${PKG_ARGS_NAME}_VERSION}" STREQUAL "")
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS
|
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS
|
||||||
"${CPM_PACKAGE_${PKG_ARGS_NAME}_VERSION} (system)")
|
"${CPM_PACKAGE_${PKG_ARGS_NAME}_VERSION} (system)")
|
||||||
|
|
@ -610,7 +477,24 @@ function(AddPackage)
|
||||||
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# TODO(crueter): we could do an AddMultiArchPackage, multiplatformpackage?
|
function(add_ci_package key)
|
||||||
|
set(ARTIFACT ${ARTIFACT_NAME}-${key}-${ARTIFACT_VERSION}.${ARTIFACT_EXT})
|
||||||
|
|
||||||
|
AddPackage(
|
||||||
|
NAME ${ARTIFACT_PACKAGE}
|
||||||
|
REPO ${ARTIFACT_REPO}
|
||||||
|
TAG v${ARTIFACT_VERSION}
|
||||||
|
VERSION ${ARTIFACT_VERSION}
|
||||||
|
ARTIFACT ${ARTIFACT}
|
||||||
|
|
||||||
|
KEY ${key}
|
||||||
|
HASH_SUFFIX sha512sum
|
||||||
|
BUNDLED_PACKAGE ON
|
||||||
|
)
|
||||||
|
|
||||||
|
set(ARTIFACT_DIR ${${ARTIFACT_PACKAGE}_SOURCE_DIR} PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
# name is the artifact name, package is for find_package override
|
# name is the artifact name, package is for find_package override
|
||||||
function(AddCIPackage)
|
function(AddCIPackage)
|
||||||
set(oneValueArgs
|
set(oneValueArgs
|
||||||
|
|
@ -619,17 +503,12 @@ function(AddCIPackage)
|
||||||
REPO
|
REPO
|
||||||
PACKAGE
|
PACKAGE
|
||||||
EXTENSION
|
EXTENSION
|
||||||
MIN_VERSION)
|
MIN_VERSION
|
||||||
|
DISABLED_PLATFORMS
|
||||||
|
CMAKE_FILENAME
|
||||||
|
)
|
||||||
|
|
||||||
set(multiValueArgs DISABLED_PLATFORMS)
|
cmake_parse_arguments(PKG_ARGS "" "${oneValueArgs}" "" ${ARGN})
|
||||||
|
|
||||||
set(optionArgs MODULE)
|
|
||||||
|
|
||||||
cmake_parse_arguments(PKG_ARGS
|
|
||||||
"${optionArgs}"
|
|
||||||
"${oneValueArgs}"
|
|
||||||
"${multiValueArgs}"
|
|
||||||
${ARGN})
|
|
||||||
|
|
||||||
if(NOT DEFINED PKG_ARGS_VERSION)
|
if(NOT DEFINED PKG_ARGS_VERSION)
|
||||||
message(FATAL_ERROR "[CPMUtil] VERSION is required")
|
message(FATAL_ERROR "[CPMUtil] VERSION is required")
|
||||||
|
|
@ -644,7 +523,7 @@ function(AddCIPackage)
|
||||||
message(FATAL_ERROR "[CPMUtil] PACKAGE is required")
|
message(FATAL_ERROR "[CPMUtil] PACKAGE is required")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT DEFINED PKG_ARGS_CMAKE_FILENAME)
|
if (NOT DEFINED PKG_ARGS_CMAKE_FILENAME)
|
||||||
set(ARTIFACT_CMAKE ${PKG_ARGS_NAME})
|
set(ARTIFACT_CMAKE ${PKG_ARGS_NAME})
|
||||||
else()
|
else()
|
||||||
set(ARTIFACT_CMAKE ${PKG_ARGS_CMAKE_FILENAME})
|
set(ARTIFACT_CMAKE ${PKG_ARGS_CMAKE_FILENAME})
|
||||||
|
|
@ -656,11 +535,11 @@ function(AddCIPackage)
|
||||||
set(ARTIFACT_EXT ${PKG_ARGS_EXTENSION})
|
set(ARTIFACT_EXT ${PKG_ARGS_EXTENSION})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(DEFINED PKG_ARGS_MIN_VERSION)
|
if (DEFINED PKG_ARGS_MIN_VERSION)
|
||||||
set(ARTIFACT_MIN_VERSION ${PKG_ARGS_MIN_VERSION})
|
set(ARTIFACT_MIN_VERSION ${PKG_ARGS_MIN_VERSION})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(DEFINED PKG_ARGS_DISABLED_PLATFORMS)
|
if (DEFINED PKG_ARGS_DISABLED_PLATFORMS)
|
||||||
set(DISABLED_PLATFORMS ${PKG_ARGS_DISABLED_PLATFORMS})
|
set(DISABLED_PLATFORMS ${PKG_ARGS_DISABLED_PLATFORMS})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
@ -670,75 +549,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)
|
|
||||||
set(pkgname macos-universal)
|
|
||||||
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}")
|
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" IN_LIST DISABLED_PLATFORMS)
|
||||||
HASH_SUFFIX sha512sum
|
add_ci_package(solaris)
|
||||||
FORCE_BUNDLED_PACKAGE ON
|
endif()
|
||||||
DOWNLOAD_ONLY ${PKG_ARGS_MODULE})
|
|
||||||
|
if(PLATFORM_FREEBSD AND NOT "freebsd" IN_LIST DISABLED_PLATFORMS)
|
||||||
|
add_ci_package(freebsd)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if((PLATFORM_LINUX AND ARCHITECTURE_x86_64) AND NOT "linux" IN_LIST DISABLED_PLATFORMS)
|
||||||
|
add_ci_package(linux)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if((PLATFORM_LINUX AND ARCHITECTURE_arm64) AND NOT "linux-aarch64" IN_LIST DISABLED_PLATFORMS)
|
||||||
|
add_ci_package(linux-aarch64)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (DEFINED ARTIFACT_DIR)
|
||||||
|
include(${ARTIFACT_DIR}/${ARTIFACT_CMAKE}.cmake)
|
||||||
|
|
||||||
|
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_NAMES ${ARTIFACT_NAME})
|
||||||
|
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_URLS "https://github.com/${ARTIFACT_REPO}") # TODO(crueter) other hosts?
|
||||||
|
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS ${ARTIFACT_VERSION})
|
||||||
|
|
||||||
set(${ARTIFACT_PACKAGE}_ADDED TRUE PARENT_SCOPE)
|
set(${ARTIFACT_PACKAGE}_ADDED TRUE PARENT_SCOPE)
|
||||||
set(${ARTIFACT_PACKAGE}_SOURCE_DIR
|
|
||||||
"${${ARTIFACT_PACKAGE}_SOURCE_DIR}" PARENT_SCOPE)
|
|
||||||
|
|
||||||
if (PKG_ARGS_MODULE)
|
|
||||||
list(APPEND CMAKE_PREFIX_PATH "${${ARTIFACT_PACKAGE}_SOURCE_DIR}")
|
|
||||||
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE)
|
|
||||||
endif()
|
|
||||||
else()
|
else()
|
||||||
find_package(${ARTIFACT_PACKAGE} ${ARTIFACT_MIN_VERSION} REQUIRED)
|
find_package(${ARTIFACT_PACKAGE} ${ARTIFACT_MIN_VERSION} REQUIRED)
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# Utility function for Qt
|
|
||||||
function(AddQt version)
|
|
||||||
if (NOT DEFINED version)
|
|
||||||
message(FATAL_ERROR "[CPMUtil] AddQt: version is required")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
AddCIPackage(
|
|
||||||
NAME Qt
|
|
||||||
PACKAGE Qt6
|
|
||||||
VERSION ${version}
|
|
||||||
MIN_VERSION 6
|
|
||||||
REPO crueter-ci/Qt
|
|
||||||
DISABLED_PLATFORMS
|
|
||||||
android-x86_64 android-aarch64
|
|
||||||
freebsd-amd64 solaris-amd64 openbsd-amd64
|
|
||||||
MODULE)
|
|
||||||
|
|
||||||
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
@ -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)
|
||||||
|
|
@ -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)
|
||||||
|
|
@ -0,0 +1,254 @@
|
||||||
|
# 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")
|
||||||
|
|
||||||
|
if (WIN32 OR FORCE_WIN_ARCHIVES)
|
||||||
|
set(CACHE_KEY "windows")
|
||||||
|
set(package_repo "ext-windows-bin/raw/master/")
|
||||||
|
set(package_extension ".7z")
|
||||||
|
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()
|
||||||
|
set(package_url "${package_base_url}${package_repo}")
|
||||||
|
set(full_url ${package_url}${remote_path}${lib_name}${package_extension})
|
||||||
|
|
||||||
|
# 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
|
||||||
|
)
|
||||||
|
|
||||||
|
set(${prefix_var} "${${cpm_key}_SOURCE_DIR}" PARENT_SCOPE)
|
||||||
|
message(STATUS "Using bundled binaries at ${${cpm_key}_SOURCE_DIR}")
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(download_win_archives)
|
||||||
|
set(FORCE_WIN_ARCHIVES ON)
|
||||||
|
set(FFmpeg_EXT_NAME "ffmpeg-7.1.1")
|
||||||
|
|
||||||
|
download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" "" 7.1.1)
|
||||||
|
|
||||||
|
set(FORCE_WIN_ARCHIVES OFF)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(download_moltenvk_external platform version)
|
||||||
|
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")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Add the MoltenVK library path to the prefix so find_library can locate it.
|
||||||
|
list(APPEND CMAKE_PREFIX_PATH "${MOLTENVK_DIR}/MoltenVK/dylib/${platform}")
|
||||||
|
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE)
|
||||||
|
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 "linux")
|
||||||
|
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")
|
||||||
|
set(install_args ${install_args} install-tool --outputdir ${base_path} ${host} desktop ${target})
|
||||||
|
else()
|
||||||
|
set(prefix "${base_path}/${target}/${arch_path}")
|
||||||
|
set(install_args ${install_args} install-qt --outputdir ${base_path} ${host} ${type} ${target} ${arch} -m qt_base)
|
||||||
|
|
||||||
|
if (YUZU_USE_QT_MULTIMEDIA)
|
||||||
|
set(install_args ${install_args} qtmultimedia)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (YUZU_USE_QT_WEB_ENGINE)
|
||||||
|
set(install_args ${install_args} qtpositioning qtwebchannel qtwebengine)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (NOT ${YUZU_QT_MIRROR} STREQUAL "")
|
||||||
|
message(STATUS "Using Qt mirror ${YUZU_QT_MIRROR}")
|
||||||
|
set(install_args ${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})
|
||||||
|
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})
|
||||||
|
else()
|
||||||
|
set(aqt_install_path "${base_path}/aqt")
|
||||||
|
file(MAKE_DIRECTORY "${aqt_install_path}")
|
||||||
|
|
||||||
|
execute_process(COMMAND python3 -m pip install --target=${aqt_install_path} aqtinstall
|
||||||
|
WORKING_DIRECTORY ${base_path})
|
||||||
|
execute_process(COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${aqt_install_path} python3 -m aqt ${install_args}
|
||||||
|
WORKING_DIRECTORY ${base_path})
|
||||||
|
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)
|
||||||
|
|
||||||
|
get_external_prefix(qt base_path)
|
||||||
|
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)
|
||||||
|
set(MOLTENVK_PLATFORM "macOS")
|
||||||
|
|
||||||
|
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/v1.2.10-rc2/MoltenVK-all.tar
|
||||||
|
${MOLTENVK_TAR} SHOW_PROGRESS)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${MOLTENVK_TAR}"
|
||||||
|
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Add the MoltenVK library path to the prefix so find_library can locate it.
|
||||||
|
list(APPEND CMAKE_PREFIX_PATH "${MOLTENVK_DIR}/MoltenVK/dylib/${MOLTENVK_PLATFORM}")
|
||||||
|
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(get_external_prefix lib_name prefix_var)
|
||||||
|
set(${prefix_var} "${CMAKE_BINARY_DIR}/externals/${lib_name}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
@ -1,33 +1,27 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2022 Alexandre Bouvier <contact@amb.tf>
|
# SPDX-FileCopyrightText: 2022 Alexandre Bouvier <contact@amb.tf>
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
find_package(DiscordRPC CONFIG QUIET)
|
find_path(DiscordRPC_INCLUDE_DIR discord_rpc.h)
|
||||||
|
|
||||||
if (NOT DiscordRPC_FOUND)
|
find_library(DiscordRPC_LIBRARY discord-rpc)
|
||||||
find_path(DiscordRPC_INCLUDE_DIR discord_rpc.h)
|
|
||||||
find_library(DiscordRPC_LIBRARY discord-rpc)
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
find_package_handle_standard_args(DiscordRPC
|
find_package_handle_standard_args(DiscordRPC
|
||||||
REQUIRED_VARS
|
REQUIRED_VARS
|
||||||
DiscordRPC_LIBRARY
|
DiscordRPC_LIBRARY
|
||||||
DiscordRPC_INCLUDE_DIR
|
DiscordRPC_INCLUDE_DIR
|
||||||
)
|
)
|
||||||
|
|
||||||
if (DiscordRPC_FOUND AND NOT TARGET DiscordRPC::discord-rpc)
|
if (DiscordRPC_FOUND AND NOT TARGET DiscordRPC::discord-rpc)
|
||||||
add_library(DiscordRPC::discord-rpc UNKNOWN IMPORTED)
|
add_library(DiscordRPC::discord-rpc UNKNOWN IMPORTED)
|
||||||
set_target_properties(DiscordRPC::discord-rpc PROPERTIES
|
set_target_properties(DiscordRPC::discord-rpc PROPERTIES
|
||||||
IMPORTED_LOCATION "${DiscordRPC_LIBRARY}"
|
IMPORTED_LOCATION "${DiscordRPC_LIBRARY}"
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${DiscordRPC_INCLUDE_DIR}"
|
INTERFACE_INCLUDE_DIRECTORIES "${DiscordRPC_INCLUDE_DIR}"
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
mark_as_advanced(
|
mark_as_advanced(
|
||||||
DiscordRPC_INCLUDE_DIR
|
DiscordRPC_INCLUDE_DIR
|
||||||
DiscordRPC_LIBRARY
|
DiscordRPC_LIBRARY
|
||||||
)
|
)
|
||||||
endif()
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,3 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2025 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 2025 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
|
@ -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 2025 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
|
@ -13,10 +10,6 @@ find_package_handle_standard_args(SPIRV-Tools
|
||||||
VERSION_VAR SPIRV-Tools_VERSION
|
VERSION_VAR SPIRV-Tools_VERSION
|
||||||
)
|
)
|
||||||
|
|
||||||
if (PLATFORM_MSYS)
|
|
||||||
FixMsysPath(PkgConfig::SPIRV-Tools)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (SPIRV-Tools_FOUND AND NOT TARGET SPIRV-Tools::SPIRV-Tools)
|
if (SPIRV-Tools_FOUND AND NOT TARGET SPIRV-Tools::SPIRV-Tools)
|
||||||
if (TARGET SPIRV-Tools)
|
if (TARGET SPIRV-Tools)
|
||||||
add_library(SPIRV-Tools::SPIRV-Tools ALIAS SPIRV-Tools)
|
add_library(SPIRV-Tools::SPIRV-Tools ALIAS SPIRV-Tools)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,3 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2022 Alexandre Bouvier <contact@amb.tf>
|
# SPDX-FileCopyrightText: 2022 Alexandre Bouvier <contact@amb.tf>
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
@ -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 2025 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2022 Alexandre Bouvier <contact@amb.tf>
|
# SPDX-FileCopyrightText: 2022 Alexandre Bouvier <contact@amb.tf>
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
@ -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 2025 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
|
@ -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,24 +1,17 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
find_package(zstd QUIET CONFIG)
|
find_package(PkgConfig QUIET)
|
||||||
if (zstd_CONSIDERED_CONFIGS)
|
pkg_search_module(ZSTD QUIET IMPORTED_TARGET libzstd)
|
||||||
find_package_handle_standard_args(zstd CONFIG_MODE)
|
find_package_handle_standard_args(zstd
|
||||||
else()
|
|
||||||
find_package(PkgConfig QUIET)
|
|
||||||
pkg_search_module(ZSTD QUIET IMPORTED_TARGET libzstd)
|
|
||||||
find_package_handle_standard_args(zstd
|
|
||||||
REQUIRED_VARS ZSTD_LINK_LIBRARIES
|
REQUIRED_VARS ZSTD_LINK_LIBRARIES
|
||||||
VERSION_VAR ZSTD_VERSION)
|
VERSION_VAR ZSTD_VERSION
|
||||||
endif()
|
)
|
||||||
|
|
||||||
if (zstd_FOUND AND NOT TARGET zstd::zstd)
|
if (zstd_FOUND AND NOT TARGET zstd::zstd)
|
||||||
if (TARGET zstd::libzstd_shared AND NOT YUZU_STATIC_BUILD)
|
if (TARGET zstd::libzstd_shared)
|
||||||
add_library(zstd::zstd ALIAS zstd::libzstd_shared)
|
add_library(zstd::zstd ALIAS zstd::libzstd_shared)
|
||||||
elseif (TARGET zstd::libzstd_static)
|
elseif (TARGET zstd::libzstd_static)
|
||||||
add_library(zstd::zstd ALIAS zstd::libzstd_static)
|
add_library(zstd::zstd ALIAS zstd::libzstd_static)
|
||||||
|
|
@ -26,16 +19,3 @@ if (zstd_FOUND AND NOT TARGET zstd::zstd)
|
||||||
add_library(zstd::zstd ALIAS PkgConfig::ZSTD)
|
add_library(zstd::zstd ALIAS PkgConfig::ZSTD)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
get_target_property(ZSTD_TARGET zstd::zstd ALIASED_TARGET)
|
|
||||||
|
|
||||||
if (NOT TARGET zstd::libzstd)
|
|
||||||
if (ZSTD_TARGET)
|
|
||||||
add_library(zstd::libzstd ALIAS ${ZSTD_TARGET})
|
|
||||||
else()
|
|
||||||
add_library(zstd::libzstd ALIAS zstd::zstd)
|
|
||||||
endif()
|
|
||||||
elseif(YUZU_STATIC_BUILD AND TARGET zstd::libzstd_static)
|
|
||||||
# zstd::libzstd links to shared zstd by default
|
|
||||||
set_target_properties(zstd::libzstd PROPERTIES INTERFACE_LINK_LIBRARIES zstd::libzstd_static)
|
|
||||||
endif()
|
|
||||||
|
|
|
||||||
|
|
@ -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,57 +1,38 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
# generate git/build information
|
# Gets a UTC timestamp and sets the provided variable to it
|
||||||
include(GetSCMRev)
|
|
||||||
|
|
||||||
function(get_timestamp _var)
|
function(get_timestamp _var)
|
||||||
string(TIMESTAMP timestamp UTC)
|
string(TIMESTAMP timestamp UTC)
|
||||||
set(${_var} "${timestamp}" PARENT_SCOPE)
|
set(${_var} "${timestamp}" PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
# generate git/build information
|
||||||
|
include(GetGitRevisionDescription)
|
||||||
|
if(NOT GIT_REF_SPEC)
|
||||||
|
get_git_head_revision(GIT_REF_SPEC GIT_REV)
|
||||||
|
endif()
|
||||||
|
if(NOT GIT_DESC)
|
||||||
|
git_describe(GIT_DESC --always --long --dirty)
|
||||||
|
endif()
|
||||||
|
if (NOT GIT_BRANCH)
|
||||||
|
git_branch_name(GIT_BRANCH)
|
||||||
|
endif()
|
||||||
get_timestamp(BUILD_DATE)
|
get_timestamp(BUILD_DATE)
|
||||||
|
|
||||||
if (DEFINED GIT_RELEASE)
|
git_get_exact_tag(GIT_TAG --tags)
|
||||||
set(BUILD_VERSION "${GIT_TAG}")
|
if (GIT_TAG MATCHES "NOTFOUND")
|
||||||
set(GIT_REFSPEC "${GIT_RELEASE}")
|
set(BUILD_VERSION "${GIT_DESC}")
|
||||||
set(IS_DEV_BUILD false)
|
|
||||||
else()
|
|
||||||
string(SUBSTRING ${GIT_COMMIT} 0 10 BUILD_VERSION)
|
|
||||||
set(BUILD_VERSION "${BUILD_VERSION}-${GIT_REFSPEC}")
|
|
||||||
set(IS_DEV_BUILD true)
|
set(IS_DEV_BUILD true)
|
||||||
endif()
|
|
||||||
|
|
||||||
if (NIGHTLY_BUILD)
|
|
||||||
set(IS_NIGHTLY_BUILD true)
|
|
||||||
else()
|
else()
|
||||||
set(IS_NIGHTLY_BUILD false)
|
set(BUILD_VERSION ${GIT_TAG})
|
||||||
|
set(IS_DEV_BUILD false)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(GIT_DESC ${BUILD_VERSION})
|
|
||||||
|
|
||||||
# Generate cpp with Git revision from template
|
# Generate cpp with Git revision from template
|
||||||
# Also if this is a CI build, add the build name (ie: Nightly, Canary) to the scm_rev file as well
|
# Also if this is a CI build, add the build name (ie: Nightly, Canary) to the scm_rev file as well
|
||||||
|
set(REPO_NAME "Eden")
|
||||||
# Auto-updater metadata! Must somewhat mirror GitHub API endpoint
|
set(BUILD_ID ${GIT_BRANCH})
|
||||||
if (NIGHTLY_BUILD)
|
|
||||||
set(BUILD_AUTO_UPDATE_WEBSITE "https://github.com")
|
|
||||||
set(BUILD_AUTO_UPDATE_API "api.github.com")
|
|
||||||
set(BUILD_AUTO_UPDATE_API_PATH "/repos/")
|
|
||||||
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 "git.eden-emu.dev")
|
|
||||||
set(BUILD_AUTO_UPDATE_API_PATH "/api/v1/repos/")
|
|
||||||
set(BUILD_AUTO_UPDATE_REPO "eden-emu/eden")
|
|
||||||
set(REPO_NAME "Eden")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
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}")
|
|
||||||
|
|
||||||
configure_file(scm_rev.cpp.in scm_rev.cpp @ONLY)
|
configure_file(scm_rev.cpp.in scm_rev.cpp @ONLY)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
# buildcache wrapper
|
||||||
|
OPTION(USE_CCACHE "Use buildcache for compilation" OFF)
|
||||||
|
IF(USE_CCACHE)
|
||||||
|
FIND_PROGRAM(CCACHE buildcache)
|
||||||
|
IF (CCACHE)
|
||||||
|
MESSAGE(STATUS "Using buildcache 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 buildcache executable found")
|
||||||
|
ENDIF(CCACHE)
|
||||||
|
ENDIF(USE_CCACHE)
|
||||||
|
|
@ -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()
|
||||||
|
|
@ -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()
|
||||||
|
|
@ -1,6 +1,3 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
|
@ -15,8 +12,7 @@ set(__windows_copy_files YES)
|
||||||
|
|
||||||
# Any number of files to copy from SOURCE_DIR to DEST_DIR can be specified after DEST_DIR.
|
# Any number of files to copy from SOURCE_DIR to DEST_DIR can be specified after DEST_DIR.
|
||||||
# This copying happens post-build.
|
# This copying happens post-build.
|
||||||
if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
|
function(windows_copy_files TARGET SOURCE_DIR DEST_DIR)
|
||||||
function(windows_copy_files TARGET SOURCE_DIR DEST_DIR)
|
|
||||||
# windows commandline expects the / to be \ so switch them
|
# windows commandline expects the / to be \ so switch them
|
||||||
string(REPLACE "/" "\\\\" SOURCE_DIR ${SOURCE_DIR})
|
string(REPLACE "/" "\\\\" SOURCE_DIR ${SOURCE_DIR})
|
||||||
string(REPLACE "/" "\\\\" DEST_DIR ${DEST_DIR})
|
string(REPLACE "/" "\\\\" DEST_DIR ${DEST_DIR})
|
||||||
|
|
@ -28,12 +24,4 @@ if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${DEST_DIR}
|
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"
|
COMMAND robocopy ${SOURCE_DIR} ${DEST_DIR} ${ARGN} /NJH /NJS /NDL /NFL /NC /NS /NP || cmd /c "exit /b 0"
|
||||||
)
|
)
|
||||||
endfunction()
|
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()
|
|
||||||
|
|
|
||||||
|
|
@ -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.
|
|
||||||
|
|
|
||||||
35
README.md
|
|
@ -15,19 +15,19 @@
|
||||||
<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>
|
||||||
|
|
||||||
|
|
@ -48,24 +48,21 @@ A list of supported games will be available in future. Please be patient.
|
||||||
|
|
||||||
Check out our [website](https://eden-emu.dev) for the latest news on exciting features, monthly progress reports, and more!
|
Check out our [website](https://eden-emu.dev) for the latest news on exciting features, monthly progress reports, and more!
|
||||||
|
|
||||||
[](https://repology.org/project/eden-emulator/versions)
|
|
||||||
|
|
||||||
## 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.
|
|
||||||
|
|
||||||
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).
|
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
See the [General Build Guide](docs/Build.md)
|
* **Windows**: [Windows Building Guide](./docs/build/Windows.md)
|
||||||
|
* **Linux**: [Linux Building Guide](./docs/build/Linux.md)
|
||||||
For information on provided development tooling, see the [Tools directory](./tools)
|
* **Android**: [Android Building Guide](./docs/build/Android.md)
|
||||||
|
* **Solaris**: [Solaris Building Guide](./docs/build/Solaris.md)
|
||||||
|
* **FreeBSD**: [FreeBSD Building Guide](./docs/build/FreeBSD.md)
|
||||||
|
* **macOS**: [macOS Building Guide](./docs/build/macOS.md)
|
||||||
|
|
||||||
## Download
|
## Download
|
||||||
|
|
||||||
|
|
@ -82,7 +79,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
|
||||||
|
|
||||||
|
|
|
||||||
145
cpmfile.json
|
|
@ -4,51 +4,47 @@
|
||||||
"package": "OpenSSL",
|
"package": "OpenSSL",
|
||||||
"name": "openssl",
|
"name": "openssl",
|
||||||
"repo": "crueter-ci/OpenSSL",
|
"repo": "crueter-ci/OpenSSL",
|
||||||
"version": "3.6.0-1cb0d36b39",
|
"version": "3.5.2",
|
||||||
"min_version": "1.1.1"
|
"min_version": "1.1.1"
|
||||||
},
|
},
|
||||||
"boost": {
|
"boost": {
|
||||||
"package": "Boost",
|
"package": "Boost",
|
||||||
"repo": "boostorg/boost",
|
"repo": "boostorg/boost",
|
||||||
"tag": "boost-%VERSION%",
|
"tag": "boost-1.88.0",
|
||||||
"artifact": "%TAG%-cmake.tar.xz",
|
"artifact": "boost-1.88.0-cmake.7z",
|
||||||
"hash": "6ae6e94664fe7f2fb01976b59b276ac5df8085c7503fa829d810fbfe495960cfec44fa2c36e2cb23480bc19c956ed199d4952b02639a00a6c07625d4e7130c2d",
|
"hash": "e5b049e5b61964480ca816395f63f95621e66cb9bcf616a8b10e441e0e69f129e22443acb11e77bc1e8170f8e4171b9b7719891efc43699782bfcd4b3a365f01",
|
||||||
"git_version": "1.90.0",
|
"git_version": "1.88.0",
|
||||||
"version": "1.57",
|
"version": "1.57"
|
||||||
"find_args": "CONFIG OPTIONAL_COMPONENTS headers context system fiber filesystem",
|
|
||||||
"patches": [
|
|
||||||
"0001-clang-cl.patch"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"fmt": {
|
"fmt": {
|
||||||
"repo": "fmtlib/fmt",
|
"repo": "fmtlib/fmt",
|
||||||
"tag": "%VERSION%",
|
"sha": "40626af88b",
|
||||||
"hash": "f0da82c545b01692e9fd30fdfb613dbb8dd9716983dcd0ff19ac2a8d36f74beb5540ef38072fdecc1e34191b3682a8542ecbf3a61ef287dbba0a2679d4e023f2",
|
"hash": "d59f06c24339f223de4ec2afeba1c67b5835a0f350a1ffa86242a72fc3e616a6b8b21798355428d4200c75287308b66634619ffa0b52ba5bd74cc01772ea1a8a",
|
||||||
"version": "8",
|
"version": "8",
|
||||||
"git_version": "12.1.0"
|
"options": [
|
||||||
|
"FMT_INSTALL OFF"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"lz4": {
|
"lz4": {
|
||||||
"name": "lz4",
|
"name": "lz4",
|
||||||
"repo": "lz4/lz4",
|
"repo": "lz4/lz4",
|
||||||
"sha": "ebb370ca83",
|
"sha": "ebb370ca83",
|
||||||
"hash": "35c21a5d9cfb5bbf314a5321d02b36819491d2ee3cf8007030ca09d13ca4dae672247b7aeab553e973093604fc48221cb03dc92197c6efe8fc3746891363fdab",
|
"hash": "43600e87b35256005c0f2498fa56a77de6783937ba4cfce38c099f27c03188d097863e8a50c5779ca0a7c63c29c4f7ed0ae526ec798c1fd2e3736861b62e0a37",
|
||||||
"source_subdir": "build/cmake"
|
"source_subdir": "build/cmake"
|
||||||
},
|
},
|
||||||
"nlohmann": {
|
"nlohmann": {
|
||||||
"package": "nlohmann_json",
|
"package": "nlohmann_json",
|
||||||
"repo": "nlohmann/json",
|
"repo": "nlohmann/json",
|
||||||
"tag": "v%VERSION%",
|
"sha": "55f93686c0",
|
||||||
"hash": "6cc1e86261f8fac21cc17a33da3b6b3c3cd5c116755651642af3c9e99bb3538fd42c1bd50397a77c8fb6821bc62d90e6b91bcdde77a78f58f2416c62fc53b97d",
|
"hash": "b739749b066800e21154506ea150d2c5cbce8a45344177f46f884547a1399d26753166fd0df8135269ce28cf223552b1b65cd625b88c844d54753f2434900486",
|
||||||
"version": "3.8",
|
"version": "3.8"
|
||||||
"git_version": "3.12.0"
|
|
||||||
},
|
},
|
||||||
"zlib": {
|
"zlib": {
|
||||||
"package": "ZLIB",
|
"package": "ZLIB",
|
||||||
"repo": "madler/zlib",
|
"repo": "madler/zlib",
|
||||||
"tag": "v%VERSION%",
|
"sha": "51b7f2abda",
|
||||||
"hash": "06eaa3a1eaaeb31f461a2283b03a91ed8eb2406e62cd97ea1c69836324909edeecd93edd03ff0bf593d9dde223e3376149134c5b1fe2e8688c258cadf8cd60ff",
|
"hash": "16eaf1f3752489d12fd9ce30f7b5f7cbd5cb8ff53d617005a9847ae72d937f65e01e68be747f62d7ac19fd0c9aeba9956e60f16d6b465c5fdc2f3d08b4db2e6c",
|
||||||
"version": "1.2",
|
"version": "1.2",
|
||||||
"git_version": "1.3.1.2",
|
|
||||||
"options": [
|
"options": [
|
||||||
"ZLIB_BUILD_SHARED OFF",
|
"ZLIB_BUILD_SHARED OFF",
|
||||||
"ZLIB_INSTALL OFF"
|
"ZLIB_INSTALL OFF"
|
||||||
|
|
@ -56,8 +52,8 @@
|
||||||
},
|
},
|
||||||
"zstd": {
|
"zstd": {
|
||||||
"repo": "facebook/zstd",
|
"repo": "facebook/zstd",
|
||||||
"sha": "b8d6101fba",
|
"sha": "f8745da6ff",
|
||||||
"hash": "cc5ad4b119a9c2ea57f0b71eeff01113bb506e0d17000159c5409cb8236d22e38c52d5e9e97e7947a4bf1b2dfc44b6c503ab2d9aedbd59458435c6a2849cb029",
|
"hash": "3037007f990040fe32573b46f9bef8762fd5dbeeb07ffffcbfeba51ec98167edae39bb9c87f9299efcd61c4e467c5e84f7c19f0df7799bc1fc04864a278792ee",
|
||||||
"version": "1.5",
|
"version": "1.5",
|
||||||
"source_subdir": "build/cmake",
|
"source_subdir": "build/cmake",
|
||||||
"find_args": "MODULE",
|
"find_args": "MODULE",
|
||||||
|
|
@ -65,54 +61,87 @@
|
||||||
"ZSTD_BUILD_SHARED OFF"
|
"ZSTD_BUILD_SHARED OFF"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"catch2": {
|
||||||
|
"package": "Catch2",
|
||||||
|
"repo": "catchorg/Catch2",
|
||||||
|
"sha": "644821ce28",
|
||||||
|
"hash": "f8795f98acf2c02c0db8e734cc866d5caebab4b4a306e93598b97cb3c0c728dafe8283dce27ffe8d42460e5ae7302f3f32e7e274a7f991b73511ac88eef21b1f",
|
||||||
|
"version": "3.0.1"
|
||||||
|
},
|
||||||
|
"enet": {
|
||||||
|
"repo": "lsalzman/enet",
|
||||||
|
"sha": "2662c0de09",
|
||||||
|
"hash": "3de1beb4fa3d6b1e03eda8dd1e7580694f854af3ed3975dcdabfdcdf76b97f322b9734d35ea7f185855bb490d957842b938b26da4dd2dfded509390f8d2794dd",
|
||||||
|
"version": "1.3",
|
||||||
|
"find_args": "MODULE"
|
||||||
|
},
|
||||||
"opus": {
|
"opus": {
|
||||||
"package": "Opus",
|
"package": "Opus",
|
||||||
"repo": "xiph/opus",
|
"repo": "xiph/opus",
|
||||||
"sha": "a3f0ec02b3",
|
"sha": "5ded705cf4",
|
||||||
"hash": "9506147b0de35befda8633ff272981cc2575c860874791bd455b752f797fd7dbd1079f0ba42ccdd7bb1fe6773fa5e84b3d75667c2883dd1fb2d0e4a5fa4f8387",
|
"hash": "0dc89e58ddda1f3bc6a7037963994770c5806c10e66f5cc55c59286fc76d0544fe4eca7626772b888fd719f434bc8a92f792bdb350c807968b2ac14cfc04b203",
|
||||||
"version": "1.3",
|
"version": "1.3",
|
||||||
"find_args": "MODULE",
|
"find_args": "MODULE",
|
||||||
"options": [
|
"options": [
|
||||||
"OPUS_PRESUME_NEON ON"
|
"OPUS_BUILD_TESTING OFF",
|
||||||
],
|
"OPUS_BUILD_PROGRAMS OFF",
|
||||||
"patches": [
|
"OPUS_INSTALL_PKG_CONFIG_MODULE OFF",
|
||||||
"0001-disable-clang-runtime-neon.patch",
|
"OPUS_INSTALL_CMAKE_CONFIG_MODULE OFF"
|
||||||
"0002-no-install.patch"
|
]
|
||||||
|
},
|
||||||
|
"cubeb": {
|
||||||
|
"repo": "mozilla/cubeb",
|
||||||
|
"sha": "fa02160712",
|
||||||
|
"hash": "82d808356752e4064de48c8fecbe7856715ade1e76b53937116bf07129fc1cc5b3de5e4b408de3cd000187ba8dc32ca4109661cb7e0355a52e54bd81b9be1c61",
|
||||||
|
"find_args": "CONFIG",
|
||||||
|
"options": [
|
||||||
|
"USE_SANITIZERS OFF",
|
||||||
|
"BUILD_TESTS OFF",
|
||||||
|
"BUILD_TOOLS OFF",
|
||||||
|
"BUNDLE_SPEEX ON"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"boost_headers": {
|
"boost_headers": {
|
||||||
"repo": "boostorg/headers",
|
"repo": "boostorg/headers",
|
||||||
"sha": "95930ca8f5",
|
"sha": "0456900fad",
|
||||||
"hash": "8a07d7a6f0065587d3005a83481a794704ae22e773b9f336fbd89ed230aaa7b4c86c03edcbae30bba8b3e20839c3131eaa2dceac037ef811533ef4eadc53b15b",
|
"hash": "50cd75dcdfc5f082225cdace058f47b4fb114a47585f7aee1d22236a910a80b667186254c214fa2fcebac67ae6d37ba4b6e695e1faea8affd6fd42a03cf996e3",
|
||||||
"bundled": true
|
"bundled": true
|
||||||
},
|
},
|
||||||
"llvm-mingw": {
|
"discord-rpc": {
|
||||||
"repo": "misc/llvm-mingw",
|
"repo": "eden-emulator/discord-rpc",
|
||||||
"git_host": "git.crueter.xyz",
|
"sha": "1cf7772bb6",
|
||||||
"tag": "%VERSION%",
|
"hash": "e9b35e6f2c075823257bcd59f06fe7bb2ccce1976f44818d2e28810435ef79c712a3c4f20f40da41f691342a4058cf86b078eb7f9d9e4dae83c0547c21ec4f97"
|
||||||
"version": "20250828",
|
|
||||||
"artifact": "clang-rt-builtins.tar.zst",
|
|
||||||
"hash": "d902392caf94e84f223766e2cc51ca5fab6cae36ab8dc6ef9ef6a683ab1c483bfcfe291ef0bd38ab16a4ecc4078344fa8af72da2f225ab4c378dee23f6186181"
|
|
||||||
},
|
},
|
||||||
"vulkan-validation-layers": {
|
"simpleini": {
|
||||||
"package": "VVL",
|
"package": "SimpleIni",
|
||||||
"repo": "KhronosGroup/Vulkan-ValidationLayers",
|
"repo": "brofield/simpleini",
|
||||||
"tag": "vulkan-sdk-%VERSION%",
|
"sha": "09c21bda1d",
|
||||||
"git_version": "1.4.335.0",
|
"hash": "99779ca9b6e040d36558cadf484f9ffdab5b47bcc8fc72e4d33639d1d60c0ceb4410d335ba445d72a4324e455167fd6769d99b459943aa135bec085dff2d4b7c",
|
||||||
"artifact": "android-binaries-%VERSION%.zip",
|
"find_args": "MODULE"
|
||||||
"hash": "48167c4a17736301bd08f9290f41830443e1f18cce8ad867fc6f289b49e18b40e93c9850b377951af82f51b5b6d7313aa6a884fc5df79f5ce3df82696c1c1244"
|
|
||||||
},
|
},
|
||||||
"quazip": {
|
"sdl2_generic": {
|
||||||
"package": "QuaZip-Qt6",
|
"package": "SDL2",
|
||||||
"repo": "stachenov/quazip",
|
"repo": "libsdl-org/SDL",
|
||||||
"sha": "2e95c9001b",
|
"sha": "54772f345a",
|
||||||
"hash": "609c240c7f029ac26a37d8fbab51bc16284e05e128b78b9b9c0e95d083538c36047a67d682759ac990e4adb0eeb90f04f1ea7fe2253bbda7e7e3bcce32e53dd8",
|
"hash": "2a68a0e01c390043aa9d9df63d8a20a52076c88bb460ac4e0f33194ca7d9bc8fadbbcc04e7506872ac4b6354a73fbc267c036f82200da59465789b87c7d9e3a4",
|
||||||
"version": "1.3",
|
"key": "generic",
|
||||||
"git_version": "1.5",
|
"bundled": true
|
||||||
"options": [
|
},
|
||||||
"QUAZIP_QT_MAJOR_VERSION 6",
|
"sdl2_steamdeck": {
|
||||||
"QUAZIP_INSTALL OFF",
|
"package": "SDL2",
|
||||||
"QUAZIP_ENABLE_QTEXTCODEC OFF"
|
"repo": "libsdl-org/SDL",
|
||||||
]
|
"sha": "cc016b0046",
|
||||||
|
"hash": "34d5ef58da6a4f9efa6689c82f67badcbd741f5a4f562a9c2c30828fa839830fb07681c5dc6a7851520e261c8405a416ac0a2c2513b51984fb3b4fa4dcb3e20b",
|
||||||
|
"key": "steamdeck",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"sdl2": {
|
||||||
|
"ci": true,
|
||||||
|
"package": "SDL2",
|
||||||
|
"name": "SDL2",
|
||||||
|
"repo": "crueter-ci/SDL2",
|
||||||
|
"version": "2.32.8",
|
||||||
|
"min_version": "2.26.4",
|
||||||
|
"cmake_filename": "sdl2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,354 +0,0 @@
|
||||||
[
|
|
||||||
{
|
|
||||||
"compatibility": 0,
|
|
||||||
"directory": "the-legend-of-zelda-breath-of-the-wild",
|
|
||||||
"releases": [
|
|
||||||
{"id": "01007EF00011E000"}
|
|
||||||
],
|
|
||||||
"title": "The Legend of Zelda: Breath of the Wild"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 1,
|
|
||||||
"directory": "super-mario-odyssey",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100000000010000"}
|
|
||||||
],
|
|
||||||
"title": "Super Mario Odyssey"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 0,
|
|
||||||
"directory": "animal-crossing-new-horizons",
|
|
||||||
"releases": [
|
|
||||||
{"id": "01006F8002326000"}
|
|
||||||
],
|
|
||||||
"title": "Animal Crossing: New Horizons"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 1,
|
|
||||||
"directory": "pokemon-legends-z-a",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100F43008C44000"}
|
|
||||||
],
|
|
||||||
"title": "Pokémon Legends: Z-A"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 1,
|
|
||||||
"directory": "the-legend-of-zelda-tears-of-the-kingdom",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100F2C0115B6000"}
|
|
||||||
],
|
|
||||||
"title": "The Legend of Zelda: Tears of the Kingdom"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 0,
|
|
||||||
"directory": "super-mario-galaxy",
|
|
||||||
"releases": [
|
|
||||||
{"id": "010099C022B96000"}
|
|
||||||
],
|
|
||||||
"title": "Super Mario Galaxy"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 3,
|
|
||||||
"directory": "star-wars-republic-commando",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100FA10115F8000"}
|
|
||||||
],
|
|
||||||
"title": "Star Wars: Republic Commando"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 0,
|
|
||||||
"directory": "doki-doki-literature-club-plus",
|
|
||||||
"releases": [
|
|
||||||
{"id": "010086901543E000"}
|
|
||||||
],
|
|
||||||
"title": "Doki Doki Literature Club Plus"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 1,
|
|
||||||
"directory": "pokemon-scarlet",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100A3D008C5C000"}
|
|
||||||
],
|
|
||||||
"title": "Pokémon Scarlet"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 1,
|
|
||||||
"directory": "pokemon-violet",
|
|
||||||
"releases": [
|
|
||||||
{"id": "01008F6008C5E000"}
|
|
||||||
],
|
|
||||||
"title": "Pokémon Violet"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 2,
|
|
||||||
"directory": "pokemon-legends-arceus",
|
|
||||||
"releases": [
|
|
||||||
{"id": "01001E300D162000"}
|
|
||||||
],
|
|
||||||
"title": "Pokémon Legends: Arceus"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 0,
|
|
||||||
"directory": "splatoon-2",
|
|
||||||
"releases": [
|
|
||||||
{"id": "01003BC0000A0000"}
|
|
||||||
],
|
|
||||||
"title": "Splatoon 2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 1,
|
|
||||||
"directory": "super-smash-bros-ultimate",
|
|
||||||
"releases": [
|
|
||||||
{"id": "01006A800016E000"}
|
|
||||||
],
|
|
||||||
"title": "Super Smash Bros. Ultimate"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 0,
|
|
||||||
"directory": "mario-kart-8-deluxe",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100152000022000"}
|
|
||||||
],
|
|
||||||
"title": "Mario Kart 8 Deluxe"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 0,
|
|
||||||
"directory": "splatoon-3",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100C2500FC20000"}
|
|
||||||
],
|
|
||||||
"title": "Splatoon 3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 0,
|
|
||||||
"directory": "new-super-mario-bros-u-deluxe",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100EA80032EA000"}
|
|
||||||
],
|
|
||||||
"title": "New Super Mario Bros. U Deluxe"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 0,
|
|
||||||
"directory": "hyrule-warriors-age-of-calamity",
|
|
||||||
"releases": [
|
|
||||||
{"id": "01002B00111A2000"}
|
|
||||||
],
|
|
||||||
"title": "Hyrule Warriors: Age of Calamity"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 2,
|
|
||||||
"directory": "luigis-mansion-3",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100DCA0064A6000"}
|
|
||||||
],
|
|
||||||
"title": "Luigi's Mansion 3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 2,
|
|
||||||
"directory": "pokemon-brilliant-diamond",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100000011D90000"}
|
|
||||||
],
|
|
||||||
"title": "Pokémon Brilliant Diamond"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 2,
|
|
||||||
"directory": "pokemon-shining-pearl",
|
|
||||||
"releases": [
|
|
||||||
{"id": "010018E011D92000"}
|
|
||||||
],
|
|
||||||
"title": "Pokémon Shining Pearl"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 1,
|
|
||||||
"directory": "super-mario-3d-world-bowsers-fury",
|
|
||||||
"releases": [
|
|
||||||
{"id": "010028600EBDA000"}
|
|
||||||
],
|
|
||||||
"title": "Super Mario 3D World + Bowser's Fury"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 0,
|
|
||||||
"directory": "the-legend-of-zelda-links-awakening",
|
|
||||||
"releases": [
|
|
||||||
{"id": "01006BB00C6F0000"}
|
|
||||||
],
|
|
||||||
"title": "The Legend of Zelda: Link's Awakening"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 1,
|
|
||||||
"directory": "fire-emblem-three-houses",
|
|
||||||
"releases": [
|
|
||||||
{"id": "010055D009F78000"}
|
|
||||||
],
|
|
||||||
"title": "Fire Emblem: Three Houses"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 2,
|
|
||||||
"directory": "metroid-dread",
|
|
||||||
"releases": [
|
|
||||||
{"id": "010093801237C000"}
|
|
||||||
],
|
|
||||||
"title": "Metroid Dread"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 0,
|
|
||||||
"directory": "paper-mario-the-origami-king",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100A3900C3E2000"}
|
|
||||||
],
|
|
||||||
"title": "Paper Mario: The Origami King"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 1,
|
|
||||||
"directory": "xenoblade-chronicles-definitive-edition",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100FF500E34A000"}
|
|
||||||
],
|
|
||||||
"title": "Xenoblade Chronicles: Definitive Edition"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 2,
|
|
||||||
"directory": "xenoblade-chronicles-3",
|
|
||||||
"releases": [
|
|
||||||
{"id": "010074F013262000"}
|
|
||||||
],
|
|
||||||
"title": "Xenoblade Chronicles 3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 1,
|
|
||||||
"directory": "pikmin-3-deluxe",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100F8600D4B0000"}
|
|
||||||
],
|
|
||||||
"title": "Pikmin 3 Deluxe"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 0,
|
|
||||||
"directory": "donkey-kong-country-tropical-freeze",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100C1F0054B6000"}
|
|
||||||
],
|
|
||||||
"title": "Donkey Kong Country: Tropical Freeze"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 1,
|
|
||||||
"directory": "kirby-and-the-forgotten-land",
|
|
||||||
"releases": [
|
|
||||||
{"id": "01004D300C5AE000"}
|
|
||||||
],
|
|
||||||
"title": "Kirby and the Forgotten Land"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 2,
|
|
||||||
"directory": "mario-party-superstars",
|
|
||||||
"releases": [
|
|
||||||
{"id": "01006B400D8B2000"}
|
|
||||||
],
|
|
||||||
"title": "Mario Party Superstars"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 0,
|
|
||||||
"directory": "clubhouse-games-51-worldwide-classics",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100F8600D4B0000"}
|
|
||||||
],
|
|
||||||
"title": "Clubhouse Games: 51 Worldwide Classics"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 1,
|
|
||||||
"directory": "ring-fit-adventure",
|
|
||||||
"releases": [
|
|
||||||
{"id": "01006B300BAF8000"}
|
|
||||||
],
|
|
||||||
"title": "Ring Fit Adventure"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 2,
|
|
||||||
"directory": "arms",
|
|
||||||
"releases": [
|
|
||||||
{"id": "01009B500007C000"}
|
|
||||||
],
|
|
||||||
"title": "ARMS"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 0,
|
|
||||||
"directory": "super-mario-maker-2",
|
|
||||||
"releases": [
|
|
||||||
{"id": "01009B90006DC000"}
|
|
||||||
],
|
|
||||||
"title": "Super Mario Maker 2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 0,
|
|
||||||
"directory": "pokemon-lets-go-pikachu",
|
|
||||||
"releases": [
|
|
||||||
{"id": "010003F003A34000"}
|
|
||||||
],
|
|
||||||
"title": "Pokémon: Let's Go, Pikachu!"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 1,
|
|
||||||
"directory": "pokemon-lets-go-eevee",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100187003A36000"}
|
|
||||||
],
|
|
||||||
"title": "Pokémon: Let's Go, Eevee!"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 2,
|
|
||||||
"directory": "pokemon-sword",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100ABF008968000"}
|
|
||||||
],
|
|
||||||
"title": "Pokémon Sword"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 2,
|
|
||||||
"directory": "pokemon-shield",
|
|
||||||
"releases": [
|
|
||||||
{"id": "01008DB008C2C000"}
|
|
||||||
],
|
|
||||||
"title": "Pokémon Shield"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 1,
|
|
||||||
"directory": "new-pokemon-snap",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100F4300C182000"}
|
|
||||||
],
|
|
||||||
"title": "New Pokémon Snap"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 0,
|
|
||||||
"directory": "mario-golf-super-rush",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100C9C00E25C000"}
|
|
||||||
],
|
|
||||||
"title": "Mario Golf: Super Rush"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 1,
|
|
||||||
"directory": "mario-tennis-aces",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100BDE00862A000"}
|
|
||||||
],
|
|
||||||
"title": "Mario Tennis Aces"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 2,
|
|
||||||
"directory": "wario-ware-get-it-together",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100563010F22000"}
|
|
||||||
],
|
|
||||||
"title": "WarioWare: Get It Together!"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compatibility": 0,
|
|
||||||
"directory": "big-brain-academy-brain-vs-brain",
|
|
||||||
"releases": [
|
|
||||||
{"id": "0100190010F24000"}
|
|
||||||
],
|
|
||||||
"title": "Big Brain Academy: Brain vs. Brain"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
<!--
|
||||||
|
SPDX-FileCopyrightText: 2018 yuzu Emulator Project
|
||||||
|
SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
-->
|
||||||
|
|
||||||
<RCC>
|
<RCC>
|
||||||
<qresource prefix="compatibility_list">
|
<qresource prefix="compatibility_list">
|
||||||
<file>compatibility_list.json</file>
|
<file>compatibility_list.json</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
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 256 KiB |
|
Before Width: | Height: | Size: 332 KiB After Width: | Height: | Size: 316 KiB |
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 4.9 MiB |
|
Before Width: | Height: | Size: 5.0 KiB |
|
|
@ -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 |
|
Before Width: | Height: | Size: 21 KiB |
|
|
@ -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.
|
|
||||||
- `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.
|
|
||||||
|
|
@ -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 |
|
|
@ -1 +0,0 @@
|
||||||
#1F143C
|
|
||||||
|
Before Width: | Height: | Size: 42 KiB |
|
|
@ -1,106 +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="dev.eden_emu.eden.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="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg">
|
|
||||||
<defs
|
|
||||||
id="defs7" />
|
|
||||||
<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.25"
|
|
||||||
inkscape:cx="186.8"
|
|
||||||
inkscape:cy="210.4"
|
|
||||||
inkscape:window-width="1600"
|
|
||||||
inkscape:window-height="849"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="27"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="svg7" />
|
|
||||||
<path
|
|
||||||
fill="#bf42f6"
|
|
||||||
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"
|
|
||||||
id="path1"
|
|
||||||
style="fill:#fea265;fill-opacity:1" />
|
|
||||||
<path
|
|
||||||
fill="#ff44c4"
|
|
||||||
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"
|
|
||||||
id="path2"
|
|
||||||
style="fill:#ff7f2a;fill-opacity:1" />
|
|
||||||
<path
|
|
||||||
fill="#bf43f5"
|
|
||||||
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>
|
|
||||||
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 39 KiB |
|
|
@ -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 +0,0 @@
|
||||||
#1F143C
|
|
||||||
|
Before Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 37 KiB |
|
|
@ -1,80 +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_small.svg"
|
|
||||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg">
|
|
||||||
<defs
|
|
||||||
id="defs7">
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient10"
|
|
||||||
inkscape:collect="always">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#f977d9;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop10" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#a655d5;stop-opacity:1;"
|
|
||||||
offset="0.54051435"
|
|
||||||
id="stop13" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#984fd5;stop-opacity:1;"
|
|
||||||
offset="0.5714342"
|
|
||||||
id="stop12" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#8c4ad4;stop-opacity:1;"
|
|
||||||
offset="0.59666741"
|
|
||||||
id="stop14" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#3928d2;stop-opacity:1;"
|
|
||||||
offset="1"
|
|
||||||
id="stop11" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient10"
|
|
||||||
id="linearGradient11"
|
|
||||||
x1="264.17508"
|
|
||||||
y1="28.385544"
|
|
||||||
x2="264.17508"
|
|
||||||
y2="488.65109"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(0.97815818,0,0,0.97880258,4.570042,5.8799159)" />
|
|
||||||
</defs>
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="namedview7"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#000000"
|
|
||||||
borderopacity="0.25"
|
|
||||||
inkscape:showpageshadow="2"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pagecheckerboard="0"
|
|
||||||
inkscape:deskcolor="#d1d1d1"
|
|
||||||
inkscape:zoom="0.88388348"
|
|
||||||
inkscape:cx="153.30075"
|
|
||||||
inkscape:cy="243.24473"
|
|
||||||
inkscape:window-width="1600"
|
|
||||||
inkscape:window-height="849"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="27"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="svg7"
|
|
||||||
showguides="false" />
|
|
||||||
<path
|
|
||||||
id="path9"
|
|
||||||
style="fill:url(#linearGradient11);fill-opacity:1;stroke:none;stroke-width:13.3314;stroke-opacity:1;paint-order:stroke fill markers"
|
|
||||||
d="M 262.97461 33.6875 A 218.44267 225.23091 0 0 0 138.83789 73.589844 L 141.13867 72.265625 L 161.2207 65.195312 L 181.01953 61.517578 L 204.35352 64.205078 L 228.96094 76.650391 L 265.80078 115 L 283 99.400391 L 304.59961 85.800781 L 331 76.400391 L 360.59961 69.599609 L 379.95508 69.208984 A 218.44267 225.23091 0 0 0 262.97461 33.6875 z M 380.07617 69.291016 L 350.19922 77.800781 L 329.19922 89.199219 L 307.40039 108 L 288.80078 129.80078 L 287.40039 135 L 302.40039 129.59961 L 319 127.80078 L 348.80078 131.80078 L 370.19922 141.40039 L 393 161.40039 L 399.59961 171.59961 L 374.80078 160.80078 L 338.40039 150.80078 L 309.19922 150 L 288.80078 154.40039 L 293.19922 155.19922 L 319.19922 168.80078 L 338 187.19922 L 350.80078 224 L 349.19922 260 L 326 222.80078 L 302.80078 194 L 277.59961 172.40039 L 269.19922 187.59961 L 256.80078 281.59961 L 258 364 L 278.40039 452.80078 L 297.19531 481.36914 A 218.44267 225.23091 0 0 0 481.41797 258.91797 A 218.44267 225.23091 0 0 0 380.07617 69.291016 z M 133.07422 77.839844 A 218.44267 225.23091 0 0 0 44.533203 258.91797 A 218.44267 225.23091 0 0 0 257.04102 484.06641 L 247.3457 458.62891 L 237.87109 418.18359 L 233.0625 380.42383 L 230.375 354.9668 L 229.95117 321.30859 L 232.35547 291.32812 L 237.44727 254.98242 L 254.55859 191.9082 L 261.62891 172.5332 L 255.54883 174.08984 L 240.98242 180.87695 L 229.59961 190.19922 L 210.59961 208.19922 L 197.40039 229.40039 L 186.40039 252.59961 L 173.40039 269 L 171.40039 253.19922 L 173.59961 229.40039 L 183 202.40039 L 199.40039 178 L 221.04102 153.44141 L 209.02148 155.70508 L 177.05859 162.77539 L 148.06836 171.40234 L 119.92578 183 L 120.63281 180.16992 L 129.82422 165.88672 L 151.17969 147.50195 L 172.95898 135.48242 L 190.07031 129.54102 L 209.02148 127.98633 L 227.6875 128.69336 L 247.76953 128.41016 L 246.49805 125.1582 L 226.69922 105.92383 L 219.62695 97.439453 L 221.4668 90.085938 L 206.75781 94.044922 L 195.86914 95.458984 L 179.46289 88.671875 L 156.12891 81.458984 L 133.07422 77.839844 z " />
|
|
||||||
<path
|
|
||||||
style="fill:#1b1b1b;fill-opacity:0.12492698;stroke:none;stroke-width:13.374;stroke-opacity:0.415999;paint-order:stroke fill markers"
|
|
||||||
d="m 259.36665,490.16617 39.03323,-6.96642 -20,-30.4 -20.4,-88.8 -1.2,-82.4 12.4,-94 8.4,-15.2 25.2,21.6 23.2,28.8 23.2,37.2 1.6,-36 -12.8,-36.8 -18.8,-18.4 -26,-13.6 -4.4,-0.8 20.4,-4.4 29.2,0.8 36.4,10 24.8,10.8 -6.6,-10.2 -22.8,-20 -21.4,-9.6 -29.8,-4 -16.6,1.8 -15,5.4 1.4,-5.2 18.6,-21.8 21.8,-18.800003 21,-11.4 30.2,-8.6 -19.8,0.4 -29.6,6.8 -26.4,9.4 -21.6,13.6 -17.2,15.600003 -36.83882,-38.349628 -24.60732,-12.445079 -23.33452,-2.687006 -19.79899,3.676955 -20.08184,7.071068 -9.33381,5.374012 24.32448,3.818376 23.33452,7.212489 16.40488,6.788226 10.88944,-1.414214 14.70782,-3.959798 -1.83847,7.353911 7.07106,8.485288 19.79899,19.2333 1.2728,3.25269 -20.08184,0.28284 -18.66762,-0.7071 -18.95046,1.55563 -17.11198,5.9397 -21.77889,12.02081 -21.35462,18.38478 -9.19239,14.28356 -0.70711,2.82843 28.14285,-11.59656 28.99138,-8.6267 31.96122,-7.07107 12.02082,-2.26274 -21.64158,24.55783 -16.4,24.4 -9.4,27 -2.2,23.8 2,15.8 13,-16.4 11,-23.2 13.2,-21.2 19,-18 11.38199,-9.32209 14.5664,-6.78822 6.08112,-1.55564 -7.07107,19.37473 -17.11198,63.07393 -5.09117,36.34528 -2.40416,29.98133 0.42426,33.65828 2.68701,25.45585 4.80832,37.7595 9.47523,40.44651 z"
|
|
||||||
id="path8-4" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 5.5 KiB |
|
|
@ -1,211 +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="EdenLogoLoveWhiteV3.svg"
|
|
||||||
inkscape:version="1.4.3 (0d15f75, 2025-12-25)"
|
|
||||||
xml:space="preserve"
|
|
||||||
inkscape:export-filename="dev.eden_emu.eden.png"
|
|
||||||
inkscape:export-xdpi="96"
|
|
||||||
inkscape:export-ydpi="96"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
|
||||||
<metadata
|
|
||||||
id="metadata1">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
|
|
||||||
<dc:creator>
|
|
||||||
<cc:Agent>
|
|
||||||
<dc:title>Madeline_Dev</dc:title>
|
|
||||||
<dc:identifier>mailto:madelvidel@gmail.com</dc:identifier>
|
|
||||||
</cc:Agent>
|
|
||||||
</dc:creator>
|
|
||||||
<dc:date>2025</dc:date>
|
|
||||||
<dc:license
|
|
||||||
rdf:resource="https://www.gnu.org/licenses/gpl-3.0.html" />
|
|
||||||
<dc:rights>2025 Eden Emulator Project</dc:rights>
|
|
||||||
<dc:source>https://git.eden-emu.dev</dc:source>
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<defs
|
|
||||||
id="defs7"><linearGradient
|
|
||||||
id="swatch14"
|
|
||||||
inkscape:swatch="solid"><stop
|
|
||||||
style="stop-color:#66003b;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop14" /></linearGradient><linearGradient
|
|
||||||
id="linearGradient1"
|
|
||||||
inkscape:collect="always"><stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:0.50980395;"
|
|
||||||
offset="0"
|
|
||||||
id="stop1" /><stop
|
|
||||||
style="stop-color:#000000;stop-opacity:0;"
|
|
||||||
offset="1"
|
|
||||||
id="stop2" /></linearGradient><linearGradient
|
|
||||||
id="linearGradient11"
|
|
||||||
inkscape:collect="always"><stop
|
|
||||||
style="stop-color:#9523a7;stop-opacity:0.50980395;"
|
|
||||||
offset="0"
|
|
||||||
id="stop11" /><stop
|
|
||||||
style="stop-color:#ffabad;stop-opacity:1;"
|
|
||||||
offset="0.99898213"
|
|
||||||
id="stop20" /><stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:0;"
|
|
||||||
offset="0.99898213"
|
|
||||||
id="stop12" /></linearGradient><linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient11"
|
|
||||||
id="linearGradient12"
|
|
||||||
x1="109.74531"
|
|
||||||
y1="106.54533"
|
|
||||||
x2="431.05463"
|
|
||||||
y2="427.85461"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
spreadMethod="reflect"
|
|
||||||
gradientTransform="matrix(1.0945321,0,0,1.0945321,-39.661525,-35.159057)" /><linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient1"
|
|
||||||
id="linearGradient2"
|
|
||||||
x1="125.40197"
|
|
||||||
y1="271.834"
|
|
||||||
x2="431.02424"
|
|
||||||
y2="271.834"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(1.0964243,0,0,1.0253208,-40.187969,-20.060025)" /><filter
|
|
||||||
inkscape:label="Light Contour"
|
|
||||||
inkscape:menu="Image Paint and Draw"
|
|
||||||
inkscape:menu-tooltip="Uses vertical specular light to draw lines"
|
|
||||||
style="color-interpolation-filters:sRGB"
|
|
||||||
id="filter11"
|
|
||||||
x="-0.01907517"
|
|
||||||
y="-0.054959154"
|
|
||||||
width="1.0379885"
|
|
||||||
height="1.1092314"><feGaussianBlur
|
|
||||||
in="SourceGraphic"
|
|
||||||
stdDeviation="0.38250006"
|
|
||||||
result="result3"
|
|
||||||
id="feGaussianBlur9" /><feComponentTransfer
|
|
||||||
result="result1"
|
|
||||||
in="result3"
|
|
||||||
id="feComponentTransfer9"><feFuncR
|
|
||||||
type="discrete"
|
|
||||||
tableValues="0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1"
|
|
||||||
id="feFuncR9" /><feFuncG
|
|
||||||
type="discrete"
|
|
||||||
tableValues="0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1"
|
|
||||||
id="feFuncG9" /><feFuncB
|
|
||||||
type="discrete"
|
|
||||||
tableValues="0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1"
|
|
||||||
id="feFuncB9" /></feComponentTransfer><feGaussianBlur
|
|
||||||
result="result5"
|
|
||||||
stdDeviation="0.01"
|
|
||||||
id="feGaussianBlur10" /><feBlend
|
|
||||||
in2="result5"
|
|
||||||
result="result6"
|
|
||||||
mode="lighten"
|
|
||||||
in="result5"
|
|
||||||
id="feBlend10" /><feColorMatrix
|
|
||||||
in="result6"
|
|
||||||
type="luminanceToAlpha"
|
|
||||||
result="result2"
|
|
||||||
id="feColorMatrix10" /><feSpecularLighting
|
|
||||||
surfaceScale="5"
|
|
||||||
result="result9"
|
|
||||||
specularExponent="20"
|
|
||||||
in="result2"
|
|
||||||
specularConstant="1"
|
|
||||||
id="feSpecularLighting10"><feDistantLight
|
|
||||||
azimuth="180"
|
|
||||||
elevation="90"
|
|
||||||
id="feDistantLight10" /></feSpecularLighting><feComposite
|
|
||||||
in2="result6"
|
|
||||||
operator="arithmetic"
|
|
||||||
in="result9"
|
|
||||||
k1="0.4"
|
|
||||||
k3="0.7"
|
|
||||||
result="result3"
|
|
||||||
id="feComposite10"
|
|
||||||
k2="0"
|
|
||||||
k4="0" /><feBlend
|
|
||||||
in2="result1"
|
|
||||||
in="result3"
|
|
||||||
mode="normal"
|
|
||||||
result="result8"
|
|
||||||
id="feBlend11" /><feComposite
|
|
||||||
in2="SourceGraphic"
|
|
||||||
in="result8"
|
|
||||||
operator="in"
|
|
||||||
result="result7"
|
|
||||||
id="feComposite11" /></filter></defs><sodipodi:namedview
|
|
||||||
id="namedview7"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#000000"
|
|
||||||
borderopacity="0.25"
|
|
||||||
inkscape:showpageshadow="2"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pagecheckerboard="0"
|
|
||||||
inkscape:deskcolor="#d1d1d1"
|
|
||||||
inkscape:zoom="1.35"
|
|
||||||
inkscape:cx="254.81481"
|
|
||||||
inkscape:cy="260.37037"
|
|
||||||
inkscape:window-width="1920"
|
|
||||||
inkscape:window-height="1001"
|
|
||||||
inkscape:window-x="-9"
|
|
||||||
inkscape:window-y="-9"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="svg7"
|
|
||||||
showguides="false" /><circle
|
|
||||||
style="fill:url(#linearGradient12);fill-opacity:1;stroke:#e4e4e4;stroke-width:14.0448;stroke-opacity:1;paint-order:stroke fill markers"
|
|
||||||
id="path8"
|
|
||||||
cx="256.2999"
|
|
||||||
cy="257.2999"
|
|
||||||
r="248.67769" /><path
|
|
||||||
id="path15"
|
|
||||||
style="fill:url(#linearGradient2);fill-opacity:1;stroke:#ffffff;stroke-width:16.9642;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.52156866;paint-order:stroke fill markers"
|
|
||||||
d="m 306.72111,24.233031 c 0,0 -11.98397,40.08696 -18.0546,60.431848 -12.96613,9.503601 -21.49377,18.397701 -21.49377,18.397701 0,0 -23.41313,-31.029398 -45.74145,-43.934598 -22.32833,-12.905201 -52.42065,-11.242483 -52.42065,-11.242483 0,0 -12.50052,4e-4 -27.63117,5.537132 -15.13066,5.536732 -21.27107,9.227888 -21.27107,9.227888 0,0 15.35165,-0.410529 37.93799,6.766716 22.58635,7.177243 32.45374,11.484796 32.45374,11.484796 l 31.02752,-6.562453 -8.44161,11.074275 c 0,0 14.80259,8.920284 22.80648,16.917787 8.0039,7.9975 11.73088,12.50812 11.73088,12.50812 0,0 -13.92373,-5.43341 -56.68427,-1.74226 -42.76055,3.69116 -84.86368,56.39265 -84.86368,56.39265 0,0 41.22428,-15.9958 65.5649,-21.32747 24.34062,-5.33166 47.58524,-7.9983 47.58524,-7.9983 0,0 -18.41865,7.3827 -38.15428,38.3474 -19.73564,30.96468 -14.0351,80.18128 -14.0351,80.18128 0,0 31.35774,-59.05848 61.39977,-78.94969 30.04203,-19.89124 36.182,-20.50642 36.182,-20.50642 0,0 -24.1209,48.39514 -33.55015,126.11445 -9.42924,77.71931 30.26089,207.72959 30.26089,207.72959 l 47.80367,-6.97298 c 0,0 -45.61041,-42.24281 -49.55753,-151.33695 -3.94713,-109.09413 16.66479,-174.30453 16.66479,-174.30453 0,0 17.10508,1.23039 42.54213,32.81027 25.43704,31.57987 40.34713,57.41795 40.34713,57.41795 0,0 9.65024,-51.26683 -11.4011,-74.64415 -21.05135,-23.3773 -53.50637,-33.62931 -53.50637,-33.62931 0,0 13.70573,-6.66419 42.10313,-4.71609 28.39738,1.94813 87.30278,27.12897 87.30278,27.12896 0,0 -15.8158,-25.5214 -52.87463,-43.21167 -37.05881,-17.69028 -81.35597,0.29238 -81.35597,0.29238 0,0 4.13589,-15.37277 29.10021,-32.628037 24.96432,-17.25527 56.907,-34.36427 56.907,-34.36427 0,0 -26.3595,1.160335 -55.20025,12.035504 -7.176,2.7059 -14.064,6.299542 -20.36309,10.173104 l 17.40574,-51.051762 z" /><path
|
|
||||||
id="path4-2-6"
|
|
||||||
style="fill:#ffffff;fill-opacity:0.509804;stroke:#ffffff;stroke-width:8.49614;stroke-dasharray:none;stroke-opacity:0.521569"
|
|
||||||
d="m 105.64857,363.95957 a 27.851731,25.309928 0 0 0 -7.115581,35.20471 27.851731,25.309928 0 0 0 5.656921,5.48617 c 7.16052,5.83605 21.58543,14.65841 45.88391,17.847 37.57172,4.93039 41.7105,10.38005 41.71122,10.381 -4.5e-4,-6e-4 -4.13529,-5.45309 4.14459,-39.11953 5.35491,-21.77281 1.40624,-37.16078 -2.05217,-45.31698 a 27.851731,25.309928 0 0 0 -3.63281,-6.75471 27.851731,25.309928 0 0 0 -38.74027,-6.4662 27.851731,25.309928 0 0 0 -7.11556,35.20472 27.851731,25.309928 0 0 0 -38.74025,-6.46618 z" /><path
|
|
||||||
id="path4-2-6-1"
|
|
||||||
style="fill:#ffffff;fill-opacity:0.50980395;stroke:#ffffff;stroke-width:6.89965;stroke-dasharray:none;stroke-opacity:0.519962"
|
|
||||||
d="m 351.29524,378.32915 a 20.862787,22.283365 87.929759 0 0 -28.94663,11.7882 20.862787,22.283365 87.929759 0 0 -1.50914,6.04125 c -1.09835,7.13663 -1.16134,20.16231 7.28339,36.72931 13.0577,25.61689 10.90177,30.69793 10.90138,30.69882 2.4e-4,-5.6e-4 2.16,-5.08045 30.49632,-15.43688 18.32576,-6.69765 27.84648,-16.23659 32.287,-22.14109 a 20.862787,22.283365 87.929759 0 0 3.33646,-5.36755 20.862787,22.283365 87.929759 0 0 -12.45108,-27.05014 20.862787,22.283365 87.929759 0 0 -28.94664,11.78822 20.862787,22.283365 87.929759 0 0 -12.45106,-27.05014 z" /><path
|
|
||||||
id="path4-2-6-1-5"
|
|
||||||
style="fill:#ffffff;fill-opacity:0.50980395;stroke:#ffffff;stroke-width:6.89965;stroke-dasharray:none;stroke-opacity:0.52156866"
|
|
||||||
d="m 83.024352,249.4105 a 22.283365,20.862787 0 0 0 -29.353581,10.73482 22.283365,20.862787 0 0 0 -1.72639,5.98278 c -1.35544,7.0923 -1.88894,20.10721 5.951801,36.96846 12.12378,26.07187 9.7857,31.07171 9.78528,31.07259 2.6e-4,-5.5e-4 2.34212,-4.99911 31.03406,-14.32513 18.555748,-6.03127 28.414858,-15.22005 33.065768,-20.96029 a 22.283365,20.862787 0 0 0 3.52818,-5.24352 22.283365,20.862787 0 0 0 -11.46577,-27.48227 22.283365,20.862787 0 0 0 -29.353588,10.73483 22.283365,20.862787 0 0 0 -11.46576,-27.48227 z" /><path
|
|
||||||
id="path4-2-6-1-9"
|
|
||||||
style="fill:#ffffff;fill-opacity:0.50980395;stroke:#ffffff;stroke-width:5.01078;stroke-dasharray:none;stroke-opacity:0.519962"
|
|
||||||
d="m 320.97602,291.36362 a 16.625347,14.748181 0 0 0 -21.90036,7.58859 16.625347,14.748181 0 0 0 -1.28804,4.2293 c -1.01128,5.01364 -1.40932,14.21406 4.44057,26.1335 9.0454,18.43055 7.30098,21.965 7.30067,21.96562 2e-4,-3.9e-4 1.74743,-3.53394 23.15415,-10.12663 13.84423,-4.26358 21.19999,-10.75925 24.66998,-14.8171 a 16.625347,14.748181 0 0 0 2.63233,-3.70671 16.625347,14.748181 0 0 0 -8.55447,-19.42758 16.625347,14.748181 0 0 0 -21.90037,7.58859 16.625347,14.748181 0 0 0 -8.55446,-19.42758 z" /><path
|
|
||||||
id="path4-2-6-1-9-8"
|
|
||||||
style="fill:#ffffff;fill-opacity:0.50980395;stroke:#ffffff;stroke-width:4.22313;stroke-dasharray:none;stroke-opacity:0.519962"
|
|
||||||
d="m 416.90426,193.13811 a 12.322476,14.134158 82.30909 0 0 -17.56469,8.83612 12.322476,14.134158 82.30909 0 0 -0.59553,3.65007 c -0.27175,4.26676 0.45709,11.92642 6.76182,21.10665 9.74867,14.19503 8.68847,17.32338 8.68827,17.3239 1.2e-4,-3.3e-4 1.06282,-3.12827 18.32699,-11.08266 11.16516,-5.14424 16.60821,-11.37802 19.06101,-15.14093 a 12.322476,14.134158 82.30909 0 0 1.788,-3.37453 12.322476,14.134158 82.30909 0 0 -9.45059,-15.07737 12.322476,14.134158 82.30909 0 0 -17.5647,8.83612 12.322476,14.134158 82.30909 0 0 -9.45058,-15.07737 z" /><path
|
|
||||||
id="path4-2-6-1-9-8-4"
|
|
||||||
style="fill:#ffffff;fill-opacity:0.50980395;stroke:#ffffff;stroke-width:3.48342;stroke-dasharray:none;stroke-opacity:0.519962"
|
|
||||||
d="m 96.169666,99.754795 a 10.296362,11.508677 62.365085 0 0 -7.330189,13.841365 10.296362,11.508677 62.365085 0 0 1.473186,2.6805 c 2.008889,2.93989 6.437543,7.66269 15.415927,10.84633 13.88288,4.92276 14.77391,7.47086 14.77407,7.4713 -1e-4,-2.8e-4 -0.88925,-2.54921 6.69094,-15.67164 4.90232,-8.48655 5.37758,-15.08279 5.10162,-18.6847 a 10.296362,11.508677 62.365085 0 0 -0.5257,-3.042454 10.296362,11.508677 62.365085 0 0 -14.1348,-5.641051 10.296362,11.508677 62.365085 0 0 -7.33021,13.841385 10.296362,11.508677 62.365085 0 0 -14.134844,-5.641035 z" /><path
|
|
||||||
id="path4-2-6-1-9-8-4-9-2"
|
|
||||||
style="fill:#ffffff;fill-opacity:0.5117;stroke:#ffffff;stroke-width:3.05139;stroke-dasharray:none;stroke-opacity:0.519962"
|
|
||||||
d="m 296.64657,233.26347 a 8.8114666,10.319195 80.445391 0 0 -11.58972,8.06989 8.8114666,10.319195 80.445391 0 0 0.0366,2.62543 c 0.35019,3.02392 1.86017,8.32306 7.60386,14.09672 8.8812,8.92759 8.51432,11.23624 8.51426,11.23663 5e-5,-2.5e-4 0.36876,-2.30885 11.85385,-9.72788 7.4277,-4.79799 10.57103,-9.75243 11.86523,-12.65455 a 8.8114666,10.319195 80.445391 0 0 0.86244,-2.55882 8.8114666,10.319195 80.445391 0 0 -8.77837,-9.57865 8.8114666,10.319195 80.445391 0 0 -11.58975,8.06989 8.8114666,10.319195 80.445391 0 0 -8.77842,-9.57866 z" /><path
|
|
||||||
id="path4-2-6-1-9-8-4-9-2-6"
|
|
||||||
style="fill:#ffffff;fill-opacity:0.5117;stroke:#ffffff;stroke-width:2.49738;stroke-dasharray:none;stroke-opacity:0.519962"
|
|
||||||
d="m 403.95446,91.44744 a 7.0950375,8.5844443 82.142743 0 0 -9.64888,6.492875 7.0950375,8.5844443 82.142743 0 0 0.0305,2.112375 c 0.29155,2.43298 1.54866,6.69657 6.33049,11.34195 7.39392,7.18298 7.08848,9.04046 7.08843,9.04078 4e-5,-2.1e-4 0.307,-1.85765 9.86876,-7.82686 6.18383,-3.86038 8.80077,-7.84663 9.87824,-10.18161 a 7.0950375,8.5844443 82.142743 0 0 0.718,-2.05879 7.0950375,8.5844443 82.142743 0 0 -7.30831,-7.706798 7.0950375,8.5844443 82.142743 0 0 -9.64889,6.492875 7.0950375,8.5844443 82.142743 0 0 -7.30834,-7.706797 z" /><path
|
|
||||||
id="path4-2-6-1-9-8-4-9-5"
|
|
||||||
style="fill:#ffffff;fill-opacity:0.5117;stroke:#ffffff;stroke-width:7.54176;stroke-dasharray:none;stroke-opacity:0.521569"
|
|
||||||
d="m 410.46352,265.86621 a 24.802737,22.39469 2.0523303 0 0 -30.17074,15.95063 24.802737,22.39469 2.0523303 0 0 -0.74427,6.61415 c -0.12337,7.7333 1.79614,21.62064 13.65297,38.28529 18.33368,25.76802 16.72835,31.4347 16.72811,31.43572 1.4e-4,-6.3e-4 1.60998,-5.66652 31.32518,-20.02007 19.21759,-9.28266 28.27643,-20.56192 32.27921,-27.37361 a 24.802737,22.39469 2.0523303 0 0 2.8654,-6.11021 24.802737,22.39469 2.0523303 0 0 -17.88248,-27.36631 24.802737,22.39469 2.0523303 0 0 -30.17081,15.95066 24.802737,22.39469 2.0523303 0 0 -17.88257,-27.36625 z" /><path
|
|
||||||
id="path4-2-6-1-9-8-5"
|
|
||||||
style="fill:#ffffff;fill-opacity:0.50980395;stroke:#ffffff;stroke-width:3.6405;stroke-dasharray:none;stroke-opacity:0.519962"
|
|
||||||
d="m 114.43099,189.33754 a 10.333135,12.525309 79.004057 0 0 -14.00848,9.75499 10.333135,12.525309 79.004057 0 0 0.0547,3.08382 c 0.43602,3.54457 2.28588,9.73496 9.26636,16.38295 10.79359,10.27954 10.35819,13.00063 10.3581,13.00111 6e-5,-3e-4 0.4377,-2.72141 14.32197,-11.70923 8.9793,-5.8126 12.76786,-11.70785 14.32433,-15.14812 a 10.333135,12.525309 79.004057 0 0 1.03481,-3.02677 10.333135,12.525309 79.004057 0 0 -10.67161,-11.04688 10.333135,12.525309 79.004057 0 0 -14.00848,9.75501 10.333135,12.525309 79.004057 0 0 -10.6716,-11.04688 z" /><path
|
|
||||||
id="path4-2-6-1-9-8-4-9-2-2"
|
|
||||||
style="fill:#ffffff;fill-opacity:0.5117;stroke:#ffffff;stroke-width:3.62674;stroke-dasharray:none;stroke-opacity:0.519962"
|
|
||||||
d="m 178.56055,273.32338 a 10.656883,12.053184 66.089768 0 0 -7.97821,14.16205 10.656883,12.053184 66.089768 0 0 1.49012,2.79504 c 2.04675,3.07265 6.5954,8.03049 15.94965,11.48124 14.46412,5.33577 15.34612,7.98353 15.34628,7.98398 -8e-5,-2.8e-4 -0.88012,-2.64887 7.3455,-16.0639 5.31973,-8.67576 5.95524,-15.47956 5.74045,-19.20452 a 10.656883,12.053184 66.089768 0 0 -0.48843,-3.15169 10.656883,12.053184 66.089768 0 0 -14.7135,-6.08217 10.656883,12.053184 66.089768 0 0 -7.97826,14.1621 10.656883,12.053184 66.089768 0 0 -14.71355,-6.08215 z" /></svg>
|
|
||||||
|
Before Width: | Height: | Size: 15 KiB |
|
|
@ -1 +0,0 @@
|
||||||
#e48cc9ff
|
|
||||||
|
Before Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 3.2 KiB |