#!/bin/sh # # Do some checking before 'git push'. # Set a stricter bash mode set -e set -u CORES=$(nproc) echo "Running: make distclean" make distclean > /dev/null || true # We define _GNU_SOURCE to avoid warnings with missing prototypes. # C89 does not know snprintf, strdup, strndup, popen, pclose CFLAGS="-std=gnu89 -pedantic -g -Wall -Wextra -Wstrict-prototypes -Wold-style-definition -Wwrite-strings -Wshadow -Wformat -Wformat-security -Wunreachable-code -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition" CACHEFILE=$PWD/config_check.cache # measure time consumed and print it at the end of the script START=$(date +%s.%N) # avoid annoying ar warning export ARFLAGS="cr" export AR_FLAGS="cr" echo "Running: ./autogen.sh" ./autogen.sh > /dev/null echo for CC in gcc clang; do export CC echo echo "*** Testing with CC=$CC" # the compiler changed, so we have to remove the cache file here rm -f $CACHEFILE for options in \ "--enable-runtime=libicu" \ "--enable-runtime=libidn2" \ "--enable-runtime=libidn" \ "--disable-runtime"; do export DISTCHECK_CONFIGURE_FLAGS="-q -C --cache-file=$CACHEFILE $options" if test "$CC" = "clang"; then echo echo " *** CC=$CC ./configure $DISTCHECK_CONFIGURE_FLAGS --enable-cfi" ./configure $DISTCHECK_CONFIGURE_FLAGS --enable-cfi CFLAGS="$CFLAGS" for xLCALL in C tr_TR.utf8; do make -s clean make -s check -j$CORES done fi for flags in --enable-ubsan --enable-asan; do # case "$flags" in *-asan) case $options in *libicu*) continue;; esac;; esac echo echo " *** CC=$CC ./configure $DISTCHECK_CONFIGURE_FLAGS $flags" ./configure $DISTCHECK_CONFIGURE_FLAGS $flags CFLAGS="$CFLAGS" for xLCALL in C tr_TR.utf8; do make -s clean make -s check -j$CORES done done echo echo " *** CC=$CC ./configure $DISTCHECK_CONFIGURE_FLAGS" ./configure $DISTCHECK_CONFIGURE_FLAGS CFLAGS="$CFLAGS" for xVALGRIND in 0 1; do for xLCALL in C tr_TR.utf8; do export TESTS_ENVIRONMENT="LC_ALL=$xLCALL VALGRIND_TESTS=$xVALGRIND" echo " *** TESTS_ENVIRONMENT=\"$TESTS_ENVIRONMENT\"" make check -j$CORES make -s clean make -s check -j$CORES done done unset TESTS_ENVIRONMENT export TESTS_ENVIRONMENT echo echo " *** $CC: make distcheck CFLAGS=$CFLAGS -j$CORES" ./configure $DISTCHECK_CONFIGURE_FLAGS CFLAGS="$CFLAGS" make -s clean make -s check -j$CORES make -s distcheck CFLAGS="$CFLAGS" -j$CORES done done END=$(date +%s.%N) echo echo "Duration: "$(echo "$END - $START" | bc)