Compare commits
No commits in common. "master" and "v0.0.4-rc2.test2" have entirely different histories.
master
...
v0.0.4-rc2
|
|
@ -1,137 +1,21 @@
|
||||||
#!/bin/sh -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
NUM_JOBS=$(nproc 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null || echo 2)
|
export NDK_CCACHE=$(which ccache)
|
||||||
export CMAKE_BUILD_PARALLEL_LEVEL="${NUM_JOBS}"
|
|
||||||
ARTIFACTS_DIR="$PWD/artifacts"
|
|
||||||
|
|
||||||
: "${CCACHE:=false}"
|
if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then
|
||||||
RETURN=0
|
|
||||||
|
|
||||||
usage() {
|
|
||||||
cat <<EOF
|
|
||||||
Usage: $0 [-t|--target FLAVOR] [-b|--build-type BUILD_TYPE]
|
|
||||||
[-h|--help] [-r|--release] [extra options]
|
|
||||||
|
|
||||||
Build script for Android.
|
|
||||||
Associated variables can be set outside the script,
|
|
||||||
and will apply both to this script and the packaging script.
|
|
||||||
bool values are "true" or "false"
|
|
||||||
|
|
||||||
Options:
|
|
||||||
-r, --release Enable update checker. If set, sets the DEVEL bool variable to false.
|
|
||||||
By default, DEVEL is true.
|
|
||||||
-t, --target <FLAVOR> Build flavor (variable: TARGET)
|
|
||||||
Valid values are: legacy, optimized, standard, chromeos
|
|
||||||
Default: standard
|
|
||||||
-b, --build-type <TYPE> Build type (variable: TYPE)
|
|
||||||
Valid values are: Release, RelWithDebInfo, Debug
|
|
||||||
Default: Debug
|
|
||||||
-n, --nightly Create a nightly build.
|
|
||||||
|
|
||||||
Extra arguments are passed to CMake (e.g. -DCMAKE_OPTION_NAME=VALUE)
|
|
||||||
Set the CCACHE variable to "true" to enable build caching.
|
|
||||||
The APK and AAB will be output into "artifacts".
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
exit "$RETURN"
|
|
||||||
}
|
|
||||||
|
|
||||||
die() {
|
|
||||||
echo "-- ! $*" >&2
|
|
||||||
RETURN=1 usage
|
|
||||||
}
|
|
||||||
|
|
||||||
target() {
|
|
||||||
[ -z "$1" ] && die "You must specify a valid target."
|
|
||||||
|
|
||||||
TARGET="$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
type() {
|
|
||||||
[ -z "$1" ] && die "You must specify a valid type."
|
|
||||||
|
|
||||||
TYPE="$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
while true; do
|
|
||||||
case "$1" in
|
|
||||||
-r|--release) DEVEL=false ;;
|
|
||||||
-t|--target) target "$2"; shift ;;
|
|
||||||
-b|--build-type) type "$2"; shift ;;
|
|
||||||
-n|--nightly) NIGHTLY=true ;;
|
|
||||||
-h|--help) usage ;;
|
|
||||||
*) break ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
: "${TARGET:=standard}"
|
|
||||||
: "${TYPE:=Release}"
|
|
||||||
: "${DEVEL:=true}"
|
|
||||||
|
|
||||||
TARGET_LOWER=$(echo "$TARGET" | tr '[:upper:]' '[:lower:]')
|
|
||||||
|
|
||||||
case "$TARGET_LOWER" in
|
|
||||||
legacy) FLAVOR=Legacy ;;
|
|
||||||
optimized) FLAVOR=GenshinSpoof ;;
|
|
||||||
standard) FLAVOR=Mainline ;;
|
|
||||||
chromeos) FLAVOR=ChromeOS ;;
|
|
||||||
*) die "Invalid build flavor $TARGET."
|
|
||||||
esac
|
|
||||||
|
|
||||||
case "$TYPE" in
|
|
||||||
RelWithDebInfo|Release|Debug) ;;
|
|
||||||
*) die "Invalid build type $TYPE."
|
|
||||||
esac
|
|
||||||
|
|
||||||
LOWER_FLAVOR=$(echo "$FLAVOR" | sed 's/./\L&/')
|
|
||||||
LOWER_TYPE=$(echo "$TYPE" | sed 's/./\L&/')
|
|
||||||
|
|
||||||
if [ -n "${ANDROID_KEYSTORE_B64}" ]; then
|
|
||||||
export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks"
|
export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks"
|
||||||
echo "${ANDROID_KEYSTORE_B64}" | base64 --decode > "${ANDROID_KEYSTORE_FILE}"
|
base64 --decode <<< "${ANDROID_KEYSTORE_B64}" > "${ANDROID_KEYSTORE_FILE}"
|
||||||
SHA1SUM=$(keytool -list -v -storepass "${ANDROID_KEYSTORE_PASS}" -keystore "${ANDROID_KEYSTORE_FILE}" | grep SHA1 | cut -d " " -f3)
|
|
||||||
echo "-- Keystore SHA1 is ${SHA1SUM}"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd src/android
|
cd src/android
|
||||||
chmod +x ./gradlew
|
chmod +x ./gradlew
|
||||||
|
|
||||||
set -- "$@" -DUSE_CCACHE="${CCACHE}"
|
./gradlew assembleMainlineRelease
|
||||||
|
./gradlew bundleMainlineRelease
|
||||||
|
|
||||||
nightly() {
|
if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then
|
||||||
[ "$NIGHTLY" = "true" ]
|
|
||||||
}
|
|
||||||
|
|
||||||
if nightly || [ "$DEVEL" != "true" ]; then
|
|
||||||
set -- "$@" -DENABLE_UPDATE_CHECKER=ON
|
|
||||||
fi
|
|
||||||
|
|
||||||
if nightly; then
|
|
||||||
NIGHTLY=true
|
|
||||||
else
|
|
||||||
NIGHTLY=false
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "-- building..."
|
|
||||||
|
|
||||||
./gradlew "copy${FLAVOR}${TYPE}Outputs" \
|
|
||||||
-Dorg.gradle.caching="${CCACHE}" \
|
|
||||||
-Dorg.gradle.parallel="${CCACHE}" \
|
|
||||||
-Dorg.gradle.workers.max="${NUM_JOBS}" \
|
|
||||||
-PYUZU_ANDROID_ARGS="$*" \
|
|
||||||
-Pnightly="$NIGHTLY" \
|
|
||||||
--info
|
|
||||||
|
|
||||||
if [ -n "${ANDROID_KEYSTORE_B64}" ]; then
|
|
||||||
rm "${ANDROID_KEYSTORE_FILE}"
|
rm "${ANDROID_KEYSTORE_FILE}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "-- Done! APK and AAB artifacts are in ${ARTIFACTS_DIR}"
|
|
||||||
|
|
||||||
ls -l "${ARTIFACTS_DIR}/"
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
GITDATE="$(git show -s --date=short --format='%ad' | sed 's/-//g')"
|
||||||
|
GITREV="$(git show -s --format='%h')"
|
||||||
|
ARTIFACTS_DIR="$PWD/artifacts"
|
||||||
|
mkdir -p "${ARTIFACTS_DIR}/"
|
||||||
|
|
||||||
|
REV_NAME="eden-android-${GITDATE}-${GITREV}"
|
||||||
|
BUILD_FLAVOR="mainline"
|
||||||
|
BUILD_TYPE_LOWER="release"
|
||||||
|
BUILD_TYPE_UPPER="Release"
|
||||||
|
|
||||||
|
cp src/android/app/build/outputs/apk/"${BUILD_FLAVOR}/${BUILD_TYPE_LOWER}/app-${BUILD_FLAVOR}-${BUILD_TYPE_LOWER}.apk" \
|
||||||
|
"${ARTIFACTS_DIR}/${REV_NAME}.apk" || echo "APK not found"
|
||||||
|
|
||||||
|
cp src/android/app/build/outputs/bundle/"${BUILD_FLAVOR}${BUILD_TYPE_UPPER}"/"app-${BUILD_FLAVOR}-${BUILD_TYPE_LOWER}.aab" \
|
||||||
|
"${ARTIFACTS_DIR}/${REV_NAME}.aab" || echo "AAB not found"
|
||||||
|
|
||||||
|
ls -la "${ARTIFACTS_DIR}/"
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# specify full path if dupes may exist
|
# specify full path if dupes may exist
|
||||||
EXCLUDE_FILES="CPM.cmake CPMUtil.cmake GetSCMRev.cmake renderdoc_app.h tools/cpm tools/shellcheck.sh tools/update-cpm.sh tools/windows/vcvarsall.sh externals/stb externals/glad externals/getopt externals/gamemode externals/FidelityFX-FSR externals/demangle externals/bc_decoder externals/cmake-modules"
|
EXCLUDE_FILES="CPM.cmake CPMUtil.cmake GetSCMRev.cmake renderdoc_app.h tools/cpm tools/shellcheck.sh tools/update-cpm.sh externals/stb externals/glad externals/getopt externals/gamemode externals/FidelityFX-FSR externals/demangle externals/bc_decoder"
|
||||||
|
|
||||||
# license header constants, please change when needed :))))
|
# license header constants, please change when needed :))))
|
||||||
YEAR=2026
|
YEAR=2025
|
||||||
HOLDER="Eden Emulator Project"
|
HOLDER="Eden Emulator Project"
|
||||||
LICENSE="GPL-3.0-or-later"
|
LICENSE="GPL-3.0-or-later"
|
||||||
|
|
||||||
|
|
@ -41,8 +41,9 @@ EOF
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
|
(-uc) UPDATE=true; COMMIT=true ;;
|
||||||
(-u|--update) UPDATE=true ;;
|
(-u|--update) UPDATE=true ;;
|
||||||
(-c|--commit) UPDATE=true; COMMIT=true ;;
|
(-c|--commit) COMMIT=true ;;
|
||||||
("$0") break ;;
|
("$0") break ;;
|
||||||
("") break ;;
|
("") break ;;
|
||||||
(*) usage ;;
|
(*) usage ;;
|
||||||
|
|
@ -112,7 +113,7 @@ for file in $FILES; do
|
||||||
[ "$excluded" = "true" ] && continue
|
[ "$excluded" = "true" ] && continue
|
||||||
|
|
||||||
case "$file" in
|
case "$file" in
|
||||||
*.cmake|*.sh|*CMakeLists.txt)
|
*.cmake|*.sh|CMakeLists.txt)
|
||||||
begin="#"
|
begin="#"
|
||||||
;;
|
;;
|
||||||
*.kt*|*.cpp|*.h)
|
*.kt*|*.cpp|*.h)
|
||||||
|
|
@ -185,7 +186,7 @@ if [ "$UPDATE" = "true" ]; then
|
||||||
|
|
||||||
for file in $SRC_FILES $OTHER_FILES; do
|
for file in $SRC_FILES $OTHER_FILES; do
|
||||||
case $(basename -- "$file") in
|
case $(basename -- "$file") in
|
||||||
*.cmake|*CMakeLists.txt)
|
*.cmake|CMakeLists.txt)
|
||||||
begin="#"
|
begin="#"
|
||||||
shell="false"
|
shell="false"
|
||||||
;;
|
;;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
|
|
@ -104,7 +104,8 @@ 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 \
|
||||||
|
-DDYNARMIC_ENABLE_LTO=ON \
|
||||||
"${EXTRA_CMAKE_FLAGS[@]}"
|
"${EXTRA_CMAKE_FLAGS[@]}"
|
||||||
|
|
||||||
ninja -j${NPROC}
|
ninja -j${NPROC}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash -ex
|
#!/bin/bash -ex
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
if [ "$COMPILER" == "clang" ]
|
if [ "$COMPILER" == "clang" ]
|
||||||
|
|
@ -32,8 +32,9 @@ cmake .. -G Ninja \
|
||||||
-DYUZU_ROOM_STANDALONE=OFF \
|
-DYUZU_ROOM_STANDALONE=OFF \
|
||||||
-DYUZU_USE_QT_MULTIMEDIA=${USE_MULTIMEDIA:-false} \
|
-DYUZU_USE_QT_MULTIMEDIA=${USE_MULTIMEDIA:-false} \
|
||||||
-DYUZU_USE_QT_WEB_ENGINE=${USE_WEBENGINE:-false} \
|
-DYUZU_USE_QT_WEB_ENGINE=${USE_WEBENGINE:-false} \
|
||||||
-DENABLE_LTO=ON \
|
-DYUZU_ENABLE_LTO=ON \
|
||||||
-DCMAKE_EXE_LINKER_FLAGS=" /LTCG" \
|
-DCMAKE_EXE_LINKER_FLAGS=" /LTCG" \
|
||||||
|
-DDYNARMIC_ENABLE_LTO=ON \
|
||||||
-DYUZU_USE_BUNDLED_QT=${BUNDLE_QT:-false} \
|
-DYUZU_USE_BUNDLED_QT=${BUNDLE_QT:-false} \
|
||||||
-DUSE_CCACHE=${CCACHE:-false} \
|
-DUSE_CCACHE=${CCACHE:-false} \
|
||||||
-DENABLE_UPDATE_CHECKER=${DEVEL:-true} \
|
-DENABLE_UPDATE_CHECKER=${DEVEL:-true} \
|
||||||
|
|
|
||||||
|
|
@ -1,43 +1,25 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
|
|
||||||
# Check if running as administrator
|
# Check if running as administrator
|
||||||
try {
|
if (-not ([bool](net session 2>$null))) {
|
||||||
net session 1>$null 2>$null
|
|
||||||
} catch {
|
|
||||||
Write-Host "This script must be run with administrator privileges!"
|
Write-Host "This script must be run with administrator privileges!"
|
||||||
Exit 1
|
Exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
$VulkanSDKVer = "1.4.341.1"
|
$VulkanSDKVer = "1.4.321.1"
|
||||||
if ((Get-WmiObject -Class Win32_ComputerSystem).SystemType -match '(x64)' -eq "True") {
|
$ExeFile = "vulkansdk-windows-X64-$VulkanSDKVer.exe"
|
||||||
$VulkanSDKArch = "X64"
|
$Uri = "https://sdk.lunarg.com/sdk/download/$VulkanSDKVer/windows/$ExeFile"
|
||||||
$VulkanSDKOs = "windows"
|
|
||||||
} else {
|
|
||||||
$VulkanSDKArch = "ARM64"
|
|
||||||
$VulkanSDKOs = "warm"
|
|
||||||
}
|
|
||||||
$VULKAN_SDK = "C:/VulkanSDK/$VulkanSDKVer"
|
|
||||||
$ExeFile = "vulkansdk-windows-$VulkanSDKArch-$VulkanSDKVer.exe"
|
|
||||||
$Uri = "https://sdk.lunarg.com/sdk/download/$VulkanSDKVer/$VulkanSDKOs/$ExeFile"
|
|
||||||
$Destination = "./$ExeFile"
|
$Destination = "./$ExeFile"
|
||||||
|
|
||||||
# Check if Vulkan SDK is already installed
|
|
||||||
if (Test-Path $VULKAN_SDK) {
|
|
||||||
Write-Host "-- Vulkan SDK already installed at $VULKAN_SDK"
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "Downloading Vulkan SDK $VulkanSDKVer from $Uri"
|
echo "Downloading Vulkan SDK $VulkanSDKVer from $Uri"
|
||||||
$WebClient = New-Object System.Net.WebClient
|
$WebClient = New-Object System.Net.WebClient
|
||||||
$WebClient.DownloadFile($Uri, $Destination)
|
$WebClient.DownloadFile($Uri, $Destination)
|
||||||
echo "Finished downloading $ExeFile"
|
echo "Finished downloading $ExeFile"
|
||||||
|
|
||||||
|
$VULKAN_SDK = "C:/VulkanSDK/$VulkanSDKVer"
|
||||||
$Arguments = "--root `"$VULKAN_SDK`" --accept-licenses --default-answer --confirm-command install"
|
$Arguments = "--root `"$VULKAN_SDK`" --accept-licenses --default-answer --confirm-command install"
|
||||||
|
|
||||||
echo "Installing Vulkan SDK $VulkanSDKVer"
|
echo "Installing Vulkan SDK $VulkanSDKVer"
|
||||||
|
|
@ -54,4 +36,4 @@ echo "Finished installing Vulkan SDK $VulkanSDKVer"
|
||||||
if ("$env:GITHUB_ACTIONS" -eq "true") {
|
if ("$env:GITHUB_ACTIONS" -eq "true") {
|
||||||
echo "VULKAN_SDK=$VULKAN_SDK" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
echo "VULKAN_SDK=$VULKAN_SDK" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||||
echo "$VULKAN_SDK/Bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
echo "$VULKAN_SDK/Bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
||||||
}
|
}
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
||||||
|
|
@ -7,7 +7,6 @@
|
||||||
# Build directory
|
# Build directory
|
||||||
/[Bb]uild*/
|
/[Bb]uild*/
|
||||||
doc-build/
|
doc-build/
|
||||||
out/
|
|
||||||
AppDir/
|
AppDir/
|
||||||
uruntime
|
uruntime
|
||||||
|
|
||||||
|
|
@ -37,8 +36,6 @@ CMakeLists.txt.user*
|
||||||
# *nix related
|
# *nix related
|
||||||
# Common convention for backup or temporary files
|
# Common convention for backup or temporary files
|
||||||
*~
|
*~
|
||||||
*.core
|
|
||||||
dtrace-out/
|
|
||||||
|
|
||||||
# Visual Studio CMake settings
|
# Visual Studio CMake settings
|
||||||
CMakeSettings.json
|
CMakeSettings.json
|
||||||
|
|
@ -62,4 +59,3 @@ eden-windows-msvc
|
||||||
artifacts
|
artifacts
|
||||||
*.AppImage*
|
*.AppImage*
|
||||||
/install*
|
/install*
|
||||||
vulkansdk*.exe
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
--- a/libs/context/CMakeLists.txt 2025-09-08 00:42:31.303651800 -0400
|
||||||
|
+++ b/libs/context/CMakeLists.txt 2025-09-08 00:42:40.592184300 -0400
|
||||||
|
@@ -146,7 +146,7 @@
|
||||||
|
set(ASM_LANGUAGE ASM)
|
||||||
|
endif()
|
||||||
|
elseif(BOOST_CONTEXT_ASSEMBLER STREQUAL armasm)
|
||||||
|
- set(ASM_LANGUAGE ASM_ARMASM)
|
||||||
|
+ set(ASM_LANGUAGE ASM_MARMASM)
|
||||||
|
else()
|
||||||
|
set(ASM_LANGUAGE ASM_MASM)
|
||||||
|
endif()
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
diff --git a/libs/context/CMakeLists.txt b/libs/context/CMakeLists.txt
|
||||||
|
index 8210f65..0e59dd7 100644
|
||||||
|
--- a/libs/context/CMakeLists.txt
|
||||||
|
+++ b/libs/context/CMakeLists.txt
|
||||||
|
@@ -186,7 +186,8 @@ if(BOOST_CONTEXT_IMPLEMENTATION STREQUAL "fcontext")
|
||||||
|
set_property(SOURCE ${ASM_SOURCES} APPEND PROPERTY COMPILE_OPTIONS "/safeseh")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
- else() # masm
|
||||||
|
+ # armasm doesn't support most of these options
|
||||||
|
+ elseif(NOT BOOST_CONTEXT_ASSEMBLER STREQUAL armasm) # masm
|
||||||
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||||
|
set_property(SOURCE ${ASM_SOURCES} APPEND PROPERTY COMPILE_OPTIONS "-x" "assembler-with-cpp")
|
||||||
|
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
From ce992811fe8eb5ea7ad37e5b255bfecb0c313928 Mon Sep 17 00:00:00 2001
|
|
||||||
From: crueter <crueter@crueter.xyz>
|
|
||||||
Date: Sun, 7 Sep 2025 23:43:57 -0400
|
|
||||||
Subject: [PATCH] [algorithm] fix missing declaration error
|
|
||||||
|
|
||||||
Projects with restrictive error options won't compile without this
|
|
||||||
|
|
||||||
Signed-off-by: crueter <crueter@crueter.xyz>
|
|
||||||
---
|
|
||||||
include/jwt/algorithm.hpp | 2 ++
|
|
||||||
1 file changed, 2 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/include/jwt/algorithm.hpp b/include/jwt/algorithm.hpp
|
|
||||||
index 0e3b843..35347fe 100644
|
|
||||||
--- a/include/jwt/algorithm.hpp
|
|
||||||
+++ b/include/jwt/algorithm.hpp
|
|
||||||
@@ -63,6 +63,8 @@ using sign_func_t = sign_result_t (*) (const jwt::string_view key,
|
|
||||||
using verify_func_t = verify_result_t (*) (const jwt::string_view key,
|
|
||||||
const jwt::string_view head,
|
|
||||||
const jwt::string_view jwt_sign);
|
|
||||||
+
|
|
||||||
+verify_result_t is_secret_a_public_key(const jwt::string_view secret);
|
|
||||||
|
|
||||||
namespace algo {
|
|
||||||
|
|
||||||
|
|
@ -1,62 +1,52 @@
|
||||||
From 436fc1978c78edd085d99b33275b24be0ac96aa0 Mon Sep 17 00:00:00 2001
|
From e1a946ffb79022d38351a0623f819a5419965c3e Mon Sep 17 00:00:00 2001
|
||||||
From: crueter <crueter@eden-emu.dev>
|
From: crueter <crueter@eden-emu.dev>
|
||||||
Date: Sun, 1 Feb 2026 16:21:10 -0500
|
Date: Fri, 24 Oct 2025 23:41:09 -0700
|
||||||
Subject: [PATCH] Fix build on MinGW
|
Subject: [PATCH] [build] Fix MinGW missing GetAddrInfoExCancel definition
|
||||||
|
|
||||||
MinGW doesn't define GetAddrInfoExCancel.
|
MinGW does not define GetAddrInfoExCancel in its wstcpi whatever header,
|
||||||
|
so to get around this we can just load it with GetProcAddress et al.
|
||||||
|
|
||||||
Signed-off-by: crueter <crueter@eden-emu.dev>
|
Signed-off-by: crueter <crueter@eden-emu.dev>
|
||||||
---
|
---
|
||||||
httplib.h | 18 ++++++++++++++++--
|
httplib.h | 14 ++++++++++++--
|
||||||
1 file changed, 16 insertions(+), 2 deletions(-)
|
1 file changed, 12 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
diff --git a/httplib.h b/httplib.h
|
diff --git a/httplib.h b/httplib.h
|
||||||
index ec8d2a2..5f9a510 100644
|
index e15ba44..90a76dc 100644
|
||||||
--- a/httplib.h
|
--- a/httplib.h
|
||||||
+++ b/httplib.h
|
+++ b/httplib.h
|
||||||
@@ -203,14 +203,17 @@
|
@@ -203,11 +203,13 @@
|
||||||
#error Sorry, Visual Studio versions prior to 2015 are not supported
|
#error Sorry, Visual Studio versions prior to 2015 are not supported
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
-#pragma comment(lib, "ws2_32.lib")
|
-#pragma comment(lib, "ws2_32.lib")
|
||||||
-
|
-
|
||||||
#ifndef _SSIZE_T_DEFINED
|
|
||||||
using ssize_t = __int64;
|
using ssize_t = __int64;
|
||||||
#define _SSIZE_T_DEFINED
|
|
||||||
#endif
|
|
||||||
#endif // _MSC_VER
|
#endif // _MSC_VER
|
||||||
|
|
||||||
+#if defined(_MSC_VER) || defined(__MINGW32__)
|
+#if defined(_MSC_VER) || defined(__MINGW32__)
|
||||||
+#pragma comment(lib, "ws2_32.lib")
|
+#pragma comment(lib, "ws2_32.lib")
|
||||||
+#endif
|
+#endif
|
||||||
+
|
|
||||||
+
|
+
|
||||||
#ifndef S_ISREG
|
#ifndef S_ISREG
|
||||||
#define S_ISREG(m) (((m) & S_IFREG) == S_IFREG)
|
#define S_ISREG(m) (((m) & S_IFREG) == S_IFREG)
|
||||||
#endif // S_ISREG
|
#endif // S_ISREG
|
||||||
@@ -4528,7 +4531,17 @@ inline int getaddrinfo_with_timeout(const char *node, const char *service,
|
@@ -3557,7 +3559,15 @@ inline int getaddrinfo_with_timeout(const char *node, const char *service,
|
||||||
auto wait_result =
|
auto wait_result =
|
||||||
::WaitForSingleObject(event, static_cast<DWORD>(timeout_sec * 1000));
|
::WaitForSingleObject(event, static_cast<DWORD>(timeout_sec * 1000));
|
||||||
if (wait_result == WAIT_TIMEOUT) {
|
if (wait_result == WAIT_TIMEOUT) {
|
||||||
+#ifdef __MINGW32__
|
+#ifdef __MINGW32__
|
||||||
+ typedef INT(WSAAPI * PFN_GETADDRINFOEXCANCEL)(HANDLE * CancelHandle);
|
+ typedef INT (WSAAPI *PFN_GETADDRINFOEXCANCEL)(HANDLE *CancelHandle);
|
||||||
+ auto wsdll = LoadLibraryW((wchar_t *)"ws2_32.lib");
|
+ auto wsdll = LoadLibraryW((wchar_t*) "ws2_32.lib");
|
||||||
+ PFN_GETADDRINFOEXCANCEL GetAddrInfoExCancel =
|
+ PFN_GETADDRINFOEXCANCEL GetAddrInfoExCancel = (PFN_GETADDRINFOEXCANCEL) GetProcAddress(wsdll, "GetAddrInfoExCancel");
|
||||||
+ (PFN_GETADDRINFOEXCANCEL)GetProcAddress(wsdll, "GetAddrInfoExCancel");
|
|
||||||
+
|
+
|
||||||
+ if (cancel_handle) { GetAddrInfoExCancel(&cancel_handle); }
|
+ if (cancel_handle) { GetAddrInfoExCancel(&cancel_handle); }
|
||||||
+#else
|
+#else
|
||||||
if (cancel_handle) { ::GetAddrInfoExCancel(&cancel_handle); }
|
if (cancel_handle) { ::GetAddrInfoExCancel(&cancel_handle); }
|
||||||
+#endif
|
+#endif
|
||||||
+
|
|
||||||
::CloseHandle(event);
|
::CloseHandle(event);
|
||||||
return EAI_AGAIN;
|
return EAI_AGAIN;
|
||||||
}
|
}
|
||||||
@@ -13952,3 +13965,4 @@ inline SSL_CTX *Client::ssl_context() const {
|
|
||||||
} // namespace httplib
|
|
||||||
|
|
||||||
#endif // CPPHTTPLIB_HTTPLIB_H
|
|
||||||
+
|
|
||||||
--
|
--
|
||||||
2.51.2
|
2.51.0
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/library/aesni.h b/library/aesni.h
|
||||||
|
index 754c984c79..59e27afd3e 100644
|
||||||
|
--- a/library/aesni.h
|
||||||
|
+++ b/library/aesni.h
|
||||||
|
@@ -35,7 +35,7 @@
|
||||||
|
/* GCC-like compilers: currently, we only support intrinsics if the requisite
|
||||||
|
* target flag is enabled when building the library (e.g. `gcc -mpclmul -msse2`
|
||||||
|
* or `clang -maes -mpclmul`). */
|
||||||
|
-#if (defined(__GNUC__) || defined(__clang__)) && defined(__AES__) && defined(__PCLMUL__)
|
||||||
|
+#if defined(__GNUC__) || defined(__clang__)
|
||||||
|
#define MBEDTLS_AESNI_HAVE_INTRINSICS
|
||||||
|
#endif
|
||||||
|
/* For 32-bit, we only support intrinsics */
|
||||||
|
|
@ -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,16 +1,3 @@
|
||||||
diff --git a/library/aesni.h b/library/aesni.h
|
|
||||||
index 754c984c79..59e27afd3e 100644
|
|
||||||
--- a/library/aesni.h
|
|
||||||
+++ b/library/aesni.h
|
|
||||||
@@ -35,7 +35,7 @@
|
|
||||||
/* GCC-like compilers: currently, we only support intrinsics if the requisite
|
|
||||||
* target flag is enabled when building the library (e.g. `gcc -mpclmul -msse2`
|
|
||||||
* or `clang -maes -mpclmul`). */
|
|
||||||
-#if (defined(__GNUC__) || defined(__clang__)) && defined(__AES__) && defined(__PCLMUL__)
|
|
||||||
+#if defined(__GNUC__) || defined(__clang__)
|
|
||||||
#define MBEDTLS_AESNI_HAVE_INTRINSICS
|
|
||||||
#endif
|
|
||||||
/* For 32-bit, we only support intrinsics */
|
|
||||||
diff --git a/library/aesni.c b/library/aesni.c
|
diff --git a/library/aesni.c b/library/aesni.c
|
||||||
index 2857068..3e104ab 100644
|
index 2857068..3e104ab 100644
|
||||||
--- a/library/aesni.c
|
--- a/library/aesni.c
|
||||||
|
|
@ -1,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,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> {
|
|
||||||
|
|
@ -13,6 +13,7 @@ Copyright: yuzu Emulator Project
|
||||||
License: GPL-2.0-or-later
|
License: GPL-2.0-or-later
|
||||||
|
|
||||||
Files: dist/qt_themes/default/icons/256x256/eden.png
|
Files: dist/qt_themes/default/icons/256x256/eden.png
|
||||||
|
dist/qt_themes/default/icons/256x256/eden_named.png
|
||||||
dist/yuzu.bmp
|
dist/yuzu.bmp
|
||||||
dist/eden.icns
|
dist/eden.icns
|
||||||
dist/eden.ico
|
dist/eden.ico
|
||||||
|
|
|
||||||
782
CMakeLists.txt
|
|
@ -1,3 +1,8 @@
|
||||||
|
# SPDX-FileCopyrightText: Copyright 2025 crueter
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
# This is a slightly modified version of CPM.cmake
|
||||||
|
|
||||||
# CPM.cmake - CMake's missing package manager
|
# CPM.cmake - CMake's missing package manager
|
||||||
# ===========================================
|
# ===========================================
|
||||||
# See https://github.com/cpm-cmake/CPM.cmake for usage and update instructions.
|
# See https://github.com/cpm-cmake/CPM.cmake for usage and update instructions.
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 crueter
|
# SPDX-FileCopyrightText: Copyright 2025 crueter
|
||||||
# SPDX-License-Identifier: LGPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
set(CPM_SOURCE_CACHE "${PROJECT_SOURCE_DIR}/.cache/cpm" CACHE STRING "" FORCE)
|
if (MSVC OR ANDROID)
|
||||||
|
|
||||||
if(MSVC OR ANDROID)
|
|
||||||
set(BUNDLED_DEFAULT ON)
|
set(BUNDLED_DEFAULT ON)
|
||||||
else()
|
else()
|
||||||
set(BUNDLED_DEFAULT OFF)
|
set(BUNDLED_DEFAULT OFF)
|
||||||
|
|
@ -21,19 +19,10 @@ include(CPM)
|
||||||
# cpmfile parsing
|
# cpmfile parsing
|
||||||
set(CPMUTIL_JSON_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cpmfile.json")
|
set(CPMUTIL_JSON_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cpmfile.json")
|
||||||
|
|
||||||
if(EXISTS ${CPMUTIL_JSON_FILE})
|
if (EXISTS ${CPMUTIL_JSON_FILE})
|
||||||
file(READ ${CPMUTIL_JSON_FILE} CPMFILE_CONTENT)
|
file(READ ${CPMUTIL_JSON_FILE} CPMFILE_CONTENT)
|
||||||
if (NOT TARGET cpmfiles)
|
|
||||||
add_custom_target(cpmfiles)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
target_sources(cpmfiles PRIVATE ${CPMUTIL_JSON_FILE})
|
|
||||||
set_property(DIRECTORY APPEND PROPERTY
|
|
||||||
CMAKE_CONFIGURE_DEPENDS
|
|
||||||
"${CPMUTIL_JSON_FILE}")
|
|
||||||
else()
|
else()
|
||||||
message(DEBUG "[CPMUtil] cpmfile ${CPMUTIL_JSON_FILE}"
|
message(WARNING "[CPMUtil] cpmfile ${CPMUTIL_JSON_FILE} does not exist, AddJsonPackage will be a no-op")
|
||||||
"does not exist, AddJsonPackage will be a no-op")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Utility stuff
|
# Utility stuff
|
||||||
|
|
@ -41,11 +30,6 @@ function(cpm_utils_message level name message)
|
||||||
message(${level} "[CPMUtil] ${name}: ${message}")
|
message(${level} "[CPMUtil] ${name}: ${message}")
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# propagate a variable to parent scope
|
|
||||||
macro(Propagate var)
|
|
||||||
set(${var} ${${var}} PARENT_SCOPE)
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
function(array_to_list array length out)
|
function(array_to_list array length out)
|
||||||
math(EXPR range "${length} - 1")
|
math(EXPR range "${length} - 1")
|
||||||
|
|
||||||
|
|
@ -61,14 +45,14 @@ endfunction()
|
||||||
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,178 +61,20 @@ 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.
|
|
||||||
function(SystemPackageViable JSON_NAME)
|
|
||||||
string(JSON object GET "${CPMFILE_CONTENT}" "${JSON_NAME}")
|
|
||||||
|
|
||||||
parse_object(${object})
|
|
||||||
|
|
||||||
string(REPLACE " " ";" find_args "${find_args}")
|
|
||||||
if (${package}_FORCE_BUNDLED)
|
|
||||||
set(${package}_FOUND OFF)
|
|
||||||
else()
|
|
||||||
find_package(${package} ${version} ${find_args} QUIET NO_POLICY_SCOPE)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(${pkg}_VIABLE ${${package}_FOUND} PARENT_SCOPE)
|
|
||||||
set(${pkg}_PACKAGE ${package} PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# Add several packages such that if one is bundled,
|
|
||||||
# all the rest must also be bundled.
|
|
||||||
function(AddDependentPackages)
|
|
||||||
set(_some_system OFF)
|
|
||||||
set(_some_bundled OFF)
|
|
||||||
|
|
||||||
foreach(pkg ${ARGN})
|
|
||||||
SystemPackageViable(${pkg})
|
|
||||||
|
|
||||||
if (${pkg}_VIABLE)
|
|
||||||
set(_some_system ON)
|
|
||||||
list(APPEND _system_pkgs ${${pkg}_PACKAGE})
|
|
||||||
else()
|
|
||||||
set(_some_bundled ON)
|
|
||||||
list(APPEND _bundled_pkgs ${${pkg}_PACKAGE})
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
if (_some_system AND _some_bundled)
|
|
||||||
foreach(pkg ${ARGN})
|
|
||||||
list(APPEND package_names ${${pkg}_PACKAGE})
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
string(REPLACE ";" ", " package_names "${package_names}")
|
|
||||||
string(REPLACE ";" ", " bundled_names "${_bundled_pkgs}")
|
|
||||||
foreach(sys ${_system_pkgs})
|
|
||||||
list(APPEND system_names ${sys}_FORCE_BUNDLED)
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
string(REPLACE ";" ", " system_names "${system_names}")
|
|
||||||
|
|
||||||
message(FATAL_ERROR "Partial dependency installation detected "
|
|
||||||
"for the following packages:\n${package_names}\n"
|
|
||||||
"You can solve this in one of two ways:\n"
|
|
||||||
"1. Install the following packages to your system if available:"
|
|
||||||
"\n\t${bundled_names}\n"
|
|
||||||
"2. Set the following variables to ON:"
|
|
||||||
"\n\t${system_names}\n"
|
|
||||||
"This may also be caused by a version mismatch, "
|
|
||||||
"such as one package being newer than the other.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
foreach(pkg ${ARGN})
|
|
||||||
AddJsonPackage(${pkg})
|
|
||||||
endforeach()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# json util
|
|
||||||
macro(parse_object object)
|
|
||||||
get_json_element("${object}" package package ${JSON_NAME})
|
|
||||||
get_json_element("${object}" repo repo "")
|
|
||||||
get_json_element("${object}" ci ci OFF)
|
|
||||||
get_json_element("${object}" version version "")
|
|
||||||
|
|
||||||
if(ci)
|
|
||||||
get_json_element("${object}" name name "${JSON_NAME}")
|
|
||||||
get_json_element("${object}" extension extension "tar.zst")
|
|
||||||
get_json_element("${object}" min_version min_version "")
|
|
||||||
get_json_element("${object}" raw_disabled disabled_platforms "")
|
|
||||||
|
|
||||||
if(raw_disabled)
|
|
||||||
array_to_list("${raw_disabled}"
|
|
||||||
${raw_disabled_LENGTH} disabled_platforms)
|
|
||||||
else()
|
|
||||||
set(disabled_platforms "")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
get_json_element("${object}" hash hash "")
|
|
||||||
get_json_element("${object}" hash_suffix hash_suffix "")
|
|
||||||
get_json_element("${object}" sha sha "")
|
|
||||||
get_json_element("${object}" url url "")
|
|
||||||
get_json_element("${object}" key key "")
|
|
||||||
get_json_element("${object}" tag tag "")
|
|
||||||
get_json_element("${object}" artifact artifact "")
|
|
||||||
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}" bundled bundled "unset")
|
|
||||||
get_json_element("${object}" find_args find_args "")
|
|
||||||
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
|
|
||||||
if(raw_patches)
|
|
||||||
math(EXPR range "${raw_patches_LENGTH} - 1")
|
|
||||||
|
|
||||||
foreach(IDX RANGE ${range})
|
|
||||||
string(JSON _patch GET "${raw_patches}" "${IDX}")
|
|
||||||
|
|
||||||
set(full_patch
|
|
||||||
"${PROJECT_SOURCE_DIR}/.patch/${JSON_NAME}/${_patch}")
|
|
||||||
if(NOT EXISTS ${full_patch})
|
|
||||||
cpm_utils_message(FATAL_ERROR ${JSON_NAME}
|
|
||||||
"specifies patch ${full_patch} which does not exist")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
list(APPEND patches "${full_patch}")
|
|
||||||
endforeach()
|
|
||||||
endif()
|
|
||||||
# end format patchdir
|
|
||||||
|
|
||||||
# options
|
|
||||||
get_json_element("${object}" raw_options options "")
|
|
||||||
|
|
||||||
if(raw_options)
|
|
||||||
array_to_list("${raw_options}" ${raw_options_LENGTH} options)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(options ${options} ${JSON_OPTIONS})
|
|
||||||
# end options
|
|
||||||
|
|
||||||
# system/bundled
|
|
||||||
if(bundled STREQUAL "unset" AND DEFINED JSON_BUNDLED_PACKAGE)
|
|
||||||
set(bundled ${JSON_BUNDLED_PACKAGE})
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
# The preferred usage
|
# The preferred usage
|
||||||
function(AddJsonPackage)
|
function(AddJsonPackage)
|
||||||
set(oneValueArgs
|
set(oneValueArgs
|
||||||
NAME
|
NAME
|
||||||
|
|
||||||
# these are overrides that can be generated at runtime,
|
# these are overrides that can be generated at runtime, so can be defined separately from the json
|
||||||
# so can be defined separately from the json
|
|
||||||
DOWNLOAD_ONLY
|
DOWNLOAD_ONLY
|
||||||
BUNDLED_PACKAGE
|
BUNDLED_PACKAGE
|
||||||
FORCE_BUNDLED_PACKAGE)
|
)
|
||||||
|
|
||||||
set(multiValueArgs OPTIONS)
|
set(multiValueArgs OPTIONS)
|
||||||
|
|
||||||
cmake_parse_arguments(JSON "" "${oneValueArgs}" "${multiValueArgs}"
|
cmake_parse_arguments(JSON "" "${oneValueArgs}" "${multiValueArgs}"
|
||||||
"${ARGN}")
|
"${ARGN}")
|
||||||
|
|
||||||
list(LENGTH ARGN argnLength)
|
list(LENGTH ARGN argnLength)
|
||||||
|
|
||||||
|
|
@ -257,26 +83,38 @@ function(AddJsonPackage)
|
||||||
set(JSON_NAME "${ARGV0}")
|
set(JSON_NAME "${ARGV0}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT DEFINED CPMFILE_CONTENT)
|
if (NOT DEFINED CPMFILE_CONTENT)
|
||||||
cpm_utils_message(WARNING ${name}
|
cpm_utils_message(WARNING ${name} "No cpmfile, AddJsonPackage is a no-op")
|
||||||
"No cpmfile, AddJsonPackage is a no-op")
|
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT DEFINED JSON_NAME)
|
if (NOT DEFINED JSON_NAME)
|
||||||
cpm_utils_message(FATAL_ERROR "json package" "No name specified")
|
cpm_utils_message(FATAL_ERROR "json package" "No name specified")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
string(JSON object ERROR_VARIABLE
|
string(JSON object ERROR_VARIABLE err GET "${CPMFILE_CONTENT}" "${JSON_NAME}")
|
||||||
err GET "${CPMFILE_CONTENT}" "${JSON_NAME}")
|
|
||||||
|
|
||||||
if(err)
|
if (err)
|
||||||
cpm_utils_message(FATAL_ERROR ${JSON_NAME} "Not found in cpmfile")
|
cpm_utils_message(FATAL_ERROR ${JSON_NAME} "Not found in cpmfile")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
parse_object(${object})
|
get_json_element("${object}" package package ${JSON_NAME})
|
||||||
|
get_json_element("${object}" repo repo "")
|
||||||
|
get_json_element("${object}" ci ci OFF)
|
||||||
|
get_json_element("${object}" version version "")
|
||||||
|
|
||||||
|
if (ci)
|
||||||
|
get_json_element("${object}" name name "${JSON_NAME}")
|
||||||
|
get_json_element("${object}" extension extension "tar.zst")
|
||||||
|
get_json_element("${object}" min_version min_version "")
|
||||||
|
get_json_element("${object}" raw_disabled disabled_platforms "")
|
||||||
|
|
||||||
|
if (raw_disabled)
|
||||||
|
array_to_list("${raw_disabled}" ${raw_disabled_LENGTH} disabled_platforms)
|
||||||
|
else()
|
||||||
|
set(disabled_platforms "")
|
||||||
|
endif()
|
||||||
|
|
||||||
if(ci)
|
|
||||||
AddCIPackage(
|
AddCIPackage(
|
||||||
VERSION ${version}
|
VERSION ${version}
|
||||||
NAME ${name}
|
NAME ${name}
|
||||||
|
|
@ -284,40 +122,116 @@ function(AddJsonPackage)
|
||||||
PACKAGE ${package}
|
PACKAGE ${package}
|
||||||
EXTENSION ${extension}
|
EXTENSION ${extension}
|
||||||
MIN_VERSION ${min_version}
|
MIN_VERSION ${min_version}
|
||||||
DISABLED_PLATFORMS ${disabled_platforms})
|
DISABLED_PLATFORMS ${disabled_platforms}
|
||||||
|
)
|
||||||
|
|
||||||
else()
|
# pass stuff to parent scope
|
||||||
if (NOT DEFINED JSON_FORCE_BUNDLED_PACKAGE)
|
set(${package}_ADDED "${${package}_ADDED}"
|
||||||
set(JSON_FORCE_BUNDLED_PACKAGE OFF)
|
PARENT_SCOPE)
|
||||||
endif()
|
set(${package}_SOURCE_DIR "${${package}_SOURCE_DIR}"
|
||||||
|
PARENT_SCOPE)
|
||||||
|
set(${package}_BINARY_DIR "${${package}_BINARY_DIR}"
|
||||||
|
PARENT_SCOPE)
|
||||||
|
|
||||||
AddPackage(
|
return()
|
||||||
NAME "${package}"
|
|
||||||
VERSION "${version}"
|
|
||||||
URL "${url}"
|
|
||||||
HASH "${hash}"
|
|
||||||
HASH_SUFFIX "${hash_suffix}"
|
|
||||||
SHA "${sha}"
|
|
||||||
REPO "${repo}"
|
|
||||||
KEY "${key}"
|
|
||||||
PATCHES "${patches}"
|
|
||||||
OPTIONS "${options}"
|
|
||||||
FIND_PACKAGE_ARGUMENTS "${find_args}"
|
|
||||||
BUNDLED_PACKAGE "${bundled}"
|
|
||||||
FORCE_BUNDLED_PACKAGE "${JSON_FORCE_BUNDLED_PACKAGE}"
|
|
||||||
SOURCE_SUBDIR "${source_subdir}"
|
|
||||||
|
|
||||||
GIT_VERSION ${git_version}
|
|
||||||
GIT_HOST ${git_host}
|
|
||||||
|
|
||||||
ARTIFACT ${artifact}
|
|
||||||
TAG ${tag})
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
get_json_element("${object}" hash hash "")
|
||||||
|
get_json_element("${object}" hash_suffix hash_suffix "")
|
||||||
|
get_json_element("${object}" sha sha "")
|
||||||
|
get_json_element("${object}" url url "")
|
||||||
|
get_json_element("${object}" key key "")
|
||||||
|
get_json_element("${object}" tag tag "")
|
||||||
|
get_json_element("${object}" artifact artifact "")
|
||||||
|
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}" bundled bundled "unset")
|
||||||
|
get_json_element("${object}" find_args find_args "")
|
||||||
|
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
|
||||||
|
if (raw_patches)
|
||||||
|
math(EXPR range "${raw_patches_LENGTH} - 1")
|
||||||
|
|
||||||
|
foreach(IDX RANGE ${range})
|
||||||
|
string(JSON _patch GET "${raw_patches}" "${IDX}")
|
||||||
|
|
||||||
|
set(full_patch "${CMAKE_SOURCE_DIR}/.patch/${JSON_NAME}/${_patch}")
|
||||||
|
if (NOT EXISTS ${full_patch})
|
||||||
|
cpm_utils_message(FATAL_ERROR ${JSON_NAME} "specifies patch ${full_patch} which does not exist")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
list(APPEND patches "${full_patch}")
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
# end format patchdir
|
||||||
|
|
||||||
|
# options
|
||||||
|
get_json_element("${object}" raw_options options "")
|
||||||
|
|
||||||
|
if (raw_options)
|
||||||
|
array_to_list("${raw_options}" ${raw_options_LENGTH} options)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(options ${options} ${JSON_OPTIONS})
|
||||||
|
# end options
|
||||||
|
|
||||||
|
# system/bundled
|
||||||
|
if (bundled STREQUAL "unset" AND DEFINED JSON_BUNDLED_PACKAGE)
|
||||||
|
set(bundled ${JSON_BUNDLED_PACKAGE})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
AddPackage(
|
||||||
|
NAME "${package}"
|
||||||
|
VERSION "${version}"
|
||||||
|
URL "${url}"
|
||||||
|
HASH "${hash}"
|
||||||
|
HASH_SUFFIX "${hash_suffix}"
|
||||||
|
SHA "${sha}"
|
||||||
|
REPO "${repo}"
|
||||||
|
KEY "${key}"
|
||||||
|
PATCHES "${patches}"
|
||||||
|
OPTIONS "${options}"
|
||||||
|
FIND_PACKAGE_ARGUMENTS "${find_args}"
|
||||||
|
BUNDLED_PACKAGE "${bundled}"
|
||||||
|
SOURCE_SUBDIR "${source_subdir}"
|
||||||
|
|
||||||
|
GIT_VERSION ${git_version}
|
||||||
|
GIT_HOST ${git_host}
|
||||||
|
|
||||||
|
ARTIFACT ${artifact}
|
||||||
|
TAG ${tag}
|
||||||
|
)
|
||||||
|
|
||||||
# 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)
|
||||||
|
|
@ -364,148 +278,137 @@ function(AddPackage)
|
||||||
KEY
|
KEY
|
||||||
BUNDLED_PACKAGE
|
BUNDLED_PACKAGE
|
||||||
FORCE_BUNDLED_PACKAGE
|
FORCE_BUNDLED_PACKAGE
|
||||||
FIND_PACKAGE_ARGUMENTS)
|
FIND_PACKAGE_ARGUMENTS
|
||||||
|
)
|
||||||
|
|
||||||
set(multiValueArgs OPTIONS PATCHES)
|
set(multiValueArgs OPTIONS PATCHES)
|
||||||
|
|
||||||
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 (NOT DEFINED PKG_ARGS_GIT_HOST)
|
||||||
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)
|
set(git_host github.com)
|
||||||
else()
|
else()
|
||||||
set(git_host ${PKG_ARGS_GIT_HOST})
|
set(git_host ${PKG_ARGS_GIT_HOST})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(DEFINED PKG_ARGS_URL)
|
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://${git_host}/${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://${git_host}/${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}.tar.gz")
|
||||||
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}.tar.gz)
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
cpm_utils_message(FATAL_ERROR ${PKG_ARGS_NAME}
|
cpm_utils_message(FATAL_ERROR ${PKG_ARGS_NAME} "No URL or repository defined")
|
||||||
"No URL or repository defined")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
cpm_utils_message(DEBUG ${PKG_ARGS_NAME} "Download URL is ${pkg_url}")
|
cpm_utils_message(STATUS ${PKG_ARGS_NAME} "Download URL is ${pkg_url}")
|
||||||
|
|
||||||
if(NOT DEFINED PKG_ARGS_KEY)
|
if (NOT DEFINED PKG_ARGS_KEY)
|
||||||
if(DEFINED PKG_ARGS_SHA)
|
if (DEFINED PKG_ARGS_SHA)
|
||||||
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 PKG_ARGS_GIT_VERSION)
|
||||||
set(pkg_key ${PKG_ARGS_GIT_VERSION})
|
set(pkg_key ${PKG_ARGS_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)
|
elseif (DEFINED PKG_ARGS_VERSION)
|
||||||
set(pkg_key ${PKG_ARGS_VERSION})
|
set(pkg_key ${PKG_ARGS_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}")
|
||||||
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")
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
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 +426,19 @@ function(AddPackage)
|
||||||
- CPMUTIL_FORCE_BUNDLED
|
- CPMUTIL_FORCE_BUNDLED
|
||||||
- BUNDLED_PACKAGE
|
- BUNDLED_PACKAGE
|
||||||
- default to allow local
|
- default to allow local
|
||||||
]]
|
]]#
|
||||||
if(PKG_ARGS_FORCE_BUNDLED_PACKAGE)
|
if (PKG_ARGS_FORCE_BUNDLED_PACKAGE)
|
||||||
set_precedence(OFF OFF)
|
set_precedence(OFF OFF)
|
||||||
elseif(${PKG_ARGS_NAME}_FORCE_SYSTEM)
|
elseif (${PKG_ARGS_NAME}_FORCE_SYSTEM)
|
||||||
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,9 +449,10 @@ function(AddPackage)
|
||||||
set_precedence(ON OFF)
|
set_precedence(ON OFF)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(DEFINED PKG_ARGS_VERSION)
|
if (DEFINED PKG_ARGS_VERSION)
|
||||||
list(APPEND EXTRA_ARGS
|
list(APPEND EXTRA_ARGS
|
||||||
VERSION ${PKG_ARGS_VERSION})
|
VERSION ${PKG_ARGS_VERSION}
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
CPMAddPackage(
|
CPMAddPackage(
|
||||||
|
|
@ -566,37 +469,38 @@ function(AddPackage)
|
||||||
|
|
||||||
${EXTRA_ARGS}
|
${EXTRA_ARGS}
|
||||||
|
|
||||||
${PKG_ARGS_UNPARSED_ARGUMENTS})
|
${PKG_ARGS_UNPARSED_ARGUMENTS}
|
||||||
|
)
|
||||||
|
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_NAMES ${PKG_ARGS_NAME})
|
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_NAMES ${PKG_ARGS_NAME})
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_URLS ${pkg_git_url})
|
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_URLS ${pkg_git_url})
|
||||||
|
|
||||||
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 PKG_ARGS_GIT_VERSION)
|
||||||
|
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS
|
||||||
|
${PKG_ARGS_GIT_VERSION})
|
||||||
|
elseif (DEFINED PKG_ARGS_TAG)
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS
|
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS
|
||||||
${PKG_ARGS_GIT_VERSION})
|
${PKG_ARGS_TAG})
|
||||||
elseif(DEFINED PKG_ARGS_TAG)
|
elseif(DEFINED PKG_ARGS_VERSION)
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS
|
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS
|
||||||
${PKG_ARGS_TAG})
|
${PKG_ARGS_VERSION})
|
||||||
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)")
|
||||||
else()
|
else()
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS
|
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS
|
||||||
"unknown (system)")
|
"unknown (system)")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
@ -610,6 +514,24 @@ function(AddPackage)
|
||||||
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
function(add_ci_package key)
|
||||||
|
set(ARTIFACT ${ARTIFACT_NAME}-${key}-${ARTIFACT_VERSION}.${ARTIFACT_EXT})
|
||||||
|
|
||||||
|
AddPackage(
|
||||||
|
NAME ${ARTIFACT_PACKAGE}
|
||||||
|
REPO ${ARTIFACT_REPO}
|
||||||
|
TAG v${ARTIFACT_VERSION}
|
||||||
|
GIT_VERSION ${ARTIFACT_VERSION}
|
||||||
|
ARTIFACT ${ARTIFACT}
|
||||||
|
|
||||||
|
KEY ${key}-${ARTIFACT_VERSION}
|
||||||
|
HASH_SUFFIX sha512sum
|
||||||
|
FORCE_BUNDLED_PACKAGE ON
|
||||||
|
)
|
||||||
|
|
||||||
|
set(ARTIFACT_DIR ${${ARTIFACT_PACKAGE}_SOURCE_DIR} PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
# TODO(crueter): we could do an AddMultiArchPackage, multiplatformpackage?
|
# TODO(crueter): we could do an AddMultiArchPackage, multiplatformpackage?
|
||||||
# name is the artifact name, package is for find_package override
|
# name is the artifact name, package is for find_package override
|
||||||
function(AddCIPackage)
|
function(AddCIPackage)
|
||||||
|
|
@ -619,17 +541,11 @@ function(AddCIPackage)
|
||||||
REPO
|
REPO
|
||||||
PACKAGE
|
PACKAGE
|
||||||
EXTENSION
|
EXTENSION
|
||||||
MIN_VERSION)
|
MIN_VERSION
|
||||||
|
DISABLED_PLATFORMS
|
||||||
|
)
|
||||||
|
|
||||||
set(multiValueArgs DISABLED_PLATFORMS)
|
cmake_parse_arguments(PKG_ARGS "" "${oneValueArgs}" "" ${ARGN})
|
||||||
|
|
||||||
set(optionArgs MODULE)
|
|
||||||
|
|
||||||
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 +560,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 +572,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 +586,51 @@ 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 ((MINGW AND ARCHITECTURE_x86_64) AND NOT "mingw-amd64" IN_LIST DISABLED_PLATFORMS)
|
||||||
NAME ${ARTIFACT_PACKAGE}
|
add_ci_package(mingw-amd64)
|
||||||
REPO ${ARTIFACT_REPO}
|
endif()
|
||||||
TAG "v${ARTIFACT_VERSION}"
|
|
||||||
GIT_VERSION ${ARTIFACT_VERSION}
|
|
||||||
ARTIFACT ${ARTIFACT}
|
|
||||||
|
|
||||||
KEY "${pkgname}-${ARTIFACT_VERSION}"
|
if ((MINGW AND ARCHITECTURE_arm64) AND NOT "mingw-arm64" IN_LIST DISABLED_PLATFORMS)
|
||||||
HASH_SUFFIX sha512sum
|
add_ci_package(mingw-arm64)
|
||||||
FORCE_BUNDLED_PACKAGE ON
|
endif()
|
||||||
DOWNLOAD_ONLY ${PKG_ARGS_MODULE})
|
|
||||||
|
|
||||||
|
if (ANDROID AND NOT "android" IN_LIST DISABLED_PLATFORMS)
|
||||||
|
add_ci_package(android)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(PLATFORM_SUN AND NOT "solaris-amd64" IN_LIST DISABLED_PLATFORMS)
|
||||||
|
add_ci_package(solaris-amd64)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(PLATFORM_FREEBSD AND NOT "freebsd-amd64" IN_LIST DISABLED_PLATFORMS)
|
||||||
|
add_ci_package(freebsd-amd64)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if((PLATFORM_LINUX AND ARCHITECTURE_x86_64) AND NOT "linux-amd64" IN_LIST DISABLED_PLATFORMS)
|
||||||
|
add_ci_package(linux-amd64)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if((PLATFORM_LINUX AND ARCHITECTURE_arm64) AND NOT "linux-aarch64" IN_LIST DISABLED_PLATFORMS)
|
||||||
|
add_ci_package(linux-aarch64)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# TODO(crueter): macOS amd64/aarch64 split mayhaps
|
||||||
|
if (APPLE AND NOT "macos-universal" IN_LIST DISABLED_PLATFORMS)
|
||||||
|
add_ci_package(macos-universal)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (DEFINED ARTIFACT_DIR)
|
||||||
set(${ARTIFACT_PACKAGE}_ADDED TRUE PARENT_SCOPE)
|
set(${ARTIFACT_PACKAGE}_ADDED TRUE PARENT_SCOPE)
|
||||||
set(${ARTIFACT_PACKAGE}_SOURCE_DIR
|
set(${ARTIFACT_PACKAGE}_SOURCE_DIR "${ARTIFACT_DIR}" PARENT_SCOPE)
|
||||||
"${${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,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,271 @@
|
||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
# This function downloads a binary library package from our external repo.
|
||||||
|
# Params:
|
||||||
|
# remote_path: path to the file to download, relative to the remote repository root
|
||||||
|
# prefix_var: name of a variable which will be set with the path to the extracted contents
|
||||||
|
set(CURRENT_MODULE_DIR ${CMAKE_CURRENT_LIST_DIR})
|
||||||
|
function(download_bundled_external remote_path lib_name cpm_key prefix_var version)
|
||||||
|
set(package_base_url "https://github.com/eden-emulator/")
|
||||||
|
set(package_repo "no_platform")
|
||||||
|
set(package_extension "no_platform")
|
||||||
|
set(CACHE_KEY "")
|
||||||
|
|
||||||
|
# TODO(crueter): Need to convert ffmpeg to a CI.
|
||||||
|
if (WIN32 OR FORCE_WIN_ARCHIVES)
|
||||||
|
if (ARCHITECTURE_arm64)
|
||||||
|
set(CACHE_KEY "windows")
|
||||||
|
set(package_repo "ext-windows-arm64-bin/raw/master/")
|
||||||
|
set(package_extension ".zip")
|
||||||
|
elseif(ARCHITECTURE_x86_64)
|
||||||
|
set(CACHE_KEY "windows")
|
||||||
|
set(package_repo "ext-windows-bin/raw/master/")
|
||||||
|
set(package_extension ".7z")
|
||||||
|
endif()
|
||||||
|
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||||
|
set(CACHE_KEY "linux")
|
||||||
|
set(package_repo "ext-linux-bin/raw/master/")
|
||||||
|
set(package_extension ".tar.xz")
|
||||||
|
elseif (ANDROID)
|
||||||
|
set(CACHE_KEY "android")
|
||||||
|
set(package_repo "ext-android-bin/raw/master/")
|
||||||
|
set(package_extension ".tar.xz")
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "No package available for this platform")
|
||||||
|
endif()
|
||||||
|
string(CONCAT package_url "${package_base_url}" "${package_repo}")
|
||||||
|
string(CONCAT full_url "${package_url}" "${remote_path}" "${lib_name}" "${package_extension}")
|
||||||
|
message(STATUS "Resolved bundled URL: ${full_url}")
|
||||||
|
|
||||||
|
# TODO(crueter): DELETE THIS ENTIRELY, GLORY BE TO THE CI!
|
||||||
|
AddPackage(
|
||||||
|
NAME ${cpm_key}
|
||||||
|
VERSION ${version}
|
||||||
|
URL ${full_url}
|
||||||
|
DOWNLOAD_ONLY YES
|
||||||
|
KEY ${CACHE_KEY}
|
||||||
|
BUNDLED_PACKAGE ON
|
||||||
|
# TODO(crueter): hash
|
||||||
|
)
|
||||||
|
|
||||||
|
if (DEFINED ${cpm_key}_SOURCE_DIR)
|
||||||
|
set(${prefix_var} "${${cpm_key}_SOURCE_DIR}" PARENT_SCOPE)
|
||||||
|
message(STATUS "Using bundled binaries at ${${cpm_key}_SOURCE_DIR}")
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "AddPackage did not set ${cpm_key}_SOURCE_DIR")
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Determine installation parameters for OS, architecture, and compiler
|
||||||
|
function(determine_qt_parameters target host_out type_out arch_out arch_path_out host_type_out host_arch_out host_arch_path_out)
|
||||||
|
if (WIN32)
|
||||||
|
set(host "windows")
|
||||||
|
set(type "desktop")
|
||||||
|
|
||||||
|
if (NOT tool)
|
||||||
|
if (MINGW)
|
||||||
|
set(arch "win64_mingw")
|
||||||
|
set(arch_path "mingw_64")
|
||||||
|
elseif (MSVC)
|
||||||
|
if ("arm64" IN_LIST ARCHITECTURE)
|
||||||
|
set(arch_path "msvc2022_arm64")
|
||||||
|
elseif ("x86_64" IN_LIST ARCHITECTURE)
|
||||||
|
set(arch_path "msvc2022_64")
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Unsupported bundled Qt architecture. Disable YUZU_USE_BUNDLED_QT and provide your own.")
|
||||||
|
endif()
|
||||||
|
set(arch "win64_${arch_path}")
|
||||||
|
|
||||||
|
if (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "AMD64")
|
||||||
|
set(host_arch_path "msvc2022_64")
|
||||||
|
elseif (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "ARM64")
|
||||||
|
set(host_arch_path "msvc2022_arm64")
|
||||||
|
endif()
|
||||||
|
set(host_arch "win64_${host_arch_path}")
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Unsupported bundled Qt toolchain. Disable YUZU_USE_BUNDLED_QT and provide your own.")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
elseif (APPLE)
|
||||||
|
set(host "mac")
|
||||||
|
set(type "desktop")
|
||||||
|
set(arch "clang_64")
|
||||||
|
set(arch_path "macos")
|
||||||
|
else()
|
||||||
|
set(host "linux")
|
||||||
|
set(type "desktop")
|
||||||
|
set(arch "linux_gcc_64")
|
||||||
|
set(arch_path "gcc_64")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(${host_out} "${host}" PARENT_SCOPE)
|
||||||
|
set(${type_out} "${type}" PARENT_SCOPE)
|
||||||
|
set(${arch_out} "${arch}" PARENT_SCOPE)
|
||||||
|
set(${arch_path_out} "${arch_path}" PARENT_SCOPE)
|
||||||
|
if (DEFINED host_type)
|
||||||
|
set(${host_type_out} "${host_type}" PARENT_SCOPE)
|
||||||
|
else()
|
||||||
|
set(${host_type_out} "${type}" PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
if (DEFINED host_arch)
|
||||||
|
set(${host_arch_out} "${host_arch}" PARENT_SCOPE)
|
||||||
|
else()
|
||||||
|
set(${host_arch_out} "${arch}" PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
if (DEFINED host_arch_path)
|
||||||
|
set(${host_arch_path_out} "${host_arch_path}" PARENT_SCOPE)
|
||||||
|
else()
|
||||||
|
set(${host_arch_path_out} "${arch_path}" PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Download Qt binaries for a specific configuration.
|
||||||
|
function(download_qt_configuration prefix_out target host type arch arch_path base_path)
|
||||||
|
if (target MATCHES "tools_.*")
|
||||||
|
set(tool ON)
|
||||||
|
else()
|
||||||
|
set(tool OFF)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(install_args -c "${CURRENT_MODULE_DIR}/aqt_config.ini")
|
||||||
|
if (tool)
|
||||||
|
set(prefix "${base_path}/Tools")
|
||||||
|
list(APPEND install_args install-tool --outputdir "${base_path}" "${host}" desktop "${target}")
|
||||||
|
else()
|
||||||
|
set(prefix "${base_path}/${target}/${arch_path}")
|
||||||
|
list(APPEND install_args install-qt --outputdir "${base_path}" "${host}" "${type}" "${target}" "${arch}" -m qt_base)
|
||||||
|
|
||||||
|
if (YUZU_USE_QT_MULTIMEDIA)
|
||||||
|
list(APPEND install_args qtmultimedia)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (YUZU_USE_QT_WEB_ENGINE)
|
||||||
|
list(APPEND install_args qtpositioning qtwebchannel qtwebengine)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (NOT "${YUZU_QT_MIRROR}" STREQUAL "")
|
||||||
|
message(STATUS "Using Qt mirror ${YUZU_QT_MIRROR}")
|
||||||
|
list(APPEND install_args -b "${YUZU_QT_MIRROR}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
message(STATUS "Install Args: ${install_args}")
|
||||||
|
|
||||||
|
if (NOT EXISTS "${prefix}")
|
||||||
|
message(STATUS "Downloading Qt binaries for ${target}:${host}:${type}:${arch}:${arch_path}")
|
||||||
|
set(AQT_PREBUILD_BASE_URL "https://github.com/miurahr/aqtinstall/releases/download/v3.3.0")
|
||||||
|
if (WIN32)
|
||||||
|
set(aqt_path "${base_path}/aqt.exe")
|
||||||
|
if (NOT EXISTS "${aqt_path}")
|
||||||
|
file(DOWNLOAD "${AQT_PREBUILD_BASE_URL}/aqt.exe" "${aqt_path}" SHOW_PROGRESS)
|
||||||
|
endif()
|
||||||
|
execute_process(COMMAND "${aqt_path}" ${install_args}
|
||||||
|
WORKING_DIRECTORY "${base_path}"
|
||||||
|
RESULT_VARIABLE aqt_res
|
||||||
|
OUTPUT_VARIABLE aqt_out
|
||||||
|
ERROR_VARIABLE aqt_err)
|
||||||
|
if (NOT aqt_res EQUAL 0)
|
||||||
|
message(FATAL_ERROR "aqt.exe failed: ${aqt_err}")
|
||||||
|
endif()
|
||||||
|
elseif (APPLE)
|
||||||
|
set(aqt_path "${base_path}/aqt-macos")
|
||||||
|
if (NOT EXISTS "${aqt_path}")
|
||||||
|
file(DOWNLOAD "${AQT_PREBUILD_BASE_URL}/aqt-macos" "${aqt_path}" SHOW_PROGRESS)
|
||||||
|
endif()
|
||||||
|
execute_process(COMMAND chmod +x "${aqt_path}")
|
||||||
|
execute_process(COMMAND "${aqt_path}" ${install_args}
|
||||||
|
WORKING_DIRECTORY "${base_path}"
|
||||||
|
RESULT_VARIABLE aqt_res
|
||||||
|
ERROR_VARIABLE aqt_err)
|
||||||
|
if (NOT aqt_res EQUAL 0)
|
||||||
|
message(FATAL_ERROR "aqt-macos failed: ${aqt_err}")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
find_program(PYTHON3_EXECUTABLE python3)
|
||||||
|
if (NOT PYTHON3_EXECUTABLE)
|
||||||
|
message(FATAL_ERROR "python3 is required to install Qt using aqt (pip mode).")
|
||||||
|
endif()
|
||||||
|
set(aqt_install_path "${base_path}/aqt")
|
||||||
|
file(MAKE_DIRECTORY "${aqt_install_path}")
|
||||||
|
|
||||||
|
execute_process(COMMAND "${PYTHON3_EXECUTABLE}" -m pip install --target="${aqt_install_path}" aqtinstall
|
||||||
|
WORKING_DIRECTORY "${base_path}"
|
||||||
|
RESULT_VARIABLE pip_res
|
||||||
|
ERROR_VARIABLE pip_err)
|
||||||
|
if (NOT pip_res EQUAL 0)
|
||||||
|
message(FATAL_ERROR "pip install aqtinstall failed: ${pip_err}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
execute_process(COMMAND "${CMAKE_COMMAND}" -E env PYTHONPATH="${aqt_install_path}" "${PYTHON3_EXECUTABLE}" -m aqt ${install_args}
|
||||||
|
WORKING_DIRECTORY "${base_path}"
|
||||||
|
RESULT_VARIABLE aqt_res
|
||||||
|
ERROR_VARIABLE aqt_err)
|
||||||
|
if (NOT aqt_res EQUAL 0)
|
||||||
|
message(FATAL_ERROR "aqt (python) failed: ${aqt_err}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
message(STATUS "Downloaded Qt binaries for ${target}:${host}:${type}:${arch}:${arch_path} to ${prefix}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(${prefix_out} "${prefix}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# This function downloads Qt using aqt.
|
||||||
|
# The path of the downloaded content will be added to the CMAKE_PREFIX_PATH.
|
||||||
|
# QT_TARGET_PATH is set to the Qt for the compile target platform.
|
||||||
|
# QT_HOST_PATH is set to a host-compatible Qt, for running tools.
|
||||||
|
# Params:
|
||||||
|
# target: Qt dependency to install. Specify a version number to download Qt, or "tools_(name)" for a specific build tool.
|
||||||
|
function(download_qt target)
|
||||||
|
determine_qt_parameters("${target}" host type arch arch_path host_type host_arch host_arch_path)
|
||||||
|
|
||||||
|
set(base_path "${CMAKE_BINARY_DIR}/externals/qt")
|
||||||
|
file(MAKE_DIRECTORY "${base_path}")
|
||||||
|
|
||||||
|
download_qt_configuration(prefix "${target}" "${host}" "${type}" "${arch}" "${arch_path}" "${base_path}")
|
||||||
|
if (DEFINED host_arch_path AND NOT "${host_arch_path}" STREQUAL "${arch_path}")
|
||||||
|
download_qt_configuration(host_prefix "${target}" "${host}" "${host_type}" "${host_arch}" "${host_arch_path}" "${base_path}")
|
||||||
|
else()
|
||||||
|
set(host_prefix "${prefix}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(QT_TARGET_PATH "${prefix}" CACHE STRING "")
|
||||||
|
set(QT_HOST_PATH "${host_prefix}" CACHE STRING "")
|
||||||
|
|
||||||
|
list(APPEND CMAKE_PREFIX_PATH "${prefix}")
|
||||||
|
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(download_moltenvk version platform)
|
||||||
|
if(NOT version)
|
||||||
|
message(FATAL_ERROR "download_moltenvk: version argument is required")
|
||||||
|
endif()
|
||||||
|
if(NOT platform)
|
||||||
|
message(FATAL_ERROR "download_moltenvk: platform argument is required")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(MOLTENVK_DIR "${CMAKE_BINARY_DIR}/externals/MoltenVK")
|
||||||
|
set(MOLTENVK_TAR "${CMAKE_BINARY_DIR}/externals/MoltenVK.tar")
|
||||||
|
|
||||||
|
if(NOT EXISTS "${MOLTENVK_DIR}")
|
||||||
|
if(NOT EXISTS "${MOLTENVK_TAR}")
|
||||||
|
file(DOWNLOAD "https://github.com/KhronosGroup/MoltenVK/releases/download/${version}/MoltenVK-${platform}.tar"
|
||||||
|
"${MOLTENVK_TAR}" SHOW_PROGRESS)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E tar xf "${MOLTENVK_TAR}"
|
||||||
|
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals"
|
||||||
|
RESULT_VARIABLE tar_res
|
||||||
|
ERROR_VARIABLE tar_err
|
||||||
|
)
|
||||||
|
if(NOT tar_res EQUAL 0)
|
||||||
|
message(FATAL_ERROR "Extracting MoltenVK failed: ${tar_err}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
list(APPEND CMAKE_PREFIX_PATH "${MOLTENVK_DIR}/MoltenVK/dylib/${platform}")
|
||||||
|
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
|
@ -1,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
|
||||||
|
|
|
||||||
|
|
@ -6,36 +6,22 @@
|
||||||
|
|
||||||
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()
|
REQUIRED_VARS ZSTD_LINK_LIBRARIES
|
||||||
find_package(PkgConfig QUIET)
|
VERSION_VAR ZSTD_VERSION
|
||||||
pkg_search_module(ZSTD QUIET IMPORTED_TARGET libzstd)
|
)
|
||||||
find_package_handle_standard_args(zstd
|
|
||||||
REQUIRED_VARS ZSTD_LINK_LIBRARIES
|
|
||||||
VERSION_VAR ZSTD_VERSION)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (zstd_FOUND AND NOT TARGET zstd::zstd)
|
if (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)
|
||||||
|
add_library(zstd::libzstd ALIAS zstd::libzstd_shared)
|
||||||
elseif (TARGET zstd::libzstd_static)
|
elseif (TARGET zstd::libzstd_static)
|
||||||
add_library(zstd::zstd ALIAS zstd::libzstd_static)
|
add_library(zstd::zstd ALIAS zstd::libzstd_static)
|
||||||
|
add_library(zstd::libzstd ALIAS zstd::libzstd_static)
|
||||||
else()
|
else()
|
||||||
add_library(zstd::zstd ALIAS PkgConfig::ZSTD)
|
add_library(zstd::zstd ALIAS PkgConfig::ZSTD)
|
||||||
|
add_library(zstd::libzstd ALIAS PkgConfig::ZSTD)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
get_target_property(ZSTD_TARGET zstd::zstd ALIASED_TARGET)
|
|
||||||
|
|
||||||
if (NOT TARGET zstd::libzstd)
|
|
||||||
if (ZSTD_TARGET)
|
|
||||||
add_library(zstd::libzstd ALIAS ${ZSTD_TARGET})
|
|
||||||
else()
|
|
||||||
add_library(zstd::libzstd ALIAS zstd::zstd)
|
|
||||||
endif()
|
|
||||||
elseif(YUZU_STATIC_BUILD AND TARGET zstd::libzstd_static)
|
|
||||||
# zstd::libzstd links to shared zstd by default
|
|
||||||
set_target_properties(zstd::libzstd PROPERTIES INTERFACE_LINK_LIBRARIES zstd::libzstd_static)
|
|
||||||
endif()
|
|
||||||
|
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
function(FixMsysPath target)
|
|
||||||
get_target_property(include_dir ${target} INTERFACE_INCLUDE_DIRECTORIES)
|
|
||||||
|
|
||||||
if (NOT (include_dir MATCHES "^/"))
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(root_default $ENV{MSYS2_LOCATION})
|
|
||||||
if (root_default STREQUAL "")
|
|
||||||
set(root_default "C:/msys64")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(MSYS_ROOT_PATH ${root_default} CACHE STRING "Location of the MSYS2 root")
|
|
||||||
|
|
||||||
set(include_dir "C:/msys64${include_dir}")
|
|
||||||
set_target_properties(${target} PROPERTIES
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES ${include_dir})
|
|
||||||
endfunction()
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
|
@ -15,43 +15,27 @@ endfunction()
|
||||||
get_timestamp(BUILD_DATE)
|
get_timestamp(BUILD_DATE)
|
||||||
|
|
||||||
if (DEFINED GIT_RELEASE)
|
if (DEFINED GIT_RELEASE)
|
||||||
set(BUILD_VERSION "${GIT_TAG}")
|
set(BUILD_VERSION "${GIT_TAG}")
|
||||||
set(GIT_REFSPEC "${GIT_RELEASE}")
|
set(GIT_REFSPEC "${GIT_RELEASE}")
|
||||||
set(IS_DEV_BUILD false)
|
set(IS_DEV_BUILD false)
|
||||||
else()
|
else()
|
||||||
string(SUBSTRING ${GIT_COMMIT} 0 10 BUILD_VERSION)
|
string(SUBSTRING ${GIT_COMMIT} 0 10 BUILD_VERSION)
|
||||||
set(BUILD_VERSION "${BUILD_VERSION}-${GIT_REFSPEC}")
|
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()
|
|
||||||
set(IS_NIGHTLY_BUILD false)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(GIT_DESC ${BUILD_VERSION})
|
set(GIT_DESC ${BUILD_VERSION})
|
||||||
|
|
||||||
# Generate cpp with Git revision from template
|
# Generate cpp with Git revision from template
|
||||||
# Also if this is a CI build, add the build name (ie: Nightly, Canary) to the scm_rev file as well
|
# Also if this is a CI build, add the build name (ie: Nightly, Canary) to the scm_rev file as well
|
||||||
|
set(REPO_NAME "Eden")
|
||||||
# Auto-updater metadata! Must somewhat mirror GitHub API endpoint
|
|
||||||
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_ID ${GIT_REFSPEC})
|
||||||
set(BUILD_FULLNAME "${REPO_NAME} ${BUILD_VERSION} ")
|
set(BUILD_FULLNAME "${REPO_NAME} ${BUILD_VERSION} ")
|
||||||
set(CXX_COMPILER "${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
|
set(CXX_COMPILER "${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
|
||||||
|
|
||||||
|
# Auto-updater metadata! Must somewhat mirror GitHub API endpoint
|
||||||
|
set(BUILD_AUTO_UPDATE_WEBSITE "https://github.com")
|
||||||
|
set(BUILD_AUTO_UPDATE_API "http://api.github.com")
|
||||||
|
set(BUILD_AUTO_UPDATE_REPO "eden-emulator/Releases")
|
||||||
|
|
||||||
configure_file(scm_rev.cpp.in scm_rev.cpp @ONLY)
|
configure_file(scm_rev.cpp.in scm_rev.cpp @ONLY)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
# SPDX-FileCopyrightText: 2025 crueter
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
include(GetGitRevisionDescription)
|
||||||
|
|
||||||
|
function(trim var)
|
||||||
|
string(REGEX REPLACE "\n" "" new "${${var}}")
|
||||||
|
set(${var} ${new} PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
set(TAG_FILE ${CMAKE_SOURCE_DIR}/GIT-TAG)
|
||||||
|
set(REF_FILE ${CMAKE_SOURCE_DIR}/GIT-REFSPEC)
|
||||||
|
set(COMMIT_FILE ${CMAKE_SOURCE_DIR}/GIT-COMMIT)
|
||||||
|
set(RELEASE_FILE ${CMAKE_SOURCE_DIR}/GIT-RELEASE)
|
||||||
|
|
||||||
|
if (EXISTS ${REF_FILE} AND EXISTS ${COMMIT_FILE})
|
||||||
|
file(READ ${REF_FILE} GIT_REFSPEC)
|
||||||
|
file(READ ${COMMIT_FILE} GIT_COMMIT)
|
||||||
|
else()
|
||||||
|
get_git_head_revision(GIT_REFSPEC GIT_COMMIT)
|
||||||
|
git_branch_name(GIT_REFSPEC)
|
||||||
|
if (GIT_REFSPEC MATCHES "NOTFOUND")
|
||||||
|
set(GIT_REFSPEC 1.0.0)
|
||||||
|
set(GIT_COMMIT stable)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (EXISTS ${TAG_FILE})
|
||||||
|
file(READ ${TAG_FILE} GIT_TAG)
|
||||||
|
else()
|
||||||
|
git_describe(GIT_TAG --tags --abbrev=0)
|
||||||
|
if (GIT_TAG MATCHES "NOTFOUND")
|
||||||
|
set(GIT_TAG "${GIT_REFSPEC}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (EXISTS ${RELEASE_FILE})
|
||||||
|
file(READ ${RELEASE_FILE} GIT_RELEASE)
|
||||||
|
trim(GIT_RELEASE)
|
||||||
|
message(STATUS "Git release: ${GIT_RELEASE}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
trim(GIT_REFSPEC)
|
||||||
|
trim(GIT_COMMIT)
|
||||||
|
trim(GIT_TAG)
|
||||||
|
|
||||||
|
message(STATUS "Git commit: ${GIT_COMMIT}")
|
||||||
|
message(STATUS "Git tag: ${GIT_TAG}")
|
||||||
|
message(STATUS "Git refspec: ${GIT_REFSPEC}")
|
||||||
|
|
@ -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,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.
|
|
||||||
|
|
|
||||||
20
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>
|
||||||
|
|
||||||
|
|
@ -52,10 +52,10 @@ Check out our [website](https://eden-emu.dev) for the latest news on exciting fe
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
|
|
||||||
Most of the development happens on our Git server. It is also where [our central repository](https://git.eden-emu.dev/eden-emu/eden) is hosted. For development discussions, please join us on [Discord](https://discord.gg/HstXbPch7X) or [Stoat](https://stt.gg/qKgFEAbH).
|
Most of the development happens on our Git server. It is also where [our central repository](https://git.eden-emu.dev/eden-emu/eden) is hosted. For development discussions, please join us on [Discord](https://discord.gg/kXAmGCXBGD) or [Revolt](https://rvlt.gg/qKgFEAbH).
|
||||||
You can also follow us on [X (Twitter)](https://nitter.poast.org/edenemuofficial) for updates and announcements.
|
You can also follow us on [X (Twitter)](https://x.com/edenemuofficial) for updates and announcements.
|
||||||
|
|
||||||
If you would like to contribute, we are open to new developers and pull requests. Please ensure that your work is of a high standard and properly documented. You can also contact any of the developers on Discord or Stoat to learn more about the current state of the emulator.
|
If you would like to contribute, we are open to new developers and pull requests. Please ensure that your work is of a high standard and properly documented. You can also contact any of the developers on Discord or Revolt to learn more about the current state of the emulator.
|
||||||
|
|
||||||
See the [sign-up instructions](docs/SIGNUP.md) for information on registration.
|
See the [sign-up instructions](docs/SIGNUP.md) for information on registration.
|
||||||
|
|
||||||
|
|
@ -82,7 +82,7 @@ Any donations received will go towards things such as:
|
||||||
* Additional hardware (e.g. GPUs as needed to improve rendering support, other peripherals to add support for, etc.)
|
* Additional hardware (e.g. GPUs as needed to improve rendering support, other peripherals to add support for, etc.)
|
||||||
* CI Infrastructure
|
* CI Infrastructure
|
||||||
|
|
||||||
If you would prefer to support us in a different way, please join our [Discord](https://discord.gg/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
|
||||||
|
|
||||||
|
|
|
||||||
58
cpmfile.json
|
|
@ -4,28 +4,35 @@
|
||||||
"package": "OpenSSL",
|
"package": "OpenSSL",
|
||||||
"name": "openssl",
|
"name": "openssl",
|
||||||
"repo": "crueter-ci/OpenSSL",
|
"repo": "crueter-ci/OpenSSL",
|
||||||
"version": "3.6.0-1cb0d36b39",
|
"version": "3.6.0",
|
||||||
"min_version": "1.1.1"
|
"min_version": "1.1.1",
|
||||||
|
"disabled_platforms": [
|
||||||
|
"macos-universal",
|
||||||
|
"mingw-amd64",
|
||||||
|
"mingw-arm64"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"boost": {
|
"boost": {
|
||||||
"package": "Boost",
|
"package": "Boost",
|
||||||
"repo": "boostorg/boost",
|
"repo": "boostorg/boost",
|
||||||
"tag": "boost-%VERSION%",
|
"tag": "boost-%VERSION%",
|
||||||
"artifact": "%TAG%-cmake.tar.xz",
|
"artifact": "%TAG%-cmake.tar.xz",
|
||||||
"hash": "6ae6e94664fe7f2fb01976b59b276ac5df8085c7503fa829d810fbfe495960cfec44fa2c36e2cb23480bc19c956ed199d4952b02639a00a6c07625d4e7130c2d",
|
"hash": "4fb7f6fde92762305aad8754d7643cd918dd1f3f67e104e9ab385b18c73178d72a17321354eb203b790b6702f2cf6d725a5d6e2dfbc63b1e35f9eb59fb42ece9",
|
||||||
"git_version": "1.90.0",
|
"git_version": "1.89.0",
|
||||||
"version": "1.57",
|
"version": "1.57",
|
||||||
"find_args": "CONFIG OPTIONAL_COMPONENTS headers context system fiber filesystem",
|
"find_args": "CONFIG",
|
||||||
"patches": [
|
"patches": [
|
||||||
"0001-clang-cl.patch"
|
"0001-clang-cl.patch",
|
||||||
|
"0002-use-marmasm.patch",
|
||||||
|
"0003-armasm-options.patch"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"fmt": {
|
"fmt": {
|
||||||
"repo": "fmtlib/fmt",
|
"repo": "fmtlib/fmt",
|
||||||
"tag": "%VERSION%",
|
"tag": "%VERSION%",
|
||||||
"hash": "f0da82c545b01692e9fd30fdfb613dbb8dd9716983dcd0ff19ac2a8d36f74beb5540ef38072fdecc1e34191b3682a8542ecbf3a61ef287dbba0a2679d4e023f2",
|
"hash": "c4ab814c20fbad7e3f0ae169125a4988a2795631194703251481dc36b18da65c886c4faa9acd046b0a295005217b3689eb0126108a9ba5aac2ca909aae263c2f",
|
||||||
"version": "8",
|
"version": "8",
|
||||||
"git_version": "12.1.0"
|
"git_version": "12.0.0"
|
||||||
},
|
},
|
||||||
"lz4": {
|
"lz4": {
|
||||||
"name": "lz4",
|
"name": "lz4",
|
||||||
|
|
@ -46,9 +53,9 @@
|
||||||
"package": "ZLIB",
|
"package": "ZLIB",
|
||||||
"repo": "madler/zlib",
|
"repo": "madler/zlib",
|
||||||
"tag": "v%VERSION%",
|
"tag": "v%VERSION%",
|
||||||
"hash": "06eaa3a1eaaeb31f461a2283b03a91ed8eb2406e62cd97ea1c69836324909edeecd93edd03ff0bf593d9dde223e3376149134c5b1fe2e8688c258cadf8cd60ff",
|
"hash": "8c9642495bafd6fad4ab9fb67f09b268c69ff9af0f4f20cf15dfc18852ff1f312bd8ca41de761b3f8d8e90e77d79f2ccacd3d4c5b19e475ecf09d021fdfe9088",
|
||||||
"version": "1.2",
|
"version": "1.2",
|
||||||
"git_version": "1.3.1.2",
|
"git_version": "1.3.1",
|
||||||
"options": [
|
"options": [
|
||||||
"ZLIB_BUILD_SHARED OFF",
|
"ZLIB_BUILD_SHARED OFF",
|
||||||
"ZLIB_INSTALL OFF"
|
"ZLIB_INSTALL OFF"
|
||||||
|
|
@ -67,17 +74,13 @@
|
||||||
},
|
},
|
||||||
"opus": {
|
"opus": {
|
||||||
"package": "Opus",
|
"package": "Opus",
|
||||||
"repo": "xiph/opus",
|
"repo": "crueter/opus",
|
||||||
"sha": "a3f0ec02b3",
|
"sha": "ab19c44fad",
|
||||||
"hash": "9506147b0de35befda8633ff272981cc2575c860874791bd455b752f797fd7dbd1079f0ba42ccdd7bb1fe6773fa5e84b3d75667c2883dd1fb2d0e4a5fa4f8387",
|
"hash": "d632e8f83c5d3245db404bcb637113f9860bf16331498ba2c8e77979d1febee6b52d8b1da448e7d54eeac373e912cd55e3e300fc6c242244923323280dc43fbe",
|
||||||
"version": "1.3",
|
"version": "1.3",
|
||||||
"find_args": "MODULE",
|
"find_args": "MODULE",
|
||||||
"options": [
|
"options": [
|
||||||
"OPUS_PRESUME_NEON ON"
|
"OPUS_PRESUME_NEON ON"
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"0001-disable-clang-runtime-neon.patch",
|
|
||||||
"0002-no-install.patch"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"boost_headers": {
|
"boost_headers": {
|
||||||
|
|
@ -93,26 +96,5 @@
|
||||||
"version": "20250828",
|
"version": "20250828",
|
||||||
"artifact": "clang-rt-builtins.tar.zst",
|
"artifact": "clang-rt-builtins.tar.zst",
|
||||||
"hash": "d902392caf94e84f223766e2cc51ca5fab6cae36ab8dc6ef9ef6a683ab1c483bfcfe291ef0bd38ab16a4ecc4078344fa8af72da2f225ab4c378dee23f6186181"
|
"hash": "d902392caf94e84f223766e2cc51ca5fab6cae36ab8dc6ef9ef6a683ab1c483bfcfe291ef0bd38ab16a4ecc4078344fa8af72da2f225ab4c378dee23f6186181"
|
||||||
},
|
|
||||||
"vulkan-validation-layers": {
|
|
||||||
"package": "VVL",
|
|
||||||
"repo": "KhronosGroup/Vulkan-ValidationLayers",
|
|
||||||
"tag": "vulkan-sdk-%VERSION%",
|
|
||||||
"git_version": "1.4.335.0",
|
|
||||||
"artifact": "android-binaries-%VERSION%.zip",
|
|
||||||
"hash": "48167c4a17736301bd08f9290f41830443e1f18cce8ad867fc6f289b49e18b40e93c9850b377951af82f51b5b6d7313aa6a884fc5df79f5ce3df82696c1c1244"
|
|
||||||
},
|
|
||||||
"quazip": {
|
|
||||||
"package": "QuaZip-Qt6",
|
|
||||||
"repo": "stachenov/quazip",
|
|
||||||
"sha": "2e95c9001b",
|
|
||||||
"hash": "609c240c7f029ac26a37d8fbab51bc16284e05e128b78b9b9c0e95d083538c36047a67d682759ac990e4adb0eeb90f04f1ea7fe2253bbda7e7e3bcce32e53dd8",
|
|
||||||
"version": "1.3",
|
|
||||||
"git_version": "1.5",
|
|
||||||
"options": [
|
|
||||||
"QUAZIP_QT_MAJOR_VERSION 6",
|
|
||||||
"QUAZIP_INSTALL OFF",
|
|
||||||
"QUAZIP_ENABLE_QTEXTCODEC OFF"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ Version=1.0
|
||||||
Type=Application
|
Type=Application
|
||||||
Name=Eden
|
Name=Eden
|
||||||
GenericName=Switch Emulator
|
GenericName=Switch Emulator
|
||||||
Comment=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>
|
||||||
|
|
|
||||||
|
|
@ -6,196 +6,14 @@
|
||||||
viewBox="0 0 512 512"
|
viewBox="0 0 512 512"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
id="svg7"
|
id="svg7"
|
||||||
sodipodi:docname="base.svg.2026_01_12_14_43_47.0.svg"
|
sodipodi:docname="dev.eden_emu.eden.svg"
|
||||||
inkscape:version="1.4.2 (ebf0e94, 2025-05-08)"
|
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||||
inkscape:export-filename="base.svg.2026_01_12_14_43_47.0.svg"
|
|
||||||
inkscape:export-xdpi="96"
|
|
||||||
inkscape:export-ydpi="96"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
xmlns:svg="http://www.w3.org/2000/svg">
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
<defs
|
<defs
|
||||||
id="defs7">
|
id="defs7" />
|
||||||
<linearGradient
|
|
||||||
id="linearGradient1"
|
|
||||||
inkscape:collect="always">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ff2e88;stop-opacity:0.5;"
|
|
||||||
offset="0"
|
|
||||||
id="stop3" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#bf42f6;stop-opacity:0.5;"
|
|
||||||
offset="0.44631511"
|
|
||||||
id="stop4" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#5da5ed;stop-opacity:0.5;"
|
|
||||||
offset="0.90088946"
|
|
||||||
id="stop2" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient138"
|
|
||||||
inkscape:collect="always">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ff2e88;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop152" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#bf42f6;stop-opacity:1;"
|
|
||||||
offset="0.44971901"
|
|
||||||
id="stop137" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#5da5ed;stop-opacity:1;"
|
|
||||||
offset="0.89793283"
|
|
||||||
id="stop138" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch37"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop37" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch28"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#252525;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop28" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch27"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#000000;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop27" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch15"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop16" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient14"
|
|
||||||
inkscape:swatch="gradient">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop14" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:0;"
|
|
||||||
offset="1"
|
|
||||||
id="stop15" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch9"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop10" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch8"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop9" />
|
|
||||||
</linearGradient>
|
|
||||||
<rect
|
|
||||||
x="22.627417"
|
|
||||||
y="402.76802"
|
|
||||||
width="521.34025"
|
|
||||||
height="248.94868"
|
|
||||||
id="rect24" />
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient11"
|
|
||||||
inkscape:collect="always">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ff2e88;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop11" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#bf42f6;stop-opacity:1;"
|
|
||||||
offset="0.44971901"
|
|
||||||
id="stop154" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#5da5ed;stop-opacity:1;"
|
|
||||||
offset="0.89793283"
|
|
||||||
id="stop12" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient138"
|
|
||||||
id="linearGradient6"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(1.118028,0,0,1.116699,-46.314723,-42.388667)"
|
|
||||||
x1="270.39996"
|
|
||||||
y1="40.000019"
|
|
||||||
x2="270.39996"
|
|
||||||
y2="494.39996"
|
|
||||||
spreadMethod="pad" />
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath18">
|
|
||||||
<circle
|
|
||||||
style="opacity:1;mix-blend-mode:normal;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10.8382;stroke-opacity:0.566238;paint-order:stroke fill markers"
|
|
||||||
id="circle18"
|
|
||||||
cx="-246.8315"
|
|
||||||
cy="246.8338"
|
|
||||||
inkscape:label="Circle"
|
|
||||||
r="191.89999" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath22">
|
|
||||||
<circle
|
|
||||||
style="opacity:1;mix-blend-mode:normal;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10.8382;stroke-opacity:0.566238;paint-order:stroke fill markers"
|
|
||||||
id="circle22"
|
|
||||||
cx="256"
|
|
||||||
cy="256"
|
|
||||||
inkscape:label="Circle"
|
|
||||||
r="191.89999" />
|
|
||||||
</clipPath>
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient11"
|
|
||||||
id="linearGradient27"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="translate(-6.9401139e-5,-2.8678628)"
|
|
||||||
x1="256.00012"
|
|
||||||
y1="102.94693"
|
|
||||||
x2="256.00012"
|
|
||||||
y2="409.05307" />
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath128">
|
|
||||||
<circle
|
|
||||||
style="fill:none;fill-opacity:1;stroke:#03ffff;stroke-width:0;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
id="circle128"
|
|
||||||
cx="256"
|
|
||||||
cy="256"
|
|
||||||
r="192" />
|
|
||||||
</clipPath>
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient1"
|
|
||||||
id="linearGradient2"
|
|
||||||
x1="256"
|
|
||||||
y1="64"
|
|
||||||
x2="256"
|
|
||||||
y2="448"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(1.3229974,0,0,1.3214002,-82.687336,-82.290326)" />
|
|
||||||
</defs>
|
|
||||||
<sodipodi:namedview
|
<sodipodi:namedview
|
||||||
id="namedview7"
|
id="namedview7"
|
||||||
pagecolor="#ffffff"
|
pagecolor="#ffffff"
|
||||||
|
|
@ -205,26 +23,84 @@
|
||||||
inkscape:pageopacity="0.0"
|
inkscape:pageopacity="0.0"
|
||||||
inkscape:pagecheckerboard="0"
|
inkscape:pagecheckerboard="0"
|
||||||
inkscape:deskcolor="#d1d1d1"
|
inkscape:deskcolor="#d1d1d1"
|
||||||
inkscape:zoom="1.4142136"
|
inkscape:zoom="1.25"
|
||||||
inkscape:cx="261.62951"
|
inkscape:cx="186.8"
|
||||||
inkscape:cy="230.87036"
|
inkscape:cy="210.4"
|
||||||
inkscape:window-width="1920"
|
inkscape:window-width="1600"
|
||||||
inkscape:window-height="1008"
|
inkscape:window-height="849"
|
||||||
inkscape:window-x="1080"
|
inkscape:window-x="0"
|
||||||
inkscape:window-y="351"
|
inkscape:window-y="27"
|
||||||
inkscape:window-maximized="1"
|
inkscape:window-maximized="1"
|
||||||
inkscape:current-layer="svg7" />
|
inkscape:current-layer="svg7" />
|
||||||
<path
|
<path
|
||||||
id="path8-7"
|
fill="#bf42f6"
|
||||||
style="display:inline;mix-blend-mode:multiply;fill:url(#linearGradient6);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2);stroke-width:3.9666;stroke-dasharray:none;stroke-opacity:0.566238;paint-order:stroke fill markers"
|
d="M346.71 255.306c.788.006 1.577.013 3.124.059 4.006.027 7.253.015 10.501.003 33.391.022 66.783.028 100.175.078 8.174.013 16.349.279 24.522.209 3.084-.026 4.596.75 4.356 4.156-.293 4.157-.31 8.343-.259 12.513.049 3.964-1.248 5.539-5.679 5.524-48.85-.158-97.701-.071-146.552-.056-22.107.007-44.214 0-66.321 0h-5.43v7.117h223.011c-1.553 8.254-2.894 15.76-4.475 23.215-.17.802-1.666 1.617-2.685 1.87-1.312.327-2.763.099-4.155.099H265.099v6.701h216.666c-1.609 5.425-2.887 10.074-4.367 14.658-2.758 8.54-2.807 8.524-11.564 8.524-64.929 0-129.859.014-194.788-.04-3.401-.003-6.19.251-4.758 4.652.349 1.075 1.875 2.026 3.071 2.491 1.075.418 2.439.092 3.676.092l191.542.001h7.17c-3.533 7.29-6.399 13.72-9.834 19.83-.651 1.157-3.562 1.448-5.432 1.454-27.981.088-55.963.061-83.944.061-31.692 0-63.384.005-95.075-.008-2.61-.002-5.219-.124-8.53-.021-3.11.173-5.518.177-7.926.181-.849-7.032-2.289-14.051-2.44-21.098-.547-25.616-.773-51.242-.844-76.864-.014-4.88 1.228-9.763 2.52-14.927 2.88-.296 5.132-.31 7.81-.259 22.492.021 44.557-.024 67.034-.066 4.149-.049 7.886-.099 11.624-.149"
|
||||||
inkscape:label="Circle"
|
id="path1"
|
||||||
d="M 256,2.2792898 A 254.0155,253.71401 0 0 0 150.68475,25.115202 c 19.54414,1.070775 38.74692,5.250294 51.56848,11.647658 14.14361,7.056691 28.63804,19.185961 39.4212,29.347551 h 40.60981 c 1.03847,-0.68139 2.10297,-1.36938 3.1938,-2.05957 5.45602,-15.78533 14.79164,-43.183497 19.49612,-57.0097682 A 254.0155,253.71401 0 0 0 256,2.2792898 Z m 61.57106,7.567234 -18.26098,46.1544672 c 7.79702,-4.13918 16.35655,-7.87447 25.20671,-10.87081 23.1229,-7.828433 43.96931,-10.170904 54.94058,-10.868226 A 254.0155,253.71401 0 0 0 317.57106,9.8465238 Z m 65.39277,26.4001532 c -9.68256,4.806644 -33.05532,16.642034 -55.68217,29.863734 H 424.4677 A 254.0155,253.71401 0 0 0 382.96383,36.246677 Z M 113.90698,45.690231 A 254.0155,253.71401 0 0 0 87.532302,66.110411 H 194.2739 c -1.47402,-0.80231 -2.35141,-1.25949 -2.35141,-1.25949 l 10.4496,-11.83348 -38.40568,7.01234 c 0,1e-5 -12.21537,-4.60266 -40.17313,-12.27223 -3.45336,-0.94731 -6.75329,-1.61824 -9.8863,-2.06732 z m -36.803618,30.18635 a 254.0155,253.71401 0 0 0 -34.88372,43.090929 h 59.976738 c 18.11461,-12.04145 40.14252,-22.882149 62.31266,-24.534159 52.93006,-3.9444 70.16538,1.86342 70.16538,1.86342 0,0 -4.612,-4.8206 -14.51938,-13.36656 -2.72366,-2.34942 -6.0844,-4.77373 -9.52455,-7.05363 z m 174.472868,0 c 4.57322,4.7186 7.29716,7.83565 7.29716,7.83565 0,0 3.53501,-3.18484 9.62532,-7.83565 z m 60.27649,0 c -21.56573,15.45339 -25.4703,27.979669 -25.4703,27.979669 0,0 54.83326,-19.215729 100.70543,-0.31228 11.63986,4.79661 21.58481,10.13159 29.94832,15.42354 h 52.74419 A 254.0155,253.71401 0 0 0 434.89664,75.876581 Z M 36.250648,128.73367 A 254.0155,253.71401 0 0 0 16.372095,171.82459 H 147.45478 c 1.45695,-2.5815 3.06539,-5.08648 4.83979,-7.48982 14.23694,-19.28301 27.92088,-30.0088 36.86047,-35.6011 h -30.25323 c -5.87346,0.93472 -12.04945,1.99094 -18.28166,3.16937 -30.12936,5.69727 -81.157618,22.78945 -81.157618,22.78945 0,0 11.47125,-12.39249 29.11369,-25.95882 z m 265.630492,0 c 33.48676,11.2434 52.42799,26.78443 62.7752,43.09092 h 130.97157 a 254.0155,253.71401 0 0 0 -19.87856,-43.09092 h -44.81136 c 14.85233,11.5863 21.59948,20.9854 21.59948,20.9854 0,0 -33.5226,-12.37087 -66.0646,-20.9854 z m -45.96641,16.27007 c -1.00419,0.0106 -10.12705,0.72026 -44.98966,20.64729 -3.12132,1.78406 -6.25434,3.86182 -9.37468,6.17356 h 41.81911 c 7.17181,-17.34774 12.64083,-26.82085 12.64083,-26.82085 0,0 -0.0287,-7.1e-4 -0.0957,0 z m 14.18088,0.0465 c 0,0 -3.31228,9.32762 -7.30492,26.77438 h 51.78554 C 287.6577,146.14158 270.09561,145.0502 270.09561,145.0502 Z M 13.152456,181.59075 A 254.0155,253.71401 0 0 0 3.927651,224.68167 H 134.1447 c 0.56161,-12.72411 2.67825,-28.50188 8.61499,-43.09092 z m 176.661504,0 c -14.27121,13.10564 -27.60733,29.58761 -37.56073,43.09092 h 73.3721 c 4.47018,-16.79061 9.35068,-31.26371 13.86562,-43.09092 z m 70.85787,0 c -2.41384,11.76417 -4.9032,26.20707 -6.94831,43.09092 H 360.4832 c -8.32133,-10.88917 -20.66988,-26.17008 -36.35141,-43.09092 z m 109.17313,0 c 6.63611,15.24089 6.92441,30.5373 5.57882,43.09092 h 132.64857 a 254.0155,253.71401 0 0 0 -9.22481,-43.09092 z M 2.90181,234.44783 A 254.0155,253.71401 0 0 0 1.984498,255.9933 254.0155,253.71401 0 0 0 2.90181,277.53876 h 211.89923 c 2.25762,-15.52555 5.14325,-29.93448 8.3385,-43.09093 h -77.8863 c -6.46396,9.27617 -10.33076,15.56549 -10.33076,15.56549 0,0 -0.82623,-6.14945 -0.9354,-15.56549 z m 249.72093,0 c -1.3692,13.09684 -2.4456,27.49209 -3.02068,43.09093 h 259.49613 a 254.0155,253.71401 0 0 0 0.91731,-21.54546 254.0155,253.71401 0 0 0 -0.91731,-21.54547 H 374.02584 c -0.445,2.5469 -0.90878,4.89768 -1.32817,7.01751 0,0 -1.69726,-2.53821 -4.94056,-7.01751 z M 3.927651,287.30493 a 254.0155,253.71401 0 0 0 9.224805,43.09091 H 214.04393 c -1.29238,-15.40742 -1.57503,-30.04388 -0.41861,-43.09091 z m 245.385009,0 c -0.30355,13.54349 -0.22032,27.92598 0.36951,43.09091 h 249.16537 a 254.0155,253.71401 0 0 0 9.22481,-43.09091 z M 16.369511,340.16201 a 254.0155,253.71401 0 0 0 19.878554,43.09091 H 221.4677 c -2.69781,-14.4523 -4.96108,-29.01285 -6.4832,-43.09091 z m 233.842379,0 c 1.15864,15.47765 3.81286,29.83979 7.51679,43.09091 h 218.02325 a 254.0155,253.71401 0 0 0 19.87856,-43.09091 z M 42.217052,393.01909 a 254.0155,253.71401 0 0 0 34.88372,43.09093 H 233.09561 c -3.40902,-13.67281 -6.76794,-28.2531 -9.73902,-43.09093 z m 218.490958,0 c 5.34985,16.15926 12.22007,30.51982 19.68733,43.09093 h 154.50389 a 254.0155,253.71401 0 0 0 34.88371,-43.09093 z M 87.529722,445.87618 a 254.0155,253.71401 0 0 0 166.229968,63.8208 c -3.67805,-12.0825 -10.85464,-35.49828 -18.18088,-63.8208 z m 199.010328,0 c 17.5887,26.43772 36.99259,43.60598 47.33592,51.61309 a 254.0155,253.71401 0 0 0 90.59431,-51.61309 z" />
|
style="fill:#fea265;fill-opacity:1" />
|
||||||
<path
|
<path
|
||||||
id="path27"
|
fill="#ff44c4"
|
||||||
style="display:inline;mix-blend-mode:multiply;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient27);stroke-width:3;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
|
d="M168.124 257.114v-9.301c-2.407 0-4.67-.001-6.933.001-44.522.025-89.044.01-133.566.146-3.858.012-5.358-1.03-4.744-5 .683-4.418 1.254-8.885 1.393-13.346.106-3.386 1.603-4.005 4.608-4.012 45.9-.11 91.801-.344 137.702-.452 3.865-.009 6.842-.344 6.032-5.831H25.546c1.39-6.599 2.354-12.681 4.138-18.513.413-1.35 3.628-2.615 5.555-2.618 47.458-.084 94.917-.01 142.375.109 3.275.008 5.855-.38 6.138-5.045H31.147c3.43-9.311 6.348-17.71 9.74-25.913.483-1.166 3.265-1.942 4.987-1.95 24.582-.124 49.165-.21 73.745.014 5.283.048 8.073-2.583 11.128-7.248h-86.45c4.35-7.835 8.002-14.753 12.077-21.412.67-1.096 3.197-1.473 4.868-1.478 30.611-.083 61.226-.291 91.832.113 7.185.094 12.719-2.619 18.321-6.774H61.385c2.592-3.805 4.355-6.546 6.268-9.178 8.88-12.216 8.896-12.209 24.069-12.21q60.991-.002 121.982-.001h5.885c-3.968-4.128-7.007-6.966-12.321-6.944-38.959.165-77.92.09-116.88.09H85.03l-.741-1.31c3.832-3.852 7.564-7.81 11.514-11.537 11.456-10.807 11.495-10.996 27.246-10.717 23.209.411 45.103 6.8 66.234 15.885 5.657 2.432 10.56 3.715 16.604.944 4.726-2.166 10.217-2.664 16.034-3.521-4.411 8.139.887 12.041 5.52 16.414 5.73 5.408 11.223 11.07 16.751 16.688 1.165 1.185 2.035 2.659 3.685 4.857-2.256.128-3.665.274-5.075.275-9.739.008-19.489.286-29.214-.085-28.045-1.07-51.592 9.244-71.602 28.209-7.152 6.778-13.525 14.379-20.212 21.643-.683.742-1.079 1.748-2.209 3.632 33.94-11.926 65.876-27.377 101.589-28.637l.859 1.395c-4.228 4.943-8.188 10.148-12.73 14.783-18.091 18.461-28.905 40.673-33.892 65.773-1.402 7.057-1.306 14.412-2.504 21.941-1.992.248-3.377.184-4.762.121m19.995-91.726c3.865.004 7.763-.315 11.585.09 5.562.589 8.92-2.178 12.525-7.52-9.134 2.152-17.144 4.039-25.139 5.988-.008.002.209.928 1.029 1.442"
|
||||||
d="m 318.98012,441.7375 c -9.87518,-6.73978 -64.39137,-49.0272 -67.68975,-127.81978 -3.69298,-88.21893 15.36468,-141.91029 15.36468,-141.91029 0,0 16.00378,0.99513 39.80316,26.53195 23.79939,25.53753 37.74965,46.43102 37.74965,46.43102 3.91262,-19.79992 12.84563,-66.32402 -60.72865,-87.55523 0,0 12.82326,-5.38883 39.3925,-3.81382 26.56907,1.57572 81.6822,21.93799 81.6822,21.93799 0,0 -14.79766,-20.63773 -49.47063,-34.94295 -34.67291,-14.30533 -76.1182,0.23644 -76.1182,0.23644 0,0 3.86959,-12.43127 27.22669,-26.38478 23.35718,-13.9537 49.27409,-26.501533 49.27409,-26.501533 0,0 -21.97854,-0.26548 -47.67725,8.44535 -6.68948,2.267506 -13.15863,5.094213 -19.05208,8.226563 l 16.05803,-40.634103 -4.4617,-1.89059 -5.1305,-0.95965 c 0,0 -11.24072,33.12428 -16.92051,49.576513 -12.13137,7.68489 -20.11005,14.87735 -20.11005,14.87735 0,0 -21.90573,-25.09227 -42.79668,-35.527803 -26.03412,-13.00525 -86.88249,-13.90359 -94.0044,10.401173 0,0 13.56804,-7.884703 34.70032,-2.080917 21.13214,5.803997 30.3644,9.287307 30.3644,9.287307 l 29.02989,-5.30681 -7.89811,8.95527 c 0,0 13.8496,7.21324 21.33822,13.68063 7.48859,6.46722 10.9757,10.11472 10.9757,10.11472 0,0 -13.02739,-4.39388 -53.03507,-1.40893 -40.00771,2.98473 -79.40016,45.60209 -79.40016,45.60209 0,0 38.57037,-12.93531 61.34393,-17.24677 22.77354,-4.31126 44.52166,-6.46757 44.52166,-6.46757 0,0 -17.23298,5.97003 -35.69792,31.00932 -18.46522,25.03987 -13.13146,64.83866 -13.13146,64.83866 0,0 29.33874,-47.7577 57.44675,-63.84249 28.10798,-16.08527 34.0799,-15.6238 34.0799,-15.6238 0,0 -22.56785,39.13486 -31.39017,101.98268 -8.03005,57.2039 26.77689,163.75449 31.1572,178.89699"
|
id="path2"
|
||||||
sodipodi:nodetypes="cscsccscscscsccccccscscccscscscscscsc"
|
style="fill:#ff7f2a;fill-opacity:1" />
|
||||||
inkscape:label="MainOutline"
|
<path
|
||||||
clip-path="url(#clipPath128)"
|
fill="#bf43f5"
|
||||||
transform="matrix(1.3229974,0,0,1.3214002,-82.687282,-82.278451)" />
|
d="M167.719 257.136c1.79.041 3.175.105 4.979.185.569 3.091.719 6.166.87 9.24l1.623.577c2.3-3.392 4.599-6.785 7.467-10.458 2.456-.382 4.343-.483 6.573-.598 1.405-.133 2.466-.342 3.53-.356 12.08-.162 24.16-.295 36.693-.368 3.463.111 6.473.155 9.484.2-1.12 6.677-2.306 13.345-3.347 20.035-4.715 30.285-5.404 60.697-3.186 91.651-2.469.746-4.517 1.048-6.565 1.35-56.117-.025-112.236-.135-168.353.061-5.334.018-8.298-1.559-10.185-6.415-1.874-4.824-4.295-9.436-6.907-15.069h17.147c53.955 0 107.909.013 161.863-.044 2.026-.002 4.864 1.218 5.327-2.599.469-3.862-1.271-4.625-4.781-4.616-38.803.103-77.607.061-116.411.068-20.405.003-40.811-.065-61.215.125-3.545.033-5.36-1.044-6.324-4.419-1.642-5.75-3.577-11.416-5.879-18.659 65.363-.259 129.677-.027 194.424-.144l.372-6.533c-1.901-.099-3.398-.244-4.896-.245-58.283-.032-116.565-.056-174.848-.06-4.48 0-8.964.279-13.439.163-1.138-.029-3.078-.897-3.247-1.681-1.676-7.766-3.056-15.595-4.624-23.961 8.433 0 15.808-.031 23.182.02 1.998.014 3.995.4 5.992.401 55.964.023 111.928.02 167.892.017 6.075 0 6.307-.256 6.266-7.198H23.431c-.284-6.643-.72-12.739-.592-18.823.016-.786 2.94-2.144 4.53-2.165 15.149-.197 30.3-.177 45.45-.191 17.623-.016 35.248-.072 52.871.018 13.876.07 27.75.335 42.029.491"
|
||||||
|
id="path3"
|
||||||
|
style="fill:#fea265;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
fill="#985ded"
|
||||||
|
d="M225.868 369.021c2.02-.729 4.068-1.031 6.551-1.351 2.672 17.851 4.169 35.853 7.334 53.556 4.047 22.64 9.785 44.94 18.63 66.298.29.699.498 1.433.742 2.142-25.39 10.452-124.622-22.609-146.929-49.453h122.669c.302-4.81-.85-6.915-5.85-6.891-39.883.193-79.768.055-119.652.182-4.441.014-8.036-.845-11.208-4.17-6.87-7.203-13.99-14.166-21.008-21.228l.69-1.319H229.63l-1.24-7.289h-5.726c-42.821 0-85.642.011-128.464-.013-6.18-.003-12.371-.428-18.537-.173-3.704.154-6.14-1.066-8.104-4.073-4.111-6.292-8.367-12.489-13.256-19.755h171.593c0-2.433 0-4.234-.027-6.463m35.103.062c2.442-.418 4.85-.422 7.641-.431.482 1.987.581 3.979.706 6.499H457.62c-3.126 4.951-5.544 8.946-8.123 12.835-7.64 11.521-7.665 11.508-21.226 11.509l-147.5.003h-5.407c-.602 6.688-.15 7.214 5.824 7.214q73.75.004 147.5.004h6.891c-4.048 4.533-7.454 7.812-10.233 11.556-9.047 12.19-20.575 16.124-35.967 15.542-33.039-1.25-66.159-.384-99.246-.384h-5.45c-.275 5.77.583 6.774 5.594 6.776 34.478.012 68.957.006 103.435.007h5.302l.443 1.274c-3.495 2.62-6.91 5.358-10.5 7.842-23.505 16.265-49.192 27.744-76.893 34.696-3.263.819-6.763 1.374-10.069 1.085-1.874-.164-4.144-1.915-5.266-3.597-9.503-14.258-15.474-30.133-21.055-46.227-7.418-21.394-11.59-43.465-14.702-66.203"
|
||||||
|
id="path4"
|
||||||
|
style="fill:#fe8463;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
fill="#ff43c4"
|
||||||
|
d="M360.319 254.985c-3.232.395-6.479.407-10.189.359 2.612-14.328 2.295-28.523-1.162-42.703-4.74-19.439-15.808-34.254-32.502-45.039-.639-.413-1.27-.839-1.852-2.137h52.547l.213-1.506c-7.026-2.665-13.978-5.752-21.733-5.819-15.455-.136-30.914.047-46.369-.12-3.092-.034-6.173-1.044-9.202-2.411 18.374-7.385 37.172-6.583 56.061-3.6 19.128 3.021 35.771 12.957 54.614 20.622l-3.662-6.95c1.846-.148 3.252-.359 4.658-.36 21.485-.021 42.97.048 64.454-.082 3.262-.019 5.062.848 6.121 4.101 2.319 7.128 5.012 14.134 7.891 22.129h-127.22c.144 4.537 2.105 5.796 5.897 5.783q43.588-.154 87.175-.028c10.803.031 21.607.309 32.402.688 1.327.047 3.486 1.183 3.763 2.215 1.549 5.774 2.638 11.671 4.021 18.169H361.127c-.548 6.29-.254 6.61 5.207 6.619 38.949.061 77.898.158 116.847.146 2.863-.001 4.211.672 4.397 3.772.304 5.076.956 10.136 1.609 15.183.414 3.199-.637 4.443-4.005 4.328-6.635-.228-13.283-.105-19.926-.106q-49.152-.005-98.304.001c-6.266.001-6.266.007-6.633 6.746"
|
||||||
|
id="path5"
|
||||||
|
style="fill:#ff7f2a;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
fill="#ff42c3"
|
||||||
|
d="M214.837 27.347c41.832-7.02 81.069-2.12 103 5.453-3.084 7.222-6.153 14.42-9.231 21.612-1.64 3.833-3.549 7.574-4.869 11.513-1.091 3.256-2.992 4.06-6.217 4.042-22.092-.119-44.185-.062-67.454-.062 3.94 4.046 6.873 7.296 12.308 7.245 16.689-.157 33.381-.056 50.072-.055h6.745c-3.661 6.1-6.056 11.84-9.975 16.217-6.139 6.856-13.44 12.659-19.972 19.184-2.516 2.514-3.687 2.416-6.101-.229-9.873-10.813-19.809-21.593-30.196-31.908-11.454-11.376-25.983-16.088-41.742-17.908-14.011-1.618-27.312.965-40.451 5.507a34.7 34.7 0 0 1-9.886 1.86c-7.248.275-14.513.085-21.995-.508 28.501-21.58 60.452-35.31 95.964-41.963m53.746 77.311 3.605-4.283h-11.056c1.525 2.155 2.339 3.846 3.653 4.931.643.531 2.216-.065 3.798-.648"
|
||||||
|
id="path6"
|
||||||
|
style="fill:#63915a;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
fill="#ff44c4"
|
||||||
|
d="M377.152 144.943c-12.092-9.869-26.287-13.386-40.919-15.513-16.956-2.465-33.583-1.51-50.074 5.653.952-1.742 1.722-3.617 2.884-5.206 15.646-21.395 34.923-38.76 58.357-51.192 3.545-1.881 8.365-1.78 12.607-1.849 13.445-.22 26.898-.165 40.345-.002 2.017.024 4.514.652 5.947 1.938 7.01 6.292 13.741 12.894 20.545 19.414.386.37.542.98 1.172 2.175h-5.468c-30.918 0-61.837.116-92.753-.114-5.213-.039-8.095 2.606-11.98 6.969h6.295c35.092-.001 70.184.065 105.275-.091 4.005-.018 6.738 1.186 8.994 4.365 3.728 5.252 7.642 10.372 12.234 16.566h-90.207l-.153 1.134c6.582 2.444 12.387 6.339 20.175 6.183 23.179-.463 46.374-.087 69.561-.245 3.754-.026 6.054 1.177 7.725 4.48 2.979 5.887 6.211 11.646 9.711 18.154-2.304.15-3.753.325-5.203.326-22.415.017-44.831-.042-67.246.074-3.19.016-5.54-.802-7.705-3.211-3.093-3.441-6.561-6.545-10.119-10.008M267.626 255.455a972 972 0 0 1-7.18.028c2.056-26.604 4.319-53.217 12.215-78.952 1.17-3.813 2.458-5.484 6.241-2.773 3.757 2.69 8.105 4.741 11.346 7.934 22.076 21.743 42.878 44.52 56.347 73.308-3.623.356-7.36.406-11.542.092-1.222-4.579-3.365-6.359-8.021-6.284-17.697.286-35.402.122-53.104.126h-6.302zm2.176-30.951h44.834l.519-1.678c-1.826-.906-3.637-2.562-5.479-2.597-12.466-.234-24.937-.104-37.407-.144-2.831-.009-4.108.992-2.467 4.419m10.378-31.312c-3.285-.223-6.209-.007-5.651 4.577h16.788c-2.211-5.078-6.298-4.716-11.137-4.577m-41.043 62.082c-3.21.24-6.22.195-9.566-.301-.214-2.054-.093-3.657.08-5.95-11.47 0-22.329-.006-33.188.003-5.917.004-6.716.761-7.574 7.07-1.888.101-3.775.202-6.063.302 4.551-9.736 8.81-19.906 14.604-29.11 10.304-16.372 21.983-31.76 37.616-43.656 7.217-5.492 15.096-9.592 23.847-11.977 1.13-.308 2.333-.345 4.833-.691-10.43 27.968-18.906 55.583-24.589 84.31m-25.72-36.778c-4.442-.439-5.459 2.888-7.32 6.624 9.882 0 19.096-.135 28.302.061 4.188.089 5.338-1.767 4.777-6.598-8.393 0-16.684 0-25.759-.087m33.855-22.914c-1.112-.66-2.178-1.777-3.343-1.89-2.903-.28-5.86.032-8.779-.147-3.761-.229-5.839 1.749-7.932 5.507 6.203 0 11.685.126 17.15-.12.95-.043 1.829-1.662 2.904-3.35m96.491-154.518c17.922 7.326 34.473 16.35 49.706 28.527-30.671-2.027-59.888 3.402-88.579 15.8.855-4.673 2.395-7.566 6.408-8.806 5.86-1.811 11.674-3.77 17.472-6.488h-16.478c5.867-11.505 11.161-22.041 16.71-32.442.395-.74 2.807-.966 4.029-.597 3.534 1.07 6.939 2.564 10.732 4.006"
|
||||||
|
id="path7"
|
||||||
|
style="fill:#ff7f2a;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-opacity:1"
|
||||||
|
d="m 130,278.4 c 69.2,16 30.4,65.6 30.4,65.6 0,0 -14.8,-92.4 28.8,-46.4 43.6,46 -59.2,-19.2 -59.2,-19.2 z"
|
||||||
|
id="path8" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-opacity:1"
|
||||||
|
d="m 76.08469,213.54625 c 17.819091,7.91959 0.282842,24.32447 22.061731,7.91959 21.778889,-16.40487 53.174429,-48.3661 21.778889,-16.40487 -31.395541,31.96122 -43.84062,8.48528 -43.84062,8.48528 z"
|
||||||
|
id="path9" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-opacity:1"
|
||||||
|
d="m 310.4,292.8 c 36,20.8 16,50.4 40,18.8 24,-31.6 46.8,-57.2 14.8,-33.6 -32,23.6 -54.8,14.8 -54.8,14.8 z"
|
||||||
|
id="path10" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-opacity:1"
|
||||||
|
d="m 380.8,197.2 c 41.6,30.4 18.4,62.8 42,30.4 23.6,-32.4 10,-68.8 23.6,-32.4 13.6,36.4 58,64.4 13.6,36.4 -44.4,-28 -79.2,-34.4 -79.2,-34.4 z"
|
||||||
|
id="path11" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-opacity:1"
|
||||||
|
d="M 99.6,145.2 C 146,120.4 170.4,80.8 146,120.4 121.6,160 121.2,187.6 120.4,159.6 119.6,131.6 99.6,145.2 99.6,145.2 Z"
|
||||||
|
id="path12" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-opacity:1"
|
||||||
|
d="m 166.4,395.2 c 36.4,-34.4 26.8,-68.4 35.2,-32.8 8.4,35.6 -36,4.8 -36,4.8 z"
|
||||||
|
id="path13" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-opacity:1"
|
||||||
|
d="M 325.6,419.2 C 390,378.4 402,310 388.8,379.6 c -13.2,69.6 7.6,39.6 -15.6,67.6 -23.2,28 81.6,-113.2 50,-90.8 -31.6,22.4 -97.6,62.8 -97.6,62.8 z"
|
||||||
|
id="path14" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-opacity:1"
|
||||||
|
d="m 298.11622,232.77955 c 9.33381,30.82986 27.43574,16.68772 9.05097,29.41564 -18.38478,12.72793 -23.19311,44.12347 -17.53625,11.59656 5.65685,-32.52692 8.48528,-41.0122 8.48528,-41.0122 z"
|
||||||
|
id="path15" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-opacity:1"
|
||||||
|
d="M 54.305801,291.32799 C 110.5915,257.10403 141.42136,225.1428 108.89444,258.51824 76.367532,291.89368 96.166522,307.73287 78.913117,291.04515 61.659711,274.35743 54.022958,289.06525 54.022958,289.06525 l 53.174432,-31.1127 z"
|
||||||
|
id="path16" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 256 KiB |
|
Before Width: | Height: | Size: 332 KiB After Width: | Height: | Size: 403 KiB |
|
After Width: | Height: | Size: 39 KiB |
|
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.
|
|
||||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 9.2 KiB |
|
|
@ -1 +0,0 @@
|
||||||
#1F143C
|
|
||||||
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 37 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: 41 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 38 KiB |
|
|
@ -821,6 +821,31 @@ QTabBar QToolButton::left-arrow:disabled {
|
||||||
image: url(:/qss_icons/rc/left_arrow_disabled.png);
|
image: url(:/qss_icons/rc/left_arrow_disabled.png);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDockWidget {
|
||||||
|
background: #31363b;
|
||||||
|
border: 1px solid #403F3F;
|
||||||
|
titlebar-close-icon: url(:/qss_icons/rc/close.png);
|
||||||
|
titlebar-normal-icon: url(:/qss_icons/rc/undock.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDockWidget::close-button,
|
||||||
|
QDockWidget::float-button {
|
||||||
|
border: 1px solid transparent;
|
||||||
|
border-radius: 2px;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDockWidget::close-button:hover,
|
||||||
|
QDockWidget::float-button:hover {
|
||||||
|
background: rgba(255, 255, 255, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDockWidget::close-button:pressed,
|
||||||
|
QDockWidget::float-button:pressed {
|
||||||
|
padding: 1px -1px -1px 1px;
|
||||||
|
background: rgba(255, 255, 255, 10);
|
||||||
|
}
|
||||||
|
|
||||||
QTreeView,
|
QTreeView,
|
||||||
QListView {
|
QListView {
|
||||||
border: 1px solid #54575B;
|
border: 1px solid #54575B;
|
||||||
|
|
|
||||||
|
|
@ -1685,6 +1685,54 @@ QTabBar QToolButton::right-arrow:disabled {
|
||||||
image: url(":/qss_icons/rc/arrow_right_disabled.png");
|
image: url(":/qss_icons/rc/arrow_right_disabled.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* QDockWiget -------------------------------------------------------------
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------- */
|
||||||
|
QDockWidget {
|
||||||
|
outline: 1px solid #32414B;
|
||||||
|
background-color: #19232D;
|
||||||
|
border: 1px solid #32414B;
|
||||||
|
border-radius: 4px;
|
||||||
|
titlebar-close-icon: url(":/qss_icons/rc/window_close.png");
|
||||||
|
titlebar-normal-icon: url(":/qss_icons/rc/window_undock.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
QDockWidget::title {
|
||||||
|
/* Better size for title bar */
|
||||||
|
padding: 6px;
|
||||||
|
spacing: 4px;
|
||||||
|
border: none;
|
||||||
|
background-color: #32414B;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDockWidget::close-button {
|
||||||
|
background-color: #32414B;
|
||||||
|
border-radius: 4px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDockWidget::close-button:hover {
|
||||||
|
image: url(":/qss_icons/rc/window_close_focus.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
QDockWidget::close-button:pressed {
|
||||||
|
image: url(":/qss_icons/rc/window_close_pressed.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
QDockWidget::float-button {
|
||||||
|
background-color: #32414B;
|
||||||
|
border-radius: 4px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDockWidget::float-button:hover {
|
||||||
|
image: url(":/qss_icons/rc/window_undock_focus.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
QDockWidget::float-button:pressed {
|
||||||
|
image: url(":/qss_icons/rc/window_undock_pressed.png");
|
||||||
|
}
|
||||||
|
|
||||||
/* QTreeView QListView QTableView -----------------------------------------
|
/* QTreeView QListView QTableView -----------------------------------------
|
||||||
|
|
||||||
https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qtreeview
|
https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qtreeview
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 256 KiB |