]>
Commit | Line | Data |
---|---|---|
d151cd28 TB |
1 | #!/bin/sh |
2 | # Build script for Travis CI | |
3 | ||
4 | if test -z $TRAVIS_BUILD_DIR; then | |
5 | TRAVIS_BUILD_DIR=$PWD | |
6 | fi | |
7 | ||
8 | cd $TRAVIS_BUILD_DIR | |
9 | ||
10 | TARGET=check | |
11 | ||
60a0bb67 TB |
12 | DEPS="libgmp-dev" |
13 | ||
95e67e8d MW |
14 | CFLAGS="-g -O2 -Wall -Wno-format -Wno-format-security -Wno-pointer-sign -Werror" |
15 | ||
d151cd28 TB |
16 | case "$TEST" in |
17 | default) | |
316aa4b4 TB |
18 | # should be the default, but lets make sure |
19 | CONFIG="--with-printf-hooks=glibc" | |
d151cd28 TB |
20 | ;; |
21 | openssl) | |
3986c1e3 | 22 | CONFIG="--disable-defaults --enable-pki --enable-openssl" |
60a0bb67 | 23 | DEPS="libssl-dev" |
d151cd28 TB |
24 | ;; |
25 | gcrypt) | |
3986c1e3 | 26 | CONFIG="--disable-defaults --enable-pki --enable-gcrypt --enable-pkcs1" |
60a0bb67 | 27 | DEPS="libgcrypt11-dev" |
d151cd28 | 28 | ;; |
316aa4b4 TB |
29 | printf-builtin) |
30 | CONFIG="--with-printf-hooks=builtin" | |
31 | ;; | |
42f7c989 | 32 | all|coverage) |
d151cd28 TB |
33 | CONFIG="--enable-all --disable-android-dns --disable-android-log |
34 | --disable-dumm --disable-kernel-pfroute --disable-keychain | |
157742be | 35 | --disable-lock-profiler --disable-padlock --disable-fuzzing |
e4fd163a | 36 | --disable-osx-attr --disable-tkm --disable-uci |
83f0c22a | 37 | --disable-systemd --disable-soup --disable-unwind-backtraces |
4732e29a | 38 | --disable-svc --disable-dbghelp-backtraces --disable-socket-win |
c572401b | 39 | --disable-kernel-wfp --disable-kernel-iph --disable-winhttp" |
44280a19 | 40 | # Ubuntu 14.04 does provide a too old libtss2-dev |
93700d93 | 41 | CONFIG="$CONFIG --disable-tss-tss2" |
d8eb1049 TB |
42 | # Ubuntu 14.04 does not provide libnm |
43 | CONFIG="$CONFIG --disable-nm" | |
d151cd28 TB |
44 | # not enabled on the build server |
45 | CONFIG="$CONFIG --disable-af-alg" | |
42f7c989 TB |
46 | if test "$TEST" != "coverage"; then |
47 | CONFIG="$CONFIG --disable-coverage" | |
48 | else | |
49 | # not actually required but configure checks for it | |
50 | DEPS="$DEPS lcov" | |
51 | fi | |
60a0bb67 TB |
52 | DEPS="$DEPS libcurl4-gnutls-dev libsoup2.4-dev libunbound-dev libldns-dev |
53 | libmysqlclient-dev libsqlite3-dev clearsilver-dev libfcgi-dev | |
d8eb1049 TB |
54 | libpcsclite-dev libpam0g-dev binutils-dev libunwind8-dev |
55 | libjson0-dev iptables-dev python-pip libtspi-dev" | |
75a84579 | 56 | PYDEPS="pytest" |
d151cd28 | 57 | ;; |
fd372e13 MW |
58 | win*) |
59 | CONFIG="--disable-defaults --enable-svc --enable-ikev2 | |
d930d184 MW |
60 | --enable-ikev1 --enable-static --enable-test-vectors --enable-nonce |
61 | --enable-constraints --enable-revocation --enable-pem --enable-pkcs1 | |
62 | --enable-pkcs8 --enable-x509 --enable-pubkey --enable-acert | |
63 | --enable-eap-tnc --enable-eap-ttls --enable-eap-identity | |
1da56773 | 64 | --enable-updown --enable-ext-auth --enable-libipsec |
d930d184 MW |
65 | --enable-tnccs-20 --enable-imc-attestation --enable-imv-attestation |
66 | --enable-imc-os --enable-imv-os --enable-tnc-imv --enable-tnc-imc | |
9b7a2188 | 67 | --enable-pki --enable-swanctl --enable-socket-win" |
6eb7dd11 TB |
68 | # no make check for Windows binaries unless we run on a windows host |
69 | if test "$APPVEYOR" != "True"; then | |
70 | TARGET= | |
09662628 TB |
71 | else |
72 | CONFIG="$CONFIG --enable-openssl" | |
73 | CFLAGS="$CFLAGS -I/c/OpenSSL-$TEST/include" | |
74 | LDFLAGS="-L/c/OpenSSL-$TEST" | |
75 | export LDFLAGS | |
6eb7dd11 | 76 | fi |
d930d184 | 77 | CFLAGS="$CFLAGS -mno-ms-bitfields" |
94a69986 | 78 | DEPS="gcc-mingw-w64-base" |
fd372e13 MW |
79 | case "$TEST" in |
80 | win64) | |
23c05d86 TB |
81 | # headers on 12.04 are too old, so we only build the plugins here |
82 | CONFIG="--host=x86_64-w64-mingw32 $CONFIG --enable-dbghelp-backtraces | |
83 | --enable-kernel-iph --enable-kernel-wfp --enable-winhttp" | |
94a69986 | 84 | DEPS="gcc-mingw-w64-x86-64 binutils-mingw-w64-x86-64 mingw-w64-x86-64-dev $DEPS" |
fd372e13 | 85 | CC="x86_64-w64-mingw32-gcc" |
23c05d86 | 86 | # apply patch to MinGW headers |
6eb7dd11 | 87 | if test "$APPVEYOR" != "True" -a -z "$1"; then |
23c05d86 TB |
88 | sudo patch -f -p 4 -d /usr/share/mingw-w64/include < src/libcharon/plugins/kernel_wfp/mingw-w64-4.8.1.diff |
89 | fi | |
fd372e13 MW |
90 | ;; |
91 | win32) | |
92 | CONFIG="--host=i686-w64-mingw32 $CONFIG" | |
39d544d5 TB |
93 | # currently only works on 12.04, so use mingw-w64-dev instead of mingw-w64-i686-dev |
94 | DEPS="gcc-mingw-w64-i686 binutils-mingw-w64-i686 mingw-w64-dev $DEPS" | |
fd372e13 MW |
95 | CC="i686-w64-mingw32-gcc" |
96 | ;; | |
97 | esac | |
d930d184 | 98 | ;; |
e36b1e2e | 99 | osx) |
fd9edf7f TB |
100 | # this causes a false positive in ip-packet.c since Xcode 8.3 |
101 | CFLAGS="$CFLAGS -Wno-address-of-packed-member" | |
e36b1e2e TB |
102 | # use the same options as in the Homebrew Formula |
103 | CONFIG="--disable-defaults --enable-charon --enable-cmd --enable-constraints | |
104 | --enable-curl --enable-eap-gtc --enable-eap-identity | |
105 | --enable-eap-md5 --enable-eap-mschapv2 --enable-ikev1 --enable-ikev2 | |
106 | --enable-kernel-libipsec --enable-kernel-pfkey | |
107 | --enable-kernel-pfroute --enable-nonce --enable-openssl | |
108 | --enable-osx-attr --enable-pem --enable-pgp --enable-pkcs1 | |
109 | --enable-pkcs8 --enable-pki --enable-pubkey --enable-revocation | |
110 | --enable-scepclient --enable-socket-default --enable-sshkey | |
111 | --enable-stroke --enable-swanctl --enable-unity --enable-updown | |
112 | --enable-x509 --enable-xauth-generic" | |
113 | DEPS="bison gettext openssl curl" | |
114 | BREW_PREFIX=$(brew --prefix) | |
115 | export PATH=$BREW_PREFIX/opt/bison/bin:$PATH | |
116 | export ACLOCAL_PATH=$BREW_PREFIX/opt/gettext/share/aclocal:$ACLOCAL_PATH | |
117 | for pkg in openssl curl | |
118 | do | |
8486b3b4 | 119 | PKG_CONFIG_PATH=$BREW_PREFIX/opt/$pkg/lib/pkgconfig:$PKG_CONFIG_PATH |
e36b1e2e TB |
120 | CPPFLAGS="-I$BREW_PREFIX/opt/$pkg/include $CPPFLAGS" |
121 | LDFLAGS="-L$BREW_PREFIX/opt/$pkg/lib $LDFLAGS" | |
122 | done | |
123 | export PKG_CONFIG_PATH | |
124 | export CPPFLAGS | |
125 | export LDFLAGS | |
126 | ;; | |
1ce2721d TB |
127 | fuzzing) |
128 | CFLAGS="$CFLAGS -DNO_CHECK_MEMWIPE" | |
508b3087 | 129 | CONFIG="--enable-fuzzing --enable-static --disable-shared --disable-scripts |
75181f48 | 130 | --enable-imc-test --enable-tnccs-20" |
1ce2721d TB |
131 | # don't run any of the unit tests |
132 | export TESTS_RUNNERS= | |
133 | # prepare corpora | |
134 | if test -z "$1"; then | |
135 | if test -z "$FUZZING_CORPORA"; then | |
136 | git clone --depth 1 https://github.com/strongswan/fuzzing-corpora.git fuzzing-corpora | |
137 | export FUZZING_CORPORA=$TRAVIS_BUILD_DIR/fuzzing-corpora | |
138 | fi | |
7421884d TB |
139 | # these are about the same as those on OSS-Fuzz (except for the |
140 | # symbolize options and strip_path_prefix) | |
141 | export ASAN_OPTIONS=redzone=16:handle_sigill=1:strict_string_check=1:\ | |
142 | allocator_release_to_os_interval_ms=500:strict_memcmp=1:detect_container_overflow=1:\ | |
143 | coverage=0:allocator_may_return_null=1:use_sigaltstack=1:detect_stack_use_after_return=1:\ | |
144 | alloc_dealloc_mismatch=0:detect_leaks=1:print_scariness=1:max_uar_stack_size_log=16:\ | |
145 | handle_abort=1:check_malloc_usable_size=0:quarantine_size_mb=10:detect_odr_violation=0:\ | |
146 | symbolize=1:handle_segv=1:fast_unwind_on_fatal=0:external_symbolizer_path=/usr/bin/llvm-symbolizer-3.5 | |
1ce2721d TB |
147 | fi |
148 | ;; | |
d151cd28 TB |
149 | dist) |
150 | TARGET=distcheck | |
151 | ;; | |
4e8f5a18 TB |
152 | apidoc) |
153 | DEPS="doxygen" | |
154 | CONFIG="--disable-defaults" | |
155 | TARGET=apidoc | |
156 | ;; | |
d151cd28 TB |
157 | *) |
158 | echo "$0: unknown test $TEST" >&2 | |
159 | exit 1 | |
160 | ;; | |
161 | esac | |
162 | ||
60a0bb67 | 163 | if test "$1" = "deps"; then |
e36b1e2e TB |
164 | case "$TRAVIS_OS_NAME" in |
165 | linux) | |
166 | sudo apt-get update -qq && \ | |
167 | sudo apt-get install -qq bison flex gperf gettext $DEPS | |
168 | ;; | |
169 | osx) | |
170 | brew update && \ | |
1806ba08 TB |
171 | # workaround for issue #6352 |
172 | brew uninstall --force libtool && brew install libtool && \ | |
e36b1e2e TB |
173 | brew install $DEPS |
174 | ;; | |
175 | esac | |
60a0bb67 TB |
176 | exit $? |
177 | fi | |
178 | ||
75a84579 MW |
179 | if test "$1" = "pydeps"; then |
180 | test -z "$PYDEPS" || sudo pip -q install $PYDEPS | |
181 | exit $? | |
182 | fi | |
183 | ||
d151cd28 | 184 | CONFIG="$CONFIG |
e36b1e2e | 185 | --disable-dependency-tracking |
d151cd28 TB |
186 | --enable-silent-rules |
187 | --enable-test-vectors | |
188 | --enable-monolithic=${MONOLITHIC-no} | |
189 | --enable-leak-detective=${LEAK_DETECTIVE-no}" | |
190 | ||
e36b1e2e TB |
191 | echo "$ ./autogen.sh" |
192 | ./autogen.sh || exit $? | |
4e8f5a18 TB |
193 | echo "$ CC=$CC CFLAGS=\"$CFLAGS\" ./configure $CONFIG" |
194 | CC="$CC" CFLAGS="$CFLAGS" ./configure $CONFIG || exit $? | |
195 | ||
196 | case "$TEST" in | |
197 | apidoc) | |
198 | exec 2>make.warnings | |
199 | ;; | |
200 | *) | |
201 | ;; | |
202 | esac | |
203 | ||
204 | echo "$ make $TARGET" | |
003fec52 | 205 | make -j4 $TARGET || exit $? |
4e8f5a18 TB |
206 | |
207 | case "$TEST" in | |
208 | apidoc) | |
209 | if test -s make.warnings; then | |
210 | cat make.warnings | |
211 | exit 1 | |
212 | fi | |
213 | ;; | |
214 | *) | |
215 | ;; | |
216 | esac |