forked from enigma-dev/enigma-dev
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.travis.yml
199 lines (185 loc) · 6.97 KB
/
.travis.yml
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
# competition for Thundercleese
notifications:
irc: "chat.freenode.net#enigma"
# disable the depth option for git allowing us to merge multiple prs simultaneously
git:
depth: false
# don't build "feature" branches
branches:
only:
- "master"
before_install:
- |
# install general dependencies used by more than one job
set -eo pipefail
if [ "$TRAVIS_OS_NAME" == "linux" ]; then
sudo add-apt-repository -y ppa:maarten-fonville/protobuf;
sudo add-apt-repository -y ppa:mhier/libboost-latest;
sudo apt-get update --option Acquire::Retries=100 --option Acquire::http::Timeout="60";
sudo apt-get -y install build-essential zlib1g-dev libboost1.67-dev \
libprotobuf-dev protobuf-compiler libglm-dev;
if [ "$COMPILER" == "gcc32" ] || [ "$COMPILER" == "clang32" ]; then
sudo dpkg --add-architecture i386;
sudo apt-get -y install libc6:i386 libc++-dev:i386 libstdc++6:i386\
libncurses5:i386 lib32z1-dev libx11-6:i386 libglew-dev:i386\
libglu1-mesa-dev:i386 libgl1-mesa-dev:i386 libxrandr-dev:i386;
if [ "$COMPILER" == "gcc32" ]; then
sudo apt-get -y install gcc-multilib g++-multilib;
fi
sudo ln -s /usr/include/x86_64-linux-gnu/zconf.h /usr/include;
elif [ "$COMPILER" == "MinGW64" ] || [ "$COMPILER" == "MinGW32" ]; then
sudo apt-get -y install mingw-w64 wine;
curl -L https://github.com/enigma-dev/enigma-dev/files/2431000/enigma-libs.zip > enigma-libs.zip;
unzip enigma-libs.zip -d ENIGMAsystem/;
mv ENIGMAsystem/Install ENIGMAsystem/Additional;
else
sudo apt-get -y install libc++-dev libglew-dev libglu1-mesa-dev libxrandr-dev;
fi
if [ "$AUDIO" == "OpenAL" ]; then
sudo apt-get -y install libalure-dev libvorbisfile3 libvorbis-dev libdumb1-dev;
elif [ "$AUDIO" == "SFML" ]; then
sudo apt-get -y install libsfml-dev;
fi
if [ "$TEST_HARNESS" == true ]; then
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test;
sudo apt-get update --option Acquire::Retries=100 --option Acquire::http::Timeout="60";
sudo apt-get -y install cmake libgtest-dev xvfb wmctrl xdotool xfwm4 lcov gcc-7\
g++-7 cpp-7 pulseaudio libpugixml-dev libyaml-cpp-dev;
# download rapidjson manually because ubuntu is ancient
wget -O rapidjson-master.zip https://github.com/Tencent/rapidjson/archive/master.zip;
unzip rapidjson-master.zip;
sudo cp -a rapidjson-master/include/. /usr/include/;
sudo update-alternatives --remove-all cpp;
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 \
15 \
--slave /usr/bin/g++ g++ /usr/bin/g++-7 \
--slave /usr/bin/gcov gcov /usr/bin/gcov-7 \
--slave /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-dump-7 \
--slave /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-tool-7 \
--slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-7 \
--slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-7 \
--slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-7;
pushd /usr/src/gtest;
sudo cmake CMakeLists.txt;
sudo make;
sudo cp *.a /usr/lib
popd
fi
elif [ "$TRAVIS_OS_NAME" == "osx" ]; then
brew upgrade gcc || brew install gcc || brew link --overwrite gcc;
brew install glew protobuf pugixml;
fi
# build JDI and the CLI
install:
- |
if [ "$TEST_HARNESS" != true ]; then
make -j4
CLI_ENABLE_EGM=FALSE make -j4 emake
fi
# by default most of our jobs will be run on a linux instance
os: linux
group: travis_latest
compiler: gcc
language: cpp
env:
global:
- OUTPUT=/tmp/test
# this is the default config each job in the matrix overrides a subset of
- COMPILER=gcc PLATFORM=xlib MODE=Debug GRAPHICS=OpenGL1 AUDIO=None COLLISION=None NETWORK=None WIDGETS=None EXTENSIONS="None"
matrix:
# The big ol' None test.
- COMPILER=gcc PLATFORM=None MODE=Debug GRAPHICS=None AUDIO=None COLLISION=None NETWORK=None WIDGETS=None EXTENSIONS="None"
# Cross Compile
- COMPILER=MinGW32 PLATFORM=Win32 MODE=Run GRAPHICS=OpenGL1
- COMPILER=MinGW64 PLATFORM=Win32 MODE=Run GRAPHICS=OpenGL1
# Test Harness
- TEST_HARNESS=true AUDIO=OpenAL
# Game Modes
- MODE=Run
- MODE=Debug
- MODE=Compile
# Compilers
- COMPILER=gcc32
- COMPILER=clang
- COMPILER=clang32
# Graphics
- GRAPHICS=OpenGL3
# Audio
- AUDIO=OpenAL
- AUDIO=SFML
# Collision
- COLLISION=BBox NETWORK=None
- COLLISION=Precise NETWORK=None
# Networking
- NETWORK=Asynchronous
- NETWORK=BerkeleySockets
# Extensions
- EXTENSIONS="Alarms"
- EXTENSIONS="DataStructures,Asynchronous"
- EXTENSIONS="BasicGUI"
- EXTENSIONS="DataStructures"
- EXTENSIONS="DateTime"
- EXTENSIONS="GM5Compat"
- EXTENSIONS="IniFilesystem"
- EXTENSIONS="DataStructures,Json"
- EXTENSIONS="XRandR"
- COLLISION=BBox EXTENSIONS="Paths"
- COLLISION=BBox EXTENSIONS="Paths,MotionPlanning"
- COLLISION=Precise EXTENSIONS="Paths,MotionPlanning"
- GRAPHICS=OpenGL1 EXTENSIONS="ParticleSystems"
- GRAPHICS=OpenGL3 EXTENSIONS="ParticleSystems"
- EXTENSIONS="Timelines"
matrix:
include:
# SDL
- env: PLATFORM=SDL
before_script: sudo apt-get -y install libsdl2-dev libegl1-mesa-dev libgles2-mesa-dev
# Widgets
- env: WIDGETS=GTK+
before_script: sudo apt-get -y install libgtk2.0-dev
- env: WIDGETS=Zenity
before_script: sudo apt-get -y install zenity
- env: WIDGETS=KDialog
before_script: sudo apt-get -y install kdebase-bin
# GME (Note: requires an Audio system)
- env: AUDIO=OpenAL EXTENSIONS="GME"
before_script: sudo apt-get -y install libgme-dev
- env: AUDIO=SFML EXTENSIONS="GME"
before_script: sudo apt-get -y install libgme-dev
# Box2D
- env: EXTENSIONS="Box2DPhysics"
before_script: sudo apt-get -y install libbox2d-dev
- env: EXTENSIONS="StudioPhysics"
before_script: sudo apt-get -y install libbox2d-dev
# Bullet Physics
- env: EXTENSIONS="BulletDynamics"
before_script: sudo apt-get -y install libbullet-dev
#FreeType
- env: EXTENSIONS="ttf"
before_script: sudo apt-get -y install libfreetype6-dev
# OSX
- { os: osx, osx_image: xcode9.2,
env: COMPILER=clang PLATFORM=None }
- { os: osx, osx_image: xcode9.2,
env: COMPILER=gcc PLATFORM=None }
# don't wait for OSX
fast_finish: true
allow_failures:
- os: osx
before_script:
- |
if [ "$TEST_HARNESS" == true ]; then
# Start xvfb before the script phase
export DISPLAY=:1
Xvfb :1 -screen 0 1024x768x24 &
xfwm4 &
sleep 3
fi
script:
- |
if [ "$TEST_HARNESS" == true ]; then
export ASAN_OPTIONS=detect_leaks=0;
./ci-regression.sh "/tmp/enigma-master" 4 || travis_terminate $?
else
./ci-build.sh
fi