Compare commits
No commits in common. "master" and "v0.0.4-rc3" have entirely different histories.
master
...
v0.0.4-rc3
|
|
@ -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 tools/windows/vcvarsall.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} \
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ jobs:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Find Unused Strings
|
- name: Find Unused Strings
|
||||||
run: ./tools/unused-strings.sh
|
run: ./tools/find-unused-strings.sh
|
||||||
|
|
||||||
- name: Find Stale Translations
|
- name: Find Stale Translations
|
||||||
run: ./tools/stale-translations.sh
|
run: ./tools/stale-translations.sh
|
||||||
|
|
|
||||||
|
|
@ -37,8 +37,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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
743
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,12 @@ function(AddCIPackage)
|
||||||
REPO
|
REPO
|
||||||
PACKAGE
|
PACKAGE
|
||||||
EXTENSION
|
EXTENSION
|
||||||
MIN_VERSION)
|
MIN_VERSION
|
||||||
|
)
|
||||||
|
|
||||||
set(multiValueArgs DISABLED_PLATFORMS)
|
set(multiValueArgs DISABLED_PLATFORMS)
|
||||||
|
|
||||||
set(optionArgs MODULE)
|
cmake_parse_arguments(PKG_ARGS "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||||
|
|
||||||
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 +561,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 +573,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 +587,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()
|
||||||
|
|
||||||
|
|
@ -14,7 +14,8 @@ else()
|
||||||
pkg_search_module(ZSTD QUIET IMPORTED_TARGET libzstd)
|
pkg_search_module(ZSTD QUIET IMPORTED_TARGET libzstd)
|
||||||
find_package_handle_standard_args(zstd
|
find_package_handle_standard_args(zstd
|
||||||
REQUIRED_VARS ZSTD_LINK_LIBRARIES
|
REQUIRED_VARS ZSTD_LINK_LIBRARIES
|
||||||
VERSION_VAR ZSTD_VERSION)
|
VERSION_VAR ZSTD_VERSION
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (zstd_FOUND AND NOT TARGET zstd::zstd)
|
if (zstd_FOUND AND NOT TARGET zstd::zstd)
|
||||||
|
|
@ -35,7 +36,4 @@ if (NOT TARGET zstd::libzstd)
|
||||||
else()
|
else()
|
||||||
add_library(zstd::libzstd ALIAS zstd::zstd)
|
add_library(zstd::libzstd ALIAS zstd::zstd)
|
||||||
endif()
|
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()
|
endif()
|
||||||
|
|
|
||||||
|
|
@ -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,31 @@
|
||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
## When linking to a static Qt build on MinGW, certain additional libraries
|
||||||
|
## must be statically linked to as well.
|
||||||
|
|
||||||
|
function(static_qt_link target)
|
||||||
|
macro(extra_libs)
|
||||||
|
foreach(lib ${ARGN})
|
||||||
|
find_library(${lib}_LIBRARY ${lib} REQUIRED)
|
||||||
|
target_link_libraries(${target} PRIVATE ${${lib}_LIBRARY})
|
||||||
|
endforeach()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
# I am constantly impressed at how ridiculously stupid the linker is
|
||||||
|
# NB: yes, we have to put them here twice. I have no idea why
|
||||||
|
|
||||||
|
# libtiff.a
|
||||||
|
extra_libs(tiff jbig bz2 lzma deflate jpeg tiff)
|
||||||
|
|
||||||
|
# libfreetype.a
|
||||||
|
extra_libs(freetype bz2 Lerc brotlidec brotlicommon freetype)
|
||||||
|
|
||||||
|
# libharfbuzz.a
|
||||||
|
extra_libs(harfbuzz graphite2)
|
||||||
|
|
||||||
|
# sijfjkfnjkdfjsbjsbsdfhvbdf
|
||||||
|
if (ENABLE_OPENSSL)
|
||||||
|
target_link_libraries(${target} PRIVATE OpenSSL::SSL OpenSSL::Crypto)
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
14
README.md
|
|
@ -15,8 +15,8 @@
|
||||||
<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">
|
||||||
|
|
@ -25,9 +25,9 @@ It's written in C++ with portability in mind, with builds for Windows, Linux, ma
|
||||||
<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/HstXbPch7X) 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://nitter.poast.org/edenemuofficial) for updates and announcements.
|
||||||
|
|
||||||
If you would like to contribute, we are open to new developers and pull requests. Please ensure that your work is of a high standard and properly documented. You can also contact any of the developers on Discord or 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.
|
||||||
|
|
||||||
|
|
|
||||||
49
cpmfile.json
|
|
@ -4,7 +4,7 @@
|
||||||
"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-e3608d80df",
|
||||||
"min_version": "1.1.1"
|
"min_version": "1.1.1"
|
||||||
},
|
},
|
||||||
"boost": {
|
"boost": {
|
||||||
|
|
@ -12,20 +12,22 @@
|
||||||
"repo": "boostorg/boost",
|
"repo": "boostorg/boost",
|
||||||
"tag": "boost-%VERSION%",
|
"tag": "boost-%VERSION%",
|
||||||
"artifact": "%TAG%-cmake.tar.xz",
|
"artifact": "%TAG%-cmake.tar.xz",
|
||||||
"hash": "6ae6e94664fe7f2fb01976b59b276ac5df8085c7503fa829d810fbfe495960cfec44fa2c36e2cb23480bc19c956ed199d4952b02639a00a6c07625d4e7130c2d",
|
"hash": "4fb7f6fde92762305aad8754d7643cd918dd1f3f67e104e9ab385b18c73178d72a17321354eb203b790b6702f2cf6d725a5d6e2dfbc63b1e35f9eb59fb42ece9",
|
||||||
"git_version": "1.90.0",
|
"git_version": "1.89.0",
|
||||||
"version": "1.57",
|
"version": "1.57",
|
||||||
"find_args": "CONFIG OPTIONAL_COMPONENTS headers context system fiber filesystem",
|
"find_args": "CONFIG OPTIONAL_COMPONENTS headers context system fiber filesystem",
|
||||||
"patches": [
|
"patches": [
|
||||||
"0001-clang-cl.patch"
|
"0001-clang-cl.patch",
|
||||||
|
"0002-use-marmasm.patch",
|
||||||
|
"0003-armasm-options.patch"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"fmt": {
|
"fmt": {
|
||||||
"repo": "fmtlib/fmt",
|
"repo": "fmtlib/fmt",
|
||||||
"tag": "%VERSION%",
|
"tag": "%VERSION%",
|
||||||
"hash": "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 +48,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 +69,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 +91,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>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 256 KiB |
|
Before Width: | Height: | Size: 332 KiB After Width: | Height: | Size: 516 KiB |
|
After Width: | Height: | Size: 37 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 |
|
|
@ -6,11 +6,8 @@
|
||||||
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="base.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:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
|
@ -19,96 +16,16 @@
|
||||||
<defs
|
<defs
|
||||||
id="defs7">
|
id="defs7">
|
||||||
<linearGradient
|
<linearGradient
|
||||||
id="linearGradient1"
|
id="linearGradient24"
|
||||||
inkscape:collect="always">
|
inkscape:collect="always">
|
||||||
<stop
|
<stop
|
||||||
style="stop-color:#ff2e88;stop-opacity:0.5;"
|
style="stop-color:#f71baa;stop-opacity:0.56623769;"
|
||||||
offset="0"
|
offset="0"
|
||||||
id="stop3" />
|
id="stop24" />
|
||||||
<stop
|
<stop
|
||||||
style="stop-color:#bf42f6;stop-opacity:0.5;"
|
style="stop-color:#fa87d4;stop-opacity:0.25;"
|
||||||
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"
|
offset="1"
|
||||||
id="stop15" />
|
id="stop25" />
|
||||||
</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>
|
</linearGradient>
|
||||||
<rect
|
<rect
|
||||||
x="22.627417"
|
x="22.627417"
|
||||||
|
|
@ -116,85 +33,65 @@
|
||||||
width="521.34025"
|
width="521.34025"
|
||||||
height="248.94868"
|
height="248.94868"
|
||||||
id="rect24" />
|
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
|
<linearGradient
|
||||||
id="linearGradient11"
|
id="linearGradient11"
|
||||||
inkscape:collect="always">
|
inkscape:collect="always">
|
||||||
<stop
|
<stop
|
||||||
style="stop-color:#ff2e88;stop-opacity:1;"
|
style="stop-color:#ff0950;stop-opacity:0.5;"
|
||||||
offset="0"
|
offset="0"
|
||||||
id="stop11" />
|
id="stop11" />
|
||||||
<stop
|
<stop
|
||||||
style="stop-color:#bf42f6;stop-opacity:1;"
|
style="stop-color:#bf42f6;stop-opacity:0.75;"
|
||||||
offset="0.44971901"
|
offset="0.49556771"
|
||||||
id="stop154" />
|
id="stop20" />
|
||||||
<stop
|
<stop
|
||||||
style="stop-color:#5da5ed;stop-opacity:1;"
|
style="stop-color:#5da5ed;stop-opacity:1;"
|
||||||
offset="0.89793283"
|
offset="1"
|
||||||
id="stop12" />
|
id="stop12" />
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient
|
<linearGradient
|
||||||
inkscape:collect="always"
|
inkscape:collect="always"
|
||||||
xlink:href="#linearGradient138"
|
xlink:href="#linearGradient11"
|
||||||
id="linearGradient6"
|
id="linearGradient12"
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(1.118028,0,0,1.116699,-46.314723,-42.388667)"
|
|
||||||
x1="270.39996"
|
x1="270.39996"
|
||||||
y1="40.000019"
|
y1="39.999989"
|
||||||
x2="270.39996"
|
x2="270.39996"
|
||||||
y2="494.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"
|
gradientUnits="userSpaceOnUse"
|
||||||
gradientTransform="translate(-6.9401139e-5,-2.8678628)"
|
spreadMethod="reflect"
|
||||||
x1="256.00012"
|
gradientTransform="matrix(1.075046,0,0,1.075046,-33.928383,-34.198735)" />
|
||||||
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
|
<linearGradient
|
||||||
inkscape:collect="always"
|
inkscape:collect="always"
|
||||||
xlink:href="#linearGradient1"
|
xlink:href="#linearGradient1"
|
||||||
id="linearGradient2"
|
id="linearGradient2"
|
||||||
x1="256"
|
x1="125.40197"
|
||||||
y1="64"
|
y1="271.834"
|
||||||
x2="256"
|
x2="431.02424"
|
||||||
y2="448"
|
y2="271.834"
|
||||||
gradientUnits="userSpaceOnUse"
|
gradientUnits="userSpaceOnUse"
|
||||||
gradientTransform="matrix(1.3229974,0,0,1.3214002,-82.687336,-82.290326)" />
|
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>
|
</defs>
|
||||||
<sodipodi:namedview
|
<sodipodi:namedview
|
||||||
id="namedview7"
|
id="namedview7"
|
||||||
|
|
@ -205,26 +102,43 @@
|
||||||
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="0.88388348"
|
||||||
inkscape:cx="261.62951"
|
inkscape:cx="141.98704"
|
||||||
inkscape:cy="230.87036"
|
inkscape:cy="265.87215"
|
||||||
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" />
|
||||||
|
<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
|
<path
|
||||||
id="path8-7"
|
id="rect1-3"
|
||||||
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"
|
style="fill:#ffffff;fill-opacity:0.5;stroke:none;stroke-width:17.2007;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
inkscape:label="Circle"
|
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" />
|
||||||
d="M 256,2.2792898 A 254.0155,253.71401 0 0 0 150.68475,25.115202 c 19.54414,1.070775 38.74692,5.250294 51.56848,11.647658 14.14361,7.056691 28.63804,19.185961 39.4212,29.347551 h 40.60981 c 1.03847,-0.68139 2.10297,-1.36938 3.1938,-2.05957 5.45602,-15.78533 14.79164,-43.183497 19.49612,-57.0097682 A 254.0155,253.71401 0 0 0 256,2.2792898 Z m 61.57106,7.567234 -18.26098,46.1544672 c 7.79702,-4.13918 16.35655,-7.87447 25.20671,-10.87081 23.1229,-7.828433 43.96931,-10.170904 54.94058,-10.868226 A 254.0155,253.71401 0 0 0 317.57106,9.8465238 Z m 65.39277,26.4001532 c -9.68256,4.806644 -33.05532,16.642034 -55.68217,29.863734 H 424.4677 A 254.0155,253.71401 0 0 0 382.96383,36.246677 Z M 113.90698,45.690231 A 254.0155,253.71401 0 0 0 87.532302,66.110411 H 194.2739 c -1.47402,-0.80231 -2.35141,-1.25949 -2.35141,-1.25949 l 10.4496,-11.83348 -38.40568,7.01234 c 0,1e-5 -12.21537,-4.60266 -40.17313,-12.27223 -3.45336,-0.94731 -6.75329,-1.61824 -9.8863,-2.06732 z m -36.803618,30.18635 a 254.0155,253.71401 0 0 0 -34.88372,43.090929 h 59.976738 c 18.11461,-12.04145 40.14252,-22.882149 62.31266,-24.534159 52.93006,-3.9444 70.16538,1.86342 70.16538,1.86342 0,0 -4.612,-4.8206 -14.51938,-13.36656 -2.72366,-2.34942 -6.0844,-4.77373 -9.52455,-7.05363 z m 174.472868,0 c 4.57322,4.7186 7.29716,7.83565 7.29716,7.83565 0,0 3.53501,-3.18484 9.62532,-7.83565 z m 60.27649,0 c -21.56573,15.45339 -25.4703,27.979669 -25.4703,27.979669 0,0 54.83326,-19.215729 100.70543,-0.31228 11.63986,4.79661 21.58481,10.13159 29.94832,15.42354 h 52.74419 A 254.0155,253.71401 0 0 0 434.89664,75.876581 Z M 36.250648,128.73367 A 254.0155,253.71401 0 0 0 16.372095,171.82459 H 147.45478 c 1.45695,-2.5815 3.06539,-5.08648 4.83979,-7.48982 14.23694,-19.28301 27.92088,-30.0088 36.86047,-35.6011 h -30.25323 c -5.87346,0.93472 -12.04945,1.99094 -18.28166,3.16937 -30.12936,5.69727 -81.157618,22.78945 -81.157618,22.78945 0,0 11.47125,-12.39249 29.11369,-25.95882 z m 265.630492,0 c 33.48676,11.2434 52.42799,26.78443 62.7752,43.09092 h 130.97157 a 254.0155,253.71401 0 0 0 -19.87856,-43.09092 h -44.81136 c 14.85233,11.5863 21.59948,20.9854 21.59948,20.9854 0,0 -33.5226,-12.37087 -66.0646,-20.9854 z m -45.96641,16.27007 c -1.00419,0.0106 -10.12705,0.72026 -44.98966,20.64729 -3.12132,1.78406 -6.25434,3.86182 -9.37468,6.17356 h 41.81911 c 7.17181,-17.34774 12.64083,-26.82085 12.64083,-26.82085 0,0 -0.0287,-7.1e-4 -0.0957,0 z m 14.18088,0.0465 c 0,0 -3.31228,9.32762 -7.30492,26.77438 h 51.78554 C 287.6577,146.14158 270.09561,145.0502 270.09561,145.0502 Z M 13.152456,181.59075 A 254.0155,253.71401 0 0 0 3.927651,224.68167 H 134.1447 c 0.56161,-12.72411 2.67825,-28.50188 8.61499,-43.09092 z m 176.661504,0 c -14.27121,13.10564 -27.60733,29.58761 -37.56073,43.09092 h 73.3721 c 4.47018,-16.79061 9.35068,-31.26371 13.86562,-43.09092 z m 70.85787,0 c -2.41384,11.76417 -4.9032,26.20707 -6.94831,43.09092 H 360.4832 c -8.32133,-10.88917 -20.66988,-26.17008 -36.35141,-43.09092 z m 109.17313,0 c 6.63611,15.24089 6.92441,30.5373 5.57882,43.09092 h 132.64857 a 254.0155,253.71401 0 0 0 -9.22481,-43.09092 z M 2.90181,234.44783 A 254.0155,253.71401 0 0 0 1.984498,255.9933 254.0155,253.71401 0 0 0 2.90181,277.53876 h 211.89923 c 2.25762,-15.52555 5.14325,-29.93448 8.3385,-43.09093 h -77.8863 c -6.46396,9.27617 -10.33076,15.56549 -10.33076,15.56549 0,0 -0.82623,-6.14945 -0.9354,-15.56549 z m 249.72093,0 c -1.3692,13.09684 -2.4456,27.49209 -3.02068,43.09093 h 259.49613 a 254.0155,253.71401 0 0 0 0.91731,-21.54546 254.0155,253.71401 0 0 0 -0.91731,-21.54547 H 374.02584 c -0.445,2.5469 -0.90878,4.89768 -1.32817,7.01751 0,0 -1.69726,-2.53821 -4.94056,-7.01751 z M 3.927651,287.30493 a 254.0155,253.71401 0 0 0 9.224805,43.09091 H 214.04393 c -1.29238,-15.40742 -1.57503,-30.04388 -0.41861,-43.09091 z m 245.385009,0 c -0.30355,13.54349 -0.22032,27.92598 0.36951,43.09091 h 249.16537 a 254.0155,253.71401 0 0 0 9.22481,-43.09091 z M 16.369511,340.16201 a 254.0155,253.71401 0 0 0 19.878554,43.09091 H 221.4677 c -2.69781,-14.4523 -4.96108,-29.01285 -6.4832,-43.09091 z m 233.842379,0 c 1.15864,15.47765 3.81286,29.83979 7.51679,43.09091 h 218.02325 a 254.0155,253.71401 0 0 0 19.87856,-43.09091 z M 42.217052,393.01909 a 254.0155,253.71401 0 0 0 34.88372,43.09093 H 233.09561 c -3.40902,-13.67281 -6.76794,-28.2531 -9.73902,-43.09093 z m 218.490958,0 c 5.34985,16.15926 12.22007,30.51982 19.68733,43.09093 h 154.50389 a 254.0155,253.71401 0 0 0 34.88371,-43.09093 z M 87.529722,445.87618 a 254.0155,253.71401 0 0 0 166.229968,63.8208 c -3.67805,-12.0825 -10.85464,-35.49828 -18.18088,-63.8208 z m 199.010328,0 c 17.5887,26.43772 36.99259,43.60598 47.33592,51.61309 a 254.0155,253.71401 0 0 0 90.59431,-51.61309 z" />
|
|
||||||
<path
|
<path
|
||||||
id="path27"
|
style="fill:#ff2bd5;fill-opacity:1;stroke-width:14.3776;stroke-opacity:0.415999;paint-order:stroke fill markers"
|
||||||
style="display:inline;mix-blend-mode:multiply;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient27);stroke-width:3;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
|
d="M 219.6651,499.13816 209.32675,443.18948"
|
||||||
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="path9" />
|
||||||
sodipodi:nodetypes="cscsccscscscsccccccscscccscscscscscsc"
|
<path
|
||||||
inkscape:label="MainOutline"
|
id="rect1-2"
|
||||||
clip-path="url(#clipPath128)"
|
style="fill:#ffffff;fill-opacity:0.5;stroke:none;stroke-width:17.2007;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
transform="matrix(1.3229974,0,0,1.3214002,-82.687282,-82.278451)" />
|
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>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 6.9 KiB |
|
|
@ -1 +0,0 @@
|
||||||
#1F143C
|
|
||||||
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 21 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 |
|
|
@ -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: 47 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 256 KiB |
|
|
@ -6,11 +6,9 @@
|
||||||
This is a full-fledged guide to build Eden on all supported platforms.
|
This is a full-fledged guide to build Eden on all supported platforms.
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|
||||||
First, you must [install some dependencies](Deps.md).
|
First, you must [install some dependencies](Deps.md).
|
||||||
|
|
||||||
## Clone
|
## Clone
|
||||||
|
|
||||||
Next, you will want to clone Eden via the terminal:
|
Next, you will want to clone Eden via the terminal:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
|
@ -55,35 +53,30 @@ Hit "Configure Project", then wait for CMake to finish configuring (may take a w
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
>For all systems:
|
>For all systems:
|
||||||
>
|
|
||||||
>- *CMake* **MUST** be in your PATH (and also *ninja*, if you are using it as `<GENERATOR>`)
|
>- *CMake* **MUST** be in your PATH (and also *ninja*, if you are using it as `<GENERATOR>`)
|
||||||
>- You *MUST* be in the cloned *Eden* directory
|
>- You *MUST* be in the cloned *Eden* directory
|
||||||
>
|
>
|
||||||
>On Windows:
|
>On Windows:
|
||||||
>
|
> - It's recommended to install **[Ninja](https://ninja-build.org/)**
|
||||||
> - It's recommended to install **[Ninja](https://ninja-build.org/)**
|
> - You must load **Visual C++ development environment**, this can be done by running our convenience script:
|
||||||
> - You must load **Visual C++ development environment**, this can be done by running our convenience script:
|
> - `tools/windows/load-msvc-env.ps1` (for PowerShell 5+)
|
||||||
> - `tools/windows/load-msvc-env.ps1` (for PowerShell 5+)
|
> - `tools/windows/load-msvc-env.sh` (for MSYS2, Git Bash, etc)
|
||||||
> - `tools/windows/load-msvc-env.sh` (for MSYS2, Git Bash, etc)
|
|
||||||
|
|
||||||
Available `<GENERATOR>`:
|
Available `<GENERATOR>`:
|
||||||
|
|
||||||
- MSYS2: `MSYS Makefiles`
|
- MSYS2: `MSYS Makefiles`
|
||||||
- MSVC: `Ninja` (preferred) or `Visual Studio 17 2022`
|
- MSVC: `Ninja` (preferred) or `Visual Studio 17 2022`
|
||||||
- macOS: `Ninja` (preferred) or `Xcode`
|
- macOS: `Ninja` (preferred) or `Xcode`
|
||||||
- Others: `Ninja` (preferred) or `UNIX Makefiles`
|
- Others: `Ninja` (preferred) or `UNIX Makefiles`
|
||||||
|
|
||||||
Available `<BUILD_TYPE>`:
|
Available `<BUILD_TYPE>`:
|
||||||
|
|
||||||
- `Release` (default)
|
- `Release` (default)
|
||||||
- `RelWithDebInfo` (debug symbols--compiled executable will be large)
|
- `RelWithDebInfo` (debug symbols--compiled executable will be large)
|
||||||
- `Debug` (if you are using a debugger and annoyed with stuff getting optimized out)
|
- `Debug` (if you are using a debugger and annoyed with stuff getting optimized out)
|
||||||
|
|
||||||
Caveat for Debug Builds:
|
Caveat for Debug Builds:
|
||||||
|
|
||||||
- If you're building with CCache, you will need to add the environment variable `CL` with the `/FS` flag ([Reference](https://learn.microsoft.com/pt-br/cpp/build/reference/fs-force-synchronous-pdb-writes?view=msvc-170))
|
- If you're building with CCache, you will need to add the environment variable `CL` with the `/FS` flag ([Reference](https://learn.microsoft.com/pt-br/cpp/build/reference/fs-force-synchronous-pdb-writes?view=msvc-170))
|
||||||
|
|
||||||
Also see the root CMakeLists.txt for more build options. Usually the default will provide the best experience, however.
|
Also see the [Options](Options.md) page for additional CMake options.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cmake -S . -B build -G "<GENERATOR>" -DCMAKE_BUILD_TYPE=<BUILD_TYPE> -DYUZU_TESTS=OFF
|
cmake -S . -B build -G "<GENERATOR>" -DCMAKE_BUILD_TYPE=<BUILD_TYPE> -DYUZU_TESTS=OFF
|
||||||
|
|
@ -102,7 +95,7 @@ cmake -S . -B build -G "<GENERATOR>" -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COM
|
||||||
<details>
|
<details>
|
||||||
<summary>Click to Open</summary>
|
<summary>Click to Open</summary>
|
||||||
|
|
||||||
- Clone the Repository:
|
* Clone the Repository:
|
||||||
|
|
||||||
<img src="https://user-images.githubusercontent.com/42481638/216899046-0d41d7d6-8e4d-4ed2-9587-b57088af5214.png" width="500">
|
<img src="https://user-images.githubusercontent.com/42481638/216899046-0d41d7d6-8e4d-4ed2-9587-b57088af5214.png" width="500">
|
||||||
<img src="https://user-images.githubusercontent.com/42481638/216899061-b2ea274a-e88c-40ae-bf0b-4450b46e9fea.png" width="500">
|
<img src="https://user-images.githubusercontent.com/42481638/216899061-b2ea274a-e88c-40ae-bf0b-4450b46e9fea.png" width="500">
|
||||||
|
|
@ -112,26 +105,26 @@ cmake -S . -B build -G "<GENERATOR>" -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COM
|
||||||
|
|
||||||
### Building & Setup
|
### Building & Setup
|
||||||
|
|
||||||
- Once Cloned, You will be taken to a prompt like the image below:
|
* Once Cloned, You will be taken to a prompt like the image below:
|
||||||
|
|
||||||
<img src="https://user-images.githubusercontent.com/42481638/216899092-3fe4cec6-a540-44e3-9e1e-3de9c2fffc2f.png" width="500">
|
<img src="https://user-images.githubusercontent.com/42481638/216899092-3fe4cec6-a540-44e3-9e1e-3de9c2fffc2f.png" width="500">
|
||||||
|
|
||||||
- Set the settings to the image below:
|
* Set the settings to the image below:
|
||||||
- Change `Build type: Release`
|
* Change `Build type: Release`
|
||||||
- Change `Name: Release`
|
* Change `Name: Release`
|
||||||
- Change `Toolchain Visual Studio`
|
* Change `Toolchain Visual Studio`
|
||||||
- Change `Generator: Let CMake decide`
|
* Change `Generator: Let CMake decide`
|
||||||
- Change `Build directory: build`
|
* Change `Build directory: build`
|
||||||
|
|
||||||
<img src="https://user-images.githubusercontent.com/42481638/216899164-6cee8482-3d59-428f-b1bc-e6dc793c9b20.png" width="500">
|
<img src="https://user-images.githubusercontent.com/42481638/216899164-6cee8482-3d59-428f-b1bc-e6dc793c9b20.png" width="500">
|
||||||
|
|
||||||
- Click OK; now Clion will build a directory and index your code to allow for IntelliSense. Please be patient.
|
* Click OK; now Clion will build a directory and index your code to allow for IntelliSense. Please be patient.
|
||||||
- Once this process has been completed (No loading bar bottom right), you can now build eden
|
* Once this process has been completed (No loading bar bottom right), you can now build eden
|
||||||
- In the top right, click on the drop-down menu, select all configurations, then select eden
|
* In the top right, click on the drop-down menu, select all configurations, then select eden
|
||||||
|
|
||||||
<img src="https://user-images.githubusercontent.com/42481638/216899226-975048e9-bc6d-4ec1-bc2d-bd8a1e15ed04.png" height="500" >
|
<img src="https://user-images.githubusercontent.com/42481638/216899226-975048e9-bc6d-4ec1-bc2d-bd8a1e15ed04.png" height="500" >
|
||||||
|
|
||||||
- Now run by clicking the play button or pressing Shift+F10, and eden will auto-launch once built.
|
* Now run by clicking the play button or pressing Shift+F10, and eden will auto-launch once built.
|
||||||
|
|
||||||
<img src="https://user-images.githubusercontent.com/42481638/216899275-d514ec6a-e563-470e-81e2-3e04f0429b68.png" width="500">
|
<img src="https://user-images.githubusercontent.com/42481638/216899275-d514ec6a-e563-470e-81e2-3e04f0429b68.png" width="500">
|
||||||
</details>
|
</details>
|
||||||
|
|
@ -139,13 +132,12 @@ cmake -S . -B build -G "<GENERATOR>" -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COM
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
If your initial configure failed:
|
If your initial configure failed:
|
||||||
|
|
||||||
- *Carefully* re-read the [dependencies guide](Deps.md)
|
- *Carefully* re-read the [dependencies guide](Deps.md)
|
||||||
- Clear the CPM cache (`.cache/cpm`) and CMake cache (`<build directory>/CMakeCache.txt`)
|
- Clear the CPM cache (`.cache/cpm`) and CMake cache (`<build directory>/CMakeCache.txt`)
|
||||||
- Evaluate the error and find any related settings
|
- Evaluate the error and find any related settings
|
||||||
- See the [CPM docs](CPM.md) to see if you may need to forcefully bundle any packages
|
- See the [CPM docs](CPM.md) to see if you may need to forcefully bundle any packages
|
||||||
|
|
||||||
Otherwise, feel free to ask for help in Stoat or Discord.
|
Otherwise, feel free to ask for help in Revolt or Discord.
|
||||||
|
|
||||||
## Caveats
|
## Caveats
|
||||||
|
|
||||||
|
|
@ -161,16 +153,20 @@ Simply hit Ctrl+B, or the "hammer" icon in the bottom left. To run, hit the "pla
|
||||||
|
|
||||||
If you are using the `UNIX Makefiles` or `Visual Studio 17 2022` as `<GENERATOR>`, you should also add `--parallel` for faster build times.
|
If you are using the `UNIX Makefiles` or `Visual Studio 17 2022` as `<GENERATOR>`, you should also add `--parallel` for faster build times.
|
||||||
|
|
||||||
```sh
|
```
|
||||||
cmake --build build
|
cmake --build build
|
||||||
```
|
```
|
||||||
|
|
||||||
Your compiled executable will be in:
|
Your compiled executable will be in:
|
||||||
|
|
||||||
- `build/bin/eden.exe` for Windows,
|
- `build/bin/eden.exe` for Windows,
|
||||||
- `build/bin/eden.app/Contents/MacOS/eden` for macOS,
|
- `build/bin/eden.app/Contents/MacOS/eden` for macOS,
|
||||||
- and `build/bin/eden` for others.
|
- and `build/bin/eden` for others.
|
||||||
|
|
||||||
## Scripts
|
## Scripts
|
||||||
|
|
||||||
Take a look at our [CI scripts](https://github.com/Eden-CI/Workflow). You can use `.ci/common/configure.sh` on any POSIX-compliant shell, but you are heavily encouraged to instead write your own based. It's not really that hard, provided you can read CMake.
|
Some platforms have convenience scripts provided for building.
|
||||||
|
|
||||||
|
- **[Linux](scripts/Linux.md)**
|
||||||
|
- **[Windows](scripts/Windows.md)**
|
||||||
|
|
||||||
|
macOS scripts will come soon.
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
src/web_service @AleksandrPopovich
|
src/web_service @AleksandrPopovich
|
||||||
src/dynarmic @Lizzie
|
src/dynarmic @Lizzie
|
||||||
src/core @Lizzie @Maufeat @PavelBARABANOV @MrPurple666 @JPikachu
|
src/core @Lizzie @Maufeat @PavelBARABANOV @MrPurple666 @JPikachu
|
||||||
src/core/hle @Maufeat @PavelBARABANOV
|
src/core/hle @Maufeat @PavelBARABANOV @SDK-Chan
|
||||||
src/core/arm @Lizzie @MrPurple666
|
src/core/arm @Lizzie @MrPurple666
|
||||||
src/*_room @AleksandrPopovich
|
src/*_room @AleksandrPopovich
|
||||||
src/video_core @CamilleLaVey @MaranBr @Wildcard @weakboson
|
src/video_core @CamilleLaVey @MaranBr @Wildcard @weakboson
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
# AddPackage
|
||||||
|
|
||||||
|
- `VERSION` (required): The version to get (the tag will be `v${VERSION}`)
|
||||||
|
- `NAME` (required): Name used within the artifacts
|
||||||
|
- `REPO` (required): CI repository, e.g. `crueter-ci/OpenSSL`
|
||||||
|
- `PACKAGE` (required): `find_package` package name
|
||||||
|
- `EXTENSION`: Artifact extension (default `tar.zst`)
|
||||||
|
- `MIN_VERSION`: Minimum version for `find_package`. Only used if platform does not support this package as a bundled artifact
|
||||||
|
- `DISABLED_PLATFORMS`: List of platforms that lack artifacts for this package. Options:
|
||||||
|
* `windows-amd64`
|
||||||
|
* `windows-arm64`
|
||||||
|
* `android`
|
||||||
|
* `solaris-amd64`
|
||||||
|
* `freebsd-amd64`
|
||||||
|
* `linux-amd64`
|
||||||
|
* `linux-aarch64`
|
||||||
|
* `macos-universal`
|
||||||
|
|
@ -7,14 +7,13 @@
|
||||||
- `EXTENSION`: Artifact extension (default `tar.zst`)
|
- `EXTENSION`: Artifact extension (default `tar.zst`)
|
||||||
- `MIN_VERSION`: Minimum version for `find_package`. Only used if platform does not support this package as a bundled artifact
|
- `MIN_VERSION`: Minimum version for `find_package`. Only used if platform does not support this package as a bundled artifact
|
||||||
- `DISABLED_PLATFORMS`: List of platforms that lack artifacts for this package. Options:
|
- `DISABLED_PLATFORMS`: List of platforms that lack artifacts for this package. Options:
|
||||||
- `windows-amd64`
|
* `windows-amd64`
|
||||||
- `windows-arm64`
|
* `windows-arm64`
|
||||||
- `mingw-amd64`
|
* `mingw-amd64`
|
||||||
- `mingw-arm64`
|
* `mingw-arm64`
|
||||||
- `android-x86_64`
|
* `android`
|
||||||
- `android-aarch64`
|
* `solaris-amd64`
|
||||||
- `solaris-amd64`
|
* `freebsd-amd64`
|
||||||
- `freebsd-amd64`
|
* `linux-amd64`
|
||||||
- `linux-amd64`
|
* `linux-aarch64`
|
||||||
- `linux-aarch64`
|
* `macos-universal`
|
||||||
- `macos-universal`
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
||||||
# AddDependentPackage
|
|
||||||
|
|
||||||
Use `AddDependentPackage` when you have multiple packages that are required to all be from the system, OR bundled. This is useful in cases where e.g. versions must absolutely match.
|
|
||||||
|
|
||||||
## Versioning
|
|
||||||
|
|
||||||
Versioning must be handled by the package itself.
|
|
||||||
|
|
||||||
## Examples
|
|
||||||
|
|
||||||
### Vulkan
|
|
||||||
|
|
||||||
`cpmfile.json`
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"vulkan-headers": {
|
|
||||||
"repo": "KhronosGroup/Vulkan-Headers",
|
|
||||||
"package": "VulkanHeaders",
|
|
||||||
"version": "1.4.317",
|
|
||||||
"hash": "26e0ad8fa34ab65a91ca62ddc54cc4410d209a94f64f2817dcdb8061dc621539a4262eab6387e9b9aa421db3dbf2cf8e2a4b041b696d0d03746bae1f25191272",
|
|
||||||
"git_version": "1.4.342",
|
|
||||||
"tag": "v%VERSION%"
|
|
||||||
},
|
|
||||||
"vulkan-utility-libraries": {
|
|
||||||
"repo": "KhronosGroup/Vulkan-Utility-Libraries",
|
|
||||||
"package": "VulkanUtilityLibraries",
|
|
||||||
"hash": "8147370f964fd82c315d6bb89adeda30186098427bf3efaa641d36282d42a263f31e96e4586bfd7ae0410ff015379c19aa4512ba160630444d3d8553afd1ec14",
|
|
||||||
"git_version": "1.4.342",
|
|
||||||
"tag": "v%VERSION%"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
`CMakeLists.txt`:
|
|
||||||
|
|
||||||
```cmake
|
|
||||||
AddDependentPackages(vulkan-headers vulkan-utility-libraries)
|
|
||||||
```
|
|
||||||
|
|
||||||
If Vulkan Headers are installed, but NOT Vulkan Utility Libraries, then CPMUtil will throw an error.
|
|
||||||
|
|
@ -22,11 +22,11 @@ If `ci` is `false`:
|
||||||
- `sha` -> `SHA`
|
- `sha` -> `SHA`
|
||||||
- `key` -> `KEY`
|
- `key` -> `KEY`
|
||||||
- `tag` -> `TAG`
|
- `tag` -> `TAG`
|
||||||
- If the tag contains `%VERSION%`, that part will be replaced by the `git_version`, OR `version` if `git_version` is not specified
|
* If the tag contains `%VERSION%`, that part will be replaced by the `git_version`, OR `version` if `git_version` is not specified
|
||||||
- `url` -> `URL`
|
- `url` -> `URL`
|
||||||
- `artifact` -> `ARTIFACT`
|
- `artifact` -> `ARTIFACT`
|
||||||
- If the artifact contains `%VERSION%`, that part will be replaced by the `git_version`, OR `version` if `git_version` is not specified
|
* If the artifact contains `%VERSION%`, that part will be replaced by the `git_version`, OR `version` if `git_version` is not specified
|
||||||
- If the artifact contains `%TAG%`, that part will be replaced by the `tag` (with its replacement already done)
|
* If the artifact contains `%TAG%`, that part will be replaced by the `tag` (with its replacement already done)
|
||||||
- `git_version` -> `GIT_VERSION`
|
- `git_version` -> `GIT_VERSION`
|
||||||
- `git_host` -> `GIT_HOST`
|
- `git_host` -> `GIT_HOST`
|
||||||
- `source_subdir` -> `SOURCE_SUBDIR`
|
- `source_subdir` -> `SOURCE_SUBDIR`
|
||||||
|
|
@ -101,4 +101,4 @@ In order: OpenSSL CI, Boost (tag + artifact), Opus (options + find_args), discor
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
- `URL`: The URL to fetch.
|
- `URL`: The URL to fetch.
|
||||||
- `REPO`: The repo to use (`owner/repo`).
|
- `REPO`: The repo to use (`owner/repo`).
|
||||||
- `GIT_HOST`: The Git host to use
|
- `GIT_HOST`: The Git host to use
|
||||||
- Defaults to `github.com`. Do not include the protocol, as HTTPS is enforced.
|
* Defaults to `github.com`. Do not include the protocol, as HTTPS is enforced.
|
||||||
- `TAG`: The tag to fetch, if applicable.
|
- `TAG`: The tag to fetch, if applicable.
|
||||||
- `ARTIFACT`: The name of the artifact, if applicable.
|
- `ARTIFACT`: The name of the artifact, if applicable.
|
||||||
- `SHA`: Commit sha to fetch, if applicable.
|
- `SHA`: Commit sha to fetch, if applicable.
|
||||||
|
|
@ -26,23 +26,23 @@
|
||||||
The following configurations are supported, in descending order of precedence:
|
The following configurations are supported, in descending order of precedence:
|
||||||
|
|
||||||
- `URL`: Bare URL download, useful for custom artifacts
|
- `URL`: Bare URL download, useful for custom artifacts
|
||||||
- If this is set, `GIT_URL` or `REPO` should be set to allow the dependency viewer to link to the project's Git repository.
|
* If this is set, `GIT_URL` or `REPO` should be set to allow the dependency viewer to link to the project's Git repository.
|
||||||
- If this is NOT set, `REPO` must be defined.
|
* If this is NOT set, `REPO` must be defined.
|
||||||
- `REPO + TAG + ARTIFACT`: GitHub release artifact
|
- `REPO + TAG + ARTIFACT`: GitHub release artifact
|
||||||
- The final download URL will be `https://github.com/${REPO}/releases/download/${TAG}/${ARTIFACT}`
|
* The final download URL will be `https://github.com/${REPO}/releases/download/${TAG}/${ARTIFACT}`
|
||||||
- Useful for prebuilt libraries and prefetched archives
|
* Useful for prebuilt libraries and prefetched archives
|
||||||
- `REPO + TAG`: GitHub tag archive
|
- `REPO + TAG`: GitHub tag archive
|
||||||
- The final download URL will be `https://github.com/${REPO}/archive/refs/tags/${TAG}.tar.gz`
|
* The final download URL will be `https://github.com/${REPO}/archive/refs/tags/${TAG}.tar.gz`
|
||||||
- Useful for pinning to a specific tag, better for build identification
|
* Useful for pinning to a specific tag, better for build identification
|
||||||
- `REPO + SHA`: GitHub commit archive
|
- `REPO + SHA`: GitHub commit archive
|
||||||
- The final download URL will be `https://github.com/${REPO}/archive/${SHA}.zip`
|
* The final download URL will be `https://github.com/${REPO}/archive/${SHA}.zip`
|
||||||
- Useful for pinning to a specific commit
|
* Useful for pinning to a specific commit
|
||||||
- `REPO + BRANCH`: GitHub branch archive
|
- `REPO + BRANCH`: GitHub branch archive
|
||||||
- The final download URL will be `https://github.com/${REPO}/archive/refs/heads/${BRANCH}.zip`
|
* The final download URL will be `https://github.com/${REPO}/archive/refs/heads/${BRANCH}.zip`
|
||||||
- Generally not recommended unless the branch is frozen
|
* Generally not recommended unless the branch is frozen
|
||||||
- `REPO`: GitHub master archive
|
- `REPO`: GitHub master archive
|
||||||
- The final download URL will be `https://github.com/${REPO}/archive/refs/heads/master.zip`
|
* The final download URL will be `https://github.com/${REPO}/archive/refs/heads/master.zip`
|
||||||
- Generally not recommended unless the project is dead
|
* Generally not recommended unless the project is dead
|
||||||
|
|
||||||
## Hashing
|
## Hashing
|
||||||
|
|
||||||
|
|
@ -54,20 +54,20 @@ Hashing strategies, descending order of precedence:
|
||||||
|
|
||||||
- `HASH`: Bare hash verification, useful for static downloads e.g. commit archives
|
- `HASH`: Bare hash verification, useful for static downloads e.g. commit archives
|
||||||
- `HASH_SUFFIX`: Download the hash as `${DOWNLOAD_URL}.${HASH_SUFFIX}`
|
- `HASH_SUFFIX`: Download the hash as `${DOWNLOAD_URL}.${HASH_SUFFIX}`
|
||||||
- The downloaded hash *must* match the hash algorithm and contain nothing but the hash; no filenames or extra content.
|
* The downloaded hash *must* match the hash algorithm and contain nothing but the hash; no filenames or extra content.
|
||||||
- `HASH_URL`: Download the hash from a separate URL
|
- `HASH_URL`: Download the hash from a separate URL
|
||||||
|
|
||||||
## Other Options
|
## Other Options
|
||||||
|
|
||||||
- `KEY`: Custom cache key to use (stored as `.cache/cpm/${packagename_lower}/${key}`)
|
- `KEY`: Custom cache key to use (stored as `.cache/cpm/${packagename_lower}/${key}`)
|
||||||
- Default is based on, in descending order of precedence:
|
* Default is based on, in descending order of precedence:
|
||||||
- First 4 characters of the sha
|
- First 4 characters of the sha
|
||||||
- `GIT_VERSION`
|
- `GIT_VERSION`
|
||||||
- Tag
|
- Tag
|
||||||
- `VERSION`
|
- `VERSION`
|
||||||
- Otherwise, CPM defaults will be used. This is not recommended as it doesn't produce reproducible caches
|
- Otherwise, CPM defaults will be used. This is not recommended as it doesn't produce reproducible caches
|
||||||
- `DOWNLOAD_ONLY`: Whether or not to configure the downloaded package via CMake
|
- `DOWNLOAD_ONLY`: Whether or not to configure the downloaded package via CMake
|
||||||
- Useful to turn `OFF` if the project doesn't use CMake
|
* Useful to turn `OFF` if the project doesn't use CMake
|
||||||
- `SOURCE_SUBDIR`: Subdirectory of the project containing a CMakeLists.txt file
|
- `SOURCE_SUBDIR`: Subdirectory of the project containing a CMakeLists.txt file
|
||||||
- `FIND_PACKAGE_ARGUMENTS`: Arguments to pass to the `find_package` call
|
- `FIND_PACKAGE_ARGUMENTS`: Arguments to pass to the `find_package` call
|
||||||
- `BUNDLED_PACKAGE`: Set to `ON` to default to the bundled package
|
- `BUNDLED_PACKAGE`: Set to `ON` to default to the bundled package
|
||||||
|
|
@ -80,14 +80,12 @@ Hashing strategies, descending order of precedence:
|
||||||
|
|
||||||
For each added package, users may additionally force usage of the system/bundled package.
|
For each added package, users may additionally force usage of the system/bundled package.
|
||||||
|
|
||||||
- `${package}_DIR`: Path to a separately-downloaded copy of the package. Note that versioning is not checked!
|
|
||||||
- `${package}_FORCE_SYSTEM`: Require the package to be installed on the system
|
- `${package}_FORCE_SYSTEM`: Require the package to be installed on the system
|
||||||
- `${package}_FORCE_BUNDLED`: Force the package to be fetched and use the bundled version
|
- `${package}_FORCE_BUNDLED`: Force the package to be fetched and use the bundled version
|
||||||
|
|
||||||
## System/Bundled Packages
|
## System/Bundled Packages
|
||||||
|
|
||||||
Descending order of precedence:
|
Descending order of precedence:
|
||||||
|
|
||||||
- If `${package}_FORCE_SYSTEM` is true, requires the package to be on the system
|
- If `${package}_FORCE_SYSTEM` is true, requires the package to be on the system
|
||||||
- If `${package}_FORCE_BUNDLED` is true, forcefully uses the bundled package
|
- If `${package}_FORCE_BUNDLED` is true, forcefully uses the bundled package
|
||||||
- If `CPMUTIL_FORCE_SYSTEM` is true, requires the package to be on the system
|
- If `CPMUTIL_FORCE_SYSTEM` is true, requires the package to be on the system
|
||||||
|
|
@ -103,8 +101,8 @@ URLs:
|
||||||
|
|
||||||
- `GIT_URL`
|
- `GIT_URL`
|
||||||
- `REPO` as a Git repository
|
- `REPO` as a Git repository
|
||||||
- You may optionally specify `GIT_HOST` to use a custom host, e.g. `GIT_HOST git.crueter.xyz`. Note that the git host MUST be GitHub-like in its artifact/archive downloads, e.g. Forgejo
|
* You may optionally specify `GIT_HOST` to use a custom host, e.g. `GIT_HOST git.crueter.xyz`. Note that the git host MUST be GitHub-like in its artifact/archive downloads, e.g. Forgejo
|
||||||
- If `GIT_HOST` is unspecified, defaults to `github.com`
|
* If `GIT_HOST` is unspecified, defaults to `github.com`
|
||||||
- `URL`
|
- `URL`
|
||||||
|
|
||||||
Versions (bundled):
|
Versions (bundled):
|
||||||
|
|
@ -115,4 +113,4 @@ Versions (bundled):
|
||||||
- `TAG`
|
- `TAG`
|
||||||
- "unknown"
|
- "unknown"
|
||||||
|
|
||||||
If the package is a system package, AddPackage will attempt to determine the package version and append `(system)` to the identifier. Otherwise, it will be marked as `unknown (system)`
|
If the package is a system package, AddPackage will attempt to determine the package version and append ` (system)` to the identifier. Otherwise, it will be marked as `unknown (system)`
|
||||||
|
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
# AddQt
|
|
||||||
|
|
||||||
Simply call `AddQt(<Qt Version>)` before any Qt `find_package` calls and everything will be set up for you. On Linux, the bundled Qt library is built as a shared library, and provided you have OpenSSL and X11, everything should just work.
|
|
||||||
|
|
||||||
On Windows, MinGW, and MacOS, Qt is bundled as a static library. No further action is needed, as the provided libraries automatically integrate the Windows/Cocoa plugins, alongside the corresponding Multimedia and Network plugins.
|
|
||||||
|
|
||||||
## Modules
|
|
||||||
|
|
||||||
The following modules are bundled into these Qt builds:
|
|
||||||
|
|
||||||
- Base (Gui, Core, Widgets, Network)
|
|
||||||
- Multimedia
|
|
||||||
- Declarative (Quick, QML)
|
|
||||||
- Linux: Wayland client
|
|
||||||
|
|
||||||
Each platform has the corresponding QPA built in and set as the default as well. This means you don't need to add `Q_IMPORT_PLUGIN`!
|
|
||||||
|
|
||||||
## Example
|
|
||||||
|
|
||||||
See an example in the [`tests/qt`](https://git.crueter.xyz/CMake/CPMUtil/src/branch/master/tests/qt/CMakeLists.txt) directory.
|
|
||||||
|
|
||||||
## Versions
|
|
||||||
|
|
||||||
The following versions have available builds:
|
|
||||||
|
|
||||||
- 6.9.3
|
|
||||||
|
|
||||||
See [`crueter-ci/Qt`](https://github.com/crueter-ci/Qt) for an updated list at any time.
|
|
||||||
|
|
@ -5,19 +5,17 @@ CPMUtil is a wrapper around CPM that aims to reduce boilerplate and add useful u
|
||||||
Global Options:
|
Global Options:
|
||||||
|
|
||||||
- `CPMUTIL_FORCE_SYSTEM` (default `OFF`): Require all CPM dependencies to use system packages. NOT RECOMMENDED!
|
- `CPMUTIL_FORCE_SYSTEM` (default `OFF`): Require all CPM dependencies to use system packages. NOT RECOMMENDED!
|
||||||
- You may optionally override this (section)
|
* You may optionally override this (section)
|
||||||
- `CPMUTIL_FORCE_BUNDLED` (default `ON` on MSVC and Android, `OFF` elsewhere): Require all CPM dependencies to use bundled packages.
|
- `CPMUTIL_FORCE_BUNDLED` (default `ON` on MSVC and Android, `OFF` elsewhere): Require all CPM dependencies to use bundled packages.
|
||||||
|
|
||||||
You are highly encouraged to read AddPackage first, even if you plan to only interact with CPMUtil via `AddJsonPackage`.
|
You are highly encouraged to read AddPackage first, even if you plan to only interact with CPMUtil via `AddJsonPackage`.
|
||||||
|
|
||||||
|
<!-- TOC -->
|
||||||
- [AddPackage](#addpackage)
|
- [AddPackage](#addpackage)
|
||||||
- [AddCIPackage](#addcipackage)
|
- [AddCIPackage](#addcipackage)
|
||||||
- [AddJsonPackage](#addjsonpackage)
|
- [AddJsonPackage](#addjsonpackage)
|
||||||
- [AddQt](#addqt)
|
|
||||||
- [Lists](#lists)
|
- [Lists](#lists)
|
||||||
- [For Packagers](#for-packagers)
|
<!-- /TOC -->
|
||||||
- [Network Sandbox](#network-sandbox)
|
|
||||||
- [Unsandboxed](#unsandboxed)
|
|
||||||
|
|
||||||
## AddPackage
|
## AddPackage
|
||||||
|
|
||||||
|
|
@ -31,14 +29,6 @@ The core of CPMUtil is the [`AddPackage`](./AddPackage.md) function. [`AddPackag
|
||||||
|
|
||||||
[`AddJsonPackage`](./AddJsonPackage.md) is the recommended method of usage for CPMUtil.
|
[`AddJsonPackage`](./AddJsonPackage.md) is the recommended method of usage for CPMUtil.
|
||||||
|
|
||||||
## AddDependentPackage
|
|
||||||
|
|
||||||
[`AddDependentPackage`](./AddDependentPackage.md) allows you to add multiple packages such that all of them must be from the system OR bundled.
|
|
||||||
|
|
||||||
## AddQt
|
|
||||||
|
|
||||||
[`AddQt`](./AddQt.md) adds a specific version of Qt to your project.
|
|
||||||
|
|
||||||
## Lists
|
## Lists
|
||||||
|
|
||||||
CPMUtil will create three lists of dependencies where `AddPackage` or similar was used. Each is in order of addition.
|
CPMUtil will create three lists of dependencies where `AddPackage` or similar was used. Each is in order of addition.
|
||||||
|
|
@ -46,25 +36,11 @@ CPMUtil will create three lists of dependencies where `AddPackage` or similar wa
|
||||||
- `CPM_PACKAGE_NAMES`: The names of packages included by CPMUtil
|
- `CPM_PACKAGE_NAMES`: The names of packages included by CPMUtil
|
||||||
- `CPM_PACKAGE_URLS`: The URLs to project/repo pages of packages
|
- `CPM_PACKAGE_URLS`: The URLs to project/repo pages of packages
|
||||||
- `CPM_PACKAGE_SHAS`: Short version identifiers for each package
|
- `CPM_PACKAGE_SHAS`: Short version identifiers for each package
|
||||||
- If the package was included as a system package, `(system)` is appended thereafter
|
* If the package was included as a system package, ` (system)` is appended thereafter
|
||||||
- Packages whose versions can't be deduced will be left as `unknown`.
|
* Packages whose versions can't be deduced will be left as `unknown`.
|
||||||
|
|
||||||
For an example of how this might be implemented in an application, see Eden's implementation:
|
For an example of how this might be implemented in an application, see Eden's implementation:
|
||||||
|
|
||||||
- [`dep_hashes.h.in`](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/src/dep_hashes.h.in)
|
- [`dep_hashes.h.in`](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/src/dep_hashes.h.in)
|
||||||
- [`GenerateDepHashes.cmake`](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CMakeModules/GenerateDepHashes.cmake)
|
- [`GenerateDepHashes.cmake`](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CMakeModules/GenerateDepHashes.cmake)
|
||||||
- [`deps_dialog.cpp`](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/src/yuzu/deps_dialog.cpp)
|
- [`deps_dialog.cpp`](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/src/yuzu/deps_dialog.cpp)
|
||||||
|
|
||||||
## For Packagers
|
|
||||||
|
|
||||||
If you are packaging a project that uses CPMUtil, read this!
|
|
||||||
|
|
||||||
### Network Sandbox
|
|
||||||
|
|
||||||
For sandboxed environments (e.g. Gentoo, nixOS) you must install all dependencies to the system beforehand and set `-DCPMUTIL_FORCE_SYSTEM=ON`. If a dependency is missing, get creating!
|
|
||||||
|
|
||||||
Alternatively, if CPMUtil pulls in a package that has no suitable way to install or use a system version, download it separately and pass `-DPackageName_DIR=/path/to/downloaded/dir` (e.g. shaders)
|
|
||||||
|
|
||||||
### Unsandboxed
|
|
||||||
|
|
||||||
For others (AUR, MPR, etc). CPMUtil will handle everything for you, including if some of the project's dependencies are missing from your distribution's repositories. That is pretty much half the reason I created this behemoth, after all.
|
|
||||||
|
|
@ -1,20 +1,17 @@
|
||||||
# Caveats
|
# Caveats
|
||||||
|
|
||||||
<!-- TOC -->
|
<!-- TOC -->
|
||||||
- [Arch Linux](#arch-linux)
|
- [Caveats](#caveats)
|
||||||
- [Gentoo Linux](#gentoo-linux)
|
- [Arch Linux](#arch-linux)
|
||||||
- [macOS](#macos)
|
- [Gentoo Linux](#gentoo-linux)
|
||||||
- [Solaris](#solaris)
|
- [macOS](#macos)
|
||||||
- [HaikuOS](#haikuos)
|
- [Solaris](#solaris)
|
||||||
- [OpenBSD](#openbsd)
|
- [HaikuOS](#haikuos)
|
||||||
- [FreeBSD](#freebsd)
|
- [OpenBSD](#openbsd)
|
||||||
- [NetBSD](#netbsd)
|
- [FreeBSD](#freebsd)
|
||||||
- [MSYS2](#msys2)
|
- [NetBSD](#netbsd)
|
||||||
- [RedoxOS](#redoxos)
|
- [MSYS2](#msys2)
|
||||||
- [Windows](#windows)
|
- [Windows 8.1 and below](#windows-81-and-below)
|
||||||
- [Windows 7, Windows 8 and Windows 8.1](#windows-7-windows-8-and-windows-81)
|
|
||||||
- [Windows Vista and below](#windows-vista-and-below)
|
|
||||||
- [Windows on ARM](#windows-on-arm)
|
|
||||||
<!-- /TOC -->
|
<!-- /TOC -->
|
||||||
|
|
||||||
## Arch Linux
|
## Arch Linux
|
||||||
|
|
@ -52,7 +49,6 @@ export PATH="$PATH:$PWD"
|
||||||
```
|
```
|
||||||
|
|
||||||
Default MESA is a bit outdated, the following environment variables should be set for a smoother experience:
|
Default MESA is a bit outdated, the following environment variables should be set for a smoother experience:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
export MESA_GL_VERSION_OVERRIDE=4.6
|
export MESA_GL_VERSION_OVERRIDE=4.6
|
||||||
export MESA_GLSL_VERSION_OVERRIDE=460
|
export MESA_GLSL_VERSION_OVERRIDE=460
|
||||||
|
|
@ -81,12 +77,8 @@ For this reason this patch is NOT applied to default on all platforms (for obvio
|
||||||
|
|
||||||
Still will not run flawlessly until `mesa-24` is available. Modify CMakeCache.txt with the `.so` of libGL and libGLESv2 by doing the incredibly difficult task of copy pasting them (`cp /boot/system/lib/libGL.so .`)
|
Still will not run flawlessly until `mesa-24` is available. Modify CMakeCache.txt with the `.so` of libGL and libGLESv2 by doing the incredibly difficult task of copy pasting them (`cp /boot/system/lib/libGL.so .`)
|
||||||
|
|
||||||
If you have `quazip1_qt6_devel`, uninstall it. It may call `Core5Compat` on CMake which is wrongly packaged.
|
|
||||||
|
|
||||||
## OpenBSD
|
## OpenBSD
|
||||||
|
|
||||||
System boost doesn't have `context` (as of 7.8); so you may need to specify `-DYUZU_USE_CPM=ON -DBoost_FORCE_BUNDLED=ON`.
|
|
||||||
|
|
||||||
After configuration, you may need to modify `externals/ffmpeg/CMakeFiles/ffmpeg-build/build.make` to use `-j$(nproc)` instead of just `-j`.
|
After configuration, you may need to modify `externals/ffmpeg/CMakeFiles/ffmpeg-build/build.make` to use `-j$(nproc)` instead of just `-j`.
|
||||||
|
|
||||||
`-lc++-experimental` doesn't exist in OpenBSD but the LLVM driver still tries to link against it, to solve just symlink `ln -s /usr/lib/libc++.a /usr/lib/libc++experimental.a`. Builds are currently not working due to lack of `std::jthread` and such, either compile libc++ manually or wait for ports to catch up.
|
`-lc++-experimental` doesn't exist in OpenBSD but the LLVM driver still tries to link against it, to solve just symlink `ln -s /usr/lib/libc++.a /usr/lib/libc++experimental.a`. Builds are currently not working due to lack of `std::jthread` and such, either compile libc++ manually or wait for ports to catch up.
|
||||||
|
|
@ -99,33 +91,19 @@ Eden is not currently available as a port on FreeBSD, though it is in the works.
|
||||||
|
|
||||||
The available OpenSSL port (3.0.17) is out-of-date, and using a bundled static library instead is recommended; to do so, add `-DYUZU_USE_BUNDLED_OPENSSL=ON` to your CMake configure command.
|
The available OpenSSL port (3.0.17) is out-of-date, and using a bundled static library instead is recommended; to do so, add `-DYUZU_USE_BUNDLED_OPENSSL=ON` to your CMake configure command.
|
||||||
|
|
||||||
Gamepad/controllers may not work on 15.0, this is due to an outdated SDL not responding well to the new `usbhid(2)` driver. To workaround this simply disable `usbhid(2)` (add the following to `/boot/loader.conf`):
|
|
||||||
|
|
||||||
```sh
|
|
||||||
hw.usb.usbhid.enable="0"
|
|
||||||
```
|
|
||||||
|
|
||||||
## NetBSD
|
## NetBSD
|
||||||
|
|
||||||
Install `pkgin` if not already `pkg_add pkgin`, see also the general [pkgsrc guide](https://www.netbsd.org/docs/pkgsrc/using.html). For NetBSD 10.1 provide `echo 'PKG_PATH="https://cdn.netbsd.org/pub/pkgsrc/packages/NetBSD/amd64/10.1/All/"' >/etc/pkg_install.conf`. If `pkgin` is taking too much time consider adding the following to `/etc/rc.conf`:
|
Install `pkgin` if not already `pkg_add pkgin`, see also the general [pkgsrc guide](https://www.netbsd.org/docs/pkgsrc/using.html). For NetBSD 10.1 provide `echo 'PKG_PATH="https://cdn.netbsd.org/pub/pkgsrc/packages/NetBSD/x86_64/10.0_2025Q3/All/"' >/etc/pkg_install.conf`. If `pkgin` is taking too much time consider adding the following to `/etc/rc.conf`:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
ip6addrctl=YES
|
ip6addrctl=YES
|
||||||
ip6addrctl_policy=ipv4_prefer
|
ip6addrctl_policy=ipv4_prefer
|
||||||
```
|
```
|
||||||
|
|
||||||
System provides a default `g++-10` which doesn't support the current C++ codebase; install `clang-19` with `pkgin install clang-19`. Or install `gcc14` (or `gcc15` with current pkgsrc). Provided that, the following CMake commands may work:
|
System provides a default `g++-10` which doesn't support the current C++ codebase; install `clang-19` with `pkgin install clang-19`. Then build with `cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -B build`.
|
||||||
|
|
||||||
- `cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -Bbuild`
|
|
||||||
- `cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/pkg/gcc14/bin/gcc -DCMAKE_CXX_COMPILER=/usr/pkg/gcc14/bin/g++ -Bbuild`
|
|
||||||
- `cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/pkg/gcc15/bin/gcc -DCMAKE_CXX_COMPILER=/usr/pkg/gcc15/bin/g++ -Bbuild`
|
|
||||||
|
|
||||||
Make may error out when generating C++ headers of SPIRV shaders, hence it's recommended to use `gmake` over the default system one.
|
Make may error out when generating C++ headers of SPIRV shaders, hence it's recommended to use `gmake` over the default system one.
|
||||||
|
|
||||||
[parallel/spirv-tools](https://iso.us.netbsd.org/pub/pkgsrc/current/pkgsrc/parallel/spirv-tools/index.html) isn't available in binary form and must be built from source.
|
|
||||||
|
|
||||||
glslang is not available on NetBSD, to circumvent this simply build glslang by yourself:
|
glslang is not available on NetBSD, to circumvent this simply build glslang by yourself:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
pkgin python313
|
pkgin python313
|
||||||
git clone --depth=1 https://github.com/KhronosGroup/glslang.git
|
git clone --depth=1 https://github.com/KhronosGroup/glslang.git
|
||||||
|
|
@ -136,17 +114,13 @@ cmake --build build -- -j`nproc`
|
||||||
cmake --install build
|
cmake --install build
|
||||||
```
|
```
|
||||||
|
|
||||||
However, pkgsrc is highly recommended, see [getting pkgsrc](https://iso.us.netbsd.org/pub/pkgsrc/current/pkgsrc/doc/pkgsrc.html#getting). You must get `current` not the `2025Q2` version.
|
# DragonFlyBSD
|
||||||
|
|
||||||
## DragonFlyBSD
|
|
||||||
|
|
||||||
If `libstdc++.so.6` is not found (`GLIBCXX_3.4.30`) then attempt:
|
If `libstdc++.so.6` is not found (`GLIBCXX_3.4.30`) then attempt:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
rm /usr/local/lib/gcc11/libstdc++.so.6
|
rm /usr/local/lib/gcc11/libstdc++.so.6
|
||||||
ln -s /usr/local/lib/gcc14/libstdc++.so /usr/local/lib/gcc11/libstdc++.so.6
|
ln -s /usr/local/lib/gcc14/libstdc++.so /usr/local/lib/gcc11/libstdc++.so.6
|
||||||
```
|
```
|
||||||
|
|
||||||
This may have unforeseen consequences of which we don't need to worry about for now.
|
This may have unforeseen consequences of which we don't need to worry about for now.
|
||||||
|
|
||||||
Default `g++` (and the libstdc++) is too outdated - so install `gcc14` and redirect CMake to the new compiler toolchain `-DCMAKE_CXX_COMPILER=gcc14 -DCMAKE_C_COMPILER=g++14`.
|
Default `g++` (and the libstdc++) is too outdated - so install `gcc14` and redirect CMake to the new compiler toolchain `-DCMAKE_CXX_COMPILER=gcc14 -DCMAKE_C_COMPILER=g++14`.
|
||||||
|
|
@ -157,9 +131,13 @@ If build hangs, use `hammer2 bulkfree`.
|
||||||
|
|
||||||
## MSYS2
|
## MSYS2
|
||||||
|
|
||||||
Only the `MINGW64` environment is tested (or `CLANGARM64` on ARM); however, all of the others should work (in theory) sans `MINGW32`.
|
`qt6-static` isn't supported yet.
|
||||||
|
|
||||||
When packaging an MSYS2 build that is NOT fully static, you will need to copy all dependent DLLs recursively alongside the `windeployqt6`; for example:
|
Only the `MINGW64` environment is tested; however, all of the others should work (in theory) sans `MINGW32`.
|
||||||
|
|
||||||
|
Currently, only FFmpeg can be used as a system dependency; the others will result in linker errors.
|
||||||
|
|
||||||
|
When packaging an MSYS2 build, you will need to copy all dependent DLLs recursively alongside the `windeployqt6`; for example:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# MSYS_TOOLCHAIN is typically just mingw64
|
# MSYS_TOOLCHAIN is typically just mingw64
|
||||||
|
|
@ -208,24 +186,14 @@ windeployqt6 --no-compiler-runtime --no-opengl-sw --no-system-dxc-compiler \
|
||||||
find ./*/ -name "*.dll" | while read -r dll; do deps "$dll"; done
|
find ./*/ -name "*.dll" | while read -r dll; do deps "$dll"; done
|
||||||
```
|
```
|
||||||
|
|
||||||
## RedoxOS
|
## Windows 8.1 and below
|
||||||
|
|
||||||
The package install may randomly hang at times, in which case it has to be restarted. ALWAYS do a `sudo pkg update` or the chances of it hanging will be close to 90%. If "multiple" installs fail at once, try installing 1 by 1 the packages.
|
|
||||||
|
|
||||||
When CMake invokes certain file syscalls - it may sometimes cause crashes or corruptions on the (kernel?) address space - so reboot the system if there is a "hang" in CMake.
|
|
||||||
|
|
||||||
## Windows
|
|
||||||
|
|
||||||
### Windows 7, Windows 8 and Windows 8.1
|
|
||||||
|
|
||||||
DirectX 12 is not available - simply copy and paste a random DLL and name it `d3d12.dll`.
|
DirectX 12 is not available - simply copy and paste a random DLL and name it `d3d12.dll`.
|
||||||
|
|
||||||
Install [Qt6 compatibility libraries](github.com/ANightly/qt6windows7) specifically Qt 6.9.5.
|
Install [Qt6 compatibility libraries](github.com/ANightly/qt6windows7) specifically Qt 6.9.5.
|
||||||
|
|
||||||
### Windows Vista and below
|
## RedoxOS
|
||||||
|
|
||||||
No support for Windows Vista (or below) is present at the moment. Check back later.
|
The package install may randomly hang at times, in which case it has to be restarted. ALWAYS do a `sudo pkg update` or the chances of it hanging will be close to 90%. If "multiple" installs fail at once, try installing 1 by 1 the packages.
|
||||||
|
|
||||||
### Windows on ARM
|
When CMake invokes certain file syscalls - it may sometimes cause crashes or corruptions on the (kernel?) address space - so reboot the system if there is a "hang" in CMake.
|
||||||
|
|
||||||
If you're using Snapdragon X or 8CX, use the [the Vulkan translation layer](https://apps.microsoft.com/detail/9nqpsl29bfff?hl=en-us&gl=USE) only if the stock drivers do not work. And of course always keep your system up-to-date.
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,79 @@
|
||||||
|
# Coding guidelines
|
||||||
|
|
||||||
|
These are mostly "suggestions", if you feel like your code is readable, comprehensible to others; and most importantly doesn't result in unreadable spaghetti you're fine to go.
|
||||||
|
|
||||||
|
But for new developers you may find that following these guidelines will make everything x10 easier.
|
||||||
|
|
||||||
|
## Naming conventions
|
||||||
|
|
||||||
|
Simply put, types/classes are named as `PascalCase`, same for methods and functions like `AddElement`. Variables are named `like_this_snake_case` and constants are `IN_SCREAMING_CASE`.
|
||||||
|
|
||||||
|
Except for Qt MOC where `functionName` is preferred.
|
||||||
|
|
||||||
|
Template typenames prefer short names like `T`, `I`, `U`, if a longer name is required either `Iterator` or `perform_action` are fine as well.
|
||||||
|
|
||||||
|
Macros must always be in `SCREAMING_CASE`. Do not use short letter macros as systems like Solaris will conflict with them; a good rule of thumb is >5 characters per macro - i.e `THIS_MACRO_IS_GOOD`, `AND_ALSO_THIS_ONE`.
|
||||||
|
|
||||||
|
Try not using hungarian notation, if you're able.
|
||||||
|
|
||||||
|
## Formatting
|
||||||
|
|
||||||
|
Do not put if/while/etc braces after lines:
|
||||||
|
```c++
|
||||||
|
// no dont do this
|
||||||
|
if (thing)
|
||||||
|
{
|
||||||
|
some(); // ...
|
||||||
|
}
|
||||||
|
|
||||||
|
// do this
|
||||||
|
if (thing) {
|
||||||
|
some(); // ...
|
||||||
|
}
|
||||||
|
|
||||||
|
// or this
|
||||||
|
if (thing)
|
||||||
|
some(); // ...
|
||||||
|
|
||||||
|
// this is also ok
|
||||||
|
if (thing) some();
|
||||||
|
```
|
||||||
|
|
||||||
|
Brace rules are lax, if you can get the point across, do it:
|
||||||
|
|
||||||
|
```c++
|
||||||
|
// this is fine
|
||||||
|
do {
|
||||||
|
if (thing) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
} while (other);
|
||||||
|
|
||||||
|
// this is also ok --- albeit a bit more dense
|
||||||
|
do if (thing) return 0; while (other);
|
||||||
|
|
||||||
|
// ok as well
|
||||||
|
do {
|
||||||
|
if (thing) return 0;
|
||||||
|
} while (other);
|
||||||
|
```
|
||||||
|
|
||||||
|
There is no 80-column limit but preferably be mindful of other developer's readability (like don't just put everything onto one line).
|
||||||
|
|
||||||
|
```c++
|
||||||
|
// someone is going to be mad due to this
|
||||||
|
SDL_AudioSpec obtained;
|
||||||
|
device_name.empty() ? device = SDL_OpenAudioDevice(nullptr, capture, &spec, &obtained, false) : device = SDL_OpenAudioDevice(device_name.c_str(), capture, &spec, &obtained, false);
|
||||||
|
|
||||||
|
// maybe consider this
|
||||||
|
SDL_AudioSpec obtained;
|
||||||
|
if (device_name.empty()) {
|
||||||
|
device = SDL_OpenAudioDevice(nullptr, capture, &spec, &obtained, false);
|
||||||
|
} else {
|
||||||
|
device = SDL_OpenAudioDevice(device_name.c_str(), capture, &spec, &obtained, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// or this is fine as well
|
||||||
|
SDL_AudioSpec obtained;
|
||||||
|
device = SDL_OpenAudioDevice(device_name.empty() ? nullptr : device_name.c_str(), capture, &spec, &obtained, false);
|
||||||
|
```
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
# Cross compiling
|
# Cross Compile
|
||||||
|
|
||||||
General guide for cross compiling.
|
## ARM64
|
||||||
|
|
||||||
## Debian ARM64
|
|
||||||
|
|
||||||
A painless guide for cross compilation (or to test NCE) from a x86_64 system without polluting your main.
|
A painless guide for cross compilation (or to test NCE) from a x86_64 system without polluting your main.
|
||||||
|
|
||||||
|
|
|
||||||
97
docs/Deps.md
|
|
@ -1,44 +1,42 @@
|
||||||
# Dependencies
|
# Dependencies
|
||||||
|
|
||||||
To build Eden, you MUST have a C++ compiler.
|
To build Eden, you MUST have a C++ compiler.
|
||||||
|
|
||||||
* On Linux, this is usually [GCC](https://gcc.gnu.org/) 11+ or [Clang](https://clang.llvm.org/) v14+
|
* On Linux, this is usually [GCC](https://gcc.gnu.org/) 11+ or [Clang](https://clang.llvm.org/) v14+
|
||||||
* GCC 12 also requires Clang 14+
|
- GCC 12 also requires Clang 14+
|
||||||
* On Windows, we support:
|
* On Windows, we support:
|
||||||
* **[MSVC](https://visualstudio.microsoft.com/downloads/)** (default)
|
- **[MSVC](https://visualstudio.microsoft.com/downloads/)** (default)
|
||||||
* It's STRONGLY RECOMMENDED to use the **Community** option and **Visual Studio 2022**
|
- It's STRONGLY RECOMMENDED to use the **Community** option and **Visual Studio 2022**
|
||||||
* You need to install: **[Desktop development with C++](https://learn.microsoft.com/en-us/cpp/build/vscpp-step-0-installation?view=msvc-170)**
|
- You need to install: **[Desktop development with C++](https://learn.microsoft.com/en-us/cpp/build/vscpp-step-0-installation?view=msvc-170)**
|
||||||
* **[clang-cl](https://learn.microsoft.com/en-us/cpp/build/clang-support-msbuild?view=msvc-180)**
|
- **[clang-cl](https://learn.microsoft.com/en-us/cpp/build/clang-support-msbuild?view=msvc-180)**
|
||||||
* You need to install: **C++ Clang tools for Windows**
|
- You need to install: **C++ Clang tools for Windows**
|
||||||
* **[MSYS2](https://www.msys2.org)**
|
- **[MSYS2](https://www.msys2.org)** (experimental)
|
||||||
* On macOS, this is Apple Clang
|
* On macOS, this is Apple Clang
|
||||||
* This can be installed with `xcode-select --install`
|
- This can be installed with `xcode-select --install`
|
||||||
|
|
||||||
The following additional tools are also required:
|
The following additional tools are also required:
|
||||||
|
|
||||||
* **[CMake](https://www.cmake.org/)** 3.22+ - already included with the Android SDK
|
* **[CMake](https://www.cmake.org/)** 3.22+ - already included with the Android SDK
|
||||||
* **[Git](https://git-scm.com/)** for version control
|
* **[Git](https://git-scm.com/)** for version control
|
||||||
* **[Windows installer](https://gitforwindows.org)**
|
- **[Windows installer](https://gitforwindows.org)**
|
||||||
* **[Python3](https://www.python.org/downloads/)** 3.10+ - necessary to download external repositories
|
* **[Python3](https://www.python.org/downloads/)** 3.10+ - necessary to download external repositories
|
||||||
* On Windows, you must install the **[Vulkan SDK](https://vulkan.lunarg.com/sdk/home#windows)** as well
|
* On Windows, you must install the **[Vulkan SDK](https://vulkan.lunarg.com/sdk/home#windows)** as well
|
||||||
* *A convenience script to install the latest SDK is provided in:*
|
- *A convenience script to install the latest SDK is provided in:*
|
||||||
* `tools/windows/install-vulkan-sdk.ps1` (for PowerShell 5+)
|
- `tools/windows/install-vulkan-sdk.ps1` (for PowerShell 5+)
|
||||||
* `tools/windows/install-vulkan-sdk.sh` (for Git Bash, etc)
|
- `tools/windows/install-vulkan-sdk.sh` (for MSYS2, Git Bash, etc)
|
||||||
|
|
||||||
If you are on desktop and plan to use the Qt frontend, you *must* install Qt 6, and optionally Qt Creator (the **RECOMMENDED** IDE for building)
|
If you are on desktop and plan to use the Qt frontend, you *must* install Qt 6, and optionally Qt Creator (the **RECOMMENDED** IDE for building)
|
||||||
|
|
||||||
* On Linux, *BSD and macOS, this can be done by the package manager
|
* On Linux, *BSD and macOS, this can be done by the package manager
|
||||||
* If you wish to use Qt Creator, append `qtcreator` or `qt-creator` to the commands seen below.
|
- If you wish to use Qt Creator, append `qtcreator` or `qt-creator` to the commands seen below.
|
||||||
* MSVC/clang-cl users on Windows must install through the official [Qt](https://www.qt.io/download-qt-installer-oss) installer
|
* MSVC/clang-cl users on Windows must install through the official [Qt](https://www.qt.io/download-qt-installer-oss) installer
|
||||||
* Linux and macOS users may choose to use the installer as well.
|
* Linux and macOS users may choose to use the installer as well.
|
||||||
* MSYS2 can also install Qt 6 via the package manager
|
* MSYS2 can also install Qt 6 via the package manager
|
||||||
|
|
||||||
* For help setting up Qt Creator, run `./install.sh -h qtcreator`
|
If you are on Windows, a convenience script to install MSVC, MSYS2, Qt, all necessary packages for MSYS2, and set up a zsh environment with useful keybinds and aliases can be found [here](https://git.crueter.xyz/scripts/windev).
|
||||||
|
- For help setting up Qt Creator, run `./install.sh -h qtcreator`
|
||||||
|
|
||||||
If you are on **Windows** and building with **MSVC** or **clang-cl**, you may go [back home](Build.md) and continue.
|
If you are on **Windows** and building with **MSVC** or **clang-cl**, you may go [back home](Build.md) and continue.
|
||||||
|
|
||||||
## Externals
|
## Externals
|
||||||
|
|
||||||
The following are handled by Eden's externals:
|
The following are handled by Eden's externals:
|
||||||
|
|
||||||
* [FFmpeg](https://ffmpeg.org/) (should use `-DYUZU_USE_EXTERNAL_FFMPEG=ON`)
|
* [FFmpeg](https://ffmpeg.org/) (should use `-DYUZU_USE_EXTERNAL_FFMPEG=ON`)
|
||||||
|
|
@ -59,7 +57,6 @@ All other dependencies will be downloaded and built by [CPM](https://github.com/
|
||||||
* [MbedTLS](https://github.com/Mbed-TLS/mbedtls) 3+
|
* [MbedTLS](https://github.com/Mbed-TLS/mbedtls) 3+
|
||||||
|
|
||||||
Vulkan 1.3.274+ is also needed:
|
Vulkan 1.3.274+ is also needed:
|
||||||
|
|
||||||
* [VulkanUtilityLibraries](https://github.com/KhronosGroup/Vulkan-Utility-Libraries)
|
* [VulkanUtilityLibraries](https://github.com/KhronosGroup/Vulkan-Utility-Libraries)
|
||||||
* [VulkanHeaders](https://github.com/KhronosGroup/Vulkan-Headers)
|
* [VulkanHeaders](https://github.com/KhronosGroup/Vulkan-Headers)
|
||||||
* [SPIRV-Tools](https://github.com/KhronosGroup/SPIRV-Tools)
|
* [SPIRV-Tools](https://github.com/KhronosGroup/SPIRV-Tools)
|
||||||
|
|
@ -74,21 +71,18 @@ Certain other dependencies will be fetched by CPM regardless. System packages *c
|
||||||
* [VulkanMemoryAllocator](https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator)
|
* [VulkanMemoryAllocator](https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator)
|
||||||
* [sirit](https://github.com/eden-emulator/sirit)
|
* [sirit](https://github.com/eden-emulator/sirit)
|
||||||
* [httplib](https://github.com/yhirose/cpp-httplib) - if `ENABLE_UPDATE_CHECKER` or `ENABLE_WEB_SERVICE` are on
|
* [httplib](https://github.com/yhirose/cpp-httplib) - if `ENABLE_UPDATE_CHECKER` or `ENABLE_WEB_SERVICE` are on
|
||||||
* This package is known to be broken on the AUR.
|
- This package is known to be broken on the AUR.
|
||||||
* [cpp-jwt](https://github.com/arun11299/cpp-jwt) 1.4+ - if `ENABLE_WEB_SERVICE` is on
|
* [cpp-jwt](https://github.com/arun11299/cpp-jwt) 1.4+ - if `ENABLE_WEB_SERVICE` is on
|
||||||
* [unordered-dense](https://github.com/martinus/unordered_dense)
|
* [unordered-dense](https://github.com/martinus/unordered_dense)
|
||||||
* [mcl](https://github.com/azahar-emu/mcl) - subject to removal
|
* [mcl](https://github.com/azahar-emu/mcl) - subject to removal
|
||||||
|
|
||||||
On amd64:
|
On amd64:
|
||||||
|
|
||||||
* [xbyak](https://github.com/herumi/xbyak) - 7.22 or earlier is recommended
|
* [xbyak](https://github.com/herumi/xbyak) - 7.22 or earlier is recommended
|
||||||
|
|
||||||
On aarch64 OR if `DYNARMIC_TESTS` is on:
|
On aarch64 OR if `DYNARMIC_TESTS` is on:
|
||||||
|
|
||||||
* [oaknut](https://github.com/merryhime/oaknut) 2.0.1+
|
* [oaknut](https://github.com/merryhime/oaknut) 2.0.1+
|
||||||
|
|
||||||
On riscv64:
|
On riscv64:
|
||||||
|
|
||||||
* [biscuit](https://github.com/lioncash/biscuit) 0.9.1+
|
* [biscuit](https://github.com/lioncash/biscuit) 0.9.1+
|
||||||
|
|
||||||
## Commands
|
## Commands
|
||||||
|
|
@ -104,7 +98,7 @@ Click on the arrows to expand.
|
||||||
|
|
||||||
GURU must be enabled:
|
GURU must be enabled:
|
||||||
|
|
||||||
```sh
|
```
|
||||||
sudo emerge -a app-eselect/eselect-repository
|
sudo emerge -a app-eselect/eselect-repository
|
||||||
sudo eselect repository enable guru
|
sudo eselect repository enable guru
|
||||||
sudo emaint sync -r guru
|
sudo emaint sync -r guru
|
||||||
|
|
@ -130,18 +124,17 @@ sudo emerge -a \
|
||||||
virtual/pkgconfig
|
virtual/pkgconfig
|
||||||
```
|
```
|
||||||
|
|
||||||
* On `amd64`, also add `dev-libs/xbyak`
|
- On `amd64`, also add `dev-libs/xbyak`
|
||||||
* On `riscv64`, also add `dev-libs/biscuit` (currently unavailable)
|
- On `riscv64`, also add `dev-libs/biscuit` (currently unavailable)
|
||||||
* On `aarch64`, also add `dev-libs/oaknut`
|
- On `aarch64`, also add `dev-libs/oaknut`
|
||||||
* If tests are enabled, also add `dev-libs/oaknut` and `dev-cpp/catch`
|
- If tests are enabled, also add `dev-libs/oaknut` and `dev-cpp/catch`
|
||||||
|
|
||||||
Required USE flags:
|
Required USE flags:
|
||||||
|
- `dev-qt/qtbase network concurrent dbus gui widgets`
|
||||||
* `dev-qt/qtbase network concurrent dbus gui widgets`
|
- `dev-libs/quazip qt6`
|
||||||
* `dev-libs/quazip qt6`
|
- `net-libs/mbedtls cmac`
|
||||||
* `net-libs/mbedtls cmac`
|
- `media-libs/libsdl2 haptic joystick sound video`
|
||||||
* `media-libs/libsdl2 haptic joystick sound video`
|
- `dev-cpp/cpp-httplib ssl`
|
||||||
* `dev-cpp/cpp-httplib ssl`
|
|
||||||
|
|
||||||
[Caveats](./Caveats.md#gentoo-linux)
|
[Caveats](./Caveats.md#gentoo-linux)
|
||||||
|
|
||||||
|
|
@ -157,7 +150,6 @@ sudo pacman -Syu --needed base-devel boost catch2 cmake enet ffmpeg fmt git glsl
|
||||||
* Building with QT Web Engine requires `qt6-webengine` as well.
|
* Building with QT Web Engine requires `qt6-webengine` as well.
|
||||||
* Proper Wayland support requires `qt6-wayland`
|
* Proper Wayland support requires `qt6-wayland`
|
||||||
* GCC 11 or later is required.
|
* GCC 11 or later is required.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
@ -169,20 +161,17 @@ sudo apt-get install autoconf cmake g++ gcc git glslang-tools libglu1-mesa-dev l
|
||||||
|
|
||||||
* Ubuntu 22.04, Linux Mint 20, or Debian 12 or later is required.
|
* Ubuntu 22.04, Linux Mint 20, or Debian 12 or later is required.
|
||||||
* To enable QT Web Engine, add `-DYUZU_USE_QT_WEB_ENGINE=ON` when running CMake.
|
* To enable QT Web Engine, add `-DYUZU_USE_QT_WEB_ENGINE=ON` when running CMake.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>AlmaLinux, Fedora, Red Hat Linux</summary>
|
<summary>AlmaLinux, Fedora, Red Hat Linux</summary>
|
||||||
|
|
||||||
Fedora:
|
Fedora:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo dnf install autoconf cmake fmt-devel gcc{,-c++} glslang hidapi-devel json-devel libtool libusb1-devel libzstd-devel lz4-devel nasm ninja-build openssl-devel pulseaudio-libs-devel qt6-linguist qt6-qtbase{-private,}-devel qt6-qtwebengine-devel qt6-qtmultimedia-devel speexdsp-devel wayland-devel zlib-devel ffmpeg-devel libXext-devel boost jq
|
sudo dnf install autoconf cmake fmt-devel gcc{,-c++} glslang hidapi-devel json-devel libtool libusb1-devel libzstd-devel lz4-devel nasm ninja-build openssl-devel pulseaudio-libs-devel qt6-linguist qt6-qtbase{-private,}-devel qt6-qtwebengine-devel qt6-qtmultimedia-devel speexdsp-devel wayland-devel zlib-devel ffmpeg-devel libXext-devel boost jq
|
||||||
```
|
```
|
||||||
|
|
||||||
AlmaLinux (use `YUZU_USE_CPM=ON`):
|
AlmaLinux (use `YUZU_USE_CPM=ON`):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# vvv - Only if RPMfusion is not installed or EPEL isn't either
|
# vvv - Only if RPMfusion is not installed or EPEL isn't either
|
||||||
sudo dnf install epel-release dnf-utils
|
sudo dnf install epel-release dnf-utils
|
||||||
|
|
@ -194,19 +183,15 @@ sudo dnf config-manager --enable crb
|
||||||
sudo dnf install qt6-qtbase-private-devel
|
sudo dnf install qt6-qtbase-private-devel
|
||||||
```
|
```
|
||||||
|
|
||||||
For systems like OpenEuler or derivates, don't forget to also install: `SDL2-devel pkg-config fmt-dev nlohmann-json-dev`.
|
|
||||||
|
|
||||||
* [RPM Fusion](https://rpmfusion.org/Configuration) is required for `ffmpeg-devel`
|
* [RPM Fusion](https://rpmfusion.org/Configuration) is required for `ffmpeg-devel`
|
||||||
* Fedora 32 or later is required.
|
* Fedora 32 or later is required.
|
||||||
* Fedora 36+ users with GCC 12 need Clang and should configure CMake with: `cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -B build`
|
* Fedora 36+ users with GCC 12 need Clang and should configure CMake with: `cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -B build`
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Alpine Linux</summary>
|
<summary>Alpine Linux</summary>
|
||||||
|
|
||||||
First, enable the community repository; [see here](https://wiki.alpinelinux.org/wiki/Repositories#Enabling_the_community_repository).
|
First, enable the community repository; [see here](https://wiki.alpinelinux.org/wiki/Repositories#Enabling_the_community_repository).
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Enable the community repository
|
# Enable the community repository
|
||||||
setup-apkrepos -c
|
setup-apkrepos -c
|
||||||
|
|
@ -246,9 +231,8 @@ brew install autoconf automake boost ffmpeg fmt glslang hidapi libtool libusb lz
|
||||||
If you are compiling on Intel Mac, or are using a Rosetta Homebrew installation, you must replace all references of `/opt/homebrew` with `/usr/local`.
|
If you are compiling on Intel Mac, or are using a Rosetta Homebrew installation, you must replace all references of `/opt/homebrew` with `/usr/local`.
|
||||||
|
|
||||||
To run with MoltenVK, install additional dependencies:
|
To run with MoltenVK, install additional dependencies:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
brew install molten-vk
|
brew install molten-vk vulkan-loader
|
||||||
```
|
```
|
||||||
|
|
||||||
[Caveats](./Caveats.md#macos).
|
[Caveats](./Caveats.md#macos).
|
||||||
|
|
@ -257,7 +241,7 @@ brew install molten-vk
|
||||||
<details>
|
<details>
|
||||||
<summary>FreeBSD</summary>
|
<summary>FreeBSD</summary>
|
||||||
|
|
||||||
As root run: `pkg install devel/cmake devel/sdl20 devel/boost-libs devel/catch2 devel/libfmt devel/nlohmann-json devel/ninja devel/nasm devel/autoconf devel/pkgconf devel/qt6-base devel/simpleini net/enet multimedia/ffnvcodec-headers multimedia/ffmpeg audio/opus archivers/liblz4 lang/gcc12 graphics/glslang graphics/vulkan-utility-libraries graphics/spirv-tools www/cpp-httplib devel/unordered-dense mbedtls3 vulkan-headers quazip-qt6`
|
As root run: `pkg install devel/cmake devel/sdl20 devel/boost-libs devel/catch2 devel/libfmt devel/nlohmann-json devel/ninja devel/nasm devel/autoconf devel/pkgconf devel/qt6-base devel/simpleini net/enet multimedia/ffnvcodec-headers multimedia/ffmpeg audio/opus archivers/liblz4 lang/gcc12 graphics/glslang graphics/vulkan-utility-libraries graphics/spirv-tools www/cpp-httplib devel/jwt-cpp devel/unordered-dense mbedtls3 vulkan-headers quazip-qt6`
|
||||||
|
|
||||||
If using FreeBSD 12 or prior, use `devel/pkg-config` instead.
|
If using FreeBSD 12 or prior, use `devel/pkg-config` instead.
|
||||||
|
|
||||||
|
|
@ -267,7 +251,7 @@ If using FreeBSD 12 or prior, use `devel/pkg-config` instead.
|
||||||
<details>
|
<details>
|
||||||
<summary>NetBSD</summary>
|
<summary>NetBSD</summary>
|
||||||
|
|
||||||
For NetBSD +10.1: `pkgin install git cmake boost fmtlib SDL2 catch2 libjwt spirv-headers spirv-tools ffmpeg7 libva nlohmann-json jq libopus qt6 mbedtls3 cpp-httplib lz4 vulkan-headers nasm autoconf enet pkg-config libusb1 libcxx`.
|
For NetBSD +10.1: `pkgin install git cmake boost fmtlib SDL2 catch2 libjwt spirv-headers ffmpeg7 libva nlohmann-json jq libopus qt6 mbedtls3 cpp-httplib lz4 vulkan-headers nasm autoconf enet pkg-config libusb1`.
|
||||||
|
|
||||||
[Caveats](./Caveats.md#netbsd).
|
[Caveats](./Caveats.md#netbsd).
|
||||||
|
|
||||||
|
|
@ -277,7 +261,7 @@ For NetBSD +10.1: `pkgin install git cmake boost fmtlib SDL2 catch2 libjwt spirv
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
pkg_add -u
|
pkg_add -u
|
||||||
pkg_add cmake nasm git boost unzip--iconv autoconf-2.72p0 bash ffmpeg glslang gmake qt6 jq fmt nlohmann-json enet boost vulkan-utility-libraries vulkan-headers spirv-headers spirv-tools catch2 sdl2 libusb1-1.0.29
|
pkg_add cmake nasm git boost unzip--iconv autoconf-2.72p0 bash ffmpeg glslang gmake llvm-19.1.7p3 qt6 jq fmt nlohmann-json enet boost vulkan-utility-libraries vulkan-headers spirv-headers spirv-tools catch2 sdl2 libusb1-1.0.27
|
||||||
```
|
```
|
||||||
|
|
||||||
[Caveats](./Caveats.md#openbsd).
|
[Caveats](./Caveats.md#openbsd).
|
||||||
|
|
@ -308,24 +292,23 @@ sudo pkg install qt6 boost glslang libzip library/lz4 libusb-1 nlohmann-json ope
|
||||||
|
|
||||||
* Open the `MSYS2 MinGW 64-bit` shell (`mingw64.exe`)
|
* Open the `MSYS2 MinGW 64-bit` shell (`mingw64.exe`)
|
||||||
* Download and install all dependencies:
|
* Download and install all dependencies:
|
||||||
|
```
|
||||||
```sh
|
|
||||||
BASE="git make autoconf libtool automake-wrapper jq patch"
|
BASE="git make autoconf libtool automake-wrapper jq patch"
|
||||||
MINGW="qt6-base qt6-tools qt6-translations qt6-svg cmake toolchain clang python-pip openssl vulkan-memory-allocator vulkan-devel glslang boost fmt lz4 nlohmann-json zlib zstd enet opus mbedtls libusb unordered_dense openssl SDL2"
|
|
||||||
# Either x86_64 or clang-aarch64 (Windows on ARM)
|
MINGW="qt6-base qt6-tools qt6-translations qt6-svg cmake toolchain clang python-pip openssl vulkan-memory-allocator vulkan-devel glslang boost fmt lz4 nlohmann-json zlib zstd enet opus mbedtls libusb unordered_dense"
|
||||||
|
|
||||||
packages="$BASE"
|
packages="$BASE"
|
||||||
for pkg in $MINGW; do
|
for pkg in $MINGW; do
|
||||||
packages="$packages mingw-w64-x86_64-$pkg"
|
packages="$packages mingw-w64-x86_64-$pkg"
|
||||||
#packages="$packages mingw-w64-clang-aarch64-$pkg"
|
|
||||||
done
|
done
|
||||||
|
|
||||||
pacman -Syuu --needed --noconfirm $packages
|
pacman -Syuu --needed --noconfirm $packages
|
||||||
```
|
```
|
||||||
|
|
||||||
* Notes:
|
* Notes:
|
||||||
* Using `qt6-static` is possible as well, provided you build with `-DYUZU_STATIC_BUILD=ON`.
|
- Using `qt6-static` is possible but currently untested.
|
||||||
* Other environments are entirely untested, but should theoretically work provided you install all the necessary packages.
|
- Other environments are entirely untested, but should theoretically work provided you install all the necessary packages.
|
||||||
* GCC is proven to work better with the MinGW environment. On ARM, only Clang is available through the CLANGARM64 environment, so use that until a GNU ARM environment is available.
|
- GCC is proven to work better with the MinGW environment. If you choose to use Clang, you *may* be better off using the clang64 environment.
|
||||||
* Add `qt-creator` to the `MINGW` variable to install Qt Creator. You can then create a Start Menu shortcut to the MinGW Qt Creator by running `powershell "\$s=(New-Object -COM WScript.Shell).CreateShortcut('C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Qt Creator.lnk');\$s.TargetPath='C:\\msys64\\mingw64\\bin\\qtcreator.exe';\$s.Save()"` in Git Bash or MSYS2.
|
- Add `qt-creator` to the `MINGW` variable to install Qt Creator. You can then create a Start Menu shortcut to the MinGW Qt Creator by running `powershell "\$s=(New-Object -COM WScript.Shell).CreateShortcut('C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Qt Creator.lnk');\$s.TargetPath='C:\\msys64\\mingw64\\bin\\qtcreator.exe';\$s.Save()"` in Git Bash or MSYS2.
|
||||||
* Add MinGW binaries to the PATH if they aren't already:
|
* Add MinGW binaries to the PATH if they aren't already:
|
||||||
* `echo 'PATH=/mingw64/bin:$PATH' >> ~/.bashrc`
|
* `echo 'PATH=/mingw64/bin:$PATH' >> ~/.bashrc`
|
||||||
* or `echo 'PATH=/mingw64/bin:$PATH' >> ~/.zshrc`
|
* or `echo 'PATH=/mingw64/bin:$PATH' >> ~/.zshrc`
|
||||||
|
|
@ -337,7 +320,7 @@ pacman -Syuu --needed --noconfirm $packages
|
||||||
<summary>HaikuOS</summary>
|
<summary>HaikuOS</summary>
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
pkgman install git cmake patch libfmt_devel nlohmann_json lz4_devel opus_devel boost1.89_devel vulkan_devel qt6_base_devel qt6_declarative_devel libsdl2_devel ffmpeg7_devel libx11_devel enet_devel catch2_devel quazip1_qt5_devel qt6_5compat_devel mbedtls3_devel glslang qt6_devel
|
pkgman install git cmake patch libfmt_devel nlohmann_json lz4_devel opus_devel boost1.89_devel vulkan_devel qt6_base_devel libsdl2_devel ffmpeg7_devel libx11_devel enet_devel catch2_devel quazip1_qt6_devel qt6_5compat_devel libusb1_devel libz_devel mbedtls3_devel glslang
|
||||||
```
|
```
|
||||||
|
|
||||||
[Caveats](./Caveats.md#haikuos).
|
[Caveats](./Caveats.md#haikuos).
|
||||||
|
|
|
||||||
|
|
@ -82,15 +82,15 @@ You may additionally need the `Qt Extension Pack` extension if building Qt.
|
||||||
|
|
||||||
# Build speedup
|
# Build speedup
|
||||||
|
|
||||||
If you have an HDD, use ramdisk (build in RAM), approximatedly you need 4GB for a full build with debug symbols:
|
If you have an HDD, use ramdisk (build in RAM):
|
||||||
```sh
|
```sh
|
||||||
mkdir /tmp/ramdisk
|
sudo mkdir /tmp/ramdisk
|
||||||
chmod 777 /tmp/ramdisk
|
sudo chmod 777 /tmp/ramdisk
|
||||||
# about 8GB needed
|
# about 8GB needed
|
||||||
mount -t tmpfs -o size=4G myramdisk /tmp/ramdisk
|
sudo mount -t tmpfs -o size=8G myramdisk /tmp/ramdisk
|
||||||
cmake -B /tmp/ramdisk
|
cmake -B /tmp/ramdisk
|
||||||
cmake --build /tmp/ramdisk -- -j32
|
cmake --build /tmp/ramdisk -- -j32
|
||||||
umount /tmp/ramdisk
|
sudo umount /tmp/ramdisk
|
||||||
```
|
```
|
||||||
|
|
||||||
# Assets and large files
|
# Assets and large files
|
||||||
|
|
|
||||||
|
|
@ -1,114 +0,0 @@
|
||||||
# Driver bugs
|
|
||||||
|
|
||||||
Non-exhaustive list of known drivers bugs.
|
|
||||||
|
|
||||||
See also: [Dolphin emulator](hhttps://github.com/dolphin-emu/dolphin/blob/cdbea8867df3d0a6fc375e78726dae95612fb1fd/Source/Core/VideoCommon/DriverDetails.h#L84) own list of driver bugs (which are also included here).
|
|
||||||
|
|
||||||
## Vulkan
|
|
||||||
|
|
||||||
| Vendor/GPU | OS | Drivers | Version | Bug |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| AMD | All | Proprietary | ? | `VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT` on GCN4 and lower is broken. |
|
|
||||||
| AMD | All | Proprietary | ? | GCN4 and earlier have broken `VK_EXT_sampler_filter_minmax`. |
|
|
||||||
| AMD | All | Proprietary | ? | If offset + stride * count is greater than the size, then the last attribute will have the wrong value for vertex buffers. |
|
|
||||||
| AMD | All | Proprietary | ? | On GCN, 2D mipmapped texture arrays (with width == height) where there are more than 6 layers causes broken corrupt mipmaps. |
|
|
||||||
| AMD | All | RADV, MESA | ? | Using LLVM emitter causes corrupt FP16, proprietary drivers unaffected. |
|
|
||||||
| AMD | All | Proprietary | ? | Incorrect implementation of VK_EXT_depth_clamp_control causes incorrect depth values to be written to the depth buffer. |
|
|
||||||
| AMD | macOS | Proprietary | ? | `gl_HelperInvocation` is actually `!gl_HelperInvocation`. |
|
|
||||||
| NVIDIA | All | Proprietary | ? | Drivers for ampere and newer have broken float16 math. |
|
|
||||||
| NVIDIA | All | Proprietary | >=510.0.0 | Versions >= 510 do not support MSAA->MSAA image blits. |
|
|
||||||
| NVIDIA | All | Proprietary | ? | Shader stencil export not supported. |
|
|
||||||
| NVIDIA | All | Proprietary | ? | Doesn't properly support conditional barriers. |
|
|
||||||
| NVIDIA | All | Proprietary | ? | GPUs pre-turing doesn't properly work with push descriptors. |
|
|
||||||
| NVIDIA | All | All | ? | Calling `vkCmdClearAttachments` with a partial rect, or specifying a render area in a render pass with the load op set to clear can cause the GPU to lock up, or raise a bounds violation. This only occurs on MSAA framebuffers, and it seems when there are multiple clears in a single command buffer. Worked around by back to the slow path (drawing quads) when MSAA is enabled. |
|
|
||||||
| Intel | All | Proprietary | <27.20.100.0 | Intel Windows versions before 27.20.100.0 has broken `VK_EXT_vertex_input_dynamic_state`. |
|
|
||||||
| Intel | All | Proprietary | ? | Intel proprietary drivers do not support MSAA->MSAA image blits. |
|
|
||||||
| Intel | All | Proprietary | 0.405.0<br>until<br>0.405.286 | Intel proprietary drivers 0.405.0 until 0.405.286 have broken compute. |
|
|
||||||
| Intel | macOS | Proprietary | ? | Using dynamic sampler indexing locks up the GPU. |
|
|
||||||
| Intel | macOS | Proprietary | ? | Using subgroupMax in a shader that can discard results in garbage data. |
|
|
||||||
| Intel | All | Mesa | ? | Broken lines in geometry shaders when writing to `gl_ClipDistance` in the vertex shader. |
|
|
||||||
| Qualcomm | All | Proprietary | ? | Using too many samplers (on A8XX is `65536`) can cause heap exhaustion, recommended to use 75% of total available samplers. |
|
|
||||||
| Qualcomm | All | Proprietary | ? | Qualcomm Adreno GPUs doesn't handle scaled vertex attributes `VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME`. |
|
|
||||||
| Qualcomm | All | Proprietary | ? | 64-bit integer extensions (`VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME`) cause nondescriptive crashes and stability issues. |
|
|
||||||
| Qualcomm | All | All | ? | Driver requires higher-than-reported binding limits (32). |
|
|
||||||
| Qualcomm | All | All | ? | On Adreno, enabling rasterizer discard somehow corrupts the viewport state; a workaround is forcing it to be updated on next use. |
|
|
||||||
| Qualcomm | All | Proprietary | ? | Concurrent fence waits are unsupported. |
|
|
||||||
| Qualcomm | All | Proprietary | ? | `vkCmdCopyImageToBuffer` allocates a staging image when used to copy from an image with optimal tiling; which results in overall slower performance. |
|
|
||||||
| Qualcomm | All | Proprietary | ? | 32-bit depth clears are broken in the Adreno Vulkan driver, and have no effect. |
|
|
||||||
| Qualcomm | All | Proprietary | ? | It should be safe to release the resources before actually resetting the VkCommandPool. However, devices running R drivers there was a few months period where the driver had a bug which it incorrectly was accessing objects on the command buffer while it was being reset. If these objects were already destroyed (which is a valid thing to do) it would crash. |
|
|
||||||
| Qualcomm | All | Proprietary | ? | On Pixel and Pixel2XL's with Adreno 530 and 540s, setting width and height to 10s reliably triggers what appears to be a driver race condition. |
|
|
||||||
| Qualcomm | All | Proprietary | ? | Non-descriptive broken OpPhi SPIRV lowering, originally using OpPhi to choose the result is crashing on Adreno 4xx. Switched to storing the result in a temp variable as glslang does. |
|
|
||||||
| Qualcomm | All | Proprietary | ? | See crbug.com/1241134. The bug appears on Adreno 5xx devices with OS PQ3A. It does not repro on the earlier PPR1 version since the extend blend func extension was not present on the older driver. |
|
|
||||||
| Mali | Android | Proprietary | ? | Non-descriptive green screen on various locations. |
|
|
||||||
| Mali | Android | Proprietary | ? | Cached memory is significantly slower for readbacks than coherent memory in the Mali Vulkan driver, causing high CPU usage in the `__pi___inval_cache_range` kernel function. |
|
|
||||||
| Mali | Android | Proprietary | ? | On some old ARM driver versions, dynamic state for stencil write mask doesn't work correctly in the presence of discard or alpha to coverage, if the static state provided when creating the pipeline has a value of 0 (`alphaToCoverageEnable` and `rasterizerDiscardEnable`). |
|
|
||||||
| Mali | Android | Proprietary | ? | Failing to submit because of a device loss still needs to wait for the fence to signal before deleting. However, there is an ARM bug (b/359822580) where the driver early outs on the fence wait if in a device lost state and thus we can't wait on it. Instead, we just wait on the queue to finish. |
|
|
||||||
| Mali | Android | Proprietary | ? | With Galaxy S7 we see lots of rendering issues when we suballocate VkImages. |
|
|
||||||
| Mali | Android | Proprietary | ? | With Galaxy S7 and S9 we see lots of rendering issues with image filters dropping out when using only primary command buffers. We also see issues on the P30 running Android 28. |
|
|
||||||
| Mali | Android | Proprietary | ? | `RGBA_F32` mipmaps appear to be broken on some Mali devices. |
|
|
||||||
| Mali | Android | Proprietary | ? | Matrix IR lowering for matrix swizzle, scalar multiplication and unary `(+m)`/`(-m)` present extraneous unexplained bugs with more than 32 matrix temporals. |
|
|
||||||
| Apple | All | MoltenVK | ? | Driver breaks when using more than 16 vertex attributes/bindings. |
|
|
||||||
| Apple | macOS | Proprietary | >4 | Some driver and Apple Silicon GPU combinations have problems with fragment discard when early depth test is enabled. Discarded fragments may appear corrupted. |
|
|
||||||
| Apple | iOS | MoltenVK | ? | Null descriptors cause non-descriptive issues. |
|
|
||||||
| Apple | iOS | MoltenVK | ? | Push descriptors cause non-descriptive issues. |
|
|
||||||
| Imagination | Android | Proprietary | ? | Some vulkan implementations don't like the 'clear' loadop renderpass if you try to use a framebuffer with a different load/store op than that which it was created with, despite the spec saying they should be compatible. |
|
|
||||||
| Intel<br>Qualcomm<br>AMD<br>Apple | All | All<br>MoltenVK (Apple) | ? | Reversed viewport depth range does not work as intended on some Vulkan drivers. The Vulkan spec allows the `minDepth`/`maxDepth` fields in the viewport to be reversed, however the implementation is broken on some drivers. |
|
|
||||||
|
|
||||||
AMD: List of driver IDs:
|
|
||||||
- Proprietary: `VK_DRIVER_ID_AMD_PROPRIETARY`
|
|
||||||
- OSS: `VK_DRIVER_ID_AMD_OPEN_SOURCE`
|
|
||||||
- MESA: `VK_DRIVER_ID_MESA_RADV`
|
|
||||||
|
|
||||||
NVIDIA: List of driver IDs:
|
|
||||||
- Proprietary: `VK_DRIVER_ID_NVIDIA_PROPRIETARY`.
|
|
||||||
- MESA: `VK_DRIVER_ID_MESA_NVK`.
|
|
||||||
|
|
||||||
Intel: List of driver IDs:
|
|
||||||
- Proprietary: `VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS`.
|
|
||||||
- MESA: `VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA`.
|
|
||||||
|
|
||||||
Qualcomm: List of driver IDs:
|
|
||||||
- Proprietary: `VK_DRIVER_ID_QUALCOMM_PROPRIETARY`.
|
|
||||||
- MESA: `VK_DRIVER_ID_MESA_TURNIP`.
|
|
||||||
|
|
||||||
Mali: List of driver IDs:
|
|
||||||
- Proprietary: `VK_DRIVER_ID_ARM_PROPRIETARY`.
|
|
||||||
- MESA: `VK_DRIVER_ID_MESA_PANVK`.
|
|
||||||
|
|
||||||
Samsung: List of driver IDs:
|
|
||||||
- Proprietary: `VK_DRIVER_ID_SAMSUNG_PROPRIETARY`.
|
|
||||||
|
|
||||||
Apple: List of driver IDs:
|
|
||||||
- MoltenVK/MVK: `VK_DRIVER_ID_MOLTENVK`.
|
|
||||||
- KosmicKrisp: `VK_DRIVER_ID_MESA_KOSMICKRISP`.
|
|
||||||
- HoneyKrisp: `VK_DRIVER_ID_MESA_HONEYKRISP`.
|
|
||||||
|
|
||||||
PowerVR: List of driver IDs:
|
|
||||||
- Proprietary: `VK_DRIVER_ID_IMAGINATION_PROPRIETARY`.
|
|
||||||
- MESA: `VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA`.
|
|
||||||
|
|
||||||
Software Rasterizers: List of driver IDs:
|
|
||||||
- SwiftShader: `VK_DRIVER_ID_GOOGLE_SWIFTSHADER`.
|
|
||||||
- LLVMPipe: `VK_DRIVER_ID_MESA_LLVMPIPE`.
|
|
||||||
|
|
||||||
Broadcom: List of driver IDs:
|
|
||||||
- Proprietary: `VK_DRIVER_ID_BROADCOM_PROPRIETARY`.
|
|
||||||
- MESA: `VK_DRIVER_ID_MESA_V3DV`.
|
|
||||||
|
|
||||||
Verisilicon: List of driver IDs:
|
|
||||||
- Proprietary: `VK_DRIVER_ID_VERISILICON_PROPRIETARY`.
|
|
||||||
|
|
||||||
Other: List of driver IDs:
|
|
||||||
- SC: `VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN`.
|
|
||||||
- GGP (Stadia): `VK_DRIVER_ID_GGP_PROPRIETARY`.
|
|
||||||
- CoreAVI (Cars): `VK_DRIVER_ID_COREAVI_PROPRIETARY`.
|
|
||||||
- Juice (Remote GPU): `VK_DRIVER_ID_JUICE_PROPRIETARY`.
|
|
||||||
- Venus (Virtio GPU): `VK_DRIVER_ID_MESA_VENUS`.
|
|
||||||
- Dozen (Vulkan on DirectX): `VK_DRIVER_ID_MESA_DOZEN`.
|
|
||||||
|
|
||||||
## OpenGL
|
|
||||||
|
|
||||||
| Vendor/GPU | OS | Drivers | Version | Bug |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| All | Android | All | ? | In OpenGL, multi-threaded shader pre-compilation sometimes crashes. |
|
|
||||||
| All | All | Mesa | ? | https://github.com/KhronosGroup/glslang/pull/2646 |
|
|
||||||
|
|
@ -1,874 +0,0 @@
|
||||||
# The NVIDIA SM86 (Maxwell) GPU - Instruction set
|
|
||||||
|
|
||||||
<!-- TOC -->
|
|
||||||
[AL2P](#AL2P)
|
|
||||||
[ALD](#ALD)
|
|
||||||
[AST](#AST)
|
|
||||||
[ATOM](#ATOM)
|
|
||||||
[ATOMS](#ATOMS)
|
|
||||||
[B2R](#B2R)
|
|
||||||
[BAR](#BAR)
|
|
||||||
[BFE](#BFE)
|
|
||||||
[BFI](#BFI)
|
|
||||||
[BPT](#BPT)
|
|
||||||
[BRA](#BRA)
|
|
||||||
[BRK](#BRK)
|
|
||||||
[BRX](#BRX)
|
|
||||||
[CAL](#CAL)
|
|
||||||
[CCTL](#CCTL)
|
|
||||||
[CCTLL](#CCTLL)
|
|
||||||
[CONT](#CONT)
|
|
||||||
[CS2R](#CS2R)
|
|
||||||
[CSET](#CSET)
|
|
||||||
[CSETP](#CSETP)
|
|
||||||
[DADD](#DADD)
|
|
||||||
[DEPBAR](#DEPBAR)
|
|
||||||
[DFMA](#DFMA)
|
|
||||||
[DMNMX](#DMNMX)
|
|
||||||
[DMUL](#DMUL)
|
|
||||||
[DSET](#DSET)
|
|
||||||
[DSETP](#DSETP)
|
|
||||||
[EXIT](#EXIT)
|
|
||||||
[F2F](#F2F)
|
|
||||||
[F2I](#F2I)
|
|
||||||
[FADD](#FADD)
|
|
||||||
[FCHK](#FCHK)
|
|
||||||
[FCMP](#FCMP)
|
|
||||||
[FFMA](#FFMA)
|
|
||||||
[FLO](#FLO)
|
|
||||||
[FMNMX](#FMNMX)
|
|
||||||
[FMUL](#FMUL)
|
|
||||||
[FSET](#FSET)
|
|
||||||
[FSETP](#FSETP)
|
|
||||||
[FSWZADD](#FSWZADD)
|
|
||||||
[GETCRSPTR](#GETCRSPTR)
|
|
||||||
[GETLMEMBASE](#GETLMEMBASE)
|
|
||||||
[HADD2](#HADD2)
|
|
||||||
[HFMA2](#HFMA2)
|
|
||||||
[HMUL2](#HMUL2)
|
|
||||||
[HSET2](#HSET2)
|
|
||||||
[HSETP2](#HSETP2)
|
|
||||||
[I2F](#I2F)
|
|
||||||
[I2I](#I2I)
|
|
||||||
[IADD](#IADD)
|
|
||||||
[IADD3](#IADD3)
|
|
||||||
[ICMP](#ICMP)
|
|
||||||
[IDE](#IDE)
|
|
||||||
[IDP](#IDP)
|
|
||||||
[IMAD](#IMAD)
|
|
||||||
[IMADSP](#IMADSP)
|
|
||||||
[IMNMX](#IMNMX)
|
|
||||||
[IMUL](#IMUL)
|
|
||||||
[IPA](#IPA)
|
|
||||||
[ISBERD](#ISBERD)
|
|
||||||
[ISCADD](#ISCADD)
|
|
||||||
[ISET](#ISET)
|
|
||||||
[ISETP](#ISETP)
|
|
||||||
[JCAL](#JCAL)
|
|
||||||
[JMP](#JMP)
|
|
||||||
[JMX](#JMX)
|
|
||||||
[KIL](#KIL)
|
|
||||||
[LD](#LD)
|
|
||||||
[LDC](#LDC)
|
|
||||||
[LDG](#LDG)
|
|
||||||
[LDL](#LDL)
|
|
||||||
[LDS](#LDS)
|
|
||||||
[LEA](#LEA)
|
|
||||||
[LEPC](#LEPC)
|
|
||||||
[LONGJMP](#LONGJMP)
|
|
||||||
[LOP](#LOP)
|
|
||||||
[LOP3](#LOP3)
|
|
||||||
[MEMBAR](#MEMBAR)
|
|
||||||
[MOV](#MOV)
|
|
||||||
[MUFU](#MUFU)
|
|
||||||
[NOP](#NOP)
|
|
||||||
[OUT](#OUT)
|
|
||||||
[P2R](#P2R)
|
|
||||||
[PBK](#PBK)
|
|
||||||
[PCNT](#PCNT)
|
|
||||||
[PEXIT](#PEXIT)
|
|
||||||
[PIXLD](#PIXLD)
|
|
||||||
[PLONGJMP](#PLONGJMP)
|
|
||||||
[POPC](#POPC)
|
|
||||||
[PRET](#PRET)
|
|
||||||
[PRMT](#PRMT)
|
|
||||||
[PSET](#PSET)
|
|
||||||
[PSETP](#PSETP)
|
|
||||||
[R2B](#R2B)
|
|
||||||
[R2P](#R2P)
|
|
||||||
[RAM](#RAM)
|
|
||||||
[RED](#RED)
|
|
||||||
[RET](#RET)
|
|
||||||
[RRO](#RRO)
|
|
||||||
[RTT](#RTT)
|
|
||||||
[S2R](#S2R)
|
|
||||||
[SAM](#SAM)
|
|
||||||
[SEL](#SEL)
|
|
||||||
[SETCRSPTR](#SETCRSPTR)
|
|
||||||
[SETLMEMBASE](#SETLMEMBASE)
|
|
||||||
[SHF](#SHF)
|
|
||||||
[SHFL](#SHFL)
|
|
||||||
[SHL](#SHL)
|
|
||||||
[SHR](#SHR)
|
|
||||||
[SSY](#SSY)
|
|
||||||
[ST](#ST)
|
|
||||||
[STG](#STG)
|
|
||||||
[STL](#STL)
|
|
||||||
[STP](#STP)
|
|
||||||
[STS](#STS)
|
|
||||||
[SUATOM](#SUATOM)
|
|
||||||
[SULD](#SULD)
|
|
||||||
[SURED](#SURED)
|
|
||||||
[SUST](#SUST)
|
|
||||||
[SYNC](#SYNC)
|
|
||||||
[TEX](#TEX)
|
|
||||||
[TLD](#TLD)
|
|
||||||
[TLD4](#TLD4)
|
|
||||||
[TMML](#TMML)
|
|
||||||
[TXA](#TXA)
|
|
||||||
[TXD](#TXD)
|
|
||||||
[TXQ](#TXQ)
|
|
||||||
[VABSDIFF](#VABSDIFF)
|
|
||||||
[VABSDIFF4](#VABSDIFF4)
|
|
||||||
[VADD](#VADD)
|
|
||||||
[VMAD](#VMAD)
|
|
||||||
[VMNMX](#VMNMX)
|
|
||||||
[VOTE](#VOTE)
|
|
||||||
[VSET](#VSET)
|
|
||||||
[VSETP](#VSETP)
|
|
||||||
[VSHL](#VSHL)
|
|
||||||
[VSHR](#VSHR)
|
|
||||||
[XMAD](#XMAD)
|
|
||||||
<!-- /TOC -->
|
|
||||||
|
|
||||||
NOTE: Regenerate TOC with `cat docs/gpu/README.md | grep '#' | cut -d '#' -f 2 | tr -d ' ' | awk '{print "["$1"](#"$1")"}'`.
|
|
||||||
|
|
||||||
The numbers (in binary) represent the opcodes; `-` signifies "don't care".
|
|
||||||
|
|
||||||
# AL2P
|
|
||||||
`1110 1111 1010 0---`
|
|
||||||
|
|
||||||
# ALD
|
|
||||||
`1110 1111 1101 1---`
|
|
||||||
|
|
||||||
# AST
|
|
||||||
`1110 1111 1111 0---`
|
|
||||||
|
|
||||||
# ATOM
|
|
||||||
- **ATOM_cas**: `1110 1110 1111 ----`
|
|
||||||
- **ATOM**: `1110 1101 ---- ----`
|
|
||||||
|
|
||||||
Atomic operation.
|
|
||||||
|
|
||||||
- INC, DEC for U32/S32/U64 does nothing.
|
|
||||||
- ADD, INC, DEC for S64 does nothing.
|
|
||||||
- Only ADD does something for F32.
|
|
||||||
- Only ADD, MIN and MAX does something for F16x2.
|
|
||||||
|
|
||||||
# ATOMS
|
|
||||||
- **ATOMS_cas**: `1110 1110 ---- ----`
|
|
||||||
- **ATOMS**: `1110 1100 ---- ----`
|
|
||||||
|
|
||||||
# B2R
|
|
||||||
`1111 0000 1011 1---`
|
|
||||||
|
|
||||||
# BAR
|
|
||||||
`1111 0000 1010 1---`
|
|
||||||
|
|
||||||
# BFE
|
|
||||||
- **BFE_reg**: `0101 1100 0000 0---`
|
|
||||||
- **BFE_cbuf**: `0100 1100 0000 0---`
|
|
||||||
- **BFE_imm**: `0011 100- 0000 0---`
|
|
||||||
|
|
||||||
Bit Field Extract.
|
|
||||||
|
|
||||||
# BFI
|
|
||||||
- **BFI_reg**: `0101 1011 1111 0---`
|
|
||||||
- **BFI_rc**: `0101 0011 1111 0---`
|
|
||||||
- **BFI_cr**: `0100 1011 1111 0---`
|
|
||||||
- **BFI_imm**: `0011 011- 1111 0---`
|
|
||||||
|
|
||||||
Bit Field Insert.
|
|
||||||
|
|
||||||
# BPT
|
|
||||||
`1110 0011 1010 ----`
|
|
||||||
|
|
||||||
Breakpoint trap.
|
|
||||||
|
|
||||||
# BRA
|
|
||||||
`1110 0010 0100 ----`
|
|
||||||
|
|
||||||
Relative branch.
|
|
||||||
|
|
||||||
# BRK
|
|
||||||
`1110 0011 0100 ----`
|
|
||||||
|
|
||||||
Break.
|
|
||||||
|
|
||||||
# BRX
|
|
||||||
`1110 0010 0101 ----`
|
|
||||||
|
|
||||||
# CAL
|
|
||||||
`1110 0010 0110 ----`
|
|
||||||
|
|
||||||
# CCTL
|
|
||||||
`1110 1111 011- ----`
|
|
||||||
|
|
||||||
Cache Control.
|
|
||||||
|
|
||||||
# CCTLL
|
|
||||||
`1110 1111 100- ----`
|
|
||||||
|
|
||||||
Texture Cache Control.
|
|
||||||
|
|
||||||
# CONT
|
|
||||||
`1110 0011 0101 ----`
|
|
||||||
|
|
||||||
Continue.
|
|
||||||
|
|
||||||
# CS2R
|
|
||||||
`0101 0000 1100 1---`
|
|
||||||
|
|
||||||
Move Special Register to Register.
|
|
||||||
|
|
||||||
# CSET
|
|
||||||
`0101 0000 1001 1---`
|
|
||||||
|
|
||||||
Test Condition Code And Set.
|
|
||||||
|
|
||||||
# CSETP
|
|
||||||
`0101 0000 1010 0---`
|
|
||||||
|
|
||||||
Test Condition Code and Set Predicate.
|
|
||||||
|
|
||||||
# DADD
|
|
||||||
- **DADD_reg**: `0101 1100 0111 0---`
|
|
||||||
- **DADD_cbuf**: `0100 1100 0111 0---`
|
|
||||||
- **DADD_imm**: `0011 100- 0111 0---`
|
|
||||||
|
|
||||||
# DEPBAR
|
|
||||||
`1111 0000 1111 0---`
|
|
||||||
|
|
||||||
# DFMA
|
|
||||||
- **DFMA_reg**: `0101 1011 0111 ----`
|
|
||||||
- **DFMA_rc**: `0101 0011 0111 ----`
|
|
||||||
- **DFMA_cr**: `0100 1011 0111 ----`
|
|
||||||
- **DFMA_imm**: `0011 011- 0111 ----`
|
|
||||||
|
|
||||||
FP64 Fused Mutiply Add.
|
|
||||||
|
|
||||||
# DMNMX
|
|
||||||
- **DMNMX_reg**: `0101 1100 0101 0---`
|
|
||||||
- **DMNMX_cbuf**: `0100 1100 0101 0---`
|
|
||||||
- **DMNMX_imm**: `0011 100- 0101 0---`
|
|
||||||
|
|
||||||
FP64 Minimum/Maximum.
|
|
||||||
|
|
||||||
# DMUL
|
|
||||||
- **DMUL_reg**: `0101 1100 1000 0---`
|
|
||||||
- **DMUL_cbuf**: `0100 1100 1000 0---`
|
|
||||||
- **DMUL_imm**: `0011 100- 1000 0---`
|
|
||||||
|
|
||||||
FP64 Multiply.
|
|
||||||
|
|
||||||
# DSET
|
|
||||||
- **DSET_reg**: `0101 1001 0--- ----`
|
|
||||||
- **DSET_cbuf**: `0100 1001 0--- ----`
|
|
||||||
- **DSET_imm**: `0011 001- 0--- ----`
|
|
||||||
|
|
||||||
FP64 Compare And Set.
|
|
||||||
|
|
||||||
# DSETP
|
|
||||||
- **DSETP_reg**: `0101 1011 1000 ----`
|
|
||||||
- **DSETP_cbuf**: `0100 1011 1000 ----`
|
|
||||||
- **DSETP_imm**: `0011 011- 1000 ----`
|
|
||||||
|
|
||||||
FP64 Compare And Set Predicate.
|
|
||||||
|
|
||||||
# EXIT
|
|
||||||
`1110 0011 0000 ----`
|
|
||||||
|
|
||||||
# F2F
|
|
||||||
- **F2F_reg**: `0101 1100 1010 1---`
|
|
||||||
- **F2F_cbuf**: `0100 1100 1010 1---`
|
|
||||||
- **F2F_imm**: `0011 100- 1010 1---`
|
|
||||||
|
|
||||||
# F2I
|
|
||||||
- **F2I_reg**: `0101 1100 1011 0---`
|
|
||||||
- **F2I_cbuf**: `0100 1100 1011 0---`
|
|
||||||
- **F2I_imm**: `0011 100- 1011 0---`
|
|
||||||
|
|
||||||
# FADD
|
|
||||||
- **FADD_reg**: `0101 1100 0101 1---`
|
|
||||||
- **FADD_cbuf**: `0100 1100 0101 1---`
|
|
||||||
- **FADD_imm**: `0011 100- 0101 1---`
|
|
||||||
- **FADD32I**: `0000 10-- ---- ----`
|
|
||||||
|
|
||||||
FP32 Add.
|
|
||||||
|
|
||||||
# FCHK
|
|
||||||
- **FCHK_reg**: `0101 1100 1000 1---`
|
|
||||||
- **FCHK_cbuf**: `0100 1100 1000 1---`
|
|
||||||
- **FCHK_imm**: `0011 100- 1000 1---`
|
|
||||||
|
|
||||||
Single Precision FP Divide Range Check.
|
|
||||||
|
|
||||||
# FCMP
|
|
||||||
- **FCMP_reg**: `0101 1011 1010 ----`
|
|
||||||
- **FCMP_rc**: `0101 0011 1010 ----`
|
|
||||||
- **FCMP_cr**: `0100 1011 1010 ----`
|
|
||||||
- **FCMP_imm**: `0011 011- 1010 ----`
|
|
||||||
|
|
||||||
FP32 Compare to Zero and Select Source.
|
|
||||||
|
|
||||||
# FFMA
|
|
||||||
- **FFMA_reg**: `0101 1001 1--- ----`
|
|
||||||
- **FFMA_rc**: `0101 0001 1--- ----`
|
|
||||||
- **FFMA_cr**: `0100 1001 1--- ----`
|
|
||||||
- **FFMA_imm**: `0011 001- 1--- ----`
|
|
||||||
- **FFMA32I**: `0000 11-- ---- ----`
|
|
||||||
|
|
||||||
FP32 Fused Multiply and Add.
|
|
||||||
|
|
||||||
# FLO
|
|
||||||
- **FLO_reg**: `0101 1100 0011 0---`
|
|
||||||
- **FLO_cbuf**: `0100 1100 0011 0---`
|
|
||||||
- **FLO_imm**: `0011 100- 0011 0---`
|
|
||||||
|
|
||||||
# FMNMX
|
|
||||||
- **FMNMX_reg**: `0101 1100 0110 0---`
|
|
||||||
- **FMNMX_cbuf**: `0100 1100 0110 0---`
|
|
||||||
- **FMNMX_imm**: `0011 100- 0110 0---`
|
|
||||||
|
|
||||||
FP32 Minimum/Maximum.
|
|
||||||
|
|
||||||
# FMUL
|
|
||||||
- **FMUL_reg**: `0101 1100 0110 1---`
|
|
||||||
- **FMUL_cbuf**: `0100 1100 0110 1---`
|
|
||||||
- **FMUL_imm**: `0011 100- 0110 1---`
|
|
||||||
- **FMUL32I**: `0001 1110 ---- ----`
|
|
||||||
|
|
||||||
FP32 Multiply.
|
|
||||||
|
|
||||||
# FSET
|
|
||||||
- **FSET_reg**: `0101 1000 ---- ----`
|
|
||||||
- **FSET_cbuf**: `0100 1000 ---- ----`
|
|
||||||
- **FSET_imm**: `0011 000- ---- ----`
|
|
||||||
|
|
||||||
FP32 Compare And Set.
|
|
||||||
|
|
||||||
# FSETP
|
|
||||||
- **FSETP_reg**: `0101 1011 1011 ----`
|
|
||||||
- **FSETP_cbuf**: `0100 1011 1011 ----`
|
|
||||||
- **FSETP_imm**: `0011 011- 1011 ----`
|
|
||||||
|
|
||||||
FP32 Compare And Set Predicate.
|
|
||||||
|
|
||||||
# FSWZADD
|
|
||||||
`0101 0000 1111 1---`
|
|
||||||
|
|
||||||
FP32 Add used for FSWZ emulation.
|
|
||||||
|
|
||||||
# GETCRSPTR
|
|
||||||
`1110 0010 1100 ----`
|
|
||||||
|
|
||||||
# GETLMEMBASE
|
|
||||||
`1110 0010 1101 ----`
|
|
||||||
|
|
||||||
# HADD2
|
|
||||||
- **HADD2_reg**: `0101 1101 0001 0---`
|
|
||||||
- **HADD2_cbuf**: `0111 101- 1--- ----`
|
|
||||||
- **HADD2_imm**: `0111 101- 0--- ----`
|
|
||||||
- **HADD2_32I**: `0010 110- ---- ----`
|
|
||||||
|
|
||||||
FP16 Add.
|
|
||||||
|
|
||||||
# HFMA2
|
|
||||||
- **HFMA2_reg**: `0101 1101 0000 0---`
|
|
||||||
- **HFMA2_rc**: `0110 0--- 1--- ----`
|
|
||||||
- **HFMA2_cr**: `0111 0--- 1--- ----`
|
|
||||||
- **HFMA2_imm**: `0111 0--- 0--- ----`
|
|
||||||
- **HFMA2_32I**: `0010 100- ---- ----`
|
|
||||||
|
|
||||||
FP16 Fused Mutiply Add.
|
|
||||||
|
|
||||||
# HMUL2
|
|
||||||
- **HMUL2_reg**: `0101 1101 0000 1---`
|
|
||||||
- **HMUL2_cbuf**: `0111 100- 1--- ----`
|
|
||||||
- **HMUL2_imm**: `0111 100- 0--- ----`
|
|
||||||
- **HMUL2_32I**: `0010 101- ---- ----`
|
|
||||||
|
|
||||||
FP16 Multiply.
|
|
||||||
|
|
||||||
# HSET2
|
|
||||||
- **HSET2_reg**: `0101 1101 0001 1---`
|
|
||||||
- **HSET2_cbuf**: `0111 110- 1--- ----`
|
|
||||||
- **HSET2_imm**: `0111 110- 0--- ----`
|
|
||||||
|
|
||||||
FP16 Compare And Set.
|
|
||||||
|
|
||||||
# HSETP2
|
|
||||||
- **HSETP2_reg**: `0101 1101 0010 0---`
|
|
||||||
- **HSETP2_cbuf**: `0111 111- 1--- ----`
|
|
||||||
- **HSETP2_imm**: `0111 111- 0--- ----`
|
|
||||||
|
|
||||||
FP16 Compare And Set Predicate.
|
|
||||||
|
|
||||||
# I2F
|
|
||||||
- **I2F_reg**: `0101 1100 1011 1---`
|
|
||||||
- **I2F_cbuf**: `0100 1100 1011 1---`
|
|
||||||
- **I2F_imm**: `0011 100- 1011 1---`
|
|
||||||
|
|
||||||
# I2I
|
|
||||||
- **I2I_reg**: `0101 1100 1110 0---`
|
|
||||||
- **I2I_cbuf**: `0100 1100 1110 0---`
|
|
||||||
- **I2I_imm**: `0011 100- 1110 0---`
|
|
||||||
|
|
||||||
# IADD
|
|
||||||
- **IADD_reg**: `0101 1100 0001 0---`
|
|
||||||
- **IADD_cbuf**: `0100 1100 0001 0---`
|
|
||||||
- **IADD_imm**: `0011 100- 0001 0---`
|
|
||||||
|
|
||||||
Integer Addition.
|
|
||||||
|
|
||||||
# IADD3
|
|
||||||
- **IADD3_reg**: `0101 1100 1100 ----`
|
|
||||||
- **IADD3_cbuf**: `0100 1100 1100 ----`
|
|
||||||
- **IADD3_imm**: `0011 100- 1100 ----`
|
|
||||||
- **IADD32I**: `0001 110- ---- ----`
|
|
||||||
|
|
||||||
3-input Integer Addition.
|
|
||||||
|
|
||||||
# ICMP
|
|
||||||
- **ICMP_reg**: `0101 1011 0100 ----`
|
|
||||||
- **ICMP_rc**: `0101 0011 0100 ----`
|
|
||||||
- **ICMP_cr**: `0100 1011 0100 ----`
|
|
||||||
- **ICMP_imm**: `0011 011- 0100 ----`
|
|
||||||
|
|
||||||
Integer Compare to Zero and Select Source.
|
|
||||||
|
|
||||||
# IDE
|
|
||||||
`1110 0011 1001 ----`
|
|
||||||
|
|
||||||
# IDP
|
|
||||||
- **IDP_reg**: `0101 0011 1111 1---`
|
|
||||||
- **IDP_imm**: `0101 0011 1101 1---`
|
|
||||||
|
|
||||||
# IMAD
|
|
||||||
- **IMAD_reg**: `0101 1010 0--- ----`
|
|
||||||
- **IMAD_rc**: `0101 0010 0--- ----`
|
|
||||||
- **IMAD_cr**: `0100 1010 0--- ----`
|
|
||||||
- **IMAD_imm**: `0011 010- 0--- ----`
|
|
||||||
- **IMAD32I**: `1000 00-- ---- ----`
|
|
||||||
|
|
||||||
Integer Multiply And Add.
|
|
||||||
|
|
||||||
# IMADSP
|
|
||||||
- **IMADSP_reg**: `0101 1010 1--- ----`
|
|
||||||
- **IMADSP_rc**: `0101 0010 1--- ----`
|
|
||||||
- **IMADSP_cr**: `0100 1010 1--- ----`
|
|
||||||
- **IMADSP_imm**: `0011 010- 1--- ----`
|
|
||||||
|
|
||||||
Extracted Integer Multiply And Add..
|
|
||||||
|
|
||||||
# IMNMX
|
|
||||||
- **IMNMX_reg**: `0101 1100 0010 0---`
|
|
||||||
- **IMNMX_cbuf**: `0100 1100 0010 0---`
|
|
||||||
- **IMNMX_imm**: `0011 100- 0010 0---`
|
|
||||||
|
|
||||||
Integer Minimum/Maximum.
|
|
||||||
|
|
||||||
# IMUL
|
|
||||||
- **IMUL_reg**: `0101 1100 0011 1---`
|
|
||||||
- **IMUL_cbuf**: `0100 1100 0011 1---`
|
|
||||||
- **IMUL_imm**: `0011 100- 0011 1---`
|
|
||||||
- **IMUL32I**: `0001 1111 ---- ----`
|
|
||||||
|
|
||||||
Integer Multiply.
|
|
||||||
|
|
||||||
# IPA
|
|
||||||
`1110 0000 ---- ----`
|
|
||||||
|
|
||||||
# ISBERD
|
|
||||||
`1110 1111 1101 0---`
|
|
||||||
|
|
||||||
In-Stage-Buffer Entry Read.
|
|
||||||
|
|
||||||
# ISCADD
|
|
||||||
- **ISCADD_reg**: `0101 1100 0001 1---`
|
|
||||||
- **ISCADD_cbuf**: `0100 1100 0001 1---`
|
|
||||||
- **ISCADD_imm**: `0011 100- 0001 1---`
|
|
||||||
- **ISCADD32I**: `0001 01-- ---- ----`
|
|
||||||
|
|
||||||
Scaled Integer Addition.
|
|
||||||
|
|
||||||
# ISET
|
|
||||||
- **ISET_reg**: `0101 1011 0101 ----`
|
|
||||||
- **ISET_cbuf**: `0100 1011 0101 ----`
|
|
||||||
- **ISET_imm**: `0011 011- 0101 ----`
|
|
||||||
|
|
||||||
Integer Compare And Set.
|
|
||||||
|
|
||||||
# ISETP
|
|
||||||
- **ISETP_reg**: `0101 1011 0110 ----`
|
|
||||||
- **ISETP_cbuf**: `0100 1011 0110 ----`
|
|
||||||
- **ISETP_imm**: `0011 011- 0110 ----`
|
|
||||||
|
|
||||||
Integer Compare And Set Predicate.
|
|
||||||
|
|
||||||
# JCAL
|
|
||||||
`1110 0010 0010 ----`
|
|
||||||
|
|
||||||
Absolute Call.
|
|
||||||
|
|
||||||
# JMP
|
|
||||||
`1110 0010 0001 ----`
|
|
||||||
|
|
||||||
Absolute Jump.
|
|
||||||
|
|
||||||
# JMX
|
|
||||||
`1110 0010 0000 ----`
|
|
||||||
|
|
||||||
Absolute Jump Indirect.
|
|
||||||
|
|
||||||
# KIL
|
|
||||||
`1110 0011 0011 ----`
|
|
||||||
|
|
||||||
# LD
|
|
||||||
`100- ---- ---- ----`
|
|
||||||
|
|
||||||
Load from generic Memory.
|
|
||||||
|
|
||||||
# LDC
|
|
||||||
`1110 1111 1001 0---`
|
|
||||||
|
|
||||||
Load Constant.
|
|
||||||
|
|
||||||
# LDG
|
|
||||||
`1110 1110 1101 0---`
|
|
||||||
|
|
||||||
Load from Global Memory.
|
|
||||||
|
|
||||||
# LDL
|
|
||||||
`1110 1111 0100 0---`
|
|
||||||
|
|
||||||
Load within Local Memory Window.
|
|
||||||
|
|
||||||
# LDS
|
|
||||||
`1110 1111 0100 1---`
|
|
||||||
|
|
||||||
Load within Shared Memory Window.
|
|
||||||
|
|
||||||
# LEA
|
|
||||||
- **LEA_hi_reg**: `0101 1011 1101 1---`
|
|
||||||
- **LEA_hi_cbuf**: `0001 10-- ---- ----`
|
|
||||||
- **LEA_lo_reg**: `0101 1011 1101 0---`
|
|
||||||
- **LEA_lo_cbuf**: `0100 1011 1101 ----`
|
|
||||||
- **LEA_lo_imm**: `0011 011- 1101 0---`
|
|
||||||
|
|
||||||
# LEPC
|
|
||||||
`0101 0000 1101 0---`
|
|
||||||
|
|
||||||
# LONGJMP
|
|
||||||
`1110 0011 0001 ----`
|
|
||||||
|
|
||||||
# LOP
|
|
||||||
- **LOP_reg**: `0101 1100 0100 0---`
|
|
||||||
- **LOP_cbuf**: `0100 1100 0100 0---`
|
|
||||||
- **LOP_imm**: `0011 100- 0100 0---`
|
|
||||||
|
|
||||||
# LOP3
|
|
||||||
- **LOP3_reg**: `0101 1011 1110 0---`
|
|
||||||
- **LOP3_cbuf**: `0000 001- ---- ----`
|
|
||||||
- **LOP3_imm**: `0011 11-- ---- ----`
|
|
||||||
- **LOP32I**: `0000 01-- ---- ----`
|
|
||||||
|
|
||||||
# MEMBAR
|
|
||||||
`1110 1111 1001 1---`
|
|
||||||
|
|
||||||
Memory Barrier.
|
|
||||||
|
|
||||||
# MOV
|
|
||||||
- **MOV_reg**: `0101 1100 1001 1---`
|
|
||||||
- **MOV_cbuf**: `0100 1100 1001 1---`
|
|
||||||
- **MOV_imm**: `0011 100- 1001 1---`
|
|
||||||
- **MOV32I**: `0000 0001 0000 ----`
|
|
||||||
|
|
||||||
# MUFU
|
|
||||||
`0101 0000 1000 0---`
|
|
||||||
|
|
||||||
Multi Function Operation.
|
|
||||||
|
|
||||||
# NOP
|
|
||||||
`0101 0000 1011 0---`
|
|
||||||
|
|
||||||
No operation.
|
|
||||||
|
|
||||||
# OUT
|
|
||||||
- **OUT_reg**: `1111 1011 1110 0---`
|
|
||||||
- **OUT_cbuf**: `1110 1011 1110 0---`
|
|
||||||
- **OUT_imm**: `1111 011- 1110 0---`
|
|
||||||
|
|
||||||
# P2R
|
|
||||||
- **P2R_reg**: `0101 1100 1110 1---`
|
|
||||||
- **P2R_cbuf**: `0100 1100 1110 1---`
|
|
||||||
- **P2R_imm**: `0011 1000 1110 1---`
|
|
||||||
|
|
||||||
Move Predicate Register To Register.
|
|
||||||
|
|
||||||
# PBK
|
|
||||||
`1110 0010 1010 ----`
|
|
||||||
|
|
||||||
Pre-break.
|
|
||||||
|
|
||||||
# PCNT
|
|
||||||
`1110 0010 1011 ----`
|
|
||||||
|
|
||||||
Pre-continue.
|
|
||||||
|
|
||||||
# PEXIT
|
|
||||||
`1110 0010 0011 ----`
|
|
||||||
|
|
||||||
Pre-exit.
|
|
||||||
|
|
||||||
# PIXLD
|
|
||||||
`1110 1111 1110 1---`
|
|
||||||
|
|
||||||
# PLONGJMP
|
|
||||||
`1110 0010 1000 ----`
|
|
||||||
|
|
||||||
Pre-long jump.
|
|
||||||
|
|
||||||
# POPC
|
|
||||||
- **POPC_reg**: `0101 1100 0000 1---`
|
|
||||||
- **POPC_cbuf**: `0100 1100 0000 1---`
|
|
||||||
- **POPC_imm**: `0011 100- 0000 1---`
|
|
||||||
|
|
||||||
Population/Bit count.
|
|
||||||
|
|
||||||
# PRET
|
|
||||||
`1110 0010 0111 ----`
|
|
||||||
|
|
||||||
Pre-return from subroutine. Pushes the return address to the CRS stack.
|
|
||||||
|
|
||||||
# PRMT
|
|
||||||
- **PRMT_reg**: `0101 1011 1100 ----`
|
|
||||||
- **PRMT_rc**: `0101 0011 1100 ----`
|
|
||||||
- **PRMT_cr**: `0100 1011 1100 ----`
|
|
||||||
- **PRMT_imm**: `0011 011- 1100 ----`
|
|
||||||
|
|
||||||
# PSET
|
|
||||||
`0101 0000 1000 1---`
|
|
||||||
|
|
||||||
Combine Predicates and Set.
|
|
||||||
|
|
||||||
# PSETP
|
|
||||||
`0101 0000 1001 0---`
|
|
||||||
|
|
||||||
Combine Predicates and Set Predicate.
|
|
||||||
|
|
||||||
# R2B
|
|
||||||
`1111 0000 1100 0---`
|
|
||||||
|
|
||||||
Move Register to Barrier.
|
|
||||||
|
|
||||||
# R2P
|
|
||||||
- **R2P_reg**: `0101 1100 1111 0---`
|
|
||||||
- **R2P_cbuf**: `0100 1100 1111 0---`
|
|
||||||
- **R2P_imm**: `0011 100- 1111 0---`
|
|
||||||
|
|
||||||
Move Register To Predicate/CC Register.
|
|
||||||
|
|
||||||
# RAM
|
|
||||||
`1110 0011 1000 ----`
|
|
||||||
|
|
||||||
# RED
|
|
||||||
`1110 1011 1111 1---`
|
|
||||||
|
|
||||||
Reduction Operation on Generic Memory.
|
|
||||||
|
|
||||||
# RET
|
|
||||||
`1110 0011 0010 ----`
|
|
||||||
|
|
||||||
Return.
|
|
||||||
|
|
||||||
# RRO
|
|
||||||
- **RRO_reg**: `0101 1100 1001 0---`
|
|
||||||
- **RRO_cbuf**: `0100 1100 1001 0---`
|
|
||||||
- **RRO_imm**: `0011 100- 1001 0---`
|
|
||||||
|
|
||||||
# RTT
|
|
||||||
`1110 0011 0110 ----`
|
|
||||||
|
|
||||||
# S2R
|
|
||||||
`1111 0000 1100 1---`
|
|
||||||
|
|
||||||
# SAM
|
|
||||||
`1110 0011 0111 ----`
|
|
||||||
|
|
||||||
# SEL
|
|
||||||
- **SEL_reg**: `0101 1100 1010 0---`
|
|
||||||
- **SEL_cbuf**: `0100 1100 1010 0---`
|
|
||||||
- **SEL_imm**: `0011 100- 1010 0---`
|
|
||||||
|
|
||||||
# SETCRSPTR
|
|
||||||
`1110 0010 1110 ----`
|
|
||||||
|
|
||||||
# SETLMEMBASE
|
|
||||||
`1110 0010 1111 ----`
|
|
||||||
|
|
||||||
# SHF
|
|
||||||
- **SHF_l_reg**: `0101 1011 1111 1---`
|
|
||||||
- **SHF_l_imm**: `0011 011- 1111 1---`
|
|
||||||
- **SHF_r_reg**: `0101 1100 1111 1---`
|
|
||||||
- **SHF_r_imm**: `0011 100- 1111 1---`
|
|
||||||
|
|
||||||
# SHFL
|
|
||||||
`1110 1111 0001 0---`
|
|
||||||
|
|
||||||
# SHL
|
|
||||||
- **SHL_reg**: `0101 1100 0100 1---`
|
|
||||||
- **SHL_cbuf**: `0100 1100 0100 1---`
|
|
||||||
- **SHL_imm**: `0011 100- 0100 1---`
|
|
||||||
|
|
||||||
# SHR
|
|
||||||
- **SHR_reg**: `0101 1100 0010 1---`
|
|
||||||
- **SHR_cbuf**: `0100 1100 0010 1---`
|
|
||||||
- **SHR_imm**: `0011 100- 0010 1---`
|
|
||||||
|
|
||||||
# SSY
|
|
||||||
`1110 0010 1001 ----`
|
|
||||||
|
|
||||||
Set Synchronization Point.
|
|
||||||
|
|
||||||
# ST
|
|
||||||
`101- ---- ---- ----`
|
|
||||||
|
|
||||||
Store to generic Memory.
|
|
||||||
|
|
||||||
# STG
|
|
||||||
`1110 1110 1101 1---`
|
|
||||||
|
|
||||||
Store to global Memory.
|
|
||||||
|
|
||||||
# STL
|
|
||||||
`1110 1111 0101 0---`
|
|
||||||
|
|
||||||
Store within Local or Shared Window.
|
|
||||||
|
|
||||||
# STP
|
|
||||||
`1110 1110 1010 0---`
|
|
||||||
|
|
||||||
Store to generic Memory and Predicate.
|
|
||||||
|
|
||||||
# STS
|
|
||||||
`1110 1111 0101 1---`
|
|
||||||
|
|
||||||
Store within Local or Shared Window.
|
|
||||||
|
|
||||||
# SUATOM
|
|
||||||
- **SUATOM**: `1110 1010 0--- ----`
|
|
||||||
- **SUATOM_cas**: `1110 1010 1--- ----`
|
|
||||||
|
|
||||||
Atomic Op on Surface Memory.
|
|
||||||
|
|
||||||
# SULD
|
|
||||||
`1110 1011 000- ----`
|
|
||||||
|
|
||||||
Surface Load.
|
|
||||||
|
|
||||||
# SURED
|
|
||||||
`1110 1011 010- ----`
|
|
||||||
|
|
||||||
Reduction Op on Surface Memory.
|
|
||||||
|
|
||||||
# SUST
|
|
||||||
`1110 1011 001- ----`
|
|
||||||
|
|
||||||
Surface Store.
|
|
||||||
|
|
||||||
# SYNC
|
|
||||||
`1111 0000 1111 1---`
|
|
||||||
|
|
||||||
# TEX
|
|
||||||
- **TEX**: `1100 0--- ---- ----`
|
|
||||||
- **TEX_b**: `1101 1110 10-- ----`
|
|
||||||
- **TEXS**: `1101 -00- ---- ----`
|
|
||||||
|
|
||||||
Texture Fetch with scalar/non-vec4 source/destinations.
|
|
||||||
|
|
||||||
# TLD
|
|
||||||
- **TLD**: `1101 1100 ---- ----`
|
|
||||||
- **TLD_b**: `1101 1101 ---- ----`
|
|
||||||
- **TLDS**: `1101 -01- ---- ----`
|
|
||||||
|
|
||||||
Texture Load with scalar/non-vec4 source/destinations.
|
|
||||||
|
|
||||||
# TLD4
|
|
||||||
- **TLD4**: `1100 10-- ---- ----`
|
|
||||||
- **TLD4_b**: `1101 1110 11-- ----`
|
|
||||||
- **TLD4S**: `1101 1111 -0-- ----`
|
|
||||||
|
|
||||||
Texture Load 4 with scalar/non-vec4 source/destinations.
|
|
||||||
|
|
||||||
# TMML
|
|
||||||
- **TMML**: `1101 1111 0101 1---`
|
|
||||||
- **TMML_b**: `1101 1111 0110 0---`
|
|
||||||
|
|
||||||
Texture MipMap Level.
|
|
||||||
|
|
||||||
# TXA
|
|
||||||
`1101 1111 0100 0---`
|
|
||||||
|
|
||||||
# TXD
|
|
||||||
- **TXD**: `1101 1110 00-- ----`
|
|
||||||
- **TXD_b**: `1101 1110 01-- ----`
|
|
||||||
|
|
||||||
Texture Fetch With Derivatives.
|
|
||||||
|
|
||||||
# TXQ
|
|
||||||
- **TXQ**: `1101 1111 0100 1---`
|
|
||||||
- **TXQ_b**: `1101 1111 0101 0---`
|
|
||||||
|
|
||||||
Texture Query.
|
|
||||||
|
|
||||||
# VABSDIFF
|
|
||||||
`0101 0100 ---- ----`
|
|
||||||
|
|
||||||
# VABSDIFF4
|
|
||||||
`0101 0000 0--- ----`
|
|
||||||
|
|
||||||
# VADD
|
|
||||||
`0010 00-- ---- ----`
|
|
||||||
|
|
||||||
# VMAD
|
|
||||||
`0101 1111 ---- ----`
|
|
||||||
|
|
||||||
# VMNMX
|
|
||||||
`0011 101- ---- ----`
|
|
||||||
|
|
||||||
# VOTE
|
|
||||||
- **VOTE**: `0101 0000 1101 1---`
|
|
||||||
- **VOTE_vtg**: `0101 0000 1110 0---`
|
|
||||||
|
|
||||||
Vote Across SIMD Thread Group
|
|
||||||
|
|
||||||
# VSET
|
|
||||||
`0100 000- ---- ----`
|
|
||||||
|
|
||||||
# VSETP
|
|
||||||
`0101 0000 1111 0---`
|
|
||||||
|
|
||||||
# VSHL
|
|
||||||
`0101 0111 ---- ----`
|
|
||||||
|
|
||||||
# VSHR
|
|
||||||
`0101 0110 ---- ----`
|
|
||||||
|
|
||||||
# XMAD
|
|
||||||
- **XMAD_reg**: `0101 1011 00-- ----`
|
|
||||||
- **XMAD_rc**: `0101 0001 0--- ----`
|
|
||||||
- **XMAD_cr**: `0100 111- ---- ----`
|
|
||||||
- **XMAD_imm**: `0011 011- 00-- ----`
|
|
||||||
|
|
||||||
Integer Short Multiply Add.
|
|
||||||
|
|
@ -0,0 +1,68 @@
|
||||||
|
# CMake Options
|
||||||
|
|
||||||
|
To change these options, add `-DOPTION_NAME=NEWVALUE` to the command line.
|
||||||
|
|
||||||
|
- On Qt Creator, go to Project -> Current Configuration
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
- Defaults are marked per-platform.
|
||||||
|
- "Non-UNIX" just means Windows/MSVC and Android (yes, macOS is UNIX
|
||||||
|
- Android generally doesn't need to change anything; if you do, go to `src/android/app/build.gradle.kts`
|
||||||
|
- To set a boolean variable to on, use `ON` for the value; to turn it off, use `OFF`
|
||||||
|
- If a variable is mentioned as being e.g. "ON" for a specific platform(s), that means it is defaulted to OFF on others
|
||||||
|
- TYPE is always boolean unless otherwise specified
|
||||||
|
- Format:
|
||||||
|
* `OPTION_NAME` (TYPE DEFAULT) DESCRIPTION
|
||||||
|
|
||||||
|
## Options
|
||||||
|
|
||||||
|
- `YUZU_USE_CPM` (ON for non-UNIX) Use CPM to fetch system dependencies (fmt, boost, etc) if needed. Externals will still be fetched. See the [CPM](CPM.md) and [Deps](Deps.md) docs for more info.
|
||||||
|
- `ENABLE_WEB_SERVICE` (ON) Enable multiplayer service
|
||||||
|
- `ENABLE_WIFI_SCAN` (OFF) Enable WiFi scanning (requires iw on Linux) - experimental
|
||||||
|
- `YUZU_USE_BUNDLED_FFMPEG` (ON for non-UNIX) Download (Windows, Android) or build (UNIX) bundled FFmpeg
|
||||||
|
- `ENABLE_CUBEB` (ON) Enables the cubeb audio backend
|
||||||
|
- `YUZU_TESTS` (ON) Compile tests - requires Catch2
|
||||||
|
- `YUZU_DOWNLOAD_ANDROID_VVL` (ON) Download validation layer binary for Android
|
||||||
|
- `YUZU_ENABLE_LTO` (OFF) Enable link-time optimization
|
||||||
|
* Not recommended on Windows
|
||||||
|
* UNIX may be better off appending `-flto=thin` to compiler args
|
||||||
|
- `YUZU_DOWNLOAD_TIME_ZONE_DATA` (ON) Always download time zone binaries
|
||||||
|
* Currently, build fails without this
|
||||||
|
- `YUZU_USE_FASTER_LD` (ON) Check if a faster linker is available
|
||||||
|
* Only available on UNIX
|
||||||
|
- `YUZU_USE_BUNDLED_MOLTENVK` (ON, macOS only) Download bundled MoltenVK lib)
|
||||||
|
- `YUZU_TZDB_PATH` (string) Path to a pre-downloaded timezone database (useful for nixOS)
|
||||||
|
- `ENABLE_OPENSSL` (ON for Linux and *BSD) Enable OpenSSL backend for the ssl service
|
||||||
|
* Always enabled if the web service is enabled
|
||||||
|
- `YUZU_USE_BUNDLED_OPENSSL` (ON for MSVC) Download bundled OpenSSL build
|
||||||
|
* Always on for Android
|
||||||
|
* Unavailable on OpenBSD
|
||||||
|
- `ENABLE_UPDATE_CHECKER` (OFF) Enable update checker for the Qt an Android frontends
|
||||||
|
|
||||||
|
The following options are desktop only:
|
||||||
|
- `ENABLE_SDL2` (ON) Enable the SDL2 desktop, audio, and input frontend (HIGHLY RECOMMENDED!)
|
||||||
|
* Unavailable on Android
|
||||||
|
- `YUZU_USE_EXTERNAL_SDL2` (ON for non-UNIX) Compiles SDL2 from source
|
||||||
|
- `YUZU_USE_BUNDLED_SDL2` (ON for MSVC) Download a prebuilt SDL2
|
||||||
|
* Unavailable on OpenBSD
|
||||||
|
* Only enabled if YUZU_USE_CPM and ENABLE_SDL2 are both ON
|
||||||
|
- `ENABLE_LIBUSB` (ON) Enable the use of the libusb input frontend (HIGHLY RECOMMENDED)
|
||||||
|
- `ENABLE_OPENGL` (ON) Enable the OpenGL graphics frontend
|
||||||
|
* Unavailable on Windows/ARM64 and Android
|
||||||
|
- `ENABLE_QT` (ON) Enable the Qt frontend (recommended)
|
||||||
|
- `ENABLE_QT_TRANSLATION` (OFF) Enable translations for the Qt frontend
|
||||||
|
- `YUZU_USE_BUNDLED_QT` (ON for MSVC) Download bundled Qt binaries
|
||||||
|
* Note that using **system Qt** requires you to include the Qt CMake directory in `CMAKE_PREFIX_PATH`, e.g:
|
||||||
|
* `-DCMAKE_PREFIX_PATH=C:/Qt/6.9.0/msvc2022_64/lib/cmake/Qt6`
|
||||||
|
- `YUZU_QT_MIRROR` (string) What mirror to use for downloading the bundled Qt libraries
|
||||||
|
- `YUZU_USE_QT_MULTIMEDIA` (OFF) Use QtMultimedia for camera support
|
||||||
|
- `YUZU_USE_QT_WEB_ENGINE` (OFF) Use QtWebEngine for web applet implementation (requires the huge QtWebEngine dependency; not recommended)
|
||||||
|
- `USE_DISCORD_PRESENCE` (OFF) Enables Discord Rich Presence (Qt frontend only)
|
||||||
|
- `YUZU_ROOM` (ON) Enable dedicated room functionality
|
||||||
|
- `YUZU_ROOM_STANDALONE` (ON) Enable standalone room executable (eden-room)
|
||||||
|
* Requires `YUZU_ROOM`
|
||||||
|
- `YUZU_CMD` (ON) Compile the SDL2 frontend (eden-cli) - requires SDL2
|
||||||
|
- `YUZU_CRASH_DUMPS` Compile crash dump (Minidump) support"
|
||||||
|
* Currently only available on Windows and Linux
|
||||||
|
|
||||||
|
See `src/dynarmic/CMakeLists.txt` for additional options--usually, these don't need changed
|
||||||
|
|
@ -5,20 +5,9 @@ This contains documentation created by developers. This contains build instructi
|
||||||
- **[General Build Instructions](Build.md)**
|
- **[General Build Instructions](Build.md)**
|
||||||
- **[Cross Compiling](CrossCompile.md)**
|
- **[Cross Compiling](CrossCompile.md)**
|
||||||
- **[Development Guidelines](Development.md)**
|
- **[Development Guidelines](Development.md)**
|
||||||
|
- **[Coding guidelines](Coding.md)**
|
||||||
- **[Dependencies](Deps.md)**
|
- **[Dependencies](Deps.md)**
|
||||||
- **[Debug Guidelines](./Debug.md)**
|
- **[Debug Guidelines](./Debug.md)**
|
||||||
- **[CPM - CMake Package Manager](./CPMUtil)**
|
- **[CPM - CMake Package Manager](CPMUtil.md)**
|
||||||
- **[Platform-Specific Caveats](Caveats.md)**
|
- **[Platform-Specific Caveats](Caveats.md)**
|
||||||
- **[The NVIDIA SM86 (Maxwell) GPU](./NvidiaGpu.md)**
|
|
||||||
- **[User Handbook](./user)**
|
- **[User Handbook](./user)**
|
||||||
- **[Dynarmic](./dynarmic)**
|
|
||||||
- **[Cross compilation](./CrossCompile.md)**
|
|
||||||
- **[Driver Bugs](./DriverBugs.md)**
|
|
||||||
|
|
||||||
## Policies
|
|
||||||
|
|
||||||
Policies and information on development.
|
|
||||||
|
|
||||||
- **[AI and LLM Usage](./policies/AI.md)**
|
|
||||||
- **[Release Policy](./policies/Release.md)**
|
|
||||||
- **[Coding guidelines](./policies/Coding.md)**
|
|
||||||
|
|
|
||||||