/
azure-pipelines.yaml
152 lines (150 loc) · 6.18 KB
/
azure-pipelines.yaml
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# trigger:
# branches:
# include: ['master']
# tags:
# include: ['*']
trigger:
- master
variables:
SBCL_VERSION: sbcl-1.5.5
SBCL_OPTIONS: "--with-sb-thread"
jobs:
- job: 'CrossCompile'
strategy:
matrix:
mac:
target: 'x86_64-apple-darwin'
imageName: 'macos-10.13'
win:
target: 'x86_64-windows-10'
imageName: 'vs2017-win2016'
pool:
vmImage: $(imageName)
steps:
- script: |
curl -L https://sourceforge.net/projects/sbcl/files/sbcl/1.2.11/sbcl-1.2.11-x86-64-darwin-binary.tar.bz2/download?use_mirror=astuteinternet > darwin.tar.bz2
bzip2 -cd darwin.tar.bz2 | tar xvf -
cd sbcl-1.2.11-x86-64-darwin
sh install.sh
displayName: Mac Install SBCL
condition: eq( variables['Agent.OS'], 'Darwin' )
- script: |
curl -L https://sourceforge.net/projects/sbcl/files/sbcl/1.4.14/sbcl-1.4.14-x86-64-windows-binary.msi/download?use_mirror=pilotfiber > windows.msi
msiexec.exe /qn /i windows.msi
@echo ##vso[task.prependpath]C:\Program Files\sbcl\bin\
@echo ##vso[task.setvariable variable=sbcl_home]C:\Program Files\sbcl\lib\sbcl
displayName: Windows Install SBCL
condition: eq( variables['Agent.OS'], 'Windows_NT' )
- script: |
cd $HOME
git clone https://github.com/sbcl/sbcl
cd sbcl
git checkout $(SBCL_VERSION)
sh make.sh --prefix=$SBCL_HOME $(SBCL_OPTIONS)
sudo sh install.sh
displayName: Build Special SBCL
condition: ne( variables['Agent.OS'], 'Windows_NT' )
- bash: |
git clone https://github.com/sbcl/sbcl
cd sbcl
git checkout $(SBCL_VERSION)
export PATH="/c/Program Files/Steel Bank Common Lisp/1.4.14:$PATH"
export SBCL_HOME="/c/Program Files/Steel Bank Common Lisp/1.4.14"
sh make.sh $(SBCL_OPTIONS)
export SBCL_HOME=""
sh install.sh
displayName: Windows Build Special SBCL
condition: eq( variables['Agent.OS'], 'Windows_NT' )
- bash: |
cd $HOME
curl -O http://beta.quicklisp.org/quicklisp.lisp
sbcl --load quicklisp.lisp --eval '(quicklisp-quickstart:install)' --eval '(ql-util:without-prompting (quicklisp:add-to-init-file))' --eval '(quit)'
displayName: Install Quicklisp
- bash: |
mkdir -p $HOME/quicklisp/local-projects/
ln -s '$(Build.SourcesDirectory)' $HOME/quicklisp/local-projects/cl-sample-game
displayName: Non-Windows Link Local Project
condition: ne( variables['Agent.OS'], 'Windows_NT' )
- bash: |
echo "make folder"
mkdir -p "$HOME/quicklisp/local-projects/"
echo "do linking"
export WIN_HOME=`echo $HOME | sed -r 's#^/c#C:#g'`
cmd <<< "mklink /D \"${WIN_HOME//\//\\}\\quicklisp\\local-projects\cl-sample-game\" \"$(Build.SourcesDirectory)\""
displayName: Windows Link Local Project
condition: eq( variables['Agent.OS'], 'Windows_NT' )
- script: |
export DYLD_LIBRARY_PATH="./"
sbcl --load build-game.lisp
displayName: Build Game
- task: CopyFiles@2
displayName: Copy assets
inputs:
sourceFolder: '$(Build.SourcesDirectory)'
contents: |
sample-game-osx
libSDL2.dylib
sample-game-windows.exe
SDL2.dll
targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
displayName: 'Publish Game Artifact'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
- job: 'CrossCompileLinux'
strategy:
matrix:
linux:
target: 'x86_64-unknown-linux-gnu'
imageName: 'ubuntu-16.04'
containerImage: ubuntu:18.04
containerOptions: "--name ci-container -v /usr/bin/docker:/tmp/docker:ro"
pool:
vmImage: $(imageName)
container:
image: $(containerImage)
options: $(containerOptions)
steps:
- script: |
/tmp/docker exec -t -u 0 ci-container \
sh -c "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::="--force-confold" -y install sudo"
displayName: "Set up sudo"
condition: eq( variables['Agent.OS'], 'Linux' )
- script: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends gnupg ca-certificates && sudo echo "deb http://ppa.launchpad.net/darabi/lisp/ubuntu bionic main" > /etc/apt/sources.list.d/darabi-lisp.list && apt-key add /tmp/launchpad-ppa-gpg.key
sudo apt-get install -y --no-install-recommends sbcl curl git libglx0 libopengl0 libgl1-mesa-dev build-essential
displayName: Linux Install Software
condition: eq( variables['Agent.OS'], 'Linux' )
- script: |
cd $HOME
git clone https://github.com/sbcl/sbcl
cd sbcl
git checkout $(SBCL_VERSION)
sh make.sh --prefix=$SBCL_HOME $(SBCL_OPTIONS)
sudo sh install.sh
displayName: Build Special SBCL
- bash: |
cd $HOME
curl -O http://beta.quicklisp.org/quicklisp.lisp
sbcl --load quicklisp.lisp --eval '(quicklisp-quickstart:install)' --eval '(ql-util:without-prompting (quicklisp:add-to-init-file))' --eval '(quit)'
displayName: Install Quicklisp
- script: |
mkdir -p $HOME/quicklisp/local-projects/
ln -s '$(Build.SourcesDirectory)' $HOME/quicklisp/local-projects/cl-sample-game
echo "-- sdl ld path --"
ldd libSDL2-2.0.so.0
LD_LIBRARY_PATH="./" sbcl --load build-game.lisp
displayName: Build Game
- task: CopyFiles@2
displayName: Copy assets
inputs:
sourceFolder: '$(Build.SourcesDirectory)'
contents: |
sample-game-linux
libSDL2-2.0.so.0
targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
displayName: 'Publish Game Artifact'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'