blob: 9e5783f0ad4256d65837e0e273d16f37021c3c03 [file] [log] [blame]
#!/usr/bin/env bash
# SPDX-License-Identifier: BSD-3-Clause
set -e
source $TRAVIS_BUILD_DIR/.ci/docker-prelude.sh
export CONFIGURE_OPTIONS=
if [ -d build ]; then
rm -rf build
fi
if [ -d ./build-no-tests ]; then
rm -rf build-no-tests
fi
# Do not run tests when building on coverity_scan branch
if [ "$COVERITY_SCAN_BRANCH" == 1 ]; then
echo "Coverity scan branch detected, not running build nor tests...exiting!"
exit 0
fi
if [ -z "$WITH_CRYPTO" ]; then
echo "variable WITH_CRYPTO not set, defaulting to ossl"
export WITH_CRYPTO="ossl"
fi
if [ "$WITH_CRYPTO" != "ossl" ]; then
export CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS --disable-fapi"
fi
./bootstrap
# Is it a fuzz run, if so build the fuzz test and exit.
if [ "$GEN_FUZZ" == "1" ]; then
./configure --with-fuzzing=libfuzzer --enable-tcti-fuzzing --disable-tcti-device --disable-tcti-mssim --disable-shared --with-crypto="$WITH_CRYPTO"
make -j$(nproc) check
exit 0
fi
#
# General build runs
#
# build with no tests enabled
mkdir ./build-no-tests
pushd ./build-no-tests
echo "PWD: $(pwd)"
echo "ls -la ../ $(ls -la ../)"
../configure --enable-tcti-partial-reads=$WITH_TCTI_PARTIAL --enable-tcti-device-async=$WITH_TCTI_ASYNC --with-crypto=$WITH_CRYPTO $CONFIGURE_OPTIONS
make -j$(nproc)
popd
# build with all tests enabled
mkdir ./build
pushd ./build
if [ "$CC" == "gcc" ]; then
export CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS --enable-code-coverage";
fi
if [ "$SCANBUILD" == "yes" ]; then
scan-build --status-bugs ../configure --enable-tcti-partial-reads=$WITH_TCTI_PARTIAL --enable-tcti-device-async=$WITH_TCTI_ASYNC --enable-unit --enable-integration --with-crypto=$WITH_CRYPTO $CONFIGURE_OPTIONS
elif [ "$CC" == "clang" ]; then
../configure --enable-tcti-partial-reads=$WITH_TCTI_PARTIAL --enable-tcti-device-async=$WITH_TCTI_ASYNC --enable-unit --enable-integration --with-crypto=$WITH_CRYPTO $CONFIGURE_OPTIONS
else
../configure --with-sanitizer=undefined --enable-tcti-partial-reads=$WITH_TCTI_PARTIAL --enable-tcti-device-async=$WITH_TCTI_ASYNC --enable-unit --enable-integration --with-crypto=$WITH_CRYPTO $CONFIGURE_OPTIONS
fi
if [ "$SCANBUILD" == "yes" ]; then
scan-build --status-bugs make -j distcheck
elif [ "$CC" == "clang" ]; then
make -j distcheck
else
make -j check
fi
popd
# back in root git directory, check for whitespace errors. We do this post CI
# so people can verify the rest of their patch works in CI before dying.
# git diff --check fails with a non-zero return code causing the shell to die
# as it has a set -e executed.
[ -z "$TRAVIS_TAG" ] && git diff --check origin/${TRAVIS_BRANCH:-master}
if [ "$ENABLE_COVERAGE" == "true" ]; then
bash <(curl -s https://codecov.io/bash)
else
echo "ENABLE_COVERAGE not true, got \"$ENABLE_COVERAGE\""
fi
exit 0