diff options
Diffstat (limited to 'build_matrix.sh')
-rwxr-xr-x | build_matrix.sh | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/build_matrix.sh b/build_matrix.sh new file mode 100755 index 00000000..60065966 --- /dev/null +++ b/build_matrix.sh @@ -0,0 +1,63 @@ +#!/bin/sh -e + +# This script executes the matrix loops, exclude tests and cleaning. +# The matrix can be configured with the following environment variables: MATRIX_CC, +# MATRIX_CMAKE and MATRIX_REMOTE. +: "${MATRIX_CC:=gcc clang}" +: "${MATRIX_CMAKE:=no yes}" +: "${MATRIX_REMOTE:=no yes}" +# Set this variable to "yes" before calling this script to disregard all +# warnings in a particular environment (CI or a local working copy). Set it +# to "yes" in this script or in build.sh when a matrix subset is known to be +# not warning-free because of the OS, the compiler or whatever other factor +# that the scripts can detect both in and out of CI. +: "${LIBPCAP_TAINTED:=no}" +# Some OSes have native make without parallel jobs support and sometimes have +# GNU Make available as "gmake". +: "${MAKE_BIN:=make}" +# It calls the build.sh script which runs one build with setup environment +# variables: CC, CMAKE and REMOTE. + +. ./build_common.sh +print_sysinfo +# Install directory prefix +if [ -z "$PREFIX" ]; then + PREFIX=`mktempdir libpcap_build_matrix` + echo "PREFIX set to '$PREFIX'" + export PREFIX +fi +COUNT=0 +export LIBPCAP_TAINTED +if command -v valgrind >/dev/null 2>&1; then + VALGRIND_CMD="valgrind --leak-check=full --error-exitcode=1" + export VALGRIND_CMD +fi + +touch .devel configure +for CC in $MATRIX_CC; do + export CC + discard_cc_cache + if gcc_is_clang_in_disguise; then + echo '(skipped)' + continue + fi + for CMAKE in $MATRIX_CMAKE; do + export CMAKE + for REMOTE in $MATRIX_REMOTE; do + export REMOTE + COUNT=`increment $COUNT` + echo_magenta "===== SETUP $COUNT: CC=$CC CMAKE=$CMAKE REMOTE=$REMOTE =====" >&2 + # Run one build with setup environment variables: CC, CMAKE and REMOTE + run_after_echo ./build.sh + echo 'Cleaning...' + if [ "$CMAKE" = yes ]; then rm -rf build; else "$MAKE_BIN" distclean; fi + purge_directory "$PREFIX" + run_after_echo git status -suall + # Cancel changes in configure + run_after_echo git checkout configure + done + done +done +run_after_echo rm -rf "$PREFIX" +echo_magenta "Tested setup count: $COUNT" >&2 +# vi: set tabstop=4 softtabstop=0 expandtab shiftwidth=4 smarttab autoindent : |