188 lines
5.1 KiB
Bash
188 lines
5.1 KiB
Bash
#!/bin/sh
|
|
# build script used by jenkins
|
|
|
|
set -ex
|
|
|
|
build="${1:-autobuild}" # build system: coverity, autobuild, cmake, scons, ...
|
|
label="$2" # label: {debian-{stable,testing},freebsd*}-{i386,amd64}
|
|
compiler="${3:-gcc}" # might want to overwrite a compiler
|
|
# build=coverity:
|
|
# - create "cov-int" directory for upload (gets `tar`d)
|
|
# - access coverity binaries with export PATH="${COVERITY_PATH}"
|
|
|
|
# enable --with-wolfssl by default, but allow it to be disabled,
|
|
# e.g. on Alpine Linux where wolfssl package is not built including
|
|
# features required by lighttpd (--with-opensslextra --enable-lighty)
|
|
${WITH_WOLFSSL:=true}
|
|
[ -n "$NO_WOLFSSL" ] && unset WITH_WOLFSSL
|
|
|
|
${WITH_DBI:=true}
|
|
[ -n "$NO_DBI" ] && unset WITH_DBI
|
|
|
|
${WITH_GNUTLS:=true}
|
|
[ -n "$NO_GNUTLS" ] && unset WITH_GNUTLS
|
|
|
|
${WITH_KRB5:=true}
|
|
[ -n "$NO_KRB5" ] && unset WITH_KRB5
|
|
|
|
${WITH_MYSQL:=true}
|
|
[ -n "$NO_MYSQL" ] && unset WITH_MYSQL
|
|
|
|
${WITH_PAM:=true}
|
|
[ -n "$NO_PAM" ] && unset WITH_PAM
|
|
|
|
${WITH_PGSQL:=true}
|
|
[ -n "$NO_PGSQL" ] && unset WITH_PGSQL
|
|
|
|
${WITH_SASL:=true}
|
|
[ -n "$NO_SASL" ] && unset WITH_SASL
|
|
|
|
${WITH_UNWIND:=true}
|
|
[ -n "$NO_UNWIND" ] && unset WITH_UNWIND
|
|
|
|
sysname="$(uname -s)"
|
|
|
|
if [ "$sysname" = "Darwin" ]; then
|
|
# keg-only package installs not linked into /opt/homebrew
|
|
# brew install cyrus-sasl krb5 libressl libpq libxml2 openldap zlib
|
|
export PKG_CONFIG_PATH="/opt/homebrew/opt/cyrus-sasl/lib/pkgconfig:/opt/homebrew/opt/krb5/lib/pkgconfig:/opt/homebrew/opt/libressl/lib/pkgconfig:/opt/homebrew/opt/libpq/lib/pkgconfig:/opt/homebrew/opt/libxml2/lib/pkgconfig:/opt/homebrew/opt/openldap/lib/pkgconfig:/opt/homebrew/opt/zlib/lib/pkgconfig"
|
|
fi
|
|
|
|
if [ "$sysname" = "FreeBSD" ]; then
|
|
export CPPFLAGS=-I/usr/local/include
|
|
export LDFLAGS=-L/usr/local/lib
|
|
fi
|
|
|
|
if [ "$sysname" = "NetBSD" ]; then
|
|
export CPPFLAGS=-I/usr/pkg/include
|
|
export LDFLAGS=-L/usr/pkg/lib
|
|
export LD_LIBRARY_PATH=/usr/pkg/lib
|
|
fi
|
|
|
|
if [ "$sysname" = "OpenBSD" ]; then
|
|
export CPPFLAGS=-I/usr/local/include
|
|
export LDFLAGS=-L/usr/local/lib
|
|
export PKG_CONFIG_LIBDIR=/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/heimdal/lib/pkgconfig
|
|
fi
|
|
|
|
case "${build}" in
|
|
"autobuild"|"coverity")
|
|
mkdir -p m4
|
|
autoreconf --force --install
|
|
./configure -C \
|
|
--with-pic --enable-extra-warnings \
|
|
${WITH_DBI:+--with-dbi} \
|
|
${WITH_MYSQL:+--with-mysql} \
|
|
${WITH_PGSQL:+--with-pgsql} \
|
|
--with-ldap --with-pcre2 \
|
|
--with-zlib --with-zstd --with-brotli --with-libdeflate \
|
|
--with-lua \
|
|
${WITH_UNWIND:+--with-libunwind} \
|
|
${WITH_KRB5:+--with-krb5} \
|
|
${WITH_PAM:+--with-pam} \
|
|
${WITH_SASL:+--with-sasl} \
|
|
--with-maxminddb \
|
|
--with-nettle \
|
|
${WITH_GNUTLS:+--with-gnutls} \
|
|
--with-mbedtls \
|
|
--with-nss \
|
|
--with-openssl \
|
|
${WITH_WOLFSSL:+--with-wolfssl} \
|
|
--with-webdav-props
|
|
case "${build}" in
|
|
"autobuild")
|
|
make -j 4
|
|
make check
|
|
;;
|
|
"coverity")
|
|
[ -z "${COVERITY_PATH}" ] || export PATH="${COVERITY_PATH}"
|
|
cov-build --dir "cov-int" make
|
|
;;
|
|
esac
|
|
;;
|
|
"cmake"|"cmake-asan")
|
|
mkdir -p cmakebuild
|
|
cd cmakebuild
|
|
if [ "${build}" = "cmake-asan" ]; then
|
|
asan_opts="-DBUILD_SANITIZE_ADDRESS=ON -DBUILD_SANITIZE_UNDEFINED=ON"
|
|
else
|
|
asan_opts=""
|
|
fi
|
|
cmake \
|
|
-DBUILD_EXTRA_WARNINGS=ON \
|
|
${asan_opts} \
|
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
|
-DWITH_PCRE2=ON \
|
|
-DWITH_ZLIB=ON \
|
|
-DWITH_ZSTD=ON \
|
|
-DWITH_BROTLI=ON \
|
|
-DWITH_LIBDEFLATE=ON \
|
|
-DWITH_LDAP=ON \
|
|
${WITH_UNWIND:+-DWITH_LIBUNWIND=ON} \
|
|
-DWITH_LUA=ON \
|
|
-DWITH_MAXMINDDB=ON \
|
|
${WITH_DBI:+-DWITH_DBI=ON} \
|
|
${WITH_MYSQL:+-DWITH_MYSQL=ON} \
|
|
${WITH_PGSQL:+-DWITH_PGSQL=ON} \
|
|
${WITH_KRB5:+-DWITH_KRB5=ON} \
|
|
${WITH_PAM:+-DWITH_PAM=ON} \
|
|
${WITH_SASL:+-DWITH_SASL=ON} \
|
|
${WITH_GNUTLS:+-DWITH_GNUTLS=ON} \
|
|
-DWITH_MBEDTLS=ON \
|
|
-DWITH_NETTLE=ON \
|
|
-DWITH_NSS=ON \
|
|
-DWITH_OPENSSL=ON \
|
|
${WITH_WOLFSSL:+-DWITH_WOLFSSL=ON} \
|
|
-DWITH_WEBDAV_PROPS=ON \
|
|
..
|
|
make -j 4 VERBOSE=1
|
|
ctest -V
|
|
;;
|
|
"meson")
|
|
[ -d build ] || meson setup build
|
|
meson configure --buildtype debugoptimized \
|
|
-Dbuild_extra_warnings=true \
|
|
-Dwith_brotli=enabled \
|
|
${WITH_DBI:+-Dwith_dbi=enabled} \
|
|
${WITH_GNUTLS:+-Dwith_gnutls=true} \
|
|
${WITH_KRB5:+-Dwith_krb5=enabled} \
|
|
-Dwith_ldap=enabled \
|
|
-Dwith_libdeflate=enabled \
|
|
${WITH_UNWIND:+-Dwith_libunwind=enabled} \
|
|
-Dwith_lua=true \
|
|
-Dwith_maxminddb=enabled \
|
|
-Dwith_mbedtls=true \
|
|
${WITH_MYSQL:+-Dwith_mysql=enabled} \
|
|
-Dwith_nettle=true \
|
|
-Dwith_nss=true \
|
|
-Dwith_openssl=true \
|
|
${WITH_PAM:+-Dwith_pam=enabled} \
|
|
-Dwith_pcre2=true \
|
|
${WITH_PGSQL:+-Dwith_pgsql=enabled} \
|
|
${WITH_SASL:+-Dwith_sasl=enabled} \
|
|
-Dwith_webdav_props=enabled \
|
|
${WITH_WOLFSSL:+-Dwith_wolfssl=true} \
|
|
-Dwith_zlib=enabled \
|
|
-Dwith_zstd=enabled \
|
|
build
|
|
cd build
|
|
meson compile --verbose
|
|
meson test --verbose
|
|
;;
|
|
"scons")
|
|
case "${label}" in
|
|
debian*)
|
|
# static linking needs some extra stuff on debian
|
|
export LDFLAGS="-pthread"
|
|
export LIBS="-ldl"
|
|
;;
|
|
esac
|
|
scons -j 4 with_pcre2=yes with_zlib=yes with_openssl=yes with_brotli=yes -k check_static check_dynamic
|
|
scons -j 4 with_pcre2=yes with_zlib=yes with_openssl=yes -k check_fullstatic
|
|
;;
|
|
*)
|
|
echo >&2 "Unknown build system: ${build}"
|
|
exit 1
|
|
;;
|
|
esac
|