1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
# Our solution file is currently set up for VS2015
image: Visual Studio 2015
init:
# Construct a version number suitable for using as a release name
- ps: >-
if ($env:APPVEYOR_REPO_TAG -eq "true")
{
$env:SLANG_VERSION = "$($env:APPVEYOR_REPO_TAG_NAME.TrimStart("v"))"
}
else
{
$env:SLANG_VERSION = "dev-$($env:APPVEYOR_REPO_COMMIT.Substring(0, 7))"
}
# The project uses a submodule for the "glslang" dependency,
# so we need to make sure to pull that before building.
install:
- git submodule update --init --recursive
- ps: git describe --tags | %{$_ -replace "^", "#define SLANG_TAG_VERSION """ -replace "$", """"} > slang-tag-version.h
# We want to build the full matrix of platforms and configurations
# that we support on Windows.
#
# Put Release|x64 first since that is the target which runs the most tests.
platform:
- x64
- Win32
configuration:
- Release
- Debug
# In the interests of time, go ahead and immediately fail a build
# if any job fails, rather than keep on building to discover the
# full set of failures.
matrix:
fast_finish: true
# MSBUILD should ideally be able to find our solution file
# automatically, but it seems to get confused, so we specify
# the file name to use here.
build:
project: slang.sln
parallel: true
verbosity: minimal
# Testing
# We only run tests on the Release build for now, just to speed
# up the build process.
#
# TODO: We should really define different levels of tests, and
# at least run some "smoke" tests across all builds.
test_script:
- ps: |
if ($env:CONFIGURATION -eq "Debug")
{
$testCategory = "smoke"
}
elseif($env:PLATFORM -eq "x64")
{
$testCategory = "full"
}
else
{
$testCategory = "quick"
}
.\test.bat -platform %PLATFORM% -configuration %CONFIGURATION% -appveyor -category $testCategory
# Package up the stuff we want to deploy into a single .zip file
after_build:
- ps: |
if ($env:PLATFORM -eq "x64")
{
$env:SLANG_DEPLOY_PLATFORM = "win64"
}
else
{
$env:SLANG_DEPLOY_PLATFORM = "win32"
}
$env:SLANG_BINARY_ARCHIVE = "slang-$($env:SLANG_VERSION)-$($env:SLANG_DEPLOY_PLATFORM).zip"
7z a "$env:SLANG_BINARY_ARCHIVE" slang.h
7z a "$env:SLANG_BINARY_ARCHIVE" slang-com-helper.h
7z a "$env:SLANG_BINARY_ARCHIVE" slang-com-ptr.h
7z a "$env:SLANG_BINARY_ARCHIVE" slang-tag-version.h
7z a "$env:SLANG_BINARY_ARCHIVE" prelude\*.h
7z a "$env:SLANG_BINARY_ARCHIVE" bin\*\*\slang.dll
7z a "$env:SLANG_BINARY_ARCHIVE" bin\*\*\slang.lib
7z a "$env:SLANG_BINARY_ARCHIVE" bin\*\*\slang-glslang.dll
7z a "$env:SLANG_BINARY_ARCHIVE" bin\*\*\slangc.exe
7z a "$env:SLANG_BINARY_ARCHIVE" docs\*.md
$env:SLANG_SOURCE_ARCHIVE = "slang-$($env:SLANG_VERSION)-source.zip"
7z a "$env:SLANG_SOURCE_ARCHIVE" slang.h
7z a "$env:SLANG_SOURCE_ARCHIVE" slang-com-helper.h
7z a "$env:SLANG_SOURCE_ARCHIVE" slang-com-ptr.h
7z a "$env:SLANG_SOURCE_ARCHIVE" slang-tag-version.h
7z a "$env:SLANG_SOURCE_ARCHIVE" prelude\*.h
7z a "$env:SLANG_SOURCE_ARCHIVE" source\*\*.h
7z a "$env:SLANG_SOURCE_ARCHIVE" source\*\*.cpp
7z a "$env:SLANG_SOURCE_ARCHIVE" docs\*.md
7z a "$env:SLANG_SOURCE_ARCHIVE" README.md
7z a "$env:SLANG_SOURCE_ARCHIVE" LICENSE
# Register the created .zip file as an artifact with AppVeyor
artifacts:
- path: $(SLANG_BINARY_ARCHIVE)
name: binary_archive
- path: $(SLANG_SOURCE_ARCHIVE)
name: source_archive
# On a successful build of a tag, push archices to GitHub releases
deploy:
release: v$(SLANG_VERSION)
description: 'Slang $(SLANG_VERSION)'
provider: GitHub
auth_token:
secure: +FukP7TA9F+fofZRZnu2FSqPcrQ1u4r8r4pl+/83owiY6M1R4ykg+8RcSzXi2f63
artifact: 'binary_archive,source_archive'
draft: false
prerelease: false
force_update: false
on:
configuration: Release
appveyor_repo_tag: true # deploy on tag push only
|