1:: Copyright (c) 2018 Google LLC. 2:: 3:: Licensed under the Apache License, Version 2.0 (the "License"); 4:: you may not use this file except in compliance with the License. 5:: You may obtain a copy of the License at 6:: 7:: http://www.apache.org/licenses/LICENSE-2.0 8:: 9:: Unless required by applicable law or agreed to in writing, software 10:: distributed under the License is distributed on an "AS IS" BASIS, 11:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12:: See the License for the specific language governing permissions and 13:: limitations under the License. 14:: 15:: Windows Build Script. 16 17@echo on 18 19set BUILD_ROOT=%cd% 20set SRC=%cd%\github\SPIRV-Tools 21set BUILD_TYPE=%1 22set VS_VERSION=%2 23 24:: Force usage of python 3.6 25set PATH=C:\python36;"C:\Program Files\cmake-3.23.1-windows-x86_64\bin";%PATH% 26 27cd %SRC% 28git clone --depth=1 https://github.com/KhronosGroup/SPIRV-Headers external/spirv-headers 29git clone https://github.com/google/googletest external/googletest 30cd external && cd googletest && git reset --hard 1fb1bb23bb8418dc73a5a9a82bbed31dc610fec7 && cd .. && cd .. 31git clone --depth=1 https://github.com/google/effcee external/effcee 32git clone --depth=1 https://github.com/google/re2 external/re2 33git clone --depth=1 --branch v3.13.0.1 https://github.com/protocolbuffers/protobuf external/protobuf 34 35:: ######################################### 36:: set up msvc build env 37:: ######################################### 38if %VS_VERSION% == 2017 ( 39 call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 40 echo "Using VS 2017..." 41) else if %VS_VERSION% == 2015 ( 42 call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 43 echo "Using VS 2015..." 44) 45 46cd %SRC% 47mkdir build 48cd build 49 50:: ######################################### 51:: Start building. 52:: ######################################### 53echo "Starting build... %DATE% %TIME%" 54if "%KOKORO_GITHUB_COMMIT%." == "." ( 55 set BUILD_SHA=%KOKORO_GITHUB_PULL_REQUEST_COMMIT% 56) else ( 57 set BUILD_SHA=%KOKORO_GITHUB_COMMIT% 58) 59 60set CMAKE_FLAGS=-DCMAKE_INSTALL_PREFIX=%KOKORO_ARTIFACTS_DIR%\install -GNinja -DCMAKE_BUILD_TYPE=%BUILD_TYPE% -DRE2_BUILD_TESTING=OFF -DCMAKE_C_COMPILER=cl.exe -DCMAKE_CXX_COMPILER=cl.exe 61 62:: Build spirv-fuzz 63set CMAKE_FLAGS=%CMAKE_FLAGS% -DSPIRV_BUILD_FUZZER=ON 64 65cmake %CMAKE_FLAGS% .. 66 67if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL% 68 69echo "Build everything... %DATE% %TIME%" 70ninja 71if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL% 72echo "Build Completed %DATE% %TIME%" 73 74:: This lets us use !ERRORLEVEL! inside an IF ... () and get the actual error at that point. 75setlocal ENABLEDELAYEDEXPANSION 76 77:: ################################################ 78:: Run the tests 79:: ################################################ 80echo "Running Tests... %DATE% %TIME%" 81ctest -C %BUILD_TYPE% --output-on-failure --timeout 300 82if !ERRORLEVEL! NEQ 0 exit /b !ERRORLEVEL! 83echo "Tests Completed %DATE% %TIME%" 84 85:: ################################################ 86:: Install and package. 87:: ################################################ 88ninja install 89cd %KOKORO_ARTIFACTS_DIR% 90zip -r install.zip install 91 92:: Clean up some directories. 93rm -rf %SRC%\build 94rm -rf %SRC%\external 95 96exit /b 0 97