Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c0e19febd4 | ||
|
|
c4ba002f64 |
3342 changed files with 208242 additions and 290052 deletions
|
|
@ -1,22 +0,0 @@
|
||||||
#!/bin/sh -e
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 crueter
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
_svg=dev.eden_emu.eden.svg
|
|
||||||
_icon=dist/eden.icon
|
|
||||||
_composed="$_icon/Assets/$_svg"
|
|
||||||
_svg="dist/$_svg"
|
|
||||||
|
|
||||||
rm "$_composed"
|
|
||||||
cp "$_svg" "$_composed"
|
|
||||||
|
|
||||||
xcrun actool "$_icon" \
|
|
||||||
--compile dist \
|
|
||||||
--platform macosx \
|
|
||||||
--minimum-deployment-target 11.0 \
|
|
||||||
--app-icon eden \
|
|
||||||
--output-partial-info-plist /dev/null
|
|
||||||
|
|
@ -1,137 +1,21 @@
|
||||||
#!/bin/sh -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
# SPDX-FileCopyrightText: 2025 eden Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
NUM_JOBS=$(nproc 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null || echo 2)
|
export NDK_CCACHE=$(which ccache)
|
||||||
export CMAKE_BUILD_PARALLEL_LEVEL="${NUM_JOBS}"
|
|
||||||
ARTIFACTS_DIR="$PWD/artifacts"
|
|
||||||
|
|
||||||
: "${CCACHE:=false}"
|
if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then
|
||||||
RETURN=0
|
|
||||||
|
|
||||||
usage() {
|
|
||||||
cat <<EOF
|
|
||||||
Usage: $0 [-t|--target FLAVOR] [-b|--build-type BUILD_TYPE]
|
|
||||||
[-h|--help] [-r|--release] [extra options]
|
|
||||||
|
|
||||||
Build script for Android.
|
|
||||||
Associated variables can be set outside the script,
|
|
||||||
and will apply both to this script and the packaging script.
|
|
||||||
bool values are "true" or "false"
|
|
||||||
|
|
||||||
Options:
|
|
||||||
-r, --release Enable update checker. If set, sets the DEVEL bool variable to false.
|
|
||||||
By default, DEVEL is true.
|
|
||||||
-t, --target <FLAVOR> Build flavor (variable: TARGET)
|
|
||||||
Valid values are: legacy, optimized, standard, chromeos
|
|
||||||
Default: standard
|
|
||||||
-b, --build-type <TYPE> Build type (variable: TYPE)
|
|
||||||
Valid values are: Release, RelWithDebInfo, Debug
|
|
||||||
Default: Debug
|
|
||||||
-n, --nightly Create a nightly build.
|
|
||||||
|
|
||||||
Extra arguments are passed to CMake (e.g. -DCMAKE_OPTION_NAME=VALUE)
|
|
||||||
Set the CCACHE variable to "true" to enable build caching.
|
|
||||||
The APK and AAB will be output into "artifacts".
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
exit "$RETURN"
|
|
||||||
}
|
|
||||||
|
|
||||||
die() {
|
|
||||||
echo "-- ! $*" >&2
|
|
||||||
RETURN=1 usage
|
|
||||||
}
|
|
||||||
|
|
||||||
target() {
|
|
||||||
[ -z "$1" ] && die "You must specify a valid target."
|
|
||||||
|
|
||||||
TARGET="$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
type() {
|
|
||||||
[ -z "$1" ] && die "You must specify a valid type."
|
|
||||||
|
|
||||||
TYPE="$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
while true; do
|
|
||||||
case "$1" in
|
|
||||||
-r|--release) DEVEL=false ;;
|
|
||||||
-t|--target) target "$2"; shift ;;
|
|
||||||
-b|--build-type) type "$2"; shift ;;
|
|
||||||
-n|--nightly) NIGHTLY=true ;;
|
|
||||||
-h|--help) usage ;;
|
|
||||||
*) break ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
: "${TARGET:=standard}"
|
|
||||||
: "${TYPE:=Release}"
|
|
||||||
: "${DEVEL:=true}"
|
|
||||||
|
|
||||||
TARGET_LOWER=$(echo "$TARGET" | tr '[:upper:]' '[:lower:]')
|
|
||||||
|
|
||||||
case "$TARGET_LOWER" in
|
|
||||||
legacy) FLAVOR=Legacy ;;
|
|
||||||
optimized) FLAVOR=GenshinSpoof ;;
|
|
||||||
standard) FLAVOR=Mainline ;;
|
|
||||||
chromeos) FLAVOR=ChromeOS ;;
|
|
||||||
*) die "Invalid build flavor $TARGET."
|
|
||||||
esac
|
|
||||||
|
|
||||||
case "$TYPE" in
|
|
||||||
RelWithDebInfo|Release|Debug) ;;
|
|
||||||
*) die "Invalid build type $TYPE."
|
|
||||||
esac
|
|
||||||
|
|
||||||
LOWER_FLAVOR=$(echo "$FLAVOR" | sed 's/./\L&/')
|
|
||||||
LOWER_TYPE=$(echo "$TYPE" | sed 's/./\L&/')
|
|
||||||
|
|
||||||
if [ -n "${ANDROID_KEYSTORE_B64}" ]; then
|
|
||||||
export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks"
|
export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks"
|
||||||
echo "${ANDROID_KEYSTORE_B64}" | base64 --decode > "${ANDROID_KEYSTORE_FILE}"
|
base64 --decode <<< "${ANDROID_KEYSTORE_B64}" > "${ANDROID_KEYSTORE_FILE}"
|
||||||
SHA1SUM=$(keytool -list -v -storepass "${ANDROID_KEYSTORE_PASS}" -keystore "${ANDROID_KEYSTORE_FILE}" | grep SHA1 | cut -d " " -f3)
|
|
||||||
echo "-- Keystore SHA1 is ${SHA1SUM}"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd src/android
|
cd src/android
|
||||||
chmod +x ./gradlew
|
chmod +x ./gradlew
|
||||||
|
|
||||||
set -- "$@" -DUSE_CCACHE="${CCACHE}"
|
./gradlew assembleRelease
|
||||||
|
./gradlew bundleRelease
|
||||||
|
|
||||||
nightly() {
|
if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then
|
||||||
[ "$NIGHTLY" = "true" ]
|
|
||||||
}
|
|
||||||
|
|
||||||
if nightly || [ "$DEVEL" != "true" ]; then
|
|
||||||
set -- "$@" -DENABLE_UPDATE_CHECKER=ON
|
|
||||||
fi
|
|
||||||
|
|
||||||
if nightly; then
|
|
||||||
NIGHTLY=true
|
|
||||||
else
|
|
||||||
NIGHTLY=false
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "-- building..."
|
|
||||||
|
|
||||||
./gradlew "copy${FLAVOR}${TYPE}Outputs" \
|
|
||||||
-Dorg.gradle.caching="${CCACHE}" \
|
|
||||||
-Dorg.gradle.parallel="${CCACHE}" \
|
|
||||||
-Dorg.gradle.workers.max="${NUM_JOBS}" \
|
|
||||||
-PYUZU_ANDROID_ARGS="$*" \
|
|
||||||
-Pnightly="$NIGHTLY" \
|
|
||||||
--info
|
|
||||||
|
|
||||||
if [ -n "${ANDROID_KEYSTORE_B64}" ]; then
|
|
||||||
rm "${ANDROID_KEYSTORE_FILE}"
|
rm "${ANDROID_KEYSTORE_FILE}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "-- Done! APK and AAB artifacts are in ${ARTIFACTS_DIR}"
|
|
||||||
|
|
||||||
ls -l "${ARTIFACTS_DIR}/"
|
|
||||||
|
|
|
||||||
22
.ci/android/package.sh
Executable file
22
.ci/android/package.sh
Executable file
|
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2025 eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
GITDATE="$(git show -s --date=short --format='%ad' | sed 's/-//g')"
|
||||||
|
GITREV="$(git show -s --format='%h')"
|
||||||
|
ARTIFACTS_DIR="$PWD/artifacts"
|
||||||
|
mkdir -p "${ARTIFACTS_DIR}/"
|
||||||
|
|
||||||
|
REV_NAME="eden-android-${GITDATE}-${GITREV}"
|
||||||
|
BUILD_FLAVOR="mainline"
|
||||||
|
BUILD_TYPE_LOWER="release"
|
||||||
|
BUILD_TYPE_UPPER="Release"
|
||||||
|
|
||||||
|
cp src/android/app/build/outputs/apk/"${BUILD_FLAVOR}/${BUILD_TYPE_LOWER}/app-${BUILD_FLAVOR}-${BUILD_TYPE_LOWER}.apk" \
|
||||||
|
"${ARTIFACTS_DIR}/${REV_NAME}.apk" || echo "APK not found"
|
||||||
|
|
||||||
|
cp src/android/app/build/outputs/bundle/"${BUILD_FLAVOR}${BUILD_TYPE_UPPER}"/"app-${BUILD_FLAVOR}-${BUILD_TYPE_LOWER}.aab" \
|
||||||
|
"${ARTIFACTS_DIR}/${REV_NAME}.aab" || echo "AAB not found"
|
||||||
|
|
||||||
|
ls -la "${ARTIFACTS_DIR}/"
|
||||||
47
.ci/license-header.rb
Normal file
47
.ci/license-header.rb
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
#!/usr/bin/ruby
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
license_header = <<~EOF
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
EOF
|
||||||
|
|
||||||
|
print 'Getting branch changes...'
|
||||||
|
branch_name = `git rev-parse --abbrev-ref HEAD`.chomp
|
||||||
|
branch_commits = `git log #{branch_name} --not master --pretty=format:"%h"`.split("\n")
|
||||||
|
branch_commit_range = "#{branch_commits[-1]}^..#{branch_commits[0]}"
|
||||||
|
branch_changed_files = `git diff-tree --no-commit-id --name-only #{branch_commit_range} -r`.split("\n")
|
||||||
|
puts 'done'
|
||||||
|
|
||||||
|
print 'Checking files...'
|
||||||
|
issue_files = []
|
||||||
|
branch_changed_files.each do |file_name|
|
||||||
|
if file_name.end_with?('.cpp', '.h', '.kt', '.kts') and File.file?(file_name)
|
||||||
|
file_content = File.read(file_name)
|
||||||
|
if not file_content.start_with?(license_header)
|
||||||
|
issue_files.push(file_name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
puts 'done'
|
||||||
|
|
||||||
|
if issue_files.empty?
|
||||||
|
puts "\nAll changed files have correct headers"
|
||||||
|
exit 0
|
||||||
|
end
|
||||||
|
|
||||||
|
puts <<-EOF
|
||||||
|
|
||||||
|
The following #{issue_files.length} files have incorrect license headers:
|
||||||
|
#{issue_files.join("\n")}
|
||||||
|
|
||||||
|
The following license header should be added to the start of all offending files:
|
||||||
|
=== BEGIN ===
|
||||||
|
#{license_header}
|
||||||
|
=== END ===
|
||||||
|
|
||||||
|
If some of the code in this PR is not being contributed by the original author, the files which have been exclusively changed by that code can be ignored.
|
||||||
|
If this happens, this PR requirement can be bypassed once all other files are addressed.
|
||||||
|
EOF
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
|
@ -1,149 +1,74 @@
|
||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
HEADER="$(cat "$PWD/.ci/license/header.txt")"
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
HEADER_HASH="$(cat "$PWD/.ci/license/header-hash.txt")"
|
||||||
|
|
||||||
# specify full path if dupes may exist
|
echo "Getting branch changes"
|
||||||
EXCLUDE_FILES="CPM.cmake CPMUtil.cmake GetSCMRev.cmake renderdoc_app.h tools/cpm tools/shellcheck.sh tools/update-cpm.sh tools/windows/vcvarsall.sh externals/stb externals/glad externals/getopt externals/gamemode externals/FidelityFX-FSR externals/demangle externals/bc_decoder externals/cmake-modules"
|
|
||||||
|
|
||||||
# license header constants, please change when needed :))))
|
# BRANCH=`git rev-parse --abbrev-ref HEAD`
|
||||||
YEAR=$(date "+%Y")
|
# COMMITS=`git log ${BRANCH} --not master --pretty=format:"%h"`
|
||||||
HOLDER="Eden Emulator Project"
|
# RANGE="${COMMITS[${#COMMITS[@]}-1]}^..${COMMITS[0]}"
|
||||||
LICENSE="GPL-3.0-or-later"
|
# FILES=`git diff-tree --no-commit-id --name-only ${RANGE} -r`
|
||||||
|
|
||||||
usage() {
|
BASE=`git merge-base master HEAD`
|
||||||
cat << EOF
|
FILES=`git diff --name-only $BASE`
|
||||||
Usage: $0 [uc]
|
|
||||||
Compares the current HEAD to the master branch to check for license
|
|
||||||
header discrepancies. Each file changed in a branch MUST have a
|
|
||||||
license header, and this script attempts to enforce that.
|
|
||||||
|
|
||||||
Options:
|
#FILES=$(git diff --name-only master)
|
||||||
-u, --update Fix license headers, if applicable;
|
|
||||||
if the license header exists but has the incorrect
|
|
||||||
year or is otherwise malformed, it will be fixed.
|
|
||||||
|
|
||||||
-c, --commit Commit changes to Git (requires --update)
|
echo "Done"
|
||||||
|
|
||||||
Copyright $YEAR $HOLDER
|
|
||||||
Licensed under $LICENSE
|
|
||||||
|
|
||||||
The following files/directories are marked as external
|
|
||||||
and thus will not have license headers asserted:
|
|
||||||
EOF
|
|
||||||
|
|
||||||
for file in $EXCLUDE_FILES; do
|
|
||||||
echo "- $file"
|
|
||||||
done
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
while true; do
|
|
||||||
case "$1" in
|
|
||||||
(-u|--update) UPDATE=true ;;
|
|
||||||
(-c|--commit) UPDATE=true; COMMIT=true ;;
|
|
||||||
("$0") break ;;
|
|
||||||
("") break ;;
|
|
||||||
(*) usage ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
# human-readable header string
|
|
||||||
header() {
|
|
||||||
header_line1 "$1"
|
|
||||||
header_line2 "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
header_line1() {
|
|
||||||
echo "$1 SPDX-FileCopyrightText: Copyright $YEAR $HOLDER"
|
|
||||||
}
|
|
||||||
|
|
||||||
header_line2() {
|
|
||||||
echo "$1 SPDX-License-Identifier: $LICENSE"
|
|
||||||
}
|
|
||||||
|
|
||||||
check_header() {
|
check_header() {
|
||||||
begin="$1"
|
CONTENT="`head -n3 < $1`"
|
||||||
file="$2"
|
case "$CONTENT" in
|
||||||
|
"$HEADER"*) ;;
|
||||||
# separate things out as spaces to make our lives 100000000x easier
|
*) BAD_FILES="$BAD_FILES $1" ;;
|
||||||
content="$(head -n5 < "$2" | tr '\n' ' ')"
|
esac
|
||||||
|
|
||||||
line1="$(header_line1 "$begin")"
|
|
||||||
line2="$(header_line2 "$begin")"
|
|
||||||
|
|
||||||
# perl and awk are actually awful, so to avoid this problem we avoid it by avoiding it
|
|
||||||
if ! echo "$content" | grep -o "$line1 $line2" >/dev/null; then
|
|
||||||
# SRC_FILES is Kotlin/C++
|
|
||||||
# OTHER_FILES is sh, CMake
|
|
||||||
case "$begin" in
|
|
||||||
"//")
|
|
||||||
SRC_FILES="$SRC_FILES $file"
|
|
||||||
;;
|
|
||||||
"#")
|
|
||||||
OTHER_FILES="$OTHER_FILES $file"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BASE=$(git merge-base master HEAD)
|
check_cmake_header() {
|
||||||
FILES=$(git diff --name-only "$BASE")
|
CONTENT="`head -n3 < $1`"
|
||||||
|
|
||||||
|
case "$CONTENT" in
|
||||||
|
"$HEADER_HASH"*) ;;
|
||||||
|
*)
|
||||||
|
BAD_CMAKE="$BAD_CMAKE $1" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
for file in $FILES; do
|
for file in $FILES; do
|
||||||
[ -f "$file" ] || continue
|
[ -f "$file" ] || continue
|
||||||
|
|
||||||
# skip files that are third party (crueter's CMake modules, sse2neon, etc)
|
if [ `basename -- "$file"` = "CMakeLists.txt" ]; then
|
||||||
for pattern in $EXCLUDE_FILES; do
|
check_cmake_header "$file"
|
||||||
case "$file" in
|
continue
|
||||||
*"$pattern"*)
|
fi
|
||||||
excluded=true
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
excluded=false
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
[ "$excluded" = "true" ] && continue
|
EXTENSION="${file##*.}"
|
||||||
|
case "$EXTENSION" in
|
||||||
case "$file" in
|
kts|kt|cpp|h)
|
||||||
*.cmake|*.sh|*.ps1|*.py|*.rb|*.perl|*.pl|*.nix|*CMakeLists.txt)
|
check_header "$file"
|
||||||
begin="#"
|
;;
|
||||||
;;
|
cmake)
|
||||||
*.kt|*.kts|*.cpp|*.h|*.qml|*.c|*.hpp|*.hxx|*.cxx|*.h.in|*.inc)
|
check_cmake_header "$file"
|
||||||
begin="//"
|
;;
|
||||||
;;
|
|
||||||
*)
|
|
||||||
continue
|
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
check_header "$begin" "$file"
|
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ -z "$SRC_FILES" ] && [ -z "$OTHER_FILES" ]; then
|
if [ "$BAD_FILES" = "" ] && [ "$BAD_CMAKE" = "" ]; then
|
||||||
echo "-- All good."
|
echo
|
||||||
|
echo "All good."
|
||||||
|
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo
|
if [ "$BAD_FILES" != "" ]; then
|
||||||
|
echo "The following source files have incorrect license headers:"
|
||||||
|
echo
|
||||||
|
|
||||||
if [ "$SRC_FILES" != "" ]; then
|
for file in $BAD_FILES; do echo $file; done
|
||||||
echo "-- The following source files have incorrect license headers:"
|
|
||||||
|
|
||||||
HEADER=$(header "//")
|
|
||||||
|
|
||||||
for file in $SRC_FILES; do echo "-- * $file"; done
|
|
||||||
|
|
||||||
cat << EOF
|
cat << EOF
|
||||||
|
|
||||||
-- The following license header should be added to the start of these offending files:
|
The following license header should be added to the start of all offending SOURCE files:
|
||||||
|
|
||||||
=== BEGIN ===
|
=== BEGIN ===
|
||||||
$HEADER
|
$HEADER
|
||||||
|
|
@ -153,19 +78,18 @@ EOF
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$OTHER_FILES" != "" ]; then
|
if [ "$BAD_CMAKE" != "" ]; then
|
||||||
echo "-- The following CMake and shell scripts have incorrect license headers:"
|
echo "The following CMake files have incorrect license headers:"
|
||||||
|
echo
|
||||||
|
|
||||||
HEADER=$(header "#")
|
for file in $BAD_CMAKE; do echo $file; done
|
||||||
|
|
||||||
for file in $OTHER_FILES; do echo "-- * $file"; done
|
|
||||||
|
|
||||||
cat << EOF
|
cat << EOF
|
||||||
|
|
||||||
-- The following license header should be added to the start of these offending files:
|
The following license header should be added to the start of all offending CMake files:
|
||||||
|
|
||||||
=== BEGIN ===
|
=== BEGIN ===
|
||||||
$HEADER
|
$HEADER_HASH
|
||||||
=== END ===
|
=== END ===
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
@ -173,77 +97,50 @@ EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cat << EOF
|
cat << EOF
|
||||||
If some of the code in this PR is not being contributed by the original author,
|
If some of the code in this PR is not being contributed by the original author,
|
||||||
the files which have been exclusively changed by that code can be ignored.
|
the files which have been exclusively changed by that code can be ignored.
|
||||||
If this happens, this PR requirement can be bypassed once all other files are addressed.
|
If this happens, this PR requirement can be bypassed once all other files are addressed.
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if [ "$UPDATE" = "true" ]; then
|
if [ "$FIX" = "true" ]; then
|
||||||
TMP_DIR=$(mktemp -d)
|
echo
|
||||||
echo "-- Fixing headers..."
|
echo "FIX set to true. Fixing headers."
|
||||||
|
echo
|
||||||
|
|
||||||
for file in $SRC_FILES $OTHER_FILES; do
|
for file in $BAD_FILES; do
|
||||||
case $(basename -- "$file") in
|
cat $file > $file.bak
|
||||||
# Windows Powershell wont use shebangs
|
|
||||||
*.cmake|*.ps1|*CMakeLists.txt)
|
|
||||||
begin="#"
|
|
||||||
shell="false"
|
|
||||||
;;
|
|
||||||
*.sh|*.py|*.rb|*.perl|*.pl|*.nix)
|
|
||||||
begin="#"
|
|
||||||
shell=true
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
begin="//"
|
|
||||||
shell="false"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# This is fun
|
cat .ci/license/header.txt > $file
|
||||||
match="$begin SPDX-FileCopyrightText.*$HOLDER"
|
echo >> $file
|
||||||
|
cat $file.bak >> $file
|
||||||
|
|
||||||
# basically if the copyright holder is already defined we can just replace the year
|
rm $file.bak
|
||||||
if head -n5 < "$file" | grep -e "$match" >/dev/null; then
|
|
||||||
replace=$(header_line1 "$begin")
|
|
||||||
sed "s|$match|$replace|" "$file" > "$file".bak
|
|
||||||
mv "$file".bak "$file"
|
|
||||||
else
|
|
||||||
header "$begin" > "$TMP_DIR"/header
|
|
||||||
|
|
||||||
if [ "$shell" = "true" ]; then
|
git add $file
|
||||||
# grab shebang
|
done
|
||||||
head -n1 "$file" > "$TMP_DIR/shebang"
|
|
||||||
echo >> "$TMP_DIR/shebang"
|
|
||||||
|
|
||||||
# remove shebang
|
for file in $BAD_CMAKE; do
|
||||||
sed '1d' "$file" > "$file".bak
|
cat $file > $file.bak
|
||||||
mv "$file".bak "$file"
|
|
||||||
|
|
||||||
# add to header
|
cat .ci/license/header-hash.txt > $file
|
||||||
cat "$TMP_DIR"/shebang "$TMP_DIR"/header > "$TMP_DIR"/new-header
|
echo >> $file
|
||||||
mv "$TMP_DIR"/new-header "$TMP_DIR"/header
|
cat $file.bak >> $file
|
||||||
else
|
|
||||||
echo >> "$TMP_DIR/header"
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat "$TMP_DIR"/header "$file" > "$file".bak
|
rm $file.bak
|
||||||
mv "$file".bak "$file"
|
|
||||||
fi
|
|
||||||
|
|
||||||
[ "$shell" = "true" ] && chmod a+x "$file"
|
git add $file
|
||||||
[ "$COMMIT" = "true" ] && git add "$file"
|
done
|
||||||
done
|
echo "License headers fixed."
|
||||||
|
|
||||||
echo "-- Done"
|
if [ "$COMMIT" = "true" ]; then
|
||||||
|
echo
|
||||||
|
echo "COMMIT set to true. Committing changes."
|
||||||
|
echo
|
||||||
|
|
||||||
|
git commit -m "Fix license headers"
|
||||||
|
|
||||||
|
echo "Changes committed. You may now push."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$COMMIT" = "true" ]; then
|
|
||||||
echo "-- Committing changes"
|
|
||||||
|
|
||||||
git commit -m "Fix license headers"
|
|
||||||
|
|
||||||
echo "-- Changes committed. You may now push."
|
|
||||||
fi
|
|
||||||
|
|
||||||
[ -d "$TMP_DIR" ] && rm -rf "$TMP_DIR"
|
|
||||||
|
|
|
||||||
2
.ci/license/header-hash.txt
Normal file
2
.ci/license/header-hash.txt
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
2
.ci/license/header.txt
Normal file
2
.ci/license/header.txt
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
116
.ci/linux/build.sh
Executable file
116
.ci/linux/build.sh
Executable file
|
|
@ -0,0 +1,116 @@
|
||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2025 eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
amd64 | "")
|
||||||
|
echo "Making amd64-v3 optimized build of Eden"
|
||||||
|
ARCH="amd64_v3"
|
||||||
|
ARCH_FLAGS="-march=x86-64-v3"
|
||||||
|
export EXTRA_CMAKE_FLAGS=(-DYUZU_BUILD_PRESET=v3)
|
||||||
|
;;
|
||||||
|
steamdeck | zen2)
|
||||||
|
echo "Making Steam Deck (Zen 2) optimized build of Eden"
|
||||||
|
ARCH="steamdeck"
|
||||||
|
ARCH_FLAGS="-march=znver2 -mtune=znver2"
|
||||||
|
export EXTRA_CMAKE_FLAGS=(-DYUZU_BUILD_PRESET=zen2 -DYUZU_SYSTEM_PROFILE=steamdeck)
|
||||||
|
;;
|
||||||
|
rog-ally | allyx | zen4)
|
||||||
|
echo "Making ROG Ally X (Zen 4) optimized build of Eden"
|
||||||
|
ARCH="rog-ally-x"
|
||||||
|
ARCH_FLAGS="-march=znver4 -mtune=znver4"
|
||||||
|
export EXTRA_CMAKE_FLAGS=(-DYUZU_BUILD_PRESET=zen2 -DYUZU_SYSTEM_PROFILE=steamdeck)
|
||||||
|
;;
|
||||||
|
legacy)
|
||||||
|
echo "Making amd64 generic build of Eden"
|
||||||
|
ARCH=amd64
|
||||||
|
ARCH_FLAGS="-march=x86-64 -mtune=generic"
|
||||||
|
export EXTRA_CMAKE_FLAGS=(-DYUZU_BUILD_PRESET=generic)
|
||||||
|
;;
|
||||||
|
aarch64)
|
||||||
|
echo "Making armv8-a build of Eden"
|
||||||
|
ARCH=aarch64
|
||||||
|
ARCH_FLAGS="-march=armv8-a -mtune=generic -w"
|
||||||
|
export EXTRA_CMAKE_FLAGS=(-DYUZU_BUILD_PRESET=generic)
|
||||||
|
;;
|
||||||
|
armv9)
|
||||||
|
echo "Making armv9-a build of Eden"
|
||||||
|
ARCH=armv9
|
||||||
|
ARCH_FLAGS="-march=armv9-a -mtune=generic -w"
|
||||||
|
export EXTRA_CMAKE_FLAGS=(-DYUZU_BUILD_PRESET=armv9)
|
||||||
|
;;
|
||||||
|
native)
|
||||||
|
echo "Making native build of Eden"
|
||||||
|
ARCH="$(uname -m)"
|
||||||
|
ARCH_FLAGS="-march=native -mtune=native"
|
||||||
|
export EXTRA_CMAKE_FLAGS=(-DYUZU_BUILD_PRESET=native)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Invalid target $1 specified, must be one of native, amd64, steamdeck, zen2, allyx, rog-ally, zen4, legacy, aarch64, armv9"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
export ARCH_FLAGS="$ARCH_FLAGS -O3"
|
||||||
|
|
||||||
|
if [ -z "$NPROC" ]; then
|
||||||
|
NPROC="$(nproc)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" != "" ]; then shift; fi
|
||||||
|
|
||||||
|
if [ "$TARGET" = "appimage" ]; then
|
||||||
|
export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DCMAKE_INSTALL_PREFIX=/usr -DYUZU_ROOM=ON -DYUZU_ROOM_STANDALONE=OFF -DYUZU_CMD=OFF)
|
||||||
|
else
|
||||||
|
# For the linux-fresh verification target, verify compilation without PCH as well.
|
||||||
|
export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DYUZU_USE_PRECOMPILED_HEADERS=OFF)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$DEVEL" != "true" ]; then
|
||||||
|
export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DENABLE_QT_UPDATE_CHECKER=ON)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$USE_WEBENGINE" = "true" ]; then
|
||||||
|
WEBENGINE=ON
|
||||||
|
else
|
||||||
|
WEBENGINE=OFF
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$USE_MULTIMEDIA" = "false" ]; then
|
||||||
|
MULTIMEDIA=OFF
|
||||||
|
else
|
||||||
|
MULTIMEDIA=ON
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$BUILD_TYPE" ]; then
|
||||||
|
export BUILD_TYPE="Release"
|
||||||
|
fi
|
||||||
|
|
||||||
|
export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" $@)
|
||||||
|
|
||||||
|
mkdir -p build && cd build
|
||||||
|
cmake .. -G Ninja \
|
||||||
|
-DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
|
||||||
|
-DENABLE_QT_TRANSLATION=ON \
|
||||||
|
-DUSE_DISCORD_PRESENCE=ON \
|
||||||
|
-DCMAKE_CXX_FLAGS="$ARCH_FLAGS" \
|
||||||
|
-DCMAKE_C_FLAGS="$ARCH_FLAGS" \
|
||||||
|
-DYUZU_USE_BUNDLED_QT=OFF \
|
||||||
|
-DYUZU_USE_BUNDLED_SDL2=OFF \
|
||||||
|
-DYUZU_USE_EXTERNAL_SDL2=ON \
|
||||||
|
-DYUZU_TESTS=OFF \
|
||||||
|
-DYUZU_USE_QT_MULTIMEDIA=$MULTIMEDIA \
|
||||||
|
-DYUZU_USE_QT_WEB_ENGINE=$WEBENGINE \
|
||||||
|
-DYUZU_USE_FASTER_LD=ON \
|
||||||
|
-DYUZU_ENABLE_LTO=ON \
|
||||||
|
-DDYNARMIC_ENABLE_LTO=ON \
|
||||||
|
"${EXTRA_CMAKE_FLAGS[@]}"
|
||||||
|
|
||||||
|
ninja -j${NPROC}
|
||||||
|
|
||||||
|
if [ -d "bin/Release" ]; then
|
||||||
|
strip -s bin/Release/*
|
||||||
|
else
|
||||||
|
strip -s bin/*
|
||||||
|
fi
|
||||||
250
.ci/linux/eden.dwfsprof
Normal file
250
.ci/linux/eden.dwfsprof
Normal file
|
|
@ -0,0 +1,250 @@
|
||||||
|
AppRun
|
||||||
|
eden.desktop
|
||||||
|
dev.eden_emu.eden.desktop
|
||||||
|
shared/bin/eden
|
||||||
|
shared/lib/lib.path
|
||||||
|
shared/lib/ld-linux-x86-64.so.2
|
||||||
|
shared/lib/libQt6Widgets.so.6.4.2
|
||||||
|
shared/lib/libQt6DBus.so.6.4.2
|
||||||
|
shared/lib/libudev.so.1.7.5
|
||||||
|
shared/lib/libbrotlienc.so.1.0.9
|
||||||
|
shared/lib/libbrotlidec.so.1.0.9
|
||||||
|
shared/lib/libssl.so.3
|
||||||
|
shared/lib/libcrypto.so.3
|
||||||
|
shared/lib/libavcodec.so.59.37.100
|
||||||
|
shared/lib/libavutil.so.57.28.100
|
||||||
|
shared/lib/libQt6Gui.so.6.4.2
|
||||||
|
shared/lib/libQt6Core.so.6.4.2
|
||||||
|
shared/lib/libstdc++.so.6.0.30
|
||||||
|
shared/lib/libm.so.6
|
||||||
|
shared/lib/libgcc_s.so.1
|
||||||
|
shared/lib/libc.so.6
|
||||||
|
shared/lib/libdbus-1.so.3.32.4
|
||||||
|
shared/lib/libbrotlicommon.so.1.0.9
|
||||||
|
shared/lib/libswresample.so.4.7.100
|
||||||
|
shared/lib/libvpx.so.7.1.0
|
||||||
|
shared/lib/libwebpmux.so.3.0.10
|
||||||
|
shared/lib/libwebp.so.7.1.5
|
||||||
|
shared/lib/liblzma.so.5.4.1
|
||||||
|
shared/lib/libdav1d.so.6.6.0
|
||||||
|
shared/lib/librsvg-2.so.2.48.0
|
||||||
|
shared/lib/libgobject-2.0.so.0.7400.6
|
||||||
|
shared/lib/libglib-2.0.so.0.7400.6
|
||||||
|
shared/lib/libcairo.so.2.11600.0
|
||||||
|
shared/lib/libzvbi.so.0.13.2
|
||||||
|
shared/lib/libz.so.1.2.13
|
||||||
|
shared/lib/libsnappy.so.1.1.9
|
||||||
|
shared/lib/libaom.so.3.6.0
|
||||||
|
shared/lib/libcodec2.so.1.0
|
||||||
|
shared/lib/libgsm.so.1.0.19
|
||||||
|
shared/lib/libjxl.so.0.7.0
|
||||||
|
shared/lib/libjxl_threads.so.0.7.0
|
||||||
|
shared/lib/libmp3lame.so.0.0.0
|
||||||
|
shared/lib/libopenjp2.so.2.5.0
|
||||||
|
shared/lib/libopus.so.0.8.0
|
||||||
|
shared/lib/librav1e.so.0.5.1
|
||||||
|
shared/lib/libshine.so.3.0.1
|
||||||
|
shared/lib/libspeex.so.1.5.2
|
||||||
|
shared/lib/libSvtAv1Enc.so.1.4.1
|
||||||
|
shared/lib/libtheoraenc.so.1.1.2
|
||||||
|
shared/lib/libtheoradec.so.1.1.4
|
||||||
|
shared/lib/libtwolame.so.0.0.0
|
||||||
|
shared/lib/libvorbis.so.0.4.9
|
||||||
|
shared/lib/libvorbisenc.so.2.0.12
|
||||||
|
shared/lib/libx264.so.164
|
||||||
|
shared/lib/libx265.so.199
|
||||||
|
shared/lib/libxvidcore.so.4.3
|
||||||
|
shared/lib/libva.so.2.1700.0
|
||||||
|
shared/lib/libmfx.so.1.35
|
||||||
|
shared/lib/libva-drm.so.2.1700.0
|
||||||
|
shared/lib/libva-x11.so.2.1700.0
|
||||||
|
shared/lib/libvdpau.so.1.0.0
|
||||||
|
shared/lib/libX11.so.6.4.0
|
||||||
|
shared/lib/libdrm.so.2.4.0
|
||||||
|
shared/lib/libOpenCL.so.1.0.0
|
||||||
|
shared/lib/libEGL.so.1.1.0
|
||||||
|
shared/lib/libfontconfig.so.1.12.0
|
||||||
|
shared/lib/libxkbcommon.so.0.0.0
|
||||||
|
shared/lib/libGLX.so.0.0.0
|
||||||
|
shared/lib/libOpenGL.so.0.0.0
|
||||||
|
shared/lib/libpng16.so.16.39.0
|
||||||
|
shared/lib/libharfbuzz.so.0.60000.0
|
||||||
|
shared/lib/libmd4c.so.0.4.8
|
||||||
|
shared/lib/libfreetype.so.6.18.3
|
||||||
|
shared/lib/libicui18n.so.72.1
|
||||||
|
shared/lib/libicuuc.so.72.1
|
||||||
|
shared/lib/libdouble-conversion.so.3.1
|
||||||
|
shared/lib/libb2.so.1.0.4
|
||||||
|
shared/lib/libpcre2-16.so.0.11.2
|
||||||
|
shared/lib/libzstd.so.1.5.4
|
||||||
|
shared/lib/libsystemd.so.0.35.0
|
||||||
|
shared/lib/libsoxr.so.0.1.2
|
||||||
|
shared/lib/libcairo-gobject.so.2.11600.0
|
||||||
|
shared/lib/libgdk_pixbuf-2.0.so.0.4200.10
|
||||||
|
shared/lib/libgio-2.0.so.0.7400.6
|
||||||
|
shared/lib/libxml2.so.2.9.14
|
||||||
|
shared/lib/libpangocairo-1.0.so.0.5000.12
|
||||||
|
shared/lib/libpango-1.0.so.0.5000.12
|
||||||
|
shared/lib/libffi.so.8.1.2
|
||||||
|
shared/lib/libpcre2-8.so.0.11.2
|
||||||
|
shared/lib/libpixman-1.so.0.42.2
|
||||||
|
shared/lib/libxcb-shm.so.0.0.0
|
||||||
|
shared/lib/libxcb.so.1.1.0
|
||||||
|
shared/lib/libxcb-render.so.0.0.0
|
||||||
|
shared/lib/libXrender.so.1.3.0
|
||||||
|
shared/lib/libXext.so.6.4.0
|
||||||
|
shared/lib/libhwy.so.1.0.3
|
||||||
|
shared/lib/liblcms2.so.2.0.14
|
||||||
|
shared/lib/libogg.so.0.8.5
|
||||||
|
shared/lib/libnuma.so.1.0.0
|
||||||
|
shared/lib/libpthread.so.0
|
||||||
|
shared/lib/libXfixes.so.3.1.0
|
||||||
|
shared/lib/libX11-xcb.so.1.0.0
|
||||||
|
shared/lib/libxcb-dri3.so.0.1.0
|
||||||
|
shared/lib/libGLdispatch.so.0.0.0
|
||||||
|
shared/lib/libexpat.so.1.8.10
|
||||||
|
shared/lib/libgraphite2.so.3.2.1
|
||||||
|
shared/lib/libicudata.so.72.1
|
||||||
|
shared/lib/libgomp.so.1.0.0
|
||||||
|
shared/lib/libcap.so.2.66
|
||||||
|
shared/lib/libgcrypt.so.20.4.1
|
||||||
|
shared/lib/liblz4.so.1.9.4
|
||||||
|
shared/lib/libgmodule-2.0.so.0.7400.6
|
||||||
|
shared/lib/libjpeg.so.62.3.0
|
||||||
|
shared/lib/libmount.so.1.1.0
|
||||||
|
shared/lib/libselinux.so.1
|
||||||
|
shared/lib/libpangoft2-1.0.so.0.5000.12
|
||||||
|
shared/lib/libfribidi.so.0.4.0
|
||||||
|
shared/lib/libthai.so.0.3.1
|
||||||
|
shared/lib/libXau.so.6.0.0
|
||||||
|
shared/lib/libXdmcp.so.6.0.0
|
||||||
|
shared/lib/libgpg-error.so.0.33.1
|
||||||
|
shared/lib/libblkid.so.1.1.0
|
||||||
|
shared/lib/libdatrie.so.1.4.0
|
||||||
|
shared/lib/libbsd.so.0.11.7
|
||||||
|
shared/lib/libmd.so.0.0.5
|
||||||
|
shared/lib/libvulkan.so.1.3.239
|
||||||
|
share/vulkan/icd.d/intel_hasvk_icd.x86_64.json
|
||||||
|
shared/lib/libvulkan_intel_hasvk.so
|
||||||
|
shared/lib/libwayland-client.so.0.21.0
|
||||||
|
shared/lib/libxcb-present.so.0.0.0
|
||||||
|
shared/lib/libxcb-xfixes.so.0.0.0
|
||||||
|
shared/lib/libxcb-sync.so.1.0.0
|
||||||
|
shared/lib/libxcb-randr.so.0.1.0
|
||||||
|
shared/lib/libxshmfence.so.1.0.0
|
||||||
|
share/vulkan/icd.d/intel_icd.x86_64.json
|
||||||
|
shared/lib/libvulkan_intel.so
|
||||||
|
share/vulkan/icd.d/lvp_icd.x86_64.json
|
||||||
|
shared/lib/libvulkan_lvp.so
|
||||||
|
shared/lib/libLLVM-15.so.1
|
||||||
|
shared/lib/libedit.so.2.0.70
|
||||||
|
shared/lib/libz3.so.4
|
||||||
|
shared/lib/libtinfo.so.6.4
|
||||||
|
share/vulkan/icd.d/radeon_icd.x86_64.json
|
||||||
|
shared/lib/libvulkan_radeon.so
|
||||||
|
shared/lib/libdrm_amdgpu.so.1.0.0
|
||||||
|
shared/lib/libelf-0.188.so
|
||||||
|
shared/lib/libVkLayer_MESA_device_select.so
|
||||||
|
bin/qt.conf
|
||||||
|
shared/lib/qt6/plugins/platforms/libqeglfs.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqlinuxfb.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqminimal.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqminimalegl.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqoffscreen.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqvkkhrdisplay.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqvnc.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqwayland-egl.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqwayland-generic.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqxcb.so
|
||||||
|
shared/lib/libQt6WaylandClient.so.6.4.2
|
||||||
|
shared/lib/libwayland-cursor.so.0.21.0
|
||||||
|
shared/lib/qt6/plugins/platformthemes/libqgtk3.so
|
||||||
|
shared/lib/libgtk-3.so.0.2406.32
|
||||||
|
shared/lib/libgdk-3.so.0.2406.32
|
||||||
|
shared/lib/libatk-1.0.so.0.24609.1
|
||||||
|
shared/lib/libepoxy.so.0.0.0
|
||||||
|
shared/lib/libXi.so.6.1.0
|
||||||
|
shared/lib/libatk-bridge-2.0.so.0.0.0
|
||||||
|
shared/lib/libwayland-egl.so.1.21.0
|
||||||
|
shared/lib/libXcursor.so.1.0.2
|
||||||
|
shared/lib/libXdamage.so.1.1.0
|
||||||
|
shared/lib/libXcomposite.so.1.0.0
|
||||||
|
shared/lib/libXrandr.so.2.2.0
|
||||||
|
shared/lib/libXinerama.so.1.0.0
|
||||||
|
shared/lib/libdl.so.2
|
||||||
|
shared/lib/libatspi.so.0.0.1
|
||||||
|
share/glib-2.0/schemas/gschemas.compiled
|
||||||
|
shared/lib/gio/modules/giomodule.cache
|
||||||
|
shared/lib/gio/modules/libdconfsettings.so
|
||||||
|
shared/lib/gio/modules/libgvfsdbus.so
|
||||||
|
shared/lib/gvfs/libgvfscommon.so
|
||||||
|
share/X11/xkb/rules/evdev
|
||||||
|
share/X11/xkb/keycodes/evdev
|
||||||
|
share/X11/xkb/keycodes/aliases
|
||||||
|
share/X11/xkb/types/complete
|
||||||
|
share/X11/xkb/types/basic
|
||||||
|
share/X11/xkb/types/mousekeys
|
||||||
|
share/X11/xkb/types/pc
|
||||||
|
share/X11/xkb/types/iso9995
|
||||||
|
share/X11/xkb/types/level5
|
||||||
|
share/X11/xkb/types/extra
|
||||||
|
share/X11/xkb/types/numpad
|
||||||
|
share/X11/xkb/compat/complete
|
||||||
|
share/X11/xkb/compat/basic
|
||||||
|
share/X11/xkb/compat/ledcaps
|
||||||
|
share/X11/xkb/compat/lednum
|
||||||
|
share/X11/xkb/compat/iso9995
|
||||||
|
share/X11/xkb/compat/mousekeys
|
||||||
|
share/X11/xkb/compat/accessx
|
||||||
|
share/X11/xkb/compat/misc
|
||||||
|
share/X11/xkb/compat/ledscroll
|
||||||
|
share/X11/xkb/compat/xfree86
|
||||||
|
share/X11/xkb/compat/level5
|
||||||
|
share/X11/xkb/compat/caps
|
||||||
|
share/X11/xkb/symbols/pc
|
||||||
|
share/X11/xkb/symbols/srvr_ctrl
|
||||||
|
share/X11/xkb/symbols/keypad
|
||||||
|
share/X11/xkb/symbols/altwin
|
||||||
|
share/X11/xkb/symbols/us
|
||||||
|
share/X11/xkb/symbols/inet
|
||||||
|
shared/lib/qt6/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so
|
||||||
|
shared/lib/qt6/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so
|
||||||
|
shared/lib/qt6/plugins/iconengines/libqsvgicon.so
|
||||||
|
shared/lib/qt6/plugins/imageformats/libqgif.so
|
||||||
|
shared/lib/qt6/plugins/imageformats/libqico.so
|
||||||
|
shared/lib/qt6/plugins/imageformats/libqjpeg.so
|
||||||
|
shared/lib/qt6/plugins/imageformats/libqsvg.so
|
||||||
|
shared/lib/libQt6Svg.so.6.4.2
|
||||||
|
etc/fonts/fonts.conf
|
||||||
|
shared/lib/qt6/plugins/wayland-shell-integration/libfullscreen-shell-v1.so
|
||||||
|
shared/lib/qt6/plugins/wayland-shell-integration/libivi-shell.so
|
||||||
|
shared/lib/qt6/plugins/wayland-shell-integration/libqt-shell.so
|
||||||
|
shared/lib/qt6/plugins/wayland-shell-integration/libwl-shell-plugin.so
|
||||||
|
shared/lib/qt6/plugins/wayland-shell-integration/libxdg-shell.so
|
||||||
|
shared/lib/qt6/plugins/wayland-graphics-integration-client/libdmabuf-server.so
|
||||||
|
shared/lib/qt6/plugins/wayland-graphics-integration-client/libdrm-egl-server.so
|
||||||
|
shared/lib/qt6/plugins/wayland-graphics-integration-client/libqt-plugin-wayland-egl.so
|
||||||
|
shared/lib/qt6/plugins/wayland-graphics-integration-client/libshm-emulation-server.so
|
||||||
|
shared/lib/qt6/plugins/wayland-graphics-integration-client/libvulkan-server.so
|
||||||
|
shared/lib/libQt6WaylandEglClientHwIntegration.so.6.4.2
|
||||||
|
shared/lib/libQt6OpenGL.so.6.4.2
|
||||||
|
share/glvnd/egl_vendor.d/50_mesa.json
|
||||||
|
shared/lib/libEGL_mesa.so.0.0.0
|
||||||
|
shared/lib/libgbm.so.1.0.0
|
||||||
|
shared/lib/libglapi.so.0.0.0
|
||||||
|
shared/lib/libxcb-dri2.so.0.0.0
|
||||||
|
shared/lib/libwayland-server.so.0.21.0
|
||||||
|
shared/lib/dri/swrast_dri.so
|
||||||
|
shared/lib/libsensors.so.5.0.0
|
||||||
|
shared/lib/libdrm_radeon.so.1.0.1
|
||||||
|
shared/lib/libdrm_nouveau.so.2.0.0
|
||||||
|
shared/lib/libdrm_intel.so.1.0.0
|
||||||
|
shared/lib/libpciaccess.so.0.11.1
|
||||||
|
shared/lib/qt6/plugins/wayland-decoration-client/libbradient.so
|
||||||
|
shared/lib/gtk-3.0/modules/libcanberra-gtk3-module.so
|
||||||
|
shared/lib/libcanberra-gtk3.so.0.1.9
|
||||||
|
shared/lib/libcanberra.so.0.2.5
|
||||||
|
shared/lib/libvorbisfile.so.3.3.8
|
||||||
|
shared/lib/libtdb.so.1.4.8
|
||||||
|
shared/lib/libltdl.so.7.3.2
|
||||||
|
shared/lib/libXss.so.1.0.0
|
||||||
153
.ci/linux/package.sh
Executable file
153
.ci/linux/package.sh
Executable file
|
|
@ -0,0 +1,153 @@
|
||||||
|
#!/bin/sh -e
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2025 eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
# This script assumes you're in the source directory
|
||||||
|
|
||||||
|
export APPIMAGE_EXTRACT_AND_RUN=1
|
||||||
|
export BASE_ARCH="$(uname -m)"
|
||||||
|
|
||||||
|
SHARUN="https://github.com/VHSgunzo/sharun/releases/latest/download/sharun-${BASE_ARCH}-aio"
|
||||||
|
URUNTIME="https://github.com/VHSgunzo/uruntime/releases/latest/download/uruntime-appimage-dwarfs-${BASE_ARCH}"
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
amd64|"")
|
||||||
|
echo "Packaging amd64-v3 optimized build of Eden"
|
||||||
|
ARCH="amd64_v3"
|
||||||
|
;;
|
||||||
|
steamdeck|zen2)
|
||||||
|
echo "Packaging Steam Deck (Zen 2) optimized build of Eden"
|
||||||
|
ARCH="steamdeck"
|
||||||
|
;;
|
||||||
|
rog-ally|allyx|zen4)
|
||||||
|
echo "Packaging ROG Ally X (Zen 4) optimized build of Eden"
|
||||||
|
ARCH="rog-ally-x"
|
||||||
|
;;
|
||||||
|
legacy)
|
||||||
|
echo "Packaging amd64 generic build of Eden"
|
||||||
|
ARCH=amd64
|
||||||
|
;;
|
||||||
|
aarch64)
|
||||||
|
echo "Packaging armv8-a build of Eden"
|
||||||
|
ARCH=aarch64
|
||||||
|
;;
|
||||||
|
armv9)
|
||||||
|
echo "Packaging armv9-a build of Eden"
|
||||||
|
ARCH=armv9
|
||||||
|
;;
|
||||||
|
native)
|
||||||
|
echo "Packaging native build of Eden"
|
||||||
|
ARCH="$BASE_ARCH"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
export BUILDDIR="$2"
|
||||||
|
|
||||||
|
if [ "$BUILDDIR" = '' ]
|
||||||
|
then
|
||||||
|
BUILDDIR=build
|
||||||
|
fi
|
||||||
|
|
||||||
|
EDEN_TAG=$(git describe --tags --abbrev=0)
|
||||||
|
echo "Making \"$EDEN_TAG\" build"
|
||||||
|
# git checkout "$EDEN_TAG"
|
||||||
|
VERSION="$(echo "$EDEN_TAG")"
|
||||||
|
|
||||||
|
# NOW MAKE APPIMAGE
|
||||||
|
mkdir -p ./AppDir
|
||||||
|
cd ./AppDir
|
||||||
|
|
||||||
|
cp ../dist/dev.eden_emu.eden.desktop .
|
||||||
|
cp ../dist/dev.eden_emu.eden.svg .
|
||||||
|
|
||||||
|
ln -sf ./dev.eden_emu.eden.svg ./.DirIcon
|
||||||
|
|
||||||
|
UPINFO='gh-releases-zsync|eden-emulator|Releases|latest|*.AppImage.zsync'
|
||||||
|
|
||||||
|
if [ "$DEVEL" = 'true' ]; then
|
||||||
|
sed -i 's|Name=Eden|Name=Eden Nightly|' ./dev.eden_emu.eden.desktop
|
||||||
|
UPINFO="$(echo "$UPINFO" | sed 's|Releases|nightly|')"
|
||||||
|
fi
|
||||||
|
|
||||||
|
LIBDIR="/usr/lib"
|
||||||
|
|
||||||
|
# Workaround for Gentoo
|
||||||
|
if [ ! -d "$LIBDIR/qt6" ]
|
||||||
|
then
|
||||||
|
LIBDIR="/usr/lib64"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Workaround for Debian
|
||||||
|
if [ ! -d "$LIBDIR/qt6" ]
|
||||||
|
then
|
||||||
|
LIBDIR="/usr/lib/${BASE_ARCH}-linux-gnu"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Bundle all libs
|
||||||
|
|
||||||
|
wget --retry-connrefused --tries=30 "$SHARUN" -O ./sharun-aio
|
||||||
|
chmod +x ./sharun-aio
|
||||||
|
xvfb-run -a ./sharun-aio l -p -v -e -s -k \
|
||||||
|
../$BUILDDIR/bin/eden* \
|
||||||
|
$LIBDIR/lib*GL*.so* \
|
||||||
|
$LIBDIR/dri/* \
|
||||||
|
$LIBDIR/vdpau/* \
|
||||||
|
$LIBDIR/libvulkan* \
|
||||||
|
$LIBDIR/libXss.so* \
|
||||||
|
$LIBDIR/libdecor-0.so* \
|
||||||
|
$LIBDIR/libgamemode.so* \
|
||||||
|
$LIBDIR/qt6/plugins/audio/* \
|
||||||
|
$LIBDIR/qt6/plugins/bearer/* \
|
||||||
|
$LIBDIR/qt6/plugins/imageformats/* \
|
||||||
|
$LIBDIR/qt6/plugins/iconengines/* \
|
||||||
|
$LIBDIR/qt6/plugins/platforms/* \
|
||||||
|
$LIBDIR/qt6/plugins/platformthemes/* \
|
||||||
|
$LIBDIR/qt6/plugins/platforminputcontexts/* \
|
||||||
|
$LIBDIR/qt6/plugins/styles/* \
|
||||||
|
$LIBDIR/qt6/plugins/xcbglintegrations/* \
|
||||||
|
$LIBDIR/qt6/plugins/wayland-*/* \
|
||||||
|
$LIBDIR/pulseaudio/* \
|
||||||
|
$LIBDIR/pipewire-0.3/* \
|
||||||
|
$LIBDIR/spa-0.2/*/* \
|
||||||
|
$LIBDIR/alsa-lib/*
|
||||||
|
|
||||||
|
rm -f ./sharun-aio
|
||||||
|
|
||||||
|
# Prepare sharun
|
||||||
|
if [ "$ARCH" = 'aarch64' ]; then
|
||||||
|
# allow the host vulkan to be used for aarch64 given the sad situation
|
||||||
|
echo 'SHARUN_ALLOW_SYS_VKICD=1' > ./.env
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Workaround for Gentoo
|
||||||
|
if [ -d "shared/libproxy" ]; then
|
||||||
|
cp shared/libproxy/* lib/
|
||||||
|
fi
|
||||||
|
|
||||||
|
ln -f ./sharun ./AppRun
|
||||||
|
./sharun -g
|
||||||
|
|
||||||
|
# turn appdir into appimage
|
||||||
|
cd ..
|
||||||
|
wget -q "$URUNTIME" -O ./uruntime
|
||||||
|
chmod +x ./uruntime
|
||||||
|
|
||||||
|
#Add udpate info to runtime
|
||||||
|
echo "Adding update information \"$UPINFO\" to runtime..."
|
||||||
|
./uruntime --appimage-addupdinfo "$UPINFO"
|
||||||
|
|
||||||
|
echo "Generating AppImage..."
|
||||||
|
./uruntime --appimage-mkdwarfs -f \
|
||||||
|
--set-owner 0 --set-group 0 \
|
||||||
|
--no-history --no-create-timestamp \
|
||||||
|
--categorize=hotness --hotness-list=.ci/linux/eden.dwfsprof \
|
||||||
|
--compression zstd:level=22 -S26 -B32 \
|
||||||
|
--header uruntime \
|
||||||
|
-N 4 \
|
||||||
|
-i ./AppDir -o Eden-"$VERSION"-"$ARCH".AppImage
|
||||||
|
|
||||||
|
echo "Generating zsync file..."
|
||||||
|
zsyncmake *.AppImage -u *.AppImage
|
||||||
|
echo "All Done!"
|
||||||
22
.ci/source.sh
Executable file
22
.ci/source.sh
Executable file
|
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# git-archive-all
|
||||||
|
export PATH="$PATH:/home/$USER/.local/bin"
|
||||||
|
|
||||||
|
GITDATE="`git show -s --date=short --format='%ad' | sed 's/-//g'`"
|
||||||
|
GITREV="`git show -s --format='%h'`"
|
||||||
|
REV_NAME="eden-unified-source-${GITDATE}-${GITREV}"
|
||||||
|
|
||||||
|
COMPAT_LIST='dist/compatibility_list/compatibility_list.json'
|
||||||
|
|
||||||
|
mkdir artifacts
|
||||||
|
|
||||||
|
touch "${COMPAT_LIST}"
|
||||||
|
git describe --abbrev=0 --always HEAD > GIT-COMMIT
|
||||||
|
git describe --tags HEAD > GIT-TAG || echo 'unknown' > GIT-TAG
|
||||||
|
git-archive-all --include "${COMPAT_LIST}" --include GIT-COMMIT --include GIT-TAG --force-submodules artifacts/"${REV_NAME}.tar"
|
||||||
|
|
||||||
|
cd artifacts/
|
||||||
|
xz -T0 -9 "${REV_NAME}.tar"
|
||||||
|
sha256sum "${REV_NAME}.tar.xz" > "${REV_NAME}.tar.xz.sha256sum"
|
||||||
|
cd ..
|
||||||
11
.ci/translate.sh
Executable file
11
.ci/translate.sh
Executable file
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
for i in dist/languages/*.ts; do
|
||||||
|
SRC=en_US
|
||||||
|
TARGET=`head -n1 $i | awk -F 'language="' '{split($2, a, "\""); print a[1]}'`
|
||||||
|
|
||||||
|
# requires fd
|
||||||
|
SOURCES=`fd . src/yuzu -tf -e ui -e cpp -e h -e plist`
|
||||||
|
|
||||||
|
lupdate -source-language $SRC -target-language $TARGET $SOURCES -ts /data/code/eden/$i
|
||||||
|
done
|
||||||
21
.ci/update-icons.sh
Executable file
21
.ci/update-icons.sh
Executable file
|
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/sh -e
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2025 eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
which png2icns || [ which yay && yay libicns ] || exit
|
||||||
|
which magick || exit
|
||||||
|
|
||||||
|
export EDEN_SVG_ICO="dist/dev.eden_emu.eden.svg"
|
||||||
|
svgo --multipass $EDEN_SVG_ICO
|
||||||
|
|
||||||
|
magick -density 256x256 -background transparent $EDEN_SVG_ICO \
|
||||||
|
-define icon:auto-resize -colors 256 dist/eden.ico || exit
|
||||||
|
convert -density 256x256 -resize 256x256 -background transparent $EDEN_SVG_ICO \
|
||||||
|
dist/yuzu.bmp || exit
|
||||||
|
|
||||||
|
export TMP_PNG="dist/eden-tmp.png"
|
||||||
|
magick -size 1024x1024 -background transparent $EDEN_SVG_ICO $TMP_PNG || exit
|
||||||
|
png2icns dist/eden.icns $TMP_PNG || exit
|
||||||
|
cp dist/eden.icns dist/yuzu.icns
|
||||||
|
rm $TMP_PNG
|
||||||
52
.ci/windows/build.sh
Normal file
52
.ci/windows/build.sh
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
if [ "$COMPILER" == "clang" ]
|
||||||
|
then
|
||||||
|
EXTRA_CMAKE_FLAGS+=(
|
||||||
|
-DCMAKE_CXX_COMPILER=clang-cl
|
||||||
|
-DCMAKE_C_COMPILER=clang-cl
|
||||||
|
-DCMAKE_CXX_FLAGS="-O3"
|
||||||
|
-DCMAKE_C_FLAGS="-O3"
|
||||||
|
)
|
||||||
|
|
||||||
|
BUILD_TYPE="RelWithDebInfo"
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -z "$WINDEPLOYQT" ] && { echo "WINDEPLOYQT environment variable required."; exit 1; }
|
||||||
|
|
||||||
|
echo $EXTRA_CMAKE_FLAGS
|
||||||
|
|
||||||
|
mkdir -p build && cd build
|
||||||
|
cmake .. -G Ninja \
|
||||||
|
-DCMAKE_BUILD_TYPE="${BUILD_TYPE:-Release}" \
|
||||||
|
-DENABLE_QT_TRANSLATION=ON \
|
||||||
|
-DUSE_DISCORD_PRESENCE=ON \
|
||||||
|
-DYUZU_USE_BUNDLED_SDL2=ON \
|
||||||
|
-DBUILD_TESTING=OFF \
|
||||||
|
-DYUZU_TESTS=OFF \
|
||||||
|
-DDYNARMIC_TESTS=OFF \
|
||||||
|
-DYUZU_CMD=OFF \
|
||||||
|
-DYUZU_ROOM_STANDALONE=OFF \
|
||||||
|
-DYUZU_USE_QT_MULTIMEDIA=${USE_MULTIMEDIA:-false} \
|
||||||
|
-DYUZU_USE_QT_WEB_ENGINE=${USE_WEBENGINE:-false} \
|
||||||
|
-DYUZU_ENABLE_LTO=ON \
|
||||||
|
-DCMAKE_EXE_LINKER_FLAGS=" /LTCG" \
|
||||||
|
-DDYNARMIC_ENABLE_LTO=ON \
|
||||||
|
-DYUZU_USE_BUNDLED_QT=${BUNDLE_QT:-false} \
|
||||||
|
-DUSE_CCACHE=${CCACHE:-false} \
|
||||||
|
-DENABLE_QT_UPDATE_CHECKER=${DEVEL:-true} \
|
||||||
|
"${EXTRA_CMAKE_FLAGS[@]}" \
|
||||||
|
"$@"
|
||||||
|
|
||||||
|
ninja
|
||||||
|
|
||||||
|
set +e
|
||||||
|
rm -f bin/*.pdb
|
||||||
|
set -e
|
||||||
|
|
||||||
|
$WINDEPLOYQT --release --no-compiler-runtime --no-opengl-sw --no-system-dxc-compiler --no-system-d3d-compiler --dir pkg bin/eden.exe
|
||||||
|
|
||||||
|
cp bin/* pkg
|
||||||
42
.ci/windows/install-msvc.ps1
Executable file
42
.ci/windows/install-msvc.ps1
Executable file
|
|
@ -0,0 +1,42 @@
|
||||||
|
# SPDX-FileCopyrightText: 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
|
||||||
|
# Check if running as administrator
|
||||||
|
if (-not ([bool](net session 2>$null))) {
|
||||||
|
Write-Host "This script must be run with administrator privileges!"
|
||||||
|
Exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
$VSVer = "17"
|
||||||
|
$ExeFile = "vs_BuildTools.exe"
|
||||||
|
$Uri = "https://aka.ms/vs/$VSVer/release/$ExeFile"
|
||||||
|
$Destination = "./$ExeFile"
|
||||||
|
|
||||||
|
Write-Host "Downloading Visual Studio Build Tools from $Uri"
|
||||||
|
$WebClient = New-Object System.Net.WebClient
|
||||||
|
$WebClient.DownloadFile($Uri, $Destination)
|
||||||
|
Write-Host "Finished downloading $ExeFile"
|
||||||
|
|
||||||
|
$VSROOT = "C:/VSBuildTools/$VSVer"
|
||||||
|
$Arguments = @(
|
||||||
|
"--installPath `"$VSROOT`"", # set custom installation path
|
||||||
|
"--quiet", # suppress UI
|
||||||
|
"--wait", # wait for installation to complete
|
||||||
|
"--norestart", # prevent automatic restart
|
||||||
|
"--add Microsoft.VisualStudio.Workload.VCTools", # add C++ build tools workload
|
||||||
|
"--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64", # add core x86/x64 C++ tools
|
||||||
|
"--add Microsoft.VisualStudio.Component.Windows10SDK.19041" # add specific Windows SDK
|
||||||
|
)
|
||||||
|
|
||||||
|
Write-Host "Installing Visual Studio Build Tools"
|
||||||
|
$InstallProcess = Start-Process -FilePath $Destination -NoNewWindow -PassThru -Wait -ArgumentList $Arguments
|
||||||
|
$ExitCode = $InstallProcess.ExitCode
|
||||||
|
|
||||||
|
if ($ExitCode -ne 0) {
|
||||||
|
Write-Host "Error installing Visual Studio Build Tools (Error: $ExitCode)"
|
||||||
|
Exit $ExitCode
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "Finished installing Visual Studio Build Tools"
|
||||||
39
.ci/windows/install-vulkan-sdk.ps1
Executable file
39
.ci/windows/install-vulkan-sdk.ps1
Executable file
|
|
@ -0,0 +1,39 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
|
||||||
|
# Check if running as administrator
|
||||||
|
if (-not ([bool](net session 2>$null))) {
|
||||||
|
Write-Host "This script must be run with administrator privileges!"
|
||||||
|
Exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
$VulkanSDKVer = "1.4.321.1"
|
||||||
|
$ExeFile = "vulkansdk-windows-X64-$VulkanSDKVer.exe"
|
||||||
|
$Uri = "https://sdk.lunarg.com/sdk/download/$VulkanSDKVer/windows/$ExeFile"
|
||||||
|
$Destination = "./$ExeFile"
|
||||||
|
|
||||||
|
echo "Downloading Vulkan SDK $VulkanSDKVer from $Uri"
|
||||||
|
$WebClient = New-Object System.Net.WebClient
|
||||||
|
$WebClient.DownloadFile($Uri, $Destination)
|
||||||
|
echo "Finished downloading $ExeFile"
|
||||||
|
|
||||||
|
$VULKAN_SDK = "C:/VulkanSDK/$VulkanSDKVer"
|
||||||
|
$Arguments = "--root `"$VULKAN_SDK`" --accept-licenses --default-answer --confirm-command install"
|
||||||
|
|
||||||
|
echo "Installing Vulkan SDK $VulkanSDKVer"
|
||||||
|
$InstallProcess = Start-Process -FilePath $Destination -NoNewWindow -PassThru -Wait -ArgumentList $Arguments
|
||||||
|
$ExitCode = $InstallProcess.ExitCode
|
||||||
|
|
||||||
|
if ($ExitCode -ne 0) {
|
||||||
|
echo "Error installing Vulkan SDK $VulkanSDKVer (Error: $ExitCode)"
|
||||||
|
Exit $ExitCode
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Finished installing Vulkan SDK $VulkanSDKVer"
|
||||||
|
|
||||||
|
if ("$env:GITHUB_ACTIONS" -eq "true") {
|
||||||
|
echo "VULKAN_SDK=$VULKAN_SDK" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||||
|
echo "$VULKAN_SDK/Bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
||||||
|
}
|
||||||
18
.ci/windows/package.sh
Normal file
18
.ci/windows/package.sh
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
GITDATE=$(git show -s --date=short --format='%ad' | tr -d "-")
|
||||||
|
GITREV=$(git show -s --format='%h')
|
||||||
|
|
||||||
|
ZIP_NAME="Eden-Windows-${ARCH}-${GITDATE}-${GITREV}.zip"
|
||||||
|
|
||||||
|
ARTIFACTS_DIR="artifacts"
|
||||||
|
PKG_DIR="build/pkg"
|
||||||
|
|
||||||
|
mkdir -p "$ARTIFACTS_DIR"
|
||||||
|
|
||||||
|
TMP_DIR=$(mktemp -d)
|
||||||
|
|
||||||
|
cp -r "$PKG_DIR"/* "$TMP_DIR"/
|
||||||
|
cp LICENSE* README* "$TMP_DIR"/
|
||||||
|
|
||||||
|
7z a -tzip "$ARTIFACTS_DIR/$ZIP_NAME" "$TMP_DIR"/*
|
||||||
|
|
||||||
|
rm -rf "$TMP_DIR"
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
name: tx-src
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ master ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
sources:
|
|
||||||
runs-on: source
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Push New Sources
|
|
||||||
run: |
|
|
||||||
export PATH=/usr/lib/qt6/bin:$PATH
|
|
||||||
./tools/translations/qt-source.sh
|
|
||||||
tx-cli push -s
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
name: Check Strings
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ master ]
|
|
||||||
pull_request:
|
|
||||||
branches: [ master ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
check-strings:
|
|
||||||
runs-on: source
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 1
|
|
||||||
|
|
||||||
- name: Find Unused Strings
|
|
||||||
run: ./tools/unused-strings.sh
|
|
||||||
|
|
||||||
- name: Find Stale Translations
|
|
||||||
run: ./tools/stale-translations.sh
|
|
||||||
|
|
||||||
- name: Diff
|
|
||||||
run: git --no-pager diff --exit-code HEAD
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
||||||
name: tx-pull
|
|
||||||
|
|
||||||
on:
|
|
||||||
# monday at 4pm
|
|
||||||
schedule:
|
|
||||||
- cron: '0 16 * * 1'
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
tx-update:
|
|
||||||
runs-on: source
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Get New Translations
|
|
||||||
run: tx-cli pull -t -f
|
|
||||||
|
|
||||||
- name: Push branch
|
|
||||||
run: |
|
|
||||||
git config --local user.name "Eden CI"
|
|
||||||
git config --local user.email "ci@eden-emu.dev"
|
|
||||||
git config --local user.signingkey "D57652791BB25D2A"
|
|
||||||
git config --local push.autoSetupRemote true
|
|
||||||
|
|
||||||
git remote set-url origin ci:eden-emu/eden.git
|
|
||||||
|
|
||||||
TIMESTAMP=$(date +"%s")
|
|
||||||
echo "TIMESTAMP=$TIMESTAMP" >> "$GITHUB_ENV"
|
|
||||||
|
|
||||||
git switch -c update-translations-$TIMESTAMP
|
|
||||||
git add dist src/android/app/src/main/res
|
|
||||||
|
|
||||||
git commit -sS -m "[dist, android] Update translations from Transifex"
|
|
||||||
git push
|
|
||||||
|
|
||||||
- name: Create PR
|
|
||||||
run: |
|
|
||||||
DATE=$(date +"%b %d")
|
|
||||||
TITLE="[dist, android] Update translations from Transifex for $DATE"
|
|
||||||
BODY="Automatic translation update for $DATE"
|
|
||||||
BASE=master
|
|
||||||
HEAD=update-translations-$TIMESTAMP
|
|
||||||
|
|
||||||
cat << EOF > data.json
|
|
||||||
{
|
|
||||||
"base": "$BASE",
|
|
||||||
"body": "$BODY",
|
|
||||||
"head": "$HEAD",
|
|
||||||
"title": "$TITLE"
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
curl -XPOST \
|
|
||||||
'https://git.eden-emu.dev/api/v1/repos/eden-emu/eden/pulls' \
|
|
||||||
-H 'accept: application/json' \
|
|
||||||
-H 'Authorization: Bearer ${{ secrets.CI_FJ_TOKEN }}' \
|
|
||||||
-H 'Content-Type: application/json' \
|
|
||||||
-d "@data.json" --fail
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue