aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.appveyor.yml87
1 files changed, 83 insertions, 4 deletions
diff --git a/.appveyor.yml b/.appveyor.yml
index adcbf201..ba7aa999 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -2,9 +2,15 @@
# http://www.appveyor.com/docs/appveyor-yml
#
+# This version starts a separte job for each platform config
+# in order to get around the AppVeyor limit of 60 mins per job.
+
# build version format
version: "{build}"
+# Probably not useful for free accounts, but ask anyway.
+max_jobs: 4
+
os:
- Visual Studio 2015
@@ -21,9 +27,82 @@ branches:
only:
- master
-# This replaces "automatic building" that would be defined under build:
-build_script:
+before_build:
+# These steps are a replacement for
+# - update_external_sources.bat --all
+# Instead of using the above script to build glslang/spirv-tools
+# for all platform configs, build only the job's selected platform config.
+# Since the script doesn't support building a single platform config,
+# use parts of the script to build only the selected platform config.
+#
+# Also always build the x64 Release platform config in order to
+# get the shader compiler binary which is used to build the repo.
+#
+# For a 4 platform config setup:
+# All this results in 7 builds of glslang per commit, which isn't
+# as good as building 4 when building all 4 platform configs in
+# a single job, but is necessary when splitting the build into 4 jobs.
+# It is still better than 16 glslang builds.
+#
- "SET PATH=C:\\Python35;C:\\Python35\\Scripts;%PATH%"
- - update_external_sources.bat --all
- - build_windows_targets.bat
+ - setlocal EnableDelayedExpansion
+ # Set up some useful vars.
+ - set TOP_DIR="%APPVEYOR_BUILD_FOLDER%\"
+ - set EXT_DIR=%TOP_DIR%external
+ - set REVISION_DIR=%TOP_DIR%external_revisions
+ - set GLSLANG_DIR=%EXT_DIR%\glslang
+ - set /p GLSLANG_GITURL= < %REVISION_DIR%\glslang_giturl
+ - set /p GLSLANG_REVISION= < %REVISION_DIR%\glslang_revision
+ # Clone and checkout glslang.
+ - echo.
+ - echo Creating local glslang repository %GLSLANG_DIR%
+ - echo GLSLANG_GITURL=%GLSLANG_GITURL%
+ - echo GLSLANG_REVISION=%GLSLANG_REVISION%
+ - if not exist %GLSLANG_DIR% (mkdir %GLSLANG_DIR%)
+ - cd %GLSLANG_DIR%
+ # If this dir is not empty, then a build cache was restored. Update it by fetching any updates.
+ # If the dir is empty, clone the repo.
+ - dir /b /a | findstr . > nul && (git fetch --all) || (git clone %GLSLANG_GITURL% . )
+ - git checkout %GLSLANG_REVISION%
+ - python.exe .\update_glslang_sources.py
+ # Build glslang.
+ - echo.
+ - echo Building %GLSLANG_DIR%
+ # We always need the x64 Release version of the shader compiler for building the repo.
+ - cd %GLSLANG_DIR%
+ - if not exist build (mkdir build)
+ - cd build
+ - cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_INSTALL_PREFIX=install ..
+ - msbuild INSTALL.vcxproj /p:Platform=x64 /p:Configuration=Release /verbosity:quiet
+ # Build the x64 debug version if selected.
+ - if %PLATFORM% == x64 (if %CONFIGURATION% == Debug (msbuild INSTALL.vcxproj /p:Platform=x64 /p:Configuration=Debug /verbosity:quiet))
+ # Build 32-bit platform configs if selected.
+ - cd %GLSLANG_DIR%
+ - if not exist build32 (mkdir build32)
+ - cd build32
+ - if %PLATFORM% == Win32 (cmake -G "Visual Studio 14 2015" -DCMAKE_INSTALL_PREFIX=install ..)
+ - if %PLATFORM% == Win32 (msbuild INSTALL.vcxproj /p:Platform=x86 /p:Configuration=%CONFIGURATION% /verbosity:quiet)
+ # Generate build files using CMake for the build step.
+ - echo.
+ - echo Starting build for %APPVEYOR_REPO_NAME%
+ - if %PLATFORM% == Win32 (set GENERATOR="Visual Studio 14 2015")
+ - if %PLATFORM% == x64 (set GENERATOR="Visual Studio 14 2015 Win64")
+ - cd %TOP_DIR%
+ - mkdir build
+ - cd build
+ - echo Generating CMake files for %GENERATOR%
+ - cmake -G %GENERATOR% ..
+ - echo Building platform=%PLATFORM% configuration=%CONFIGURATION%
+
+platform:
+ - Win32
+ - x64
+
+configuration:
+ - Release
+ - Debug
+build:
+ parallel: true # enable MSBuild parallel builds
+ project: build/VULKAN.sln # path to Visual Studio solution or project
+ verbosity: quiet # quiet|minimal|normal|detailed