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;%PATH% 26 27cd %SRC% 28git clone --depth=1 https://github.com/KhronosGroup/SPIRV-Headers external/spirv-headers 29git clone --depth=1 https://github.com/google/googletest external/googletest 30git clone --depth=1 https://github.com/google/effcee external/effcee 31git clone --depth=1 https://github.com/google/re2 external/re2 32git clone --depth=1 https://github.com/protocolbuffers/protobuf external/protobuf 33pushd external\protobuf 34git fetch --all --tags --prune 35git checkout v3.7.1 36popd 37 38:: ######################################### 39:: set up msvc build env 40:: ######################################### 41if %VS_VERSION% == 2017 ( 42 call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 43 echo "Using VS 2017..." 44) else if %VS_VERSION% == 2015 ( 45 call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 46 echo "Using VS 2015..." 47) else if %VS_VERSION% == 2013 ( 48 call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x64 49 echo "Using VS 2013..." 50) 51 52cd %SRC% 53mkdir build 54cd build 55 56:: ######################################### 57:: Start building. 58:: ######################################### 59echo "Starting build... %DATE% %TIME%" 60if "%KOKORO_GITHUB_COMMIT%." == "." ( 61 set BUILD_SHA=%KOKORO_GITHUB_PULL_REQUEST_COMMIT% 62) else ( 63 set BUILD_SHA=%KOKORO_GITHUB_COMMIT% 64) 65 66set 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 67 68:: Skip building tests for VS2013 69if %VS_VERSION% == 2013 ( 70 set CMAKE_FLAGS=%CMAKE_FLAGS% -DSPIRV_SKIP_TESTS=ON 71) 72 73:: Skip building spirv-fuzz for VS2013; it relies on protobufs which VS2013 cannot handle. 74if %VS_VERSION% NEQ 2013 ( 75 set CMAKE_FLAGS=%CMAKE_FLAGS% -DSPIRV_BUILD_FUZZER=ON 76) 77 78cmake %CMAKE_FLAGS% .. 79 80if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL% 81 82echo "Build everything... %DATE% %TIME%" 83ninja 84if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL% 85echo "Build Completed %DATE% %TIME%" 86 87:: This lets us use !ERRORLEVEL! inside an IF ... () and get the actual error at that point. 88setlocal ENABLEDELAYEDEXPANSION 89 90:: ################################################ 91:: Run the tests (We no longer run tests on VS2013) 92:: ################################################ 93echo "Running Tests... %DATE% %TIME%" 94if %VS_VERSION% NEQ 2013 ( 95 ctest -C %BUILD_TYPE% --output-on-failure --timeout 300 96 if !ERRORLEVEL! NEQ 0 exit /b !ERRORLEVEL! 97) 98echo "Tests Completed %DATE% %TIME%" 99 100:: ################################################ 101:: Install and package. 102:: ################################################ 103ninja install 104cd %KOKORO_ARTIFACTS_DIR% 105zip -r install.zip install 106 107:: Clean up some directories. 108rm -rf %SRC%\build 109rm -rf %SRC%\external 110 111exit /b 0 112 113