liushuyu 4 лет назад
Родитель
Сommit
40493231ed

+ 2 - 2
.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

+ 48 - 3
.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

+ 8 - 0
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)

+ 1 - 0
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)

+ 12 - 0
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)

+ 7 - 1
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()