From 4a78a2533f6650d2103e25b6a53e080f3d5748ca Mon Sep 17 00:00:00 2001 From: Crimson-Hawk <warrobots.5psiml@gmail.com> Date: Tue, 5 Mar 2024 20:10:18 +0800 Subject: [PATCH] imported hiddenFiles from legacy On branch master Your branch is up to date with 'origin/master'. Changes to be committed: new file: hiddenFiles/.DS_Store new file: hiddenFiles/.ci/.DS_Store new file: hiddenFiles/.ci/scripts/android/build.sh new file: hiddenFiles/.ci/scripts/android/eabuild.sh new file: hiddenFiles/.ci/scripts/android/mainlinebuild.sh new file: hiddenFiles/.ci/scripts/android/upload.sh new file: hiddenFiles/.ci/scripts/clang/docker.sh new file: hiddenFiles/.ci/scripts/clang/exec.sh new file: hiddenFiles/.ci/scripts/clang/upload.sh new file: hiddenFiles/.ci/scripts/common/post-upload.sh new file: hiddenFiles/.ci/scripts/common/pre-upload.sh new file: hiddenFiles/.ci/scripts/format/docker.sh new file: hiddenFiles/.ci/scripts/format/exec.sh new file: hiddenFiles/.ci/scripts/format/script.sh new file: hiddenFiles/.ci/scripts/linux/docker.sh new file: hiddenFiles/.ci/scripts/linux/exec.sh new file: hiddenFiles/.ci/scripts/linux/upload.sh new file: hiddenFiles/.ci/scripts/merge/apply-patches-by-label-private.py new file: hiddenFiles/.ci/scripts/merge/apply-patches-by-label.py new file: hiddenFiles/.ci/scripts/merge/check-label-presence.py new file: hiddenFiles/.ci/scripts/merge/yuzubot-git-config.sh new file: hiddenFiles/.ci/scripts/transifex/docker.sh new file: hiddenFiles/.ci/scripts/windows/docker.sh new file: hiddenFiles/.ci/scripts/windows/exec.sh new file: hiddenFiles/.ci/scripts/windows/install-vulkan-sdk.ps1 new file: hiddenFiles/.ci/scripts/windows/scan_dll.py new file: hiddenFiles/.ci/scripts/windows/upload.ps1 new file: hiddenFiles/.ci/scripts/windows/upload.sh new file: hiddenFiles/.ci/templates/build-mock.yml new file: hiddenFiles/.ci/templates/build-msvc.yml new file: hiddenFiles/.ci/templates/build-single.yml new file: hiddenFiles/.ci/templates/build-standard.yml new file: hiddenFiles/.ci/templates/build-testing.yml new file: hiddenFiles/.ci/templates/format-check.yml new file: hiddenFiles/.ci/templates/merge-private.yml new file: hiddenFiles/.ci/templates/merge.yml new file: hiddenFiles/.ci/templates/mergebot-private.yml new file: hiddenFiles/.ci/templates/mergebot.yml new file: hiddenFiles/.ci/templates/release-download.yml new file: hiddenFiles/.ci/templates/release-github.yml new file: hiddenFiles/.ci/templates/release-private-tag.yml new file: hiddenFiles/.ci/templates/release-universal.yml new file: hiddenFiles/.ci/templates/retrieve-artifact-source.yml new file: hiddenFiles/.ci/templates/retrieve-master-source.yml new file: hiddenFiles/.ci/templates/sync-source.yml new file: hiddenFiles/.ci/yuzu-mainline-step1.yml new file: hiddenFiles/.ci/yuzu-mainline-step2.yml new file: hiddenFiles/.ci/yuzu-patreon-step1.yml new file: hiddenFiles/.ci/yuzu-patreon-step2.yml new file: hiddenFiles/.ci/yuzu-repo-sync.yml new file: hiddenFiles/.ci/yuzu-verify.yml new file: hiddenFiles/.codespellrc new file: hiddenFiles/.git-blame-ignore-revs new file: hiddenFiles/.gitattributes new file: hiddenFiles/.gitmodules new file: hiddenFiles/.reuse/dep5 --- hiddenFiles/.DS_Store | Bin 0 -> 6148 bytes hiddenFiles/.ci/.DS_Store | Bin 0 -> 6148 bytes hiddenFiles/.ci/scripts/android/build.sh | 29 ++++ hiddenFiles/.ci/scripts/android/eabuild.sh | 21 +++ .../.ci/scripts/android/mainlinebuild.sh | 21 +++ hiddenFiles/.ci/scripts/android/upload.sh | 22 +++ hiddenFiles/.ci/scripts/clang/docker.sh | 32 ++++ hiddenFiles/.ci/scripts/clang/exec.sh | 11 ++ hiddenFiles/.ci/scripts/clang/upload.sh | 23 +++ hiddenFiles/.ci/scripts/common/post-upload.sh | 20 +++ hiddenFiles/.ci/scripts/common/pre-upload.sh | 10 ++ hiddenFiles/.ci/scripts/format/docker.sh | 9 + hiddenFiles/.ci/scripts/format/exec.sh | 10 ++ hiddenFiles/.ci/scripts/format/script.sh | 37 ++++ hiddenFiles/.ci/scripts/linux/docker.sh | 79 +++++++++ hiddenFiles/.ci/scripts/linux/exec.sh | 16 ++ hiddenFiles/.ci/scripts/linux/upload.sh | 67 ++++++++ .../merge/apply-patches-by-label-private.py | 48 ++++++ .../scripts/merge/apply-patches-by-label.py | 38 +++++ .../.ci/scripts/merge/check-label-presence.py | 21 +++ .../.ci/scripts/merge/yuzubot-git-config.sh | 5 + hiddenFiles/.ci/scripts/transifex/docker.sh | 19 +++ hiddenFiles/.ci/scripts/windows/docker.sh | 66 +++++++ hiddenFiles/.ci/scripts/windows/exec.sh | 11 ++ .../scripts/windows/install-vulkan-sdk.ps1 | 33 ++++ hiddenFiles/.ci/scripts/windows/scan_dll.py | 109 ++++++++++++ hiddenFiles/.ci/scripts/windows/upload.ps1 | 118 +++++++++++++ hiddenFiles/.ci/scripts/windows/upload.sh | 22 +++ hiddenFiles/.ci/templates/build-mock.yml | 8 + hiddenFiles/.ci/templates/build-msvc.yml | 31 ++++ hiddenFiles/.ci/templates/build-single.yml | 26 +++ hiddenFiles/.ci/templates/build-standard.yml | 33 ++++ hiddenFiles/.ci/templates/build-testing.yml | 40 +++++ hiddenFiles/.ci/templates/format-check.yml | 17 ++ hiddenFiles/.ci/templates/merge-private.yml | 44 +++++ hiddenFiles/.ci/templates/merge.yml | 43 +++++ .../.ci/templates/mergebot-private.yml | 33 ++++ hiddenFiles/.ci/templates/mergebot.yml | 18 ++ .../.ci/templates/release-download.yml | 16 ++ hiddenFiles/.ci/templates/release-github.yml | 16 ++ .../.ci/templates/release-private-tag.yml | 12 ++ .../.ci/templates/release-universal.yml | 13 ++ .../templates/retrieve-artifact-source.yml | 19 +++ .../.ci/templates/retrieve-master-source.yml | 14 ++ hiddenFiles/.ci/templates/sync-source.yml | 10 ++ hiddenFiles/.ci/yuzu-mainline-step1.yml | 14 ++ hiddenFiles/.ci/yuzu-mainline-step2.yml | 64 +++++++ hiddenFiles/.ci/yuzu-patreon-step1.yml | 14 ++ hiddenFiles/.ci/yuzu-patreon-step2.yml | 59 +++++++ hiddenFiles/.ci/yuzu-repo-sync.yml | 22 +++ hiddenFiles/.ci/yuzu-verify.yml | 23 +++ hiddenFiles/.codespellrc | 6 + hiddenFiles/.git-blame-ignore-revs | 5 + hiddenFiles/.gitattributes | 7 + hiddenFiles/.gitmodules | 69 ++++++++ hiddenFiles/.reuse/dep5 | 161 ++++++++++++++++++ 56 files changed, 1734 insertions(+) create mode 100644 hiddenFiles/.DS_Store create mode 100644 hiddenFiles/.ci/.DS_Store create mode 100755 hiddenFiles/.ci/scripts/android/build.sh create mode 100644 hiddenFiles/.ci/scripts/android/eabuild.sh create mode 100644 hiddenFiles/.ci/scripts/android/mainlinebuild.sh create mode 100755 hiddenFiles/.ci/scripts/android/upload.sh create mode 100755 hiddenFiles/.ci/scripts/clang/docker.sh create mode 100644 hiddenFiles/.ci/scripts/clang/exec.sh create mode 100755 hiddenFiles/.ci/scripts/clang/upload.sh create mode 100644 hiddenFiles/.ci/scripts/common/post-upload.sh create mode 100644 hiddenFiles/.ci/scripts/common/pre-upload.sh create mode 100644 hiddenFiles/.ci/scripts/format/docker.sh create mode 100644 hiddenFiles/.ci/scripts/format/exec.sh create mode 100755 hiddenFiles/.ci/scripts/format/script.sh create mode 100755 hiddenFiles/.ci/scripts/linux/docker.sh create mode 100644 hiddenFiles/.ci/scripts/linux/exec.sh create mode 100755 hiddenFiles/.ci/scripts/linux/upload.sh create mode 100644 hiddenFiles/.ci/scripts/merge/apply-patches-by-label-private.py create mode 100644 hiddenFiles/.ci/scripts/merge/apply-patches-by-label.py create mode 100644 hiddenFiles/.ci/scripts/merge/check-label-presence.py create mode 100644 hiddenFiles/.ci/scripts/merge/yuzubot-git-config.sh create mode 100755 hiddenFiles/.ci/scripts/transifex/docker.sh create mode 100755 hiddenFiles/.ci/scripts/windows/docker.sh create mode 100644 hiddenFiles/.ci/scripts/windows/exec.sh create mode 100644 hiddenFiles/.ci/scripts/windows/install-vulkan-sdk.ps1 create mode 100644 hiddenFiles/.ci/scripts/windows/scan_dll.py create mode 100644 hiddenFiles/.ci/scripts/windows/upload.ps1 create mode 100755 hiddenFiles/.ci/scripts/windows/upload.sh create mode 100644 hiddenFiles/.ci/templates/build-mock.yml create mode 100644 hiddenFiles/.ci/templates/build-msvc.yml create mode 100644 hiddenFiles/.ci/templates/build-single.yml create mode 100644 hiddenFiles/.ci/templates/build-standard.yml create mode 100644 hiddenFiles/.ci/templates/build-testing.yml create mode 100644 hiddenFiles/.ci/templates/format-check.yml create mode 100644 hiddenFiles/.ci/templates/merge-private.yml create mode 100644 hiddenFiles/.ci/templates/merge.yml create mode 100644 hiddenFiles/.ci/templates/mergebot-private.yml create mode 100644 hiddenFiles/.ci/templates/mergebot.yml create mode 100644 hiddenFiles/.ci/templates/release-download.yml create mode 100644 hiddenFiles/.ci/templates/release-github.yml create mode 100644 hiddenFiles/.ci/templates/release-private-tag.yml create mode 100644 hiddenFiles/.ci/templates/release-universal.yml create mode 100644 hiddenFiles/.ci/templates/retrieve-artifact-source.yml create mode 100644 hiddenFiles/.ci/templates/retrieve-master-source.yml create mode 100644 hiddenFiles/.ci/templates/sync-source.yml create mode 100644 hiddenFiles/.ci/yuzu-mainline-step1.yml create mode 100644 hiddenFiles/.ci/yuzu-mainline-step2.yml create mode 100644 hiddenFiles/.ci/yuzu-patreon-step1.yml create mode 100644 hiddenFiles/.ci/yuzu-patreon-step2.yml create mode 100644 hiddenFiles/.ci/yuzu-repo-sync.yml create mode 100644 hiddenFiles/.ci/yuzu-verify.yml create mode 100644 hiddenFiles/.codespellrc create mode 100644 hiddenFiles/.git-blame-ignore-revs create mode 100644 hiddenFiles/.gitattributes create mode 100644 hiddenFiles/.gitmodules create mode 100644 hiddenFiles/.reuse/dep5 diff --git a/hiddenFiles/.DS_Store b/hiddenFiles/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8192d4dc7111bda0c6c9bf4ebe45b35819b296b9 GIT binary patch literal 6148 zcmeHKyH3L}6ul-DiqxeN3!`@=Q2)SG;S2f$s1E^Bqg0^o`3-)6g^dj{Gx0@ioa1ZS z7y=_gaIa(^=e~2K*s+MX$!0MY8Hq@VL3CX72-Ur&z2r=zV~+83-qh=!6u(!+-U~UF zxm>L-y8S;s>@0OtRkKwygQmP2zCPW)JfC*0i*Ky!%TCt9BTV*D?^>3!ksDd&RS)hz z+Pk%nPPVnP9Cfqn;47c34~c!S7ZYQ^7%&Emf&a$<&TL9KRJ7R`Fb0f)Ed$&iJO(i& zY!&0yfhk@AfCH$bV9mP(V|>DpuvLTw;xrVfp)Or9oQ6a1lV3>KDr&g6SQ&Xz<@d{r zi`Aj`(Oq0nwAmOi266@peH`)pKf@=}d&$p3?8z7~2L2cWZct6D30^9lt)E_xXRXIL s$Dq)!<pP3r_7i{y?jwiMsCLga{6fN3ky)sZ;XwNlh=kZ=4Ez8CZ*4k9ZvX%Q literal 0 HcmV?d00001 diff --git a/hiddenFiles/.ci/.DS_Store b/hiddenFiles/.ci/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..78ffb2a0b45251cbde71ffafb2d505835a3b500a GIT binary patch literal 6148 zcmeHKu};H447EcgQn7SoykF?Vgh;FK1^oeNivTH6B3kzR27kfM%)}?~Be3y&c1xoK z#8d&YCEvUF?40v*iSLMrr}xV-(TIprs9-Wg(<3r2+L6R8GRW~BHLYn?T#sjqs^jg3 z-^hTxyF*&hg6`;+cHUoEYr6Hk>rqyDJ})X6NzY#2o*rJFCw*SaA9&R_vRZ65ew0av zSVdP<BAbFPW8c=)CZ`iwsXbo1d7UQjo4k5GKXd!uvz?!OCoax_GvEyTc?M9kMbaZh zZ=C^Wz!}&wApeH|70e79#rW$$6ORDE0nAa*k9#Cw5CbqXY!qREu!aIPl<kPY8V-9f zzs#^v)NtZBGwx$Evz<`bc4!=;J8`Dytux>Zv>7<i%aPRo^RLhU?I6E$2AqL^#Q+cT zSw6)hS#9k+oYdL?y?}~{U!%AUK_`}C_(~~0hDL!sNC%i1Hj1!7d?OHP@WvU~D+3?G C5myNS literal 0 HcmV?d00001 diff --git a/hiddenFiles/.ci/scripts/android/build.sh b/hiddenFiles/.ci/scripts/android/build.sh new file mode 100755 index 0000000000..98593017f0 --- /dev/null +++ b/hiddenFiles/.ci/scripts/android/build.sh @@ -0,0 +1,29 @@ +#!/bin/bash -ex + +# SPDX-FileCopyrightText: 2023 yuzu Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +export NDK_CCACHE="$(which ccache)" +ccache -s + +BUILD_FLAVOR="mainline" + +BUILD_TYPE="release" +if [ "${GITHUB_REPOSITORY}" == "yuzu-emu/yuzu" ]; then + BUILD_TYPE="relWithDebInfo" +fi + +if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then + export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks" + base64 --decode <<< "${ANDROID_KEYSTORE_B64}" > "${ANDROID_KEYSTORE_FILE}" +fi + +cd src/android +chmod +x ./gradlew +./gradlew "assemble${BUILD_FLAVOR}${BUILD_TYPE}" "bundle${BUILD_FLAVOR}${BUILD_TYPE}" + +ccache -s + +if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then + rm "${ANDROID_KEYSTORE_FILE}" +fi diff --git a/hiddenFiles/.ci/scripts/android/eabuild.sh b/hiddenFiles/.ci/scripts/android/eabuild.sh new file mode 100644 index 0000000000..1672f29489 --- /dev/null +++ b/hiddenFiles/.ci/scripts/android/eabuild.sh @@ -0,0 +1,21 @@ +#!/bin/bash -ex + +# SPDX-FileCopyrightText: 2024 yuzu Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +export NDK_CCACHE="$(which ccache)" +ccache -s + +export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks" +base64 --decode <<< "${EA_PLAY_ANDROID_KEYSTORE_B64}" > "${ANDROID_KEYSTORE_FILE}" +export ANDROID_KEY_ALIAS="${PLAY_ANDROID_KEY_ALIAS}" +export ANDROID_KEYSTORE_PASS="${PLAY_ANDROID_KEYSTORE_PASS}" +export SERVICE_ACCOUNT_KEY_PATH="${GITHUB_WORKSPACE}/sa.json" +base64 --decode <<< "${EA_SERVICE_ACCOUNT_KEY_B64}" > "${SERVICE_ACCOUNT_KEY_PATH}" +./gradlew "publishEaReleaseBundle" + +ccache -s + +if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then + rm "${ANDROID_KEYSTORE_FILE}" +fi diff --git a/hiddenFiles/.ci/scripts/android/mainlinebuild.sh b/hiddenFiles/.ci/scripts/android/mainlinebuild.sh new file mode 100644 index 0000000000..f3b89ed1c1 --- /dev/null +++ b/hiddenFiles/.ci/scripts/android/mainlinebuild.sh @@ -0,0 +1,21 @@ +#!/bin/bash -ex + +# SPDX-FileCopyrightText: 2024 yuzu Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +export NDK_CCACHE="$(which ccache)" +ccache -s + +export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks" +base64 --decode <<< "${MAINLINE_PLAY_ANDROID_KEYSTORE_B64}" > "${ANDROID_KEYSTORE_FILE}" +export ANDROID_KEY_ALIAS="${PLAY_ANDROID_KEY_ALIAS}" +export ANDROID_KEYSTORE_PASS="${PLAY_ANDROID_KEYSTORE_PASS}" +export SERVICE_ACCOUNT_KEY_PATH="${GITHUB_WORKSPACE}/sa.json" +base64 --decode <<< "${MAINLINE_SERVICE_ACCOUNT_KEY_B64}" > "${SERVICE_ACCOUNT_KEY_PATH}" +./gradlew "publishMainlineReleaseBundle" + +ccache -s + +if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then + rm "${ANDROID_KEYSTORE_FILE}" +fi diff --git a/hiddenFiles/.ci/scripts/android/upload.sh b/hiddenFiles/.ci/scripts/android/upload.sh new file mode 100755 index 0000000000..26b1a7efa2 --- /dev/null +++ b/hiddenFiles/.ci/scripts/android/upload.sh @@ -0,0 +1,22 @@ +#!/bin/bash -ex + +# SPDX-FileCopyrightText: 2023 yuzu Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +. ./.ci/scripts/common/pre-upload.sh + +REV_NAME="yuzu-${GITDATE}-${GITREV}" + +BUILD_FLAVOR="mainline" + +BUILD_TYPE_LOWER="release" +BUILD_TYPE_UPPER="Release" +if [ "${GITHUB_REPOSITORY}" == "yuzu-emu/yuzu" ]; then + BUILD_TYPE_LOWER="relWithDebInfo" + BUILD_TYPE_UPPER="RelWithDebInfo" +fi + +cp src/android/app/build/outputs/apk/"${BUILD_FLAVOR}/${BUILD_TYPE_LOWER}/app-${BUILD_FLAVOR}-${BUILD_TYPE_LOWER}.apk" \ + "artifacts/${REV_NAME}.apk" +cp src/android/app/build/outputs/bundle/"${BUILD_FLAVOR}${BUILD_TYPE_UPPER}"/"app-${BUILD_FLAVOR}-${BUILD_TYPE_LOWER}.aab" \ + "artifacts/${REV_NAME}.aab" diff --git a/hiddenFiles/.ci/scripts/clang/docker.sh b/hiddenFiles/.ci/scripts/clang/docker.sh new file mode 100755 index 0000000000..f878e24e15 --- /dev/null +++ b/hiddenFiles/.ci/scripts/clang/docker.sh @@ -0,0 +1,32 @@ +#!/bin/bash -ex + +# SPDX-FileCopyrightText: 2021 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +# Exit on error, rather than continuing with the rest of the script. +set -e + +ccache -s + +mkdir build || true && cd build +cmake .. \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS="-march=x86-64-v2" \ + -DCMAKE_CXX_COMPILER=/usr/lib/ccache/clang++ \ + -DCMAKE_C_COMPILER=/usr/lib/ccache/clang \ + -DCMAKE_INSTALL_PREFIX="/usr" \ + -DDISPLAY_VERSION=$1 \ + -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON \ + -DENABLE_QT_TRANSLATION=ON \ + -DUSE_DISCORD_PRESENCE=ON \ + -DYUZU_CRASH_DUMPS=ON \ + -DYUZU_ENABLE_COMPATIBILITY_REPORTING=${ENABLE_COMPATIBILITY_REPORTING:-"OFF"} \ + -DYUZU_USE_BUNDLED_FFMPEG=ON \ + -GNinja + +ninja + +ccache -s + +ctest -VV -C Release + diff --git a/hiddenFiles/.ci/scripts/clang/exec.sh b/hiddenFiles/.ci/scripts/clang/exec.sh new file mode 100644 index 0000000000..664fce5f84 --- /dev/null +++ b/hiddenFiles/.ci/scripts/clang/exec.sh @@ -0,0 +1,11 @@ +#!/bin/bash -ex + +# SPDX-FileCopyrightText: 2021 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +mkdir -p "ccache" || true +chmod a+x ./.ci/scripts/clang/docker.sh +# the UID for the container yuzu user is 1027 +sudo chown -R 1027 ./ +docker run -e ENABLE_COMPATIBILITY_REPORTING -e CCACHE_DIR=/yuzu/ccache -v "$(pwd):/yuzu" -w /yuzu yuzuemu/build-environments:linux-fresh /bin/bash /yuzu/.ci/scripts/clang/docker.sh "$1" +sudo chown -R $UID ./ diff --git a/hiddenFiles/.ci/scripts/clang/upload.sh b/hiddenFiles/.ci/scripts/clang/upload.sh new file mode 100755 index 0000000000..0b4b3e330b --- /dev/null +++ b/hiddenFiles/.ci/scripts/clang/upload.sh @@ -0,0 +1,23 @@ +#!/bin/bash -ex + +# SPDX-FileCopyrightText: 2021 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +. .ci/scripts/common/pre-upload.sh + +REV_NAME="yuzu-linux-${GITDATE}-${GITREV}" +ARCHIVE_NAME="${REV_NAME}.tar.xz" +COMPRESSION_FLAGS="-cJvf" + +if [ "${RELEASE_NAME}" = "mainline" ]; then + DIR_NAME="${REV_NAME}" +else + DIR_NAME="${REV_NAME}_${RELEASE_NAME}" +fi + +mkdir "$DIR_NAME" + +cp build/bin/yuzu-cmd "$DIR_NAME" +cp build/bin/yuzu "$DIR_NAME" + +. .ci/scripts/common/post-upload.sh diff --git a/hiddenFiles/.ci/scripts/common/post-upload.sh b/hiddenFiles/.ci/scripts/common/post-upload.sh new file mode 100644 index 0000000000..0930b7a7bd --- /dev/null +++ b/hiddenFiles/.ci/scripts/common/post-upload.sh @@ -0,0 +1,20 @@ +#!/bin/bash -ex + +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +# Copy documentation +cp LICENSE.txt "$DIR_NAME" +cp README.md "$DIR_NAME" + +if [[ -z "${NO_SOURCE_PACK}" ]]; then + git clone --depth 1 file://$(readlink -e .) ${REV_NAME}-source + tar -cJvf "${REV_NAME}-source.tar.xz" ${REV_NAME}-source + cp -v "${REV_NAME}-source.tar.xz" "$DIR_NAME" + cp -v "${REV_NAME}-source.tar.xz" "${ARTIFACTS_DIR}/" +fi + +tar $COMPRESSION_FLAGS "$ARCHIVE_NAME" "$DIR_NAME" + +# move the compiled archive into the artifacts directory to be uploaded by travis releases +mv "$ARCHIVE_NAME" "${ARTIFACTS_DIR}/" diff --git a/hiddenFiles/.ci/scripts/common/pre-upload.sh b/hiddenFiles/.ci/scripts/common/pre-upload.sh new file mode 100644 index 0000000000..3583f98402 --- /dev/null +++ b/hiddenFiles/.ci/scripts/common/pre-upload.sh @@ -0,0 +1,10 @@ +#!/bin/bash -ex + +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.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}/" diff --git a/hiddenFiles/.ci/scripts/format/docker.sh b/hiddenFiles/.ci/scripts/format/docker.sh new file mode 100644 index 0000000000..a0f7a61cce --- /dev/null +++ b/hiddenFiles/.ci/scripts/format/docker.sh @@ -0,0 +1,9 @@ +#!/bin/bash -ex + +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +# Run clang-format +cd /yuzu +chmod a+x ./.ci/scripts/format/script.sh +./.ci/scripts/format/script.sh diff --git a/hiddenFiles/.ci/scripts/format/exec.sh b/hiddenFiles/.ci/scripts/format/exec.sh new file mode 100644 index 0000000000..40ab41abda --- /dev/null +++ b/hiddenFiles/.ci/scripts/format/exec.sh @@ -0,0 +1,10 @@ +#!/bin/bash -ex + +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +chmod a+x ./.ci/scripts/format/docker.sh +# the UID for the container yuzu user is 1027 +sudo chown -R 1027 ./ +docker run -v "$(pwd):/yuzu" -w /yuzu yuzuemu/build-environments:linux-clang-format /bin/bash -ex /yuzu/.ci/scripts/format/docker.sh +sudo chown -R $UID ./ diff --git a/hiddenFiles/.ci/scripts/format/script.sh b/hiddenFiles/.ci/scripts/format/script.sh new file mode 100755 index 0000000000..f9c63dbfa3 --- /dev/null +++ b/hiddenFiles/.ci/scripts/format/script.sh @@ -0,0 +1,37 @@ +#!/bin/bash -ex + +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +shopt -s nullglob globstar + +if git grep -nrI '\s$' src **/*.yml **/*.txt **/*.md Doxyfile .gitignore .gitmodules .ci* dist/*.desktop dist/*.svg dist/*.xml; then + echo Trailing whitespace found, aborting + exit 1 +fi + +# Default clang-format points to default 3.5 version one +CLANG_FORMAT="${CLANG_FORMAT:-clang-format-15}" +"$CLANG_FORMAT" --version + +# Turn off tracing for this because it's too verbose +set +x + +# Check everything for branch pushes +FILES_TO_LINT="$(find src/ -name '*.cpp' -or -name '*.h')" + +for f in $FILES_TO_LINT; do + echo "$f" + "$CLANG_FORMAT" -i "$f" +done + +DIFF=$(git -c core.fileMode=false diff) + +if [ ! -z "$DIFF" ]; then + echo "!!! Not compliant to coding style, here is the fix:" + echo "$DIFF" + exit 1 +fi + +cd src/android +./gradlew ktlintCheck diff --git a/hiddenFiles/.ci/scripts/linux/docker.sh b/hiddenFiles/.ci/scripts/linux/docker.sh new file mode 100755 index 0000000000..7bba01d62a --- /dev/null +++ b/hiddenFiles/.ci/scripts/linux/docker.sh @@ -0,0 +1,79 @@ +#!/bin/bash -ex + +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +# Exit on error, rather than continuing with the rest of the script. +set -e + +ccache -s + +mkdir build || true && cd build +cmake .. \ + -DBoost_USE_STATIC_LIBS=ON \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_CXX_FLAGS="-march=x86-64-v2" \ + -DCMAKE_CXX_COMPILER=/usr/lib/ccache/g++ \ + -DCMAKE_C_COMPILER=/usr/lib/ccache/gcc \ + -DCMAKE_INSTALL_PREFIX="/usr" \ + -DDISPLAY_VERSION=$1 \ + -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON \ + -DENABLE_QT_TRANSLATION=ON \ + -DUSE_DISCORD_PRESENCE=ON \ + -DYUZU_ENABLE_COMPATIBILITY_REPORTING=${ENABLE_COMPATIBILITY_REPORTING:-"OFF"} \ + -DYUZU_USE_BUNDLED_FFMPEG=ON \ + -DYUZU_ENABLE_LTO=ON \ + -DYUZU_CRASH_DUMPS=ON \ + -GNinja + +ninja + +ccache -s + +ctest -VV -C Release + +# Separate debug symbols from specified executables +for EXE in yuzu; do + EXE_PATH="bin/$EXE" + # Copy debug symbols out + objcopy --only-keep-debug $EXE_PATH $EXE_PATH.debug + # Add debug link and strip debug symbols + objcopy -g --add-gnu-debuglink=$EXE_PATH.debug $EXE_PATH $EXE_PATH.out + # Overwrite original with stripped copy + mv $EXE_PATH.out $EXE_PATH +done +# Strip debug symbols from all executables +find bin/ -type f -not -regex '.*.debug' -exec strip -g {} ';' + +DESTDIR="$PWD/AppDir" ninja install +rm -vf AppDir/usr/bin/yuzu-cmd AppDir/usr/bin/yuzu-tester + +# Download tools needed to build an AppImage +wget -nc https://raw.githubusercontent.com/yuzu-emu/ext-linux-bin/main/appimage/deploy-linux.sh +wget -nc https://raw.githubusercontent.com/yuzu-emu/AppImageKit-checkrt/old/AppRun.sh +wget -nc https://github.com/yuzu-emu/ext-linux-bin/raw/main/appimage/exec-x86_64.so +# Set executable bit +chmod 755 \ + deploy-linux.sh \ + AppRun.sh \ + exec-x86_64.so \ + +# Workaround for https://github.com/AppImage/AppImageKit/issues/828 +export APPIMAGE_EXTRACT_AND_RUN=1 + +mkdir -p AppDir/usr/optional +mkdir -p AppDir/usr/optional/libstdc++ +mkdir -p AppDir/usr/optional/libgcc_s + +# Deploy yuzu's needed dependencies +DEPLOY_QT=1 ./deploy-linux.sh AppDir/usr/bin/yuzu AppDir + +# Workaround for libQt5MultimediaGstTools indirectly requiring libwayland-client and breaking Vulkan usage on end-user systems +find AppDir -type f -regex '.*libwayland-client\.so.*' -delete -print + +# Workaround for building yuzu with GCC 10 but also trying to distribute it to Ubuntu 18.04 et al. +# See https://github.com/darealshinji/AppImageKit-checkrt +cp exec-x86_64.so AppDir/usr/optional/exec.so +cp AppRun.sh AppDir/AppRun +cp --dereference /usr/lib/x86_64-linux-gnu/libstdc++.so.6 AppDir/usr/optional/libstdc++/libstdc++.so.6 +cp --dereference /lib/x86_64-linux-gnu/libgcc_s.so.1 AppDir/usr/optional/libgcc_s/libgcc_s.so.1 diff --git a/hiddenFiles/.ci/scripts/linux/exec.sh b/hiddenFiles/.ci/scripts/linux/exec.sh new file mode 100644 index 0000000000..04e2486a1b --- /dev/null +++ b/hiddenFiles/.ci/scripts/linux/exec.sh @@ -0,0 +1,16 @@ +#!/bin/bash -ex + +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +mkdir -p "ccache" || true +chmod a+x ./.ci/scripts/linux/docker.sh +# the UID for the container yuzu user is 1027 +sudo chown -R 1027 ./ + +# The environment variables listed below: +# AZURECIREPO TITLEBARFORMATIDLE TITLEBARFORMATRUNNING DISPLAYVERSION +# are requested in src/common/CMakeLists.txt and appear to be provided somewhere in Azure DevOps + +docker run -e AZURECIREPO -e TITLEBARFORMATIDLE -e TITLEBARFORMATRUNNING -e DISPLAYVERSION -e ENABLE_COMPATIBILITY_REPORTING -e CCACHE_DIR=/yuzu/ccache -v "$(pwd):/yuzu" -w /yuzu yuzuemu/build-environments:linux-fresh /bin/bash /yuzu/.ci/scripts/linux/docker.sh "$1" +sudo chown -R $UID ./ diff --git a/hiddenFiles/.ci/scripts/linux/upload.sh b/hiddenFiles/.ci/scripts/linux/upload.sh new file mode 100755 index 0000000000..fbb2d9c1b0 --- /dev/null +++ b/hiddenFiles/.ci/scripts/linux/upload.sh @@ -0,0 +1,67 @@ +#!/bin/bash -ex + +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +. .ci/scripts/common/pre-upload.sh + +APPIMAGE_NAME="yuzu-${RELEASE_NAME}-${GITDATE}-${GITREV}.AppImage" +BASE_NAME="yuzu-linux" +REV_NAME="${BASE_NAME}-${GITDATE}-${GITREV}" +ARCHIVE_NAME="${REV_NAME}.tar.xz" +COMPRESSION_FLAGS="-cJvf" + +if [ "${RELEASE_NAME}" = "mainline" ] || [ "${RELEASE_NAME}" = "early-access" ]; then + DIR_NAME="${BASE_NAME}-${RELEASE_NAME}" +else + DIR_NAME="${REV_NAME}-${RELEASE_NAME}" +fi + +mkdir "$DIR_NAME" + +cp build/bin/yuzu-cmd "$DIR_NAME" +if [ "${RELEASE_NAME}" != "early-access" ] && [ "${RELEASE_NAME}" != "mainline" ]; then + cp build/bin/yuzu "$DIR_NAME" +fi + +# Build an AppImage +cd build + +wget -nc https://github.com/yuzu-emu/ext-linux-bin/raw/main/appimage/appimagetool-x86_64.AppImage +chmod 755 appimagetool-x86_64.AppImage + +# if FUSE is not available, then fallback to extract and run +if ! ./appimagetool-x86_64.AppImage --version; then + export APPIMAGE_EXTRACT_AND_RUN=1 +fi + +# Don't let AppImageLauncher ask to integrate EA +if [ "${RELEASE_NAME}" = "mainline" ] || [ "${RELEASE_NAME}" = "early-access" ]; then + echo "X-AppImage-Integrate=false" >> AppDir/org.yuzu_emu.yuzu.desktop +fi + +if [ "${RELEASE_NAME}" = "mainline" ]; then + # Generate update information if releasing to mainline + ./appimagetool-x86_64.AppImage -u "gh-releases-zsync|yuzu-emu|yuzu-${RELEASE_NAME}|latest|yuzu-*.AppImage.zsync" AppDir "${APPIMAGE_NAME}" +else + ./appimagetool-x86_64.AppImage AppDir "${APPIMAGE_NAME}" +fi +cd .. + +# Copy the AppImage and update info to the artifacts directory and avoid compressing it +cp "build/${APPIMAGE_NAME}" "${ARTIFACTS_DIR}/" +if [ -f "build/${APPIMAGE_NAME}.zsync" ]; then + cp "build/${APPIMAGE_NAME}.zsync" "${ARTIFACTS_DIR}/" +fi + +# Copy the AppImage to the general release directory and remove git revision info +if [ "${RELEASE_NAME}" = "mainline" ] || [ "${RELEASE_NAME}" = "early-access" ]; then + cp "build/${APPIMAGE_NAME}" "${DIR_NAME}/yuzu-${RELEASE_NAME}.AppImage" +fi + +# Copy debug symbols to artifacts +cd build/bin +tar $COMPRESSION_FLAGS "${ARTIFACTS_DIR}/${REV_NAME}-debug.tar.xz" *.debug +cd - + +. .ci/scripts/common/post-upload.sh diff --git a/hiddenFiles/.ci/scripts/merge/apply-patches-by-label-private.py b/hiddenFiles/.ci/scripts/merge/apply-patches-by-label-private.py new file mode 100644 index 0000000000..c640c4c4da --- /dev/null +++ b/hiddenFiles/.ci/scripts/merge/apply-patches-by-label-private.py @@ -0,0 +1,48 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +# Download all pull requests as patches that match a specific label +# Usage: python download-patches-by-label.py <Label to Match> <Root Path Folder to DL to> + +import requests, sys, json, shutil, subprocess, os, traceback + +org = os.getenv("PRIVATEMERGEORG", "yuzu-emu") +repo = os.getenv("PRIVATEMERGEREPO", "yuzu-private") +tagline = sys.argv[3] +user = sys.argv[1] + +dl_list = {} + +TAG_NAME = sys.argv[2] + +def check_individual(repo_id, pr_id): + url = 'https://%sdev.azure.com/%s/%s/_apis/git/repositories/%s/pullRequests/%s/labels?api-version=5.1-preview.1' % (user, org, repo, repo_id, pr_id) + response = requests.get(url) + if (response.ok): + try: + js = response.json() + return any(tag.get('name') == TAG_NAME for tag in js['value']) + except: + return False + return False + +def merge_pr(pn, ref): + print("Matched PR# %s" % pn) + print(subprocess.check_output(["git", "fetch", "https://%sdev.azure.com/%s/_git/%s" % (user, org, repo), ref, "-f", "--no-recurse-submodules"])) + print(subprocess.check_output(["git", "merge", "--squash", 'origin/' + ref.replace('refs/heads/','')])) + print(subprocess.check_output(["git", "commit", "-m\"Merge %s PR %s\"" % (tagline, pn)])) + +def main(): + url = 'https://%sdev.azure.com/%s/%s/_apis/git/pullrequests?api-version=5.1' % (user, org, repo) + response = requests.get(url) + if (response.ok): + js = response.json() + tagged_prs = filter(lambda pr: check_individual(pr['repository']['id'], pr['pullRequestId']), js['value']) + map(lambda pr: merge_pr(pr['pullRequestId'], pr['sourceRefName']), tagged_prs) + +if __name__ == '__main__': + try: + main() + except: + traceback.print_exc(file=sys.stdout) + sys.exit(-1) diff --git a/hiddenFiles/.ci/scripts/merge/apply-patches-by-label.py b/hiddenFiles/.ci/scripts/merge/apply-patches-by-label.py new file mode 100644 index 0000000000..17bb7dc13d --- /dev/null +++ b/hiddenFiles/.ci/scripts/merge/apply-patches-by-label.py @@ -0,0 +1,38 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +# Download all pull requests as patches that match a specific label +# Usage: python apply-patches-by-label.py <Label to Match> + +import json, requests, subprocess, sys, traceback + +tagline = sys.argv[2] + +def check_individual(labels): + for label in labels: + if (label["name"] == sys.argv[1]): + return True + return False + +def do_page(page): + url = f"https://api.github.com/repos/yuzu-emu/yuzu/pulls?page={page}" + response = requests.get(url) + response.raise_for_status() + if (response.ok): + j = json.loads(response.content) + if j == []: + return + for pr in j: + if (check_individual(pr["labels"])): + pn = pr["number"] + print(f"Matched PR# {pn}") + print(subprocess.check_output(["git", "fetch", "https://github.com/yuzu-emu/yuzu.git", f"pull/{pn}/head:pr-{pn}", "-f", "--no-recurse-submodules"])) + print(subprocess.check_output(["git", "merge", "--squash", f"pr-{pn}"])) + print(subprocess.check_output(["git", "commit", f"-m\"Merge {tagline} PR {pn}\""])) + +try: + for i in range(1,10): + do_page(i) +except: + traceback.print_exc(file=sys.stdout) + sys.exit(-1) diff --git a/hiddenFiles/.ci/scripts/merge/check-label-presence.py b/hiddenFiles/.ci/scripts/merge/check-label-presence.py new file mode 100644 index 0000000000..51cf681291 --- /dev/null +++ b/hiddenFiles/.ci/scripts/merge/check-label-presence.py @@ -0,0 +1,21 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +# Checks to see if the specified pull request # has the specified tag +# Usage: python check-label-presence.py <Pull Request ID> <Name of Label> + +import requests, json, sys + +try: + url = 'https://api.github.com/repos/yuzu-emu/yuzu/issues/%s' % sys.argv[1] + response = requests.get(url) + if (response.ok): + j = json.loads(response.content) + for label in j["labels"]: + if label["name"] == sys.argv[2]: + print('##vso[task.setvariable variable=enabletesting;]true') + sys.exit() +except: + sys.exit(-1) + +print('##vso[task.setvariable variable=enabletesting;]false') diff --git a/hiddenFiles/.ci/scripts/merge/yuzubot-git-config.sh b/hiddenFiles/.ci/scripts/merge/yuzubot-git-config.sh new file mode 100644 index 0000000000..d7f1f29dba --- /dev/null +++ b/hiddenFiles/.ci/scripts/merge/yuzubot-git-config.sh @@ -0,0 +1,5 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +git config --global user.email "yuzu@yuzu-emu.org" +git config --global user.name "yuzubot" \ No newline at end of file diff --git a/hiddenFiles/.ci/scripts/transifex/docker.sh b/hiddenFiles/.ci/scripts/transifex/docker.sh new file mode 100755 index 0000000000..6ddbfd0dda --- /dev/null +++ b/hiddenFiles/.ci/scripts/transifex/docker.sh @@ -0,0 +1,19 @@ +#!/bin/bash -e + +# SPDX-FileCopyrightText: 2021 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +set -x + +echo -e "\e[1m\e[33mBuild tools information:\e[0m" +cmake --version +gcc -v +tx --version + +mkdir build && cd build +cmake .. -DENABLE_QT_TRANSLATION=ON -DGENERATE_QT_TRANSLATION=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_SDL2=OFF -DYUZU_TESTS=OFF -DYUZU_USE_BUNDLED_VCPKG=ON +make translation +cd .. + +cd dist/languages +tx push -s diff --git a/hiddenFiles/.ci/scripts/windows/docker.sh b/hiddenFiles/.ci/scripts/windows/docker.sh new file mode 100755 index 0000000000..44023600d7 --- /dev/null +++ b/hiddenFiles/.ci/scripts/windows/docker.sh @@ -0,0 +1,66 @@ +#!/bin/bash -ex + +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +set -e + +#cd /yuzu + +ccache -sv + +mkdir -p build && cd build +cmake .. \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_TOOLCHAIN_FILE="${PWD}/../CMakeModules/MinGWCross.cmake" \ + -DDISPLAY_VERSION="$1" \ + -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON \ + -DENABLE_QT_TRANSLATION=ON \ + -DUSE_CCACHE=ON \ + -DYUZU_USE_BUNDLED_SDL2=OFF \ + -DYUZU_USE_EXTERNAL_SDL2=OFF \ + -DYUZU_TESTS=OFF \ + -GNinja +ninja yuzu yuzu-cmd + +ccache -sv + +echo "Tests skipped" +#ctest -VV -C Release + +echo 'Prepare binaries...' +cd .. +mkdir package + +if [ -d "/usr/x86_64-w64-mingw32/lib/qt5/plugins/platforms/" ]; then + QT_PLUGINS_PATH='/usr/x86_64-w64-mingw32/lib/qt5/plugins' +else + #fallback to qt + QT_PLUGINS_PATH='/usr/x86_64-w64-mingw32/lib/qt/plugins' +fi + +find build/ -name "yuzu*.exe" -exec cp {} 'package' \; + +# copy Qt plugins +mkdir package/platforms +cp -v "${QT_PLUGINS_PATH}/platforms/qwindows.dll" package/platforms/ +cp -rv "${QT_PLUGINS_PATH}/mediaservice/" package/ +cp -rv "${QT_PLUGINS_PATH}/imageformats/" package/ +cp -rv "${QT_PLUGINS_PATH}/styles/" package/ +rm -f package/mediaservice/*d.dll + +for i in package/*.exe; do + # we need to process pdb here, however, cv2pdb + # does not work here, so we just simply strip all the debug symbols + x86_64-w64-mingw32-strip "${i}" +done + +python3 .ci/scripts/windows/scan_dll.py package/*.exe package/imageformats/*.dll "package/" + +# copy FFmpeg libraries +EXTERNALS_PATH="$(pwd)/build/externals" +FFMPEG_DLL_PATH="$(find "${EXTERNALS_PATH}" -maxdepth 1 -type d | grep 'ffmpeg-')/bin" +find ${FFMPEG_DLL_PATH} -type f -regex ".*\.dll" -exec cp -nv {} package/ ';' + +# copy libraries from yuzu.exe path +find "$(pwd)/build/bin/" -type f -regex ".*\.dll" -exec cp -v {} package/ ';' diff --git a/hiddenFiles/.ci/scripts/windows/exec.sh b/hiddenFiles/.ci/scripts/windows/exec.sh new file mode 100644 index 0000000000..ca74eeba56 --- /dev/null +++ b/hiddenFiles/.ci/scripts/windows/exec.sh @@ -0,0 +1,11 @@ +#!/bin/bash -ex + +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +mkdir -p "ccache" || true +chmod a+x ./.ci/scripts/windows/docker.sh +# the UID for the container yuzu user is 1027 +sudo chown -R 1027 ./ +docker run -e CCACHE_DIR=/yuzu/ccache -v "$(pwd):/yuzu" -w /yuzu yuzuemu/build-environments:linux-mingw /bin/bash -ex /yuzu/.ci/scripts/windows/docker.sh "$1" +sudo chown -R $UID ./ diff --git a/hiddenFiles/.ci/scripts/windows/install-vulkan-sdk.ps1 b/hiddenFiles/.ci/scripts/windows/install-vulkan-sdk.ps1 new file mode 100644 index 0000000000..de218d90ad --- /dev/null +++ b/hiddenFiles/.ci/scripts/windows/install-vulkan-sdk.ps1 @@ -0,0 +1,33 @@ +# SPDX-FileCopyrightText: 2023 yuzu Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +$ErrorActionPreference = "Stop" + +$VulkanSDKVer = "1.3.250.1" +$ExeFile = "VulkanSDK-$VulkanSDKVer-Installer.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 +} diff --git a/hiddenFiles/.ci/scripts/windows/scan_dll.py b/hiddenFiles/.ci/scripts/windows/scan_dll.py new file mode 100644 index 0000000000..a536f73759 --- /dev/null +++ b/hiddenFiles/.ci/scripts/windows/scan_dll.py @@ -0,0 +1,109 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +import pefile +import sys +import re +import os +import queue +import shutil + +# constant definitions +KNOWN_SYS_DLLS = ['WINMM.DLL', 'MSVCRT.DLL', 'VERSION.DLL', 'MPR.DLL', + 'DWMAPI.DLL', 'UXTHEME.DLL', 'DNSAPI.DLL', 'IPHLPAPI.DLL'] +# below is for Ubuntu 18.04 with specified PPA enabled, if you are using +# other distro or different repositories, change the following accordingly +DLL_PATH = [ + '/usr/x86_64-w64-mingw32/bin/', + '/usr/x86_64-w64-mingw32/lib/', + '/usr/lib/gcc/x86_64-w64-mingw32/7.3-posix/' +] + +missing = [] + + +def parse_imports(file_name): + results = [] + pe = pefile.PE(file_name, fast_load=True) + pe.parse_data_directories() + + for entry in pe.DIRECTORY_ENTRY_IMPORT: + current = entry.dll.decode() + current_u = current.upper() # b/c Windows is often case insensitive + # here we filter out system dlls + # dll w/ names like *32.dll are likely to be system dlls + if current_u.upper() not in KNOWN_SYS_DLLS and not re.match(string=current_u, pattern=r'.*32\.DLL'): + results.append(current) + + return results + + +def parse_imports_recursive(file_name, path_list=[]): + q = queue.Queue() # create a FIFO queue + # file_name can be a string or a list for the convenience + if isinstance(file_name, str): + q.put(file_name) + elif isinstance(file_name, list): + for i in file_name: + q.put(i) + full_list = [] + while q.qsize(): + current = q.get_nowait() + print('> %s' % current) + deps = parse_imports(current) + # if this dll does not have any import, ignore it + if not deps: + continue + for dep in deps: + # the dependency already included in the list, skip + if dep in full_list: + continue + # find the requested dll in the provided paths + full_path = find_dll(dep) + if not full_path: + missing.append(dep) + continue + full_list.append(dep) + q.put(full_path) + path_list.append(full_path) + return full_list + + +def find_dll(name): + for path in DLL_PATH: + for root, _, files in os.walk(path): + for f in files: + if name.lower() == f.lower(): + return os.path.join(root, f) + + +def deploy(name, dst, dry_run=False): + dlls_path = [] + parse_imports_recursive(name, dlls_path) + for dll_entry in dlls_path: + if not dry_run: + shutil.copy(dll_entry, dst) + else: + print('[Dry-Run] Copy %s to %s' % (dll_entry, dst)) + print('Deploy completed.') + return dlls_path + + +def main(): + if len(sys.argv) < 3: + print('Usage: %s [files to examine ...] [target deploy directory]') + return 1 + to_deploy = sys.argv[1:-1] + tgt_dir = sys.argv[-1] + if not os.path.isdir(tgt_dir): + print('%s is not a directory.' % tgt_dir) + return 1 + print('Scanning dependencies...') + deploy(to_deploy, tgt_dir) + if missing: + print('Following DLLs are not found: %s' % ('\n'.join(missing))) + return 0 + + +if __name__ == '__main__': + main() diff --git a/hiddenFiles/.ci/scripts/windows/upload.ps1 b/hiddenFiles/.ci/scripts/windows/upload.ps1 new file mode 100644 index 0000000000..492763420e --- /dev/null +++ b/hiddenFiles/.ci/scripts/windows/upload.ps1 @@ -0,0 +1,118 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +param($BUILD_NAME) + +$GITDATE = $(git show -s --date=short --format='%ad') -replace "-", "" +$GITREV = $(git show -s --format='%h') + +if ("$BUILD_NAME" -eq "mainline") { + $RELEASE_DIST = "yuzu-windows-msvc" +} +else { + $RELEASE_DIST = "yuzu-windows-msvc-$BUILD_NAME" +} + +$MSVC_BUILD_ZIP = "yuzu-windows-msvc-$GITDATE-$GITREV.zip" -replace " ", "" +$MSVC_BUILD_PDB = "yuzu-windows-msvc-$GITDATE-$GITREV-debugsymbols.zip" -replace " ", "" +$MSVC_SEVENZIP = "yuzu-windows-msvc-$GITDATE-$GITREV.7z" -replace " ", "" +$MSVC_TAR = "yuzu-windows-msvc-$GITDATE-$GITREV.tar" -replace " ", "" +$MSVC_TARXZ = "yuzu-windows-msvc-$GITDATE-$GITREV.tar.xz" -replace " ", "" +$MSVC_SOURCE = "yuzu-windows-msvc-source-$GITDATE-$GITREV" -replace " ", "" +$MSVC_SOURCE_TAR = "$MSVC_SOURCE.tar" +$MSVC_SOURCE_TARXZ = "$MSVC_SOURCE_TAR.xz" + +$env:BUILD_ZIP = $MSVC_BUILD_ZIP +$env:BUILD_SYMBOLS = $MSVC_BUILD_PDB +$env:BUILD_UPDATE = $MSVC_SEVENZIP + +if (Test-Path -Path ".\build\bin\Release") { + $BUILD_DIR = ".\build\bin\Release" +} else { + $BUILD_DIR = ".\build\bin\" +} + +# Cleanup unneeded data in submodules +git submodule foreach git clean -fxd + +# Upload debugging symbols +mkdir pdb +Get-ChildItem "$BUILD_DIR\" -Recurse -Filter "*.pdb" | Copy-Item -destination .\pdb +7z a -tzip $MSVC_BUILD_PDB .\pdb\*.pdb +rm "$BUILD_DIR\*.pdb" + +# Create artifact directories +mkdir $RELEASE_DIST +mkdir $MSVC_SOURCE +mkdir "artifacts" + +$CURRENT_DIR = Convert-Path . + +# Build a tar.xz for the source of the release +git clone --depth 1 file://$CURRENT_DIR $MSVC_SOURCE +7z a -r -ttar $MSVC_SOURCE_TAR $MSVC_SOURCE +7z a -r -txz $MSVC_SOURCE_TARXZ $MSVC_SOURCE_TAR + +# Following section is quick hack to package artifacts differently for GitHub Actions +if ("$env:GITHUB_ACTIONS" -eq "true") { + echo "Hello GitHub Actions" + + # With vcpkg we now have a few more dll files + ls .\build\bin\*.dll + cp .\build\bin\*.dll .\artifacts\ + + # Hopefully there is an exe in either .\build\bin or .\build\bin\Release + cp .\build\bin\yuzu*.exe .\artifacts\ + Copy-Item "$BUILD_DIR\*" -Destination "artifacts" -Recurse + Remove-Item .\artifacts\tests.exe -ErrorAction ignore + + # None of the other GHA builds are including source, so commenting out today + #Copy-Item $MSVC_SOURCE_TARXZ -Destination "artifacts" + + # Debugging symbols + cp .\build\bin\yuzu*.pdb .\artifacts\ + + # Write out a tag BUILD_TAG to environment for the Upload step + # We're getting ${{ github.event.number }} as $env:PR_NUMBER" + echo "env:PR_NUMBER: $env:PR_NUMBER" + if (Test-Path env:PR_NUMBER) { + $PR_NUMBER = $env:PR_NUMBER.Substring(2) -as [int] + $PR_NUMBER_TAG = "pr"+([string]$PR_NUMBER).PadLeft(5,'0') + if ($PR_NUMBER -gt 1){ + $BUILD_TAG="verify-$PR_NUMBER_TAG-$GITDATE-$GITREV" + } else { + $BUILD_TAG = "verify-$GITDATE-$GITREV" + } + } else { + # If env:PR_NUMBER isn't set, we should still write out a variable + $BUILD_TAG = "verify-$GITDATE-$GITREV" + } + echo "BUILD_TAG=$BUILD_TAG" + echo "BUILD_TAG=$BUILD_TAG" >> $env:GITHUB_ENV + + # For extra job, just the exe + $INDIVIDUAL_EXE = "yuzu-msvc-$BUILD_TAG.exe" + echo "INDIVIDUAL_EXE=$INDIVIDUAL_EXE" + echo "INDIVIDUAL_EXE=$INDIVIDUAL_EXE" >> $env:GITHUB_ENV + echo "Just the exe: $INDIVIDUAL_EXE" + cp .\artifacts\yuzu.exe .\$INDIVIDUAL_EXE + + +} else { + +# Build the final release artifacts +Copy-Item $MSVC_SOURCE_TARXZ -Destination $RELEASE_DIST +Copy-Item "$BUILD_DIR\*" -Destination $RELEASE_DIST -Recurse +rm "$RELEASE_DIST\*.exe" +Get-ChildItem "$BUILD_DIR" -Recurse -Filter "yuzu*.exe" | Copy-Item -destination $RELEASE_DIST +Get-ChildItem "$BUILD_DIR" -Recurse -Filter "QtWebEngineProcess*.exe" | Copy-Item -destination $RELEASE_DIST +7z a -tzip $MSVC_BUILD_ZIP $RELEASE_DIST\* +7z a $MSVC_SEVENZIP $RELEASE_DIST + +7z a -r -ttar $MSVC_TAR $RELEASE_DIST +7z a -r -txz $MSVC_TARXZ $MSVC_TAR + +Get-ChildItem . -Filter "*.zip" | Copy-Item -destination "artifacts" +Get-ChildItem . -Filter "*.7z" | Copy-Item -destination "artifacts" +Get-ChildItem . -Filter "*.tar.xz" | Copy-Item -destination "artifacts" +} diff --git a/hiddenFiles/.ci/scripts/windows/upload.sh b/hiddenFiles/.ci/scripts/windows/upload.sh new file mode 100755 index 0000000000..4aa5be544f --- /dev/null +++ b/hiddenFiles/.ci/scripts/windows/upload.sh @@ -0,0 +1,22 @@ +#!/bin/bash -ex + +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +. .ci/scripts/common/pre-upload.sh + +REV_NAME="yuzu-windows-mingw-${GITDATE}-${GITREV}" +ARCHIVE_NAME="${REV_NAME}.tar.xz" +COMPRESSION_FLAGS="-cJvf" + +if [ "${RELEASE_NAME}" = "mainline" ]; then + DIR_NAME="${REV_NAME}" +else + DIR_NAME="${REV_NAME}_${RELEASE_NAME}" +fi + +mkdir "$DIR_NAME" +# get around the permission issues +cp -r package/* "$DIR_NAME" + +. .ci/scripts/common/post-upload.sh diff --git a/hiddenFiles/.ci/templates/build-mock.yml b/hiddenFiles/.ci/templates/build-mock.yml new file mode 100644 index 0000000000..3d3bb6d866 --- /dev/null +++ b/hiddenFiles/.ci/templates/build-mock.yml @@ -0,0 +1,8 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +steps: + - script: mkdir artifacts || echo 'X' > artifacts/T1.txt + - publish: artifacts + artifact: 'yuzu-$(BuildName)-mock' + displayName: 'Upload Artifacts' \ No newline at end of file diff --git a/hiddenFiles/.ci/templates/build-msvc.yml b/hiddenFiles/.ci/templates/build-msvc.yml new file mode 100644 index 0000000000..1e259df059 --- /dev/null +++ b/hiddenFiles/.ci/templates/build-msvc.yml @@ -0,0 +1,31 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +parameters: + artifactSource: 'true' + cache: 'false' + version: '' + +steps: +- task: Powershell@2 + displayName: 'Install Vulkan SDK' + inputs: + targetType: 'filePath' + filePath: './.ci/scripts/windows/install-vulkan-sdk.ps1' +- script: refreshenv && glslangValidator --version && mkdir build && cd build && cmake -E env CXXFLAGS="/Gw" cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_POLICY_DEFAULT_CMP0069=NEW -DYUZU_ENABLE_LTO=ON -DYUZU_USE_BUNDLED_QT=1 -DYUZU_USE_BUNDLED_SDL2=1 -DYUZU_USE_QT_WEB_ENGINE=ON -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DYUZU_ENABLE_COMPATIBILITY_REPORTING=${COMPAT} -DYUZU_TESTS=OFF -DUSE_DISCORD_PRESENCE=ON -DENABLE_QT_TRANSLATION=ON -DDISPLAY_VERSION=${{ parameters['version'] }} -DCMAKE_BUILD_TYPE=Release -DYUZU_CRASH_DUMPS=ON .. && cd .. + displayName: 'Configure CMake' +- task: MSBuild@1 + displayName: 'Build' + inputs: + solution: 'build/yuzu.sln' + maximumCpuCount: true + configuration: release +- task: PowerShell@2 + displayName: 'Package Artifacts' + inputs: + targetType: 'filePath' + filePath: './.ci/scripts/windows/upload.ps1' + arguments: '$(BuildName)' +- publish: artifacts + artifact: 'yuzu-$(BuildName)-windows-msvc' + displayName: 'Upload Artifacts' diff --git a/hiddenFiles/.ci/templates/build-single.yml b/hiddenFiles/.ci/templates/build-single.yml new file mode 100644 index 0000000000..3f81f91978 --- /dev/null +++ b/hiddenFiles/.ci/templates/build-single.yml @@ -0,0 +1,26 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +parameters: + artifactSource: 'true' + cache: 'false' + version: '' + +steps: +- task: DockerInstaller@0 + displayName: 'Prepare Environment' + inputs: + dockerVersion: '17.09.0-ce' +- task: CacheBeta@0 + displayName: 'Cache Build System' + inputs: + key: yuzu-v1-$(BuildName)-$(BuildSuffix)-$(CacheSuffix) + path: $(System.DefaultWorkingDirectory)/ccache + cacheHitVar: CACHE_RESTORED +- script: chmod a+x ./.ci/scripts/$(ScriptFolder)/exec.sh && ./.ci/scripts/$(ScriptFolder)/exec.sh ${{ parameters['version'] }} + displayName: 'Build' +- script: chmod a+x ./.ci/scripts/$(ScriptFolder)/upload.sh && RELEASE_NAME=$(BuildName) ./.ci/scripts/$(ScriptFolder)/upload.sh + displayName: 'Package Artifacts' +- publish: artifacts + artifact: 'yuzu-$(BuildName)-$(BuildSuffix)' + displayName: 'Upload Artifacts' diff --git a/hiddenFiles/.ci/templates/build-standard.yml b/hiddenFiles/.ci/templates/build-standard.yml new file mode 100644 index 0000000000..314076f1fd --- /dev/null +++ b/hiddenFiles/.ci/templates/build-standard.yml @@ -0,0 +1,33 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +parameters: + version: '' + +jobs: +- job: build + displayName: 'standard' + pool: + vmImage: ubuntu-latest + strategy: + maxParallel: 10 + matrix: + windows: + BuildSuffix: 'windows-mingw' + ScriptFolder: 'windows' + clang: + BuildSuffix: 'clang' + ScriptFolder: 'clang' + linux: + BuildSuffix: 'linux' + ScriptFolder: 'linux' + steps: + - template: ./sync-source.yml + parameters: + artifactSource: $(parameters.artifactSource) + needSubmodules: 'true' + - template: ./build-single.yml + parameters: + artifactSource: 'false' + cache: $(parameters.cache) + version: $(parameters.version) diff --git a/hiddenFiles/.ci/templates/build-testing.yml b/hiddenFiles/.ci/templates/build-testing.yml new file mode 100644 index 0000000000..c8390b3276 --- /dev/null +++ b/hiddenFiles/.ci/templates/build-testing.yml @@ -0,0 +1,40 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +parameters: + version: '' + +jobs: +- job: build_test + displayName: 'testing' + pool: + vmImage: ubuntu-latest + strategy: + maxParallel: 5 + matrix: + windows: + BuildSuffix: 'windows-testing' + ScriptFolder: 'windows' + steps: + - script: sudo apt-get update && sudo apt-get --only-upgrade -y install python3-pip && pip install requests urllib3 + displayName: 'Prepare Environment' + - task: PythonScript@0 + condition: eq(variables['Build.Reason'], 'PullRequest') + displayName: 'Determine Testing Status' + inputs: + scriptSource: 'filePath' + scriptPath: '.ci/scripts/merge/check-label-presence.py' + arguments: '$(System.PullRequest.PullRequestNumber) create-testing-build' + - ${{ if eq(variables.enabletesting, 'true') }}: + - template: ./sync-source.yml + parameters: + artifactSource: $(parameters.artifactSource) + needSubmodules: 'true' + - template: ./mergebot.yml + parameters: + matchLabel: 'testing-merge' + - template: ./build-single.yml + parameters: + artifactSource: 'false' + cache: 'false' + version: $(parameters.version) \ No newline at end of file diff --git a/hiddenFiles/.ci/templates/format-check.yml b/hiddenFiles/.ci/templates/format-check.yml new file mode 100644 index 0000000000..1042e7d132 --- /dev/null +++ b/hiddenFiles/.ci/templates/format-check.yml @@ -0,0 +1,17 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +parameters: + artifactSource: 'true' + +steps: +- template: ./sync-source.yml + parameters: + artifactSource: $(parameters.artifactSource) + needSubmodules: 'false' +- task: DockerInstaller@0 + displayName: 'Prepare Environment' + inputs: + dockerVersion: '17.09.0-ce' +- script: chmod a+x ./.ci/scripts/format/exec.sh && ./.ci/scripts/format/exec.sh + displayName: 'Verify Formatting' diff --git a/hiddenFiles/.ci/templates/merge-private.yml b/hiddenFiles/.ci/templates/merge-private.yml new file mode 100644 index 0000000000..8b14065a39 --- /dev/null +++ b/hiddenFiles/.ci/templates/merge-private.yml @@ -0,0 +1,44 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +jobs: +- job: merge + displayName: 'pull requests' + pool: + vmImage: 'ubuntu-latest' + steps: + - checkout: self + submodules: recursive + - template: ./mergebot-private.yml + parameters: + matchLabel: '$(BuildName)-merge' + matchLabelPublic: '$(PublicBuildName)-merge' + - task: ArchiveFiles@2 + displayName: 'Package Source' + inputs: + rootFolderOrFile: '$(System.DefaultWorkingDirectory)' + includeRootFolder: false + archiveType: '7z' + archiveFile: '$(Build.ArtifactStagingDirectory)/yuzu-$(BuildName)-source.7z' + - task: PublishPipelineArtifact@1 + displayName: 'Upload Artifacts' + inputs: + targetPath: '$(Build.ArtifactStagingDirectory)/yuzu-$(BuildName)-source.7z' + artifact: 'yuzu-$(BuildName)-source' + replaceExistingArchive: true +- job: upload_source + displayName: 'upload' + dependsOn: merge + pool: + vmImage: 'ubuntu-latest' + steps: + - template: ./sync-source.yml + parameters: + artifactSource: 'true' + needSubmodules: 'true' + - script: chmod a+x $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh && $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh + displayName: 'Apply Git Configuration' + - script: git remote add other $(GitRepoPushChangesURL) + displayName: 'Register Repository' + - script: git push --force other HEAD:$(GitPushBranch) + displayName: 'Update Code' diff --git a/hiddenFiles/.ci/templates/merge.yml b/hiddenFiles/.ci/templates/merge.yml new file mode 100644 index 0000000000..eec3421202 --- /dev/null +++ b/hiddenFiles/.ci/templates/merge.yml @@ -0,0 +1,43 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +jobs: +- job: merge + displayName: 'pull requests' + pool: + vmImage: 'ubuntu-latest' + steps: + - checkout: self + submodules: recursive + - template: ./mergebot.yml + parameters: + matchLabel: '$(BuildName)-merge' + - task: ArchiveFiles@2 + displayName: 'Package Source' + inputs: + rootFolderOrFile: '$(System.DefaultWorkingDirectory)' + includeRootFolder: false + archiveType: '7z' + archiveFile: '$(Build.ArtifactStagingDirectory)/yuzu-$(BuildName)-source.7z' + - task: PublishPipelineArtifact@1 + displayName: 'Upload Artifacts' + inputs: + targetPath: '$(Build.ArtifactStagingDirectory)/yuzu-$(BuildName)-source.7z' + artifact: 'yuzu-$(BuildName)-source' + replaceExistingArchive: true +- job: upload_source + displayName: 'upload' + dependsOn: merge + pool: + vmImage: 'ubuntu-latest' + steps: + - template: ./sync-source.yml + parameters: + artifactSource: 'true' + needSubmodules: 'true' + - script: chmod a+x $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh && $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh + displayName: 'Apply Git Configuration' + - script: git remote add other $(GitRepoPushChangesURL) + displayName: 'Register Repository' + - script: git push --force other HEAD:$(GitPushBranch) + displayName: 'Update Code' diff --git a/hiddenFiles/.ci/templates/mergebot-private.yml b/hiddenFiles/.ci/templates/mergebot-private.yml new file mode 100644 index 0000000000..1560f9a9ca --- /dev/null +++ b/hiddenFiles/.ci/templates/mergebot-private.yml @@ -0,0 +1,33 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +parameters: + matchLabel: 'dummy-merge' + matchLabelPublic: 'dummy-merge' + +steps: + - script: mkdir $(System.DefaultWorkingDirectory)/patches && pip install requests urllib3 + displayName: 'Prepare Environment' + - script: chmod a+x $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh && $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh + displayName: 'Apply Git Configuration' + - task: PythonScript@0 + displayName: 'Discover, Download, and Apply Patches (Mainline)' + inputs: + scriptSource: 'filePath' + scriptPath: '.ci/scripts/merge/apply-patches-by-label.py' + arguments: '${{ parameters.matchLabelPublic }} $(MergeTaglinePublic) patches-public' + workingDirectory: '$(System.DefaultWorkingDirectory)' + - task: PythonScript@0 + displayName: 'Discover, Download, and Apply Patches (Patreon Public)' + inputs: + scriptSource: 'filePath' + scriptPath: '.ci/scripts/merge/apply-patches-by-label.py' + arguments: '${{ parameters.matchLabel }} "$(MergeTaglinePrivate) Public" patches-mixed-public' + workingDirectory: '$(System.DefaultWorkingDirectory)' + - task: PythonScript@0 + displayName: 'Discover, Download, and Apply Patches (Patreon Private)' + inputs: + scriptSource: 'filePath' + scriptPath: '.ci/scripts/merge/apply-patches-by-label-private.py' + arguments: '$(PrivateMergeUser) ${{ parameters.matchLabel }} "$(MergeTaglinePrivate) Private" patches-private' + workingDirectory: '$(System.DefaultWorkingDirectory)' diff --git a/hiddenFiles/.ci/templates/mergebot.yml b/hiddenFiles/.ci/templates/mergebot.yml new file mode 100644 index 0000000000..59523161c8 --- /dev/null +++ b/hiddenFiles/.ci/templates/mergebot.yml @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +parameters: + matchLabel: 'dummy-merge' + +steps: + - script: mkdir $(System.DefaultWorkingDirectory)/patches && pip install requests urllib3 + displayName: 'Prepare Environment' + - script: chmod a+x $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh && $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh + displayName: 'Apply Git Configuration' + - task: PythonScript@0 + displayName: 'Discover, Download, and Apply Patches' + inputs: + scriptSource: 'filePath' + scriptPath: '.ci/scripts/merge/apply-patches-by-label.py' + arguments: '${{ parameters.matchLabel }} Tagged patches' + workingDirectory: '$(System.DefaultWorkingDirectory)' diff --git a/hiddenFiles/.ci/templates/release-download.yml b/hiddenFiles/.ci/templates/release-download.yml new file mode 100644 index 0000000000..bd32de3959 --- /dev/null +++ b/hiddenFiles/.ci/templates/release-download.yml @@ -0,0 +1,16 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +steps: + - task: DownloadPipelineArtifact@2 + displayName: 'Download Windows Release' + inputs: + artifactName: 'yuzu-$(BuildName)-windows-msvc' + buildType: 'current' + targetPath: '$(Build.ArtifactStagingDirectory)' + - task: DownloadPipelineArtifact@2 + displayName: 'Download Linux Release' + inputs: + artifactName: 'yuzu-$(BuildName)-linux' + buildType: 'current' + targetPath: '$(Build.ArtifactStagingDirectory)' \ No newline at end of file diff --git a/hiddenFiles/.ci/templates/release-github.yml b/hiddenFiles/.ci/templates/release-github.yml new file mode 100644 index 0000000000..d20296ca08 --- /dev/null +++ b/hiddenFiles/.ci/templates/release-github.yml @@ -0,0 +1,16 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +steps: + - template: ./release-download.yml + - task: GitHubRelease@0 + displayName: 'GitHub Release' + inputs: + action: 'create' + title: '$(ReleasePrefix) $(DisplayVersion)' + assets: '$(Build.ArtifactStagingDirectory)/*' + gitHubConnection: $(GitHubReleaseConnectionName) + repositoryName: '$(Build.Repository.Name)' + target: '$(Build.SourceVersion)' + tagSource: manual + tag: $(BuildName)-$(DisplayPrefix)-$(DisplayVersion) \ No newline at end of file diff --git a/hiddenFiles/.ci/templates/release-private-tag.yml b/hiddenFiles/.ci/templates/release-private-tag.yml new file mode 100644 index 0000000000..70a8543b59 --- /dev/null +++ b/hiddenFiles/.ci/templates/release-private-tag.yml @@ -0,0 +1,12 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +steps: + - script: chmod a+x $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh && $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh + displayName: 'Apply Git Configuration' + - script: git tag -a $(BuildName)-$(DisplayPrefix)-$(DisplayVersion) -m "yuzu $(BuildName) $(Build.BuildNumber) $(Build.DefinitionName) $(DisplayPrefix)-$(DisplayVersion)" + displayName: 'Tag Source' + - script: git remote add other $(GitRepoPushChangesURL) + displayName: 'Register Repository' + - script: git push other $(BuildName)-$(DisplayPrefix)-$(DisplayVersion) + displayName: 'Update Code' \ No newline at end of file diff --git a/hiddenFiles/.ci/templates/release-universal.yml b/hiddenFiles/.ci/templates/release-universal.yml new file mode 100644 index 0000000000..151c8f35ce --- /dev/null +++ b/hiddenFiles/.ci/templates/release-universal.yml @@ -0,0 +1,13 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +steps: + - template: ./release-download.yml + - task: UniversalPackages@0 + displayName: Publish Artifacts + inputs: + command: publish + publishDirectory: '$(Build.ArtifactStagingDirectory)' + vstsFeedPublish: 'yuzu-$(BuildName)' + vstsFeedPackagePublish: 'main' + packagePublishDescription: 'Yuzu Windows and Linux Executable Packages' \ No newline at end of file diff --git a/hiddenFiles/.ci/templates/retrieve-artifact-source.yml b/hiddenFiles/.ci/templates/retrieve-artifact-source.yml new file mode 100644 index 0000000000..b4cce58901 --- /dev/null +++ b/hiddenFiles/.ci/templates/retrieve-artifact-source.yml @@ -0,0 +1,19 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +steps: +- checkout: none +- task: DownloadPipelineArtifact@2 + displayName: 'Download Source' + inputs: + artifactName: 'yuzu-$(BuildName)-source' + buildType: 'current' + targetPath: '$(Build.ArtifactStagingDirectory)' +- script: rm -rf $(System.DefaultWorkingDirectory) && mkdir $(System.DefaultWorkingDirectory) + displayName: 'Clean Working Directory' +- task: ExtractFiles@1 + displayName: 'Prepare Source' + inputs: + archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/*.7z' + destinationFolder: '$(System.DefaultWorkingDirectory)' + cleanDestinationFolder: false \ No newline at end of file diff --git a/hiddenFiles/.ci/templates/retrieve-master-source.yml b/hiddenFiles/.ci/templates/retrieve-master-source.yml new file mode 100644 index 0000000000..e497c0e180 --- /dev/null +++ b/hiddenFiles/.ci/templates/retrieve-master-source.yml @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +parameters: + needSubmodules: 'true' + +steps: +- checkout: self + displayName: 'Checkout Recursive' + submodules: recursive +# condition: eq(parameters.needSubmodules, 'true') +#- checkout: self +# displayName: 'Checkout Fast' +# condition: ne(parameters.needSubmodules, 'true') diff --git a/hiddenFiles/.ci/templates/sync-source.yml b/hiddenFiles/.ci/templates/sync-source.yml new file mode 100644 index 0000000000..e796b6238a --- /dev/null +++ b/hiddenFiles/.ci/templates/sync-source.yml @@ -0,0 +1,10 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +steps: +- ${{ if eq(parameters.artifactSource, 'true') }}: + - template: ./retrieve-artifact-source.yml +- ${{ if ne(parameters.artifactSource, 'true') }}: + - template: ./retrieve-master-source.yml + parameters: + needSubmodules: $(parameters.needSubmodules) \ No newline at end of file diff --git a/hiddenFiles/.ci/yuzu-mainline-step1.yml b/hiddenFiles/.ci/yuzu-mainline-step1.yml new file mode 100644 index 0000000000..207bddfa31 --- /dev/null +++ b/hiddenFiles/.ci/yuzu-mainline-step1.yml @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +trigger: +- master + +pool: + vmImage: 'ubuntu-latest' + +stages: +- stage: merge + displayName: 'merge' + jobs: + - template: ./templates/merge.yml diff --git a/hiddenFiles/.ci/yuzu-mainline-step2.yml b/hiddenFiles/.ci/yuzu-mainline-step2.yml new file mode 100644 index 0000000000..825be121ae --- /dev/null +++ b/hiddenFiles/.ci/yuzu-mainline-step2.yml @@ -0,0 +1,64 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +trigger: +- master + +variables: + DisplayVersion: $[counter(variables['DisplayPrefix'], 1)] + +stages: +- stage: build + displayName: 'build' + jobs: + - job: build + timeoutInMinutes: 120 + displayName: 'standard' + pool: + vmImage: ubuntu-latest + strategy: + maxParallel: 10 + matrix: + linux: + BuildSuffix: 'linux' + ScriptFolder: 'linux' + steps: + - template: ./templates/sync-source.yml + parameters: + artifactSource: $(parameters.artifactSource) + needSubmodules: 'true' + - template: ./templates/build-single.yml + parameters: + artifactSource: 'false' + cache: 'true' + version: $(DisplayVersion) +- stage: build_win + displayName: 'build-windows' + jobs: + - job: build + timeoutInMinutes: 120 + displayName: 'msvc' + pool: + vmImage: windows-2022 + steps: + - template: ./templates/sync-source.yml + parameters: + artifactSource: $(parameters.artifactSource) + needSubmodules: 'true' + - template: ./templates/build-msvc.yml + parameters: + artifactSource: 'false' + cache: 'true' + version: $(DisplayVersion) +- stage: release + displayName: 'release' + dependsOn: + - build + - build_win + jobs: + - job: github + displayName: 'github' + pool: + vmImage: ubuntu-latest + steps: + - template: ./templates/release-github.yml diff --git a/hiddenFiles/.ci/yuzu-patreon-step1.yml b/hiddenFiles/.ci/yuzu-patreon-step1.yml new file mode 100644 index 0000000000..44e0a5c819 --- /dev/null +++ b/hiddenFiles/.ci/yuzu-patreon-step1.yml @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +trigger: +- master + +pool: + vmImage: 'ubuntu-latest' + +stages: +- stage: merge + displayName: 'merge' + jobs: + - template: ./templates/merge-private.yml diff --git a/hiddenFiles/.ci/yuzu-patreon-step2.yml b/hiddenFiles/.ci/yuzu-patreon-step2.yml new file mode 100644 index 0000000000..71a23ebe62 --- /dev/null +++ b/hiddenFiles/.ci/yuzu-patreon-step2.yml @@ -0,0 +1,59 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +trigger: +- master + +variables: + DisplayVersion: $[counter(variables['DisplayPrefix'], 1)] + +stages: +- stage: build + displayName: 'build' + jobs: + - job: linux + timeoutInMinutes: 120 + displayName: 'linux' + pool: + vmImage: ubuntu-latest + strategy: + maxParallel: 10 + matrix: + linux: + BuildSuffix: 'linux' + ScriptFolder: 'linux' + steps: + - template: ./templates/sync-source.yml + parameters: + artifactSource: $(parameters.artifactSource) + needSubmodules: 'true' + - template: ./templates/build-single.yml + parameters: + artifactSource: 'false' + cache: $(parameters.cache) + version: $(DisplayVersion) + - job: msvc + timeoutInMinutes: 120 + displayName: 'windows' + pool: + vmImage: windows-2022 + steps: + - template: ./templates/sync-source.yml + parameters: + artifactSource: $(parameters.artifactSource) + needSubmodules: 'true' + - template: ./templates/build-msvc.yml + parameters: + artifactSource: 'false' + cache: $(parameters.cache) + version: $(DisplayVersion) +- stage: release + displayName: 'release' + dependsOn: build + jobs: + - job: release + displayName: 'source' + pool: + vmImage: 'ubuntu-latest' + steps: + - template: ./templates/release-private-tag.yml diff --git a/hiddenFiles/.ci/yuzu-repo-sync.yml b/hiddenFiles/.ci/yuzu-repo-sync.yml new file mode 100644 index 0000000000..c5b6ba927f --- /dev/null +++ b/hiddenFiles/.ci/yuzu-repo-sync.yml @@ -0,0 +1,22 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +trigger: +- master + +jobs: +- job: copy + displayName: 'Sync Repository' + pool: + vmImage: 'ubuntu-latest' + steps: + - script: echo 'https://$(GitUsername):$(GitAccessToken)@dev.azure.com' > $HOME/.git-credentials + displayName: 'Load Credentials' + - script: git config --global credential.helper store + displayName: 'Register Credential Helper' + - script: git remote add other $(GitRepoPushChangesURL) + displayName: 'Register Repository' + - script: git push --force other HEAD:$(GitPushBranch) + displayName: 'Update Code' + - script: rm -rf $HOME/.git-credentials + displayName: 'Clear Cached Credentials' diff --git a/hiddenFiles/.ci/yuzu-verify.yml b/hiddenFiles/.ci/yuzu-verify.yml new file mode 100644 index 0000000000..38e3e6121e --- /dev/null +++ b/hiddenFiles/.ci/yuzu-verify.yml @@ -0,0 +1,23 @@ +# SPDX-FileCopyrightText: 2019 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +stages: +- stage: format + displayName: 'format' + jobs: + - job: format + displayName: 'clang' + pool: + vmImage: ubuntu-latest + steps: + - template: ./templates/format-check.yml + parameters: + artifactSource: 'false' +- stage: build + displayName: 'build' + dependsOn: format + jobs: + - template: ./templates/build-standard.yml + parameters: + cache: 'false' + - template: ./templates/build-testing.yml diff --git a/hiddenFiles/.codespellrc b/hiddenFiles/.codespellrc new file mode 100644 index 0000000000..1874359d30 --- /dev/null +++ b/hiddenFiles/.codespellrc @@ -0,0 +1,6 @@ +; SPDX-FileCopyrightText: 2023 yuzu Emulator Project +; SPDX-License-Identifier: GPL-2.0-or-later + +[codespell] +skip = ./.git,./build,./dist,./Doxyfile,./externals,./LICENSES,./src/android/app/src/main/res +ignore-words-list = aci,allright,ba,canonicalizations,deques,fpr,froms,hda,inout,lod,masia,nam,nax,nce,nd,optin,pullrequests,pullrequest,te,transfered,unstall,uscaled,vas,zink diff --git a/hiddenFiles/.git-blame-ignore-revs b/hiddenFiles/.git-blame-ignore-revs new file mode 100644 index 0000000000..109f2f45e7 --- /dev/null +++ b/hiddenFiles/.git-blame-ignore-revs @@ -0,0 +1,5 @@ +# SPDX-FileCopyrightText: 2023 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +# CRLF -> LF +90aa937593e53a5d5e070fb623b228578b0b225f diff --git a/hiddenFiles/.gitattributes b/hiddenFiles/.gitattributes new file mode 100644 index 0000000000..99172a7f34 --- /dev/null +++ b/hiddenFiles/.gitattributes @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: 2018 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +dist/languages/* linguist-vendored +dist/qt_themes/* linguist-vendored +externals/* linguist-vendored +*.h linguist-language=cpp diff --git a/hiddenFiles/.gitmodules b/hiddenFiles/.gitmodules new file mode 100644 index 0000000000..52256d86f7 --- /dev/null +++ b/hiddenFiles/.gitmodules @@ -0,0 +1,69 @@ +# SPDX-FileCopyrightText: 2014 Citra Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +[submodule "enet"] + path = externals/enet + url = https://github.com/lsalzman/enet.git +[submodule "cubeb"] + path = externals/cubeb + url = https://github.com/mozilla/cubeb.git +[submodule "dynarmic"] + path = externals/dynarmic + url = https://github.com/merryhime/dynarmic.git +[submodule "libusb"] + path = externals/libusb/libusb + url = https://github.com/libusb/libusb.git +[submodule "discord-rpc"] + path = externals/discord-rpc + url = https://github.com/yuzu-emu/discord-rpc.git +[submodule "Vulkan-Headers"] + path = externals/Vulkan-Headers + url = https://github.com/KhronosGroup/Vulkan-Headers.git +[submodule "sirit"] + path = externals/sirit + url = https://github.com/yuzu-emu/sirit.git +[submodule "mbedtls"] + path = externals/mbedtls + url = https://github.com/yuzu-emu/mbedtls.git +[submodule "xbyak"] + path = externals/xbyak + url = https://github.com/herumi/xbyak.git +[submodule "opus"] + path = externals/opus + url = https://github.com/xiph/opus.git +[submodule "SDL"] + path = externals/SDL + url = https://github.com/libsdl-org/SDL.git +[submodule "cpp-httplib"] + path = externals/cpp-httplib + url = https://github.com/yhirose/cpp-httplib.git +[submodule "ffmpeg"] + path = externals/ffmpeg/ffmpeg + url = https://github.com/FFmpeg/FFmpeg.git +[submodule "vcpkg"] + path = externals/vcpkg + url = https://github.com/microsoft/vcpkg.git +[submodule "cpp-jwt"] + path = externals/cpp-jwt + url = https://github.com/arun11299/cpp-jwt.git +[submodule "libadrenotools"] + path = externals/libadrenotools + url = https://github.com/bylaws/libadrenotools.git +[submodule "tzdb_to_nx"] + path = externals/nx_tzdb/tzdb_to_nx + url = https://github.com/lat9nq/tzdb_to_nx.git +[submodule "VulkanMemoryAllocator"] + path = externals/VulkanMemoryAllocator + url = https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git +[submodule "breakpad"] + path = externals/breakpad + url = https://github.com/yuzu-emu/breakpad.git +[submodule "simpleini"] + path = externals/simpleini + url = https://github.com/brofield/simpleini.git +[submodule "oaknut"] + path = externals/oaknut + url = https://github.com/merryhime/oaknut +[submodule "Vulkan-Utility-Libraries"] + path = externals/Vulkan-Utility-Libraries + url = https://github.com/KhronosGroup/Vulkan-Utility-Libraries.git diff --git a/hiddenFiles/.reuse/dep5 b/hiddenFiles/.reuse/dep5 new file mode 100644 index 0000000000..b9ae96d0b1 --- /dev/null +++ b/hiddenFiles/.reuse/dep5 @@ -0,0 +1,161 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Comment: It is best to use this file to record copyright information about + generated, binary and third party files + +Files: dist/english_plurals/* + dist/icons/controller/*.png + dist/icons/overlay/*.png + dist/languages/* + dist/qt_themes/*/icons/48x48/sd_card.png + dist/qt_themes/*/icons/index.theme + dist/qt_themes/default/style.qss +Copyright: yuzu Emulator Project +License: GPL-2.0-or-later + +Files: dist/qt_themes/default/icons/256x256/yuzu.png + dist/yuzu.bmp + dist/yuzu.icns + dist/yuzu.ico + dist/yuzu.svg +Copyright: yuzu Emulator Project +License: GPL-2.0-or-later + +Files: dist/qt_themes/qdarkstyle*/LICENSE.* + dist/qt_themes/qdarkstyle*/style.qrc + dist/qt_themes/qdarkstyle*/style.qss +Copyright: 2013 Colin Duquesnoy + 2019 Daniel Cosmo Pizetta +License: MIT + +Files: dist/qt_themes/qdarkstyle*/rc/* +Copyright: 2013 Colin Duquesnoy + 2019 Daniel Cosmo Pizetta +License: CC-BY-4.0 + +Files: dist/qt_themes/default/icons/256x256/plus_folder.png + dist/qt_themes/default/icons/48x48/bad_folder.png + dist/qt_themes/default/icons/48x48/chip.png + dist/qt_themes/default/icons/48x48/folder.png + dist/qt_themes/default/icons/48x48/star.png + dist/qt_themes/qdarkstyle/icons/256x256/plus_folder.png + dist/qt_themes/qdarkstyle/icons/48x48/bad_folder.png + dist/qt_themes/qdarkstyle/icons/48x48/chip.png + dist/qt_themes/qdarkstyle/icons/48x48/folder.png + dist/qt_themes/qdarkstyle/icons/48x48/star.png +Copyright: Refactoring UI Inc. +License: MIT +Comment: https://github.com/tailwindlabs/heroicons + +Files: dist/qt_themes/colorful/icons/16x16/lock.png + dist/qt_themes/colorful/icons/256x256/plus_folder.png + dist/qt_themes/colorful/icons/48x48/bad_folder.png + dist/qt_themes/colorful/icons/48x48/chip.png + dist/qt_themes/colorful/icons/48x48/folder.png + dist/qt_themes/colorful_dark/icons/16x16/lock.png + dist/qt_themes/colorful/icons/16x16/info.png + dist/qt_themes/colorful/icons/16x16/sync.png +Copyright: Icons8 +License: MIT +Comment: https://github.com/icons8/flat-color-icons + +Files: dist/qt_themes/*/icons/16x16/connected.png + dist/qt_themes/*/icons/16x16/connected_notification.png + dist/qt_themes/*/icons/16x16/disconnected.png +Copyright: GNOME Project +License: CC-BY-SA-3.0 +Comment: connected_notification and disconnected are modified + +Files: dist/qt_themes/*/icons/48x48/no_avatar.png +Copyright: Ionic (http://ionic.io/) +License: MIT + +Files: dist/qt_themes/colorful/icons/48x48/star.png + dist/qt_themes/colorful/icons/16x16/checked.png + dist/qt_themes/colorful/icons/16x16/failed.png +Copyright: SVG Repo +License: CC0-1.0 + +Files: dist/qt_themes/*/icons/16x16/view-refresh.png + dist/qt_themes/default/icons/16x16/lock.png + dist/qt_themes/qdarkstyle/icons/16x16/lock.png +Copyright: Google, Inc. +License: Apache-2.0 + +Files: dist/qt_themes/*/icons/48x48/list-add.png +Copyright: Docteh +License: CC0-1.0 + +Files: externals/getopt/getopt.c + externals/getopt/getopt.h +Copyright: 2011 Ludvik Jerabek +License: LGPL-3.0-or-later + +Files: externals/glad/include/glad/glad.h + externals/glad/src/glad.c +Copyright: The Khronos Group Inc. +License: (WTFPL OR CC0-1.0) AND Apache-2.0 +Comment: https://github.com/Dav1dde/glad/issues/365#issuecomment-1138419515 + +Files: externals/glad/include/KHR/khrplatform.h +Copyright: 2008-2018 The Khronos Group Inc. +License: MIT + +Files: externals/microprofile/* +Copyright: Jonas Meyer +License: Unlicense + +Files: externals/FidelityFX-FSR/* +Copyright: 2021 Advanced Micro Devices, Inc. +License: MIT + +Files: src/yuzu/*.ui +Copyright: 2018-2022 yuzu Emulator Project +License: GPL-2.0-or-later + +Files: src/yuzu/compatdb.ui + src/yuzu/main.ui +Copyright: 2014-2017 Citra Emulator Project +License: GPL-2.0-or-later + +Files: src/yuzu/loading_screen.ui +Copyright: 2019 James Rowe <jroweboy@gmail.com> +License: GPL-2.0-or-later + +Files: src/yuzu/applets/aboutdialog.ui + src/yuzu/applets/qt_software_keyboard.ui + src/yuzu/util/overlay_dialog.ui +Copyright: 2020-2021 Its-Rei <kupfel@gmail.com> + 2020-2021 yuzu Emulator Project +License: GPL-2.0-or-later + +Files: vcpkg.json +Copyright: 2022 yuzu Emulator Project +License: GPL-3.0-or-later + +Files: .github/ISSUE_TEMPLATE/* +Copyright: 2022 yuzu Emulator Project +License: GPL-2.0-or-later + +Files: src/android/app/src/ea/res/* +Copyright: 2023 yuzu Emulator Project +License: GPL-3.0-or-later + +Files: src/android/app/src/main/res/* +Copyright: 2023 yuzu Emulator Project +License: GPL-3.0-or-later + +Files: src/android/gradle/wrapper/* +Copyright: 2023 yuzu Emulator Project +License: GPL-3.0-or-later + +Files: externals/stb/* +Copyright: Sean Barrett +License: MIT + +Files: externals/gamemode/* +Copyright: Copyright 2017-2019 Feral Interactive +License: BSD-3-Clause + +Files: src/android/app/debug.keystore +Copyright: 2023 yuzu Emulator Project +License: GPL-3.0-or-later