From a1815b617ceebf9a0a43c6fb89a13ac7f37f9ba4 Mon Sep 17 00:00:00 2001 From: liushuyu Date: Wed, 22 Dec 2021 23:31:57 -0700 Subject: CI: Use GitHub Actions to check pull requests --- .github/workflows/verify.yml | 52 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 .github/workflows/verify.yml (limited to '.github/workflows') diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml new file mode 100644 index 000000000..e601ecd40 --- /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" -- cgit v1.2.3 From 40493231edad7085544b79b6c3ac7360d112170c Mon Sep 17 00:00:00 2001 From: liushuyu Date: Thu, 23 Dec 2021 18:23:02 -0700 Subject: 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 (limited to '.github/workflows') diff --git a/.ci/scripts/windows/docker.sh b/.ci/scripts/windows/docker.sh index 46cdb68f5..d0c70bf09 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 e601ecd40..d26ebc3ac 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 be70c04ae..80a8d4ed8 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 26384e8b8..f5ab2806c 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/$/") 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 000000000..8848e35ea --- /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 39d038493..39ae573b2 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() -- cgit v1.2.3 From 9981ce8d98953c6353cbc883db225412952459cc Mon Sep 17 00:00:00 2001 From: liushuyu Date: Sat, 18 Jun 2022 23:15:30 -0600 Subject: 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 (limited to '.github/workflows') 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 387431564..91ef750fe 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 d26ebc3ac..7e39ef847 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/ -- cgit v1.2.3