From a1815b617ceebf9a0a43c6fb89a13ac7f37f9ba4 Mon Sep 17 00:00:00 2001
From: liushuyu <liushuyu011@gmail.com>
Date: Wed, 22 Dec 2021 23:31:57 -0700
Subject: [PATCH 1/7] CI: Use GitHub Actions to check pull requests

---
 .ci/scripts/clang/docker.sh   |  2 --
 .ci/scripts/linux/docker.sh   |  2 --
 .ci/scripts/windows/docker.sh | 17 ++++++++----
 .github/workflows/verify.yml  | 52 +++++++++++++++++++++++++++++++++++
 4 files changed, 63 insertions(+), 10 deletions(-)
 create mode 100644 .github/workflows/verify.yml

diff --git a/.ci/scripts/clang/docker.sh b/.ci/scripts/clang/docker.sh
index 885d74e97f..4bb07105a4 100755
--- a/.ci/scripts/clang/docker.sh
+++ b/.ci/scripts/clang/docker.sh
@@ -3,8 +3,6 @@
 # Exit on error, rather than continuing with the rest of the script.
 set -e
 
-cd /yuzu
-
 ccache -s
 
 mkdir build || true && cd build
diff --git a/.ci/scripts/linux/docker.sh b/.ci/scripts/linux/docker.sh
index 5070b92d1f..38b29294cc 100755
--- a/.ci/scripts/linux/docker.sh
+++ b/.ci/scripts/linux/docker.sh
@@ -3,8 +3,6 @@
 # Exit on error, rather than continuing with the rest of the script.
 set -e
 
-cd /yuzu
-
 ccache -s
 
 mkdir build || true && cd build
diff --git a/.ci/scripts/windows/docker.sh b/.ci/scripts/windows/docker.sh
index f53d837d1f..6420c8f7d9 100755
--- a/.ci/scripts/windows/docker.sh
+++ b/.ci/scripts/windows/docker.sh
@@ -2,19 +2,24 @@
 
 set -e
 
-cd /yuzu
+#cd /yuzu
 
 ccache -s
 
-mkdir build || true && cd build
-LDFLAGS="-fuse-ld=lld"
+mkdir -p "$HOME/.conan/"
+cp -rv /home/yuzu/.conan/profiles/ "$HOME/.conan/"
+cp -rv /home/yuzu/.conan/settings.yml "$HOME/.conan/"
+
+mkdir -p build && cd build
+export LDFLAGS="-fuse-ld=lld"
 # -femulated-tls required due to an incompatibility between GCC and Clang
 # TODO(lat9nq): If this is widespread, we probably need to add this to CMakeLists where appropriate
+export CFLAGS="-femulated-tls"
+export CXXFLAGS="${CFLAGS}"
 cmake .. \
     -DCMAKE_BUILD_TYPE=Release \
-    -DCMAKE_CXX_FLAGS="-femulated-tls" \
-    -DCMAKE_TOOLCHAIN_FILE="$(pwd)/../CMakeModules/MinGWClangCross.cmake" \
-    -DDISPLAY_VERSION=$1 \
+    -DCMAKE_TOOLCHAIN_FILE="${PWD}/../CMakeModules/MinGWClangCross.cmake" \
+    -DDISPLAY_VERSION="$1" \
     -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON \
     -DENABLE_QT_TRANSLATION=ON \
     -DUSE_CCACHE=ON \
diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml
new file mode 100644
index 0000000000..e601ecd400
--- /dev/null
+++ b/.github/workflows/verify.yml
@@ -0,0 +1,52 @@
+name: 'yuzu verify'
+
+on:
+  pull_request:
+    branches: [ master ]
+
+jobs:
+  format:
+    name: 'verify formatting'
+    runs-on: ubuntu-latest
+    container:
+      image: yuzuemu/build-environments:linux-clang-format
+      options: -u 1001
+    steps:
+      - uses: actions/checkout@v2
+        with:
+          submodules: false
+      - name: 'Verify Formatting'
+        run: bash -ex ./.ci/scripts/format/script.sh
+  build:
+    name: 'test build'
+    needs: format
+    runs-on: ubuntu-latest
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - type: clang
+            image: linux-fresh
+          - type: linux
+            image: linux-fresh
+          - type: windows
+            image: linux-mingw
+    container:
+      image: yuzuemu/build-environments:${{ matrix.image }}
+      options: -u 1001
+    steps:
+      - uses: actions/checkout@v2
+        with:
+          submodules: recursive
+          fetch-depth: 0
+      - name: Set up cache
+        uses: actions/cache@v2
+        with:
+          path: ~/.ccache
+          key: ${{ runner.os }}-${{ matrix.image }}-${{ github.sha }}
+          restore-keys: |
+            ${{ runner.os }}-${{ matrix.image }}-
+      - name: Build
+        run: ./.ci/scripts/${{ matrix.type }}/docker.sh
+        env:
+          ENABLE_COMPATIBILITY_REPORTING: "ON"

From 43a1948d5807469b5ddcea0e3f69b5659171d742 Mon Sep 17 00:00:00 2001
From: liushuyu <liushuyu011@gmail.com>
Date: Thu, 23 Dec 2021 04:43:24 -0700
Subject: [PATCH 2/7] CI: use Ninja to build stuff faster

---
 .ci/scripts/clang/docker.sh   | 4 ++--
 .ci/scripts/linux/docker.sh   | 7 ++++---
 .ci/scripts/windows/docker.sh | 6 +++---
 3 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/.ci/scripts/clang/docker.sh b/.ci/scripts/clang/docker.sh
index 4bb07105a4..94a9ca0ece 100755
--- a/.ci/scripts/clang/docker.sh
+++ b/.ci/scripts/clang/docker.sh
@@ -6,9 +6,9 @@ set -e
 ccache -s
 
 mkdir build || true && cd build
-cmake .. -DDISPLAY_VERSION=$1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/lib/ccache/clang -DCMAKE_CXX_COMPILER=/usr/lib/ccache/clang++ -DYUZU_ENABLE_COMPATIBILITY_REPORTING=${ENABLE_COMPATIBILITY_REPORTING:-"OFF"} -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DUSE_DISCORD_PRESENCE=ON -DENABLE_QT_TRANSLATION=ON -DCMAKE_INSTALL_PREFIX="/usr"
+cmake .. -GNinja -DDISPLAY_VERSION=$1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/lib/ccache/clang -DCMAKE_CXX_COMPILER=/usr/lib/ccache/clang++ -DYUZU_ENABLE_COMPATIBILITY_REPORTING=${ENABLE_COMPATIBILITY_REPORTING:-"OFF"} -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DUSE_DISCORD_PRESENCE=ON -DENABLE_QT_TRANSLATION=ON -DCMAKE_INSTALL_PREFIX="/usr"
 
-make -j$(nproc)
+ninja
 
 ccache -s
 
diff --git a/.ci/scripts/linux/docker.sh b/.ci/scripts/linux/docker.sh
index 38b29294cc..436155b3de 100755
--- a/.ci/scripts/linux/docker.sh
+++ b/.ci/scripts/linux/docker.sh
@@ -17,15 +17,16 @@ cmake .. \
       -DENABLE_QT_TRANSLATION=ON \
       -DUSE_DISCORD_PRESENCE=ON \
       -DYUZU_ENABLE_COMPATIBILITY_REPORTING=${ENABLE_COMPATIBILITY_REPORTING:-"OFF"} \
-      -DYUZU_USE_BUNDLED_FFMPEG=ON
+      -DYUZU_USE_BUNDLED_FFMPEG=ON \
+      -GNinja
 
-make -j$(nproc)
+ninja
 
 ccache -s
 
 ctest -VV -C Release
 
-make install DESTDIR=AppDir
+DESTDIR="$PWD/AppDir" ninja install
 rm -vf AppDir/usr/bin/yuzu-cmd AppDir/usr/bin/yuzu-tester
 
 # Download tools needed to build an AppImage
diff --git a/.ci/scripts/windows/docker.sh b/.ci/scripts/windows/docker.sh
index 6420c8f7d9..46cdb68f53 100755
--- a/.ci/scripts/windows/docker.sh
+++ b/.ci/scripts/windows/docker.sh
@@ -6,9 +6,9 @@ set -e
 
 ccache -s
 
-mkdir -p "$HOME/.conan/"
-cp -rv /home/yuzu/.conan/profiles/ "$HOME/.conan/"
-cp -rv /home/yuzu/.conan/settings.yml "$HOME/.conan/"
+mkdir -p "$HOME/.conan/profiles"
+wget -nc "https://github.com/yuzu-emu/build-environments/raw/master/linux-mingw/default" -O "$HOME/.conan/profiles/default"
+wget -nc "https://github.com/yuzu-emu/build-environments/raw/master/linux-mingw/settings.yml" -O "$HOME/.conan/settings.yml"
 
 mkdir -p build && cd build
 export LDFLAGS="-fuse-ld=lld"

From 40493231edad7085544b79b6c3ac7360d112170c Mon Sep 17 00:00:00 2001
From: liushuyu <liushuyu011@gmail.com>
Date: Thu, 23 Dec 2021 18:23:02 -0700
Subject: [PATCH 3/7] CI: fix caching

---
 .ci/scripts/windows/docker.sh         |  4 +--
 .github/workflows/verify.yml          | 51 +++++++++++++++++++++++++--
 CMakeLists.txt                        |  8 +++++
 CMakeModules/CopyYuzuFFmpegDeps.cmake |  1 +
 CMakeModules/MSVCCache.cmake          | 12 +++++++
 src/CMakeLists.txt                    |  8 ++++-
 6 files changed, 78 insertions(+), 6 deletions(-)
 create mode 100644 CMakeModules/MSVCCache.cmake

diff --git a/.ci/scripts/windows/docker.sh b/.ci/scripts/windows/docker.sh
index 46cdb68f53..d0c70bf09f 100755
--- a/.ci/scripts/windows/docker.sh
+++ b/.ci/scripts/windows/docker.sh
@@ -4,7 +4,7 @@ set -e
 
 #cd /yuzu
 
-ccache -s
+ccache -sv
 
 mkdir -p "$HOME/.conan/profiles"
 wget -nc "https://github.com/yuzu-emu/build-environments/raw/master/linux-mingw/default" -O "$HOME/.conan/profiles/default"
@@ -28,7 +28,7 @@ cmake .. \
     -GNinja
 ninja yuzu yuzu-cmd
 
-ccache -s
+ccache -sv
 
 echo "Tests skipped"
 #ctest -VV -C Release
diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml
index e601ecd400..d26ebc3ac8 100644
--- a/.github/workflows/verify.yml
+++ b/.github/workflows/verify.yml
@@ -6,7 +6,7 @@ on:
 
 jobs:
   format:
-    name: 'verify formatting'
+    name: 'verify format'
     runs-on: ubuntu-latest
     container:
       image: yuzuemu/build-environments:linux-clang-format
@@ -41,12 +41,57 @@ jobs:
           fetch-depth: 0
       - name: Set up cache
         uses: actions/cache@v2
+        id: ccache-restore
         with:
           path: ~/.ccache
-          key: ${{ runner.os }}-${{ matrix.image }}-${{ github.sha }}
+          key: ${{ runner.os }}-${{ matrix.type }}-${{ github.sha }}
           restore-keys: |
-            ${{ runner.os }}-${{ matrix.image }}-
+            ${{ runner.os }}-${{ matrix.type }}-
+      - name: Create ccache directory
+        if: steps.ccache-restore.outputs.cache-hit != 'true'
+        run: mkdir -p ~/.ccache
       - name: Build
         run: ./.ci/scripts/${{ matrix.type }}/docker.sh
         env:
           ENABLE_COMPATIBILITY_REPORTING: "ON"
+  build-msvc:
+    name: 'test build (windows, msvc)'
+    needs: format
+    runs-on: windows-2019
+    steps:
+      - name: Set up cache
+        uses: actions/cache@v2
+        with:
+          path: ~/.buildcache
+          key: ${{ runner.os }}-msvc-${{ github.sha }}
+          restore-keys: |
+            ${{ runner.os }}-msvc-
+      - name: Install dependencies
+        shell: cmd
+        run: |
+          choco install vulkan-sdk wget
+          python -m pip install --upgrade pip conan
+          call refreshenv
+          wget https://github.com/mbitsnbites/buildcache/releases/download/v0.27.6/buildcache-windows.zip
+          7z x buildcache-windows.zip
+          copy buildcache\bin\buildcache.exe C:\ProgramData\chocolatey\bin
+          rmdir buildcache
+          echo %PATH% >> %GITHUB_PATH%
+      - name: Set up MSVC
+        uses: ilammy/msvc-dev-cmd@v1
+      - uses: actions/checkout@v2
+        with:
+          submodules: recursive
+          fetch-depth: 0
+      - name: Configure
+        env:
+          CC: cl.exe
+          CXX: cl.exe
+        run: |
+          glslangValidator --version
+          mkdir build
+          cmake . -B build -GNinja -DCMAKE_TOOLCHAIN_FILE="CMakeModules/MSVCCache.cmake" -DUSE_CCACHE=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=ON -DUSE_DISCORD_PRESENCE=ON -DENABLE_QT_TRANSLATION=ON -DCMAKE_BUILD_TYPE=Release
+      - name: Build
+        run: cmake --build build
+      - name: Cache Summary
+        run: buildcache -s
diff --git a/CMakeLists.txt b/CMakeLists.txt
index be70c04ae6..80a8d4ed81 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -627,6 +627,14 @@ add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY
     -DBOOST_DATE_TIME_NO_LIB
     -DBOOST_REGEX_NO_LIB
 )
+# Adjustments for MSVC + Ninja
+if (MSVC AND CMAKE_GENERATOR STREQUAL "Ninja")
+    add_compile_options(
+        /wd4711 # function 'function' selected for automatic inline expansion
+        /wd4464 # relative include path contains '..'
+        /wd4820 # 'identifier1': '4' bytes padding added after data member 'identifier2'
+    )
+endif()
 
 enable_testing()
 add_subdirectory(externals)
diff --git a/CMakeModules/CopyYuzuFFmpegDeps.cmake b/CMakeModules/CopyYuzuFFmpegDeps.cmake
index 26384e8b8a..f5ab2806c0 100644
--- a/CMakeModules/CopyYuzuFFmpegDeps.cmake
+++ b/CMakeModules/CopyYuzuFFmpegDeps.cmake
@@ -2,5 +2,6 @@ function(copy_yuzu_FFmpeg_deps target_dir)
     include(WindowsCopyFiles)
     set(DLL_DEST "${CMAKE_BINARY_DIR}/bin/$<CONFIG>/")
     file(READ "${FFmpeg_PATH}/requirements.txt" FFmpeg_REQUIRED_DLLS)
+    string(STRIP "${FFmpeg_REQUIRED_DLLS}" FFmpeg_REQUIRED_DLLS)
     windows_copy_files(${target_dir} ${FFmpeg_DLL_DIR} ${DLL_DEST} ${FFmpeg_REQUIRED_DLLS})
 endfunction(copy_yuzu_FFmpeg_deps)
diff --git a/CMakeModules/MSVCCache.cmake b/CMakeModules/MSVCCache.cmake
new file mode 100644
index 0000000000..8848e35ead
--- /dev/null
+++ b/CMakeModules/MSVCCache.cmake
@@ -0,0 +1,12 @@
+# buildcache wrapper
+OPTION(USE_CCACHE "Use buildcache for compilation" OFF)
+IF(USE_CCACHE)
+    FIND_PROGRAM(CCACHE buildcache)
+    IF (CCACHE)
+        MESSAGE(STATUS "Using buildcache found in PATH")
+        SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE})
+        SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE})
+    ELSE(CCACHE)
+        MESSAGE(WARNING "USE_CCACHE enabled, but no buildcache executable found")
+    ENDIF(CCACHE)
+ENDIF(USE_CCACHE)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 39d0384933..39ae573b26 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -36,7 +36,6 @@ if (MSVC)
     # /GT                 - Supports fiber safety for data allocated using static thread-local storage
     add_compile_options(
         /MP
-        /Zi
         /Zm200
         /Zo
         /permissive-
@@ -79,6 +78,13 @@ if (MSVC)
         /we5245 # 'function': unreferenced function with internal linkage has been removed
     )
 
+    if (USE_CCACHE)
+    # when caching, we need to use /Z7 to downgrade debug info to use an older but more cachable format
+        add_compile_options(/Z7)
+    else()
+        add_compile_options(/Zi)
+    endif()
+
     if (ARCHITECTURE_x86_64)
         add_compile_options(/QIntel-jcc-erratum)
     endif()

From 9981ce8d98953c6353cbc883db225412952459cc Mon Sep 17 00:00:00 2001
From: liushuyu <liushuyu011@gmail.com>
Date: Sat, 18 Jun 2022 23:15:30 -0600
Subject: [PATCH 4/7] CI: upload artifacts for pull request verification

---
 .ci/scripts/clang/upload.sh       |  0
 .ci/scripts/common/post-upload.sh |  6 ++++--
 .ci/scripts/linux/upload.sh       |  0
 .ci/scripts/windows/upload.sh     |  0
 .github/workflows/verify.yml      | 18 ++++++++++++++++++
 5 files changed, 22 insertions(+), 2 deletions(-)
 mode change 100644 => 100755 .ci/scripts/clang/upload.sh
 mode change 100644 => 100755 .ci/scripts/linux/upload.sh
 mode change 100644 => 100755 .ci/scripts/windows/upload.sh

diff --git a/.ci/scripts/clang/upload.sh b/.ci/scripts/clang/upload.sh
old mode 100644
new mode 100755
diff --git a/.ci/scripts/common/post-upload.sh b/.ci/scripts/common/post-upload.sh
index 387431564a..91ef750fe6 100644
--- a/.ci/scripts/common/post-upload.sh
+++ b/.ci/scripts/common/post-upload.sh
@@ -4,8 +4,10 @@
 cp license.txt "$DIR_NAME"
 cp README.md "$DIR_NAME"
 
-tar -cJvf "${REV_NAME}-source.tar.xz" src externals CMakeLists.txt README.md license.txt
-cp "${REV_NAME}-source.tar.xz" "$DIR_NAME"
+if [[ "x${NO_SOURCE_PACK}" == "x" ]]; then
+  tar -cJvf "${REV_NAME}-source.tar.xz" src externals CMakeLists.txt README.md license.txt
+  cp -v "${REV_NAME}-source.tar.xz" "$DIR_NAME"
+fi
 
 tar $COMPRESSION_FLAGS "$ARCHIVE_NAME" "$DIR_NAME"
 
diff --git a/.ci/scripts/linux/upload.sh b/.ci/scripts/linux/upload.sh
old mode 100644
new mode 100755
diff --git a/.ci/scripts/windows/upload.sh b/.ci/scripts/windows/upload.sh
old mode 100644
new mode 100755
diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml
index d26ebc3ac8..7e39ef8473 100644
--- a/.github/workflows/verify.yml
+++ b/.github/workflows/verify.yml
@@ -54,6 +54,15 @@ jobs:
         run: ./.ci/scripts/${{ matrix.type }}/docker.sh
         env:
           ENABLE_COMPATIBILITY_REPORTING: "ON"
+      - name: Pack
+        run: ./.ci/scripts/${{ matrix.type }}/upload.sh
+        env:
+          NO_SOURCE_PACK: "YES"
+      - name: Upload
+        uses: actions/upload-artifact@v3
+        with:
+          name: ${{ matrix.type }}
+          path: artifacts/
   build-msvc:
     name: 'test build (windows, msvc)'
     needs: format
@@ -67,6 +76,7 @@ jobs:
           restore-keys: |
             ${{ runner.os }}-msvc-
       - name: Install dependencies
+        # due to how chocolatey works, only cmd.exe is supported here
         shell: cmd
         run: |
           choco install vulkan-sdk wget
@@ -95,3 +105,11 @@ jobs:
         run: cmake --build build
       - name: Cache Summary
         run: buildcache -s
+      - name: Pack
+        shell: pwsh
+        run: .\.ci\scripts\windows\upload.ps1
+      - name: Upload
+        uses: actions/upload-artifact@v3
+        with:
+          name: msvc
+          path: artifacts/

From 161d6960130085ac5989f64f4f0d7a9c31713498 Mon Sep 17 00:00:00 2001
From: liushuyu <liushuyu011@gmail.com>
Date: Sun, 19 Jun 2022 19:51:31 -0600
Subject: [PATCH 5/7] CI: workaround appimage generation if FUSE is not
 available

---
 .ci/scripts/linux/upload.sh | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/.ci/scripts/linux/upload.sh b/.ci/scripts/linux/upload.sh
index 208cd0d049..3f2c2f2083 100755
--- a/.ci/scripts/linux/upload.sh
+++ b/.ci/scripts/linux/upload.sh
@@ -24,6 +24,11 @@ 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
+
 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}"

From 312e5eda66e4e610300bfa178f1c1ce70293bc12 Mon Sep 17 00:00:00 2001
From: liushuyu <liushuyu011@gmail.com>
Date: Mon, 4 Jul 2022 21:18:17 -0600
Subject: [PATCH 6/7] CI: lint scripts

---
 .ci/scripts/common/post-upload.sh | 2 +-
 .ci/scripts/windows/docker.sh     | 3 +--
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/.ci/scripts/common/post-upload.sh b/.ci/scripts/common/post-upload.sh
index 91ef750fe6..a4e3070fde 100644
--- a/.ci/scripts/common/post-upload.sh
+++ b/.ci/scripts/common/post-upload.sh
@@ -4,7 +4,7 @@
 cp license.txt "$DIR_NAME"
 cp README.md "$DIR_NAME"
 
-if [[ "x${NO_SOURCE_PACK}" == "x" ]]; then
+if [[ -z "${NO_SOURCE_PACK}" ]]; then
   tar -cJvf "${REV_NAME}-source.tar.xz" src externals CMakeLists.txt README.md license.txt
   cp -v "${REV_NAME}-source.tar.xz" "$DIR_NAME"
 fi
diff --git a/.ci/scripts/windows/docker.sh b/.ci/scripts/windows/docker.sh
index d0c70bf09f..dcdf39e3ec 100755
--- a/.ci/scripts/windows/docker.sh
+++ b/.ci/scripts/windows/docker.sh
@@ -14,8 +14,7 @@ mkdir -p build && cd build
 export LDFLAGS="-fuse-ld=lld"
 # -femulated-tls required due to an incompatibility between GCC and Clang
 # TODO(lat9nq): If this is widespread, we probably need to add this to CMakeLists where appropriate
-export CFLAGS="-femulated-tls"
-export CXXFLAGS="${CFLAGS}"
+export CXXFLAGS="-femulated-tls"
 cmake .. \
     -DCMAKE_BUILD_TYPE=Release \
     -DCMAKE_TOOLCHAIN_FILE="${PWD}/../CMakeModules/MinGWClangCross.cmake" \

From 1524ff87d26e95f3fa722ca23eb30895e9b6f793 Mon Sep 17 00:00:00 2001
From: liushuyu <liushuyu011@gmail.com>
Date: Mon, 4 Jul 2022 21:21:36 -0600
Subject: [PATCH 7/7] CI: unbreak ADO after GHA changes

---
 .ci/scripts/clang/exec.sh     | 2 +-
 .ci/scripts/format/exec.sh    | 2 +-
 .ci/scripts/linux/exec.sh     | 2 +-
 .ci/scripts/windows/docker.sh | 4 ++--
 .ci/scripts/windows/exec.sh   | 2 +-
 5 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/.ci/scripts/clang/exec.sh b/.ci/scripts/clang/exec.sh
index e56cd4325a..a213aac27c 100644
--- a/.ci/scripts/clang/exec.sh
+++ b/.ci/scripts/clang/exec.sh
@@ -4,5 +4,5 @@ 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 yuzuemu/build-environments:linux-fresh /bin/bash /yuzu/.ci/scripts/clang/docker.sh $1
+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/.ci/scripts/format/exec.sh b/.ci/scripts/format/exec.sh
index e9e9d2e170..c50e90d661 100644
--- a/.ci/scripts/format/exec.sh
+++ b/.ci/scripts/format/exec.sh
@@ -3,5 +3,5 @@
 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 yuzuemu/build-environments:linux-clang-format /bin/bash -ex /yuzu/.ci/scripts/format/docker.sh
+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/.ci/scripts/linux/exec.sh b/.ci/scripts/linux/exec.sh
index a7deddeb35..fc4594d659 100644
--- a/.ci/scripts/linux/exec.sh
+++ b/.ci/scripts/linux/exec.sh
@@ -4,5 +4,5 @@ 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 ./
-docker run -e ENABLE_COMPATIBILITY_REPORTING -e CCACHE_DIR=/yuzu/ccache -v $(pwd):/yuzu yuzuemu/build-environments:linux-fresh /bin/bash /yuzu/.ci/scripts/linux/docker.sh $1
+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/linux/docker.sh "$1"
 sudo chown -R $UID ./
diff --git a/.ci/scripts/windows/docker.sh b/.ci/scripts/windows/docker.sh
index dcdf39e3ec..d670fe47d9 100755
--- a/.ci/scripts/windows/docker.sh
+++ b/.ci/scripts/windows/docker.sh
@@ -7,8 +7,8 @@ set -e
 ccache -sv
 
 mkdir -p "$HOME/.conan/profiles"
-wget -nc "https://github.com/yuzu-emu/build-environments/raw/master/linux-mingw/default" -O "$HOME/.conan/profiles/default"
-wget -nc "https://github.com/yuzu-emu/build-environments/raw/master/linux-mingw/settings.yml" -O "$HOME/.conan/settings.yml"
+wget -c "https://github.com/yuzu-emu/build-environments/raw/master/linux-mingw/default" -O "$HOME/.conan/profiles/default"
+wget -c "https://github.com/yuzu-emu/build-environments/raw/master/linux-mingw/settings.yml" -O "$HOME/.conan/settings.yml"
 
 mkdir -p build && cd build
 export LDFLAGS="-fuse-ld=lld"
diff --git a/.ci/scripts/windows/exec.sh b/.ci/scripts/windows/exec.sh
index f904544bdf..bf5c5fb630 100644
--- a/.ci/scripts/windows/exec.sh
+++ b/.ci/scripts/windows/exec.sh
@@ -4,5 +4,5 @@ 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 yuzuemu/build-environments:linux-mingw /bin/bash -ex /yuzu/.ci/scripts/windows/docker.sh $1
+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 ./