summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorliushuyu <liushuyu011@gmail.com>2021-12-24 02:23:02 +0100
committerliushuyu <liushuyu011@gmail.com>2022-07-05 05:21:56 +0200
commit40493231edad7085544b79b6c3ac7360d112170c (patch)
tree5124d6fde6ca6b913c13aca60620c134e3bcf3f1
parentCI: use Ninja to build stuff faster (diff)
downloadyuzu-40493231edad7085544b79b6c3ac7360d112170c.tar
yuzu-40493231edad7085544b79b6c3ac7360d112170c.tar.gz
yuzu-40493231edad7085544b79b6c3ac7360d112170c.tar.bz2
yuzu-40493231edad7085544b79b6c3ac7360d112170c.tar.lz
yuzu-40493231edad7085544b79b6c3ac7360d112170c.tar.xz
yuzu-40493231edad7085544b79b6c3ac7360d112170c.tar.zst
yuzu-40493231edad7085544b79b6c3ac7360d112170c.zip
-rwxr-xr-x.ci/scripts/windows/docker.sh4
-rw-r--r--.github/workflows/verify.yml51
-rw-r--r--CMakeLists.txt8
-rw-r--r--CMakeModules/CopyYuzuFFmpegDeps.cmake1
-rw-r--r--CMakeModules/MSVCCache.cmake12
-rw-r--r--src/CMakeLists.txt8
6 files changed, 78 insertions, 6 deletions
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/$<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 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()