From 55a2682348df94d0ff2f57d786b7a557312d0345 Mon Sep 17 00:00:00 2001 From: Ray Molenkamp Date: Mon, 20 Apr 2020 12:51:43 -0600 Subject: Windows: Add sccache support. sccache [1] is one of the few ccache like solutions that will work on windows. sccache support can be enabled with the `WITH_WINDOWS_SCCACHE` cmake option however it will only will work with ninja as the build system, msbuild is not supported currently. Advanced option, developes are expected to obtain and configure sccache on their own. ``` Full build no cache 1428.90s (100.00%) Full build cached 434.34s ( 30.40%) ``` [1] https://github.com/mozilla/sccache Reviewed By: nicholas_rishel, Brecht Differential Revision: https://developer.blender.org/D7466 --- build_files/windows/configure_msbuild.cmd | 5 +++++ build_files/windows/configure_ninja.cmd | 7 +++++++ build_files/windows/parse_arguments.cmd | 2 ++ build_files/windows/reset_variables.cmd | 1 + 4 files changed, 15 insertions(+) (limited to 'build_files/windows') diff --git a/build_files/windows/configure_msbuild.cmd b/build_files/windows/configure_msbuild.cmd index 3c1194011cd..4956f1e3ea1 100644 --- a/build_files/windows/configure_msbuild.cmd +++ b/build_files/windows/configure_msbuild.cmd @@ -2,6 +2,11 @@ set BUILD_GENERATOR_POST= set BUILD_PLATFORM_SELECT= set MSBUILD_PLATFORM=x64 +if "%BUILD_WITH_SCCACHE%"=="1" ( + echo sccache is only supported with ninja as the build system. + exit /b 1 +) + if "%WITH_CLANG%"=="1" ( set CLANG_CMAKE_ARGS=-T"llvm" if "%WITH_ASAN%"=="1" ( diff --git a/build_files/windows/configure_ninja.cmd b/build_files/windows/configure_ninja.cmd index 1650e43cda9..20692847bef 100644 --- a/build_files/windows/configure_ninja.cmd +++ b/build_files/windows/configure_ninja.cmd @@ -6,6 +6,13 @@ if %ERRORLEVEL% NEQ 0 ( set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -G "Ninja" %TESTS_CMAKE_ARGS% -DCMAKE_BUILD_TYPE=%BUILD_TYPE% +if "%BUILD_WITH_SCCACHE%"=="1" ( + set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -DWITH_WINDOWS_SCCACHE=On + if NOT "%verbose%" == "" ( + echo Enabling sccache + ) +) + if "%WITH_CLANG%" == "1" ( set LLVM_DIR= for /F "usebackq skip=2 tokens=1-2*" %%A IN (`REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\LLVM\LLVM" /ve 2^>nul`) DO set LLVM_DIR=%%C diff --git a/build_files/windows/parse_arguments.cmd b/build_files/windows/parse_arguments.cmd index 4ee05bfde7d..54dc41ece87 100644 --- a/build_files/windows/parse_arguments.cmd +++ b/build_files/windows/parse_arguments.cmd @@ -86,6 +86,8 @@ if NOT "%1" == "" ( set BUILD_UPDATE_ARGS="--no-libraries" ) else if "%1" == "ninja" ( SET BUILD_WITH_NINJA=1 + ) else if "%1" == "sccache" ( + SET BUILD_WITH_SCCACHE=1 ) else if "%1" == "clean" ( set MUST_CLEAN=1 ) else if "%1" == "verbose" ( diff --git a/build_files/windows/reset_variables.cmd b/build_files/windows/reset_variables.cmd index 48a61aff44a..262874713eb 100644 --- a/build_files/windows/reset_variables.cmd +++ b/build_files/windows/reset_variables.cmd @@ -30,3 +30,4 @@ set WITH_PYDEBUG= set PYDEBUG_CMAKE_ARGS= set FORMAT= set TEST= +set BUILD_WITH_SCCACHE= -- cgit v1.2.3