#!/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 :