mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-08-05 11:45:54 +00:00
This CL cleans up the main CMakeLists.txt file by grouping the option entries together, this makes it clearer which options are available. The dawn options are emitted as status messages so you can see how everything was configured. The Tint readers are configured based on the dawn backend being configured. Change-Id: I9f1e3012dab6367307783af5cf3bca38beac3382 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/94300 Commit-Queue: Dan Sinclair <dsinclair@chromium.org> Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Austin Eng <enga@chromium.org>
168 lines
6.2 KiB
Batchfile
168 lines
6.2 KiB
Batchfile
@rem Copyright 2021 The Tint and Dawn Authors.
|
|
@rem
|
|
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
|
@rem you may not use this file except in compliance with the License.
|
|
@rem You may obtain a copy of the License at
|
|
@rem
|
|
@rem http://www.apache.org/licenses/LICENSE-2.0
|
|
@rem
|
|
@rem Unless required by applicable law or agreed to in writing, software
|
|
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
|
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
@rem See the License for the specific language governing permissions and
|
|
@rem limitations under the License.
|
|
|
|
@echo off
|
|
SETLOCAL ENABLEDELAYEDEXPANSION
|
|
|
|
goto :main
|
|
|
|
:task_begin
|
|
set TASK_NAME=%~1
|
|
echo %TASK_NAME% starting at %Time%
|
|
exit /b 0
|
|
|
|
:print_last_task_duration
|
|
if not "%TASK_NAME%" == "" (
|
|
echo %TASK_NAME% completed at %Time%
|
|
)
|
|
exit /b 0
|
|
|
|
:status
|
|
echo.
|
|
echo.
|
|
call :print_last_task_duration
|
|
echo.
|
|
echo *****************************************************************
|
|
echo %~1
|
|
echo *****************************************************************
|
|
echo.
|
|
call :task_begin "%~1"
|
|
exit /b 0
|
|
|
|
:main
|
|
|
|
set ORIGINAL_SRC_DIR= %~dp0\..\..\..
|
|
set TEMP_DIR=%TEMP%\dawn-temp
|
|
set SRC_DIR="%TEMP_DIR%\dawn-src"
|
|
set BUILD_DIR="%TEMP_DIR%\dawn-build"
|
|
|
|
cd /d %ORIGINAL_SRC_DIR%
|
|
if not exist ".git\" (
|
|
echo "ORIGINAL_SRC_DIR should point to project root: %ORIGINAL_SRC_DIR%"
|
|
goto :error
|
|
)
|
|
|
|
if exist %TEMP_DIR% (
|
|
call :status "Deleting %TEMP_DIR%"
|
|
del /q/f/s %TEMP_DIR% > NUL || goto :error
|
|
rmdir /q/s %TEMP_DIR% > NUL || goto :error
|
|
)
|
|
mkdir %TEMP_DIR% || goto :error
|
|
|
|
call :status "Fetching and installing DXC"
|
|
@echo on
|
|
set DXC_RELEASE="https://github.com/microsoft/DirectXShaderCompiler/releases/download/v1.6.2112/dxc_2021_12_08.zip"
|
|
curl -k -L %DXC_RELEASE% --output "%TEMP_DIR%\dxc_release.zip" || goto :error
|
|
powershell.exe -Command "Expand-Archive -LiteralPath '%TEMP_DIR%\dxc_release.zip' -DestinationPath '%TEMP_DIR%\dxc'" || goto :error
|
|
set DXC_PATH=%TEMP_DIR%\dxc\bin\x64
|
|
|
|
rem Patch with artifact build that contains fixes not present in the release build
|
|
set DXC_ARTIFACT="https://ci.appveyor.com/api/projects/dnovillo/directxshadercompiler/artifacts/build%%2FRelease%%2Fdxc-artifacts.zip?branch=master&pr=false&job=image%%3A%%20Visual%%20Studio%%202019"
|
|
curl -k -L %DXC_ARTIFACT% --output "%TEMP_DIR%\dxc_artifact.zip" || goto :error
|
|
powershell.exe -Command "Expand-Archive -Force -LiteralPath '%TEMP_DIR%\dxc_artifact.zip' -DestinationPath '%TEMP_DIR%\dxc_artifact'" || goto :error
|
|
move /Y %TEMP_DIR%\dxc_artifact\bin\* %DXC_PATH%
|
|
@echo off
|
|
|
|
call :status "Fetching and installing Windows SDK for d3dcompiler DLL"
|
|
@echo on
|
|
set WINSDK_DLL_INSTALLER=https://go.microsoft.com/fwlink/?linkid=2164145
|
|
set WINSDK_VERSION=10.0.20348.0
|
|
curl -k -L %WINSDK_DLL_INSTALLER% --output "%TEMP_DIR%\winsdksetup.exe" || goto :error
|
|
start "download" /wait "%TEMP_DIR%\winsdksetup.exe" /quiet /norestart /ceip off /features OptionId.DesktopCPPx64 /layout "%TEMP_DIR%\winsdkinstall" || goto :error
|
|
start "install" /wait "%TEMP_DIR%\winsdkinstall\Installers\Windows SDK for Windows Store Apps Tools-x86_en-us.msi" || goto :error
|
|
set D3DCOMPILER_PATH=C:\Program Files (x86)\Windows Kits\10\bin\%WINSDK_VERSION%\x64
|
|
@echo off
|
|
|
|
call :status "Installing depot_tools"
|
|
@echo on
|
|
pushd %TEMP_DIR%
|
|
rem For Windows, we must download and extract a bundle.
|
|
rem See https://chromium.googlesource.com/chromium/src/+/HEAD/docs/windows_build_instructions.md#install
|
|
powershell -Command "(New-Object Net.WebClient).DownloadFile('https://storage.googleapis.com/chrome-infra/depot_tools.zip', 'depot_tools.zip')" || goto :error
|
|
powershell -Command "Expand-Archive -Force 'depot_tools.zip' 'depot_tools'" || goto :error
|
|
rem Run gclient once to install deps
|
|
set PATH=%TEMP_DIR%\depot_tools;%PATH%
|
|
set DEPOT_TOOLS_UPDATE=1
|
|
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
|
|
call gclient || goto :error
|
|
@echo off
|
|
popd
|
|
|
|
call :status "Cloning to clean source directory"
|
|
@echo on
|
|
mkdir %SRC_DIR% || goto :error
|
|
cd /d %SRC_DIR% || goto :error
|
|
call git clone %ORIGINAL_SRC_DIR% . || goto :error
|
|
@echo off
|
|
|
|
call :status "Fetching dependencies"
|
|
@echo on
|
|
copy scripts\standalone.gclient .gclient || goto :error
|
|
call gclient sync || goto :error
|
|
@echo off
|
|
|
|
call :status "Configuring build system"
|
|
@echo on
|
|
mkdir %BUILD_DIR%
|
|
cd /d %BUILD_DIR%
|
|
set COMMON_CMAKE_FLAGS=-DTINT_BUILD_DOCS=O -DTINT_BUILD_BENCHMARKS=1 -DCMAKE_BUILD_TYPE=%BUILD_TYPE% -DTINT_BUILD_BENCHMARKS=1 -DTINT_BUILD_SPV_READER=1 -DTINT_BUILD_WGSL_READER=1 -DTINT_BUILD_GLSL_WRITER=1 -DTINT_BUILD_HLSL_WRITER=1 -DTINT_BUILD_MSL_WRITER=1 -DTINT_BUILD_SPV_WRITER=1 -DTINT_BUILD_WGSL_WRITER=1
|
|
@echo off
|
|
|
|
call :status "Building dawn"
|
|
@echo on
|
|
rem Disable msbuild "Intermediate or Output directory cannot reside in Temporary directory"
|
|
set IgnoreWarnIntDirInTempDetected=true
|
|
rem Add Python3 to path as this Kokoro image only has Python2 in it
|
|
set PATH=C:\Python37;%PATH%
|
|
rem To use ninja with CMake requires VC env vars
|
|
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
|
|
@echo on
|
|
rem Note that we need to specify the C and C++ compiler only because Cygwin is in PATH and CMake finds GCC and picks that over MSVC
|
|
cmake %SRC_DIR% -G "Ninja" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_COMPILER="cl.exe" %COMMON_CMAKE_FLAGS% || goto :error
|
|
cmake --build . || goto :error
|
|
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" /clean_env
|
|
@echo off
|
|
|
|
call :status "Running tint_unittests"
|
|
@echo on
|
|
tint_unittests.exe || goto :error
|
|
@echo off
|
|
|
|
call :status "Testing test/tint/test-all.sh"
|
|
@echo on
|
|
cd /d %SRC_DIR% || goto :error
|
|
rem Run tests with DXC and Metal validation
|
|
set OLD_PATH=%PATH%
|
|
set PATH=C:\Program Files\Metal Developer Tools\macos\bin;%PATH%
|
|
where metal.exe
|
|
set PATH=%DXC_PATH%;%OLD_PATH%
|
|
where dxc.exe dxil.dll
|
|
call git bash -- ./test/tint/test-all.sh ../dawn-build/tint.exe --verbose || goto :error
|
|
@echo on
|
|
set PATH=%OLD_PATH%
|
|
rem Run again to test with FXC validation
|
|
set PATH=%D3DCOMPILER_PATH%;%OLD_PATH%
|
|
where d3dcompiler_47.dll
|
|
call git bash -- ./test/tint/test-all.sh ../dawn-build/tint.exe --verbose --format hlsl --fxc || goto :error
|
|
@echo on
|
|
set PATH=%OLD_PATH%
|
|
@echo off
|
|
|
|
call :status "Done"
|
|
exit /b 0
|
|
|
|
:error
|
|
echo BUILD FAILED! errorlevel: %errorlevel%
|
|
exit /b %errorlevel%
|