1#!/usr/bin/env bash 2 3# This script runs one build with setup environment variables: CC, CMAKE and 4# REMOTE (default: CC=gcc, CMAKE=no, REMOTE=no). 5 6set -e 7 8# CC: gcc or clang 9CC=${CC:-gcc} 10# GCC and Clang recognize --version and print to stdout. Sun compilers 11# recognize -V and print to stderr. 12"$CC" --version 2>/dev/null || "$CC" -V || : 13# CMAKE: no or yes 14CMAKE=${CMAKE:-no} 15# REMOTE: no or yes 16REMOTE=${REMOTE:-no} 17# Install directory prefix 18if [ -z "$PREFIX" ]; then 19 PREFIX=$(mktemp -d -t libpcap_build_XXXXXXXX) 20 echo "PREFIX set to '$PREFIX'" 21 DELETE_PREFIX=yes 22fi 23 24travis_fold() { 25 local action=${1:?} 26 local name=${2:?} 27 if [ "$TRAVIS" != true ]; then return; fi 28 echo -ne "travis_fold:$action:$LABEL.script.$name\\r" 29 sleep 1 30} 31 32# Run a command after displaying it 33run_after_echo() { 34 echo -n '$ ' 35 echo "$@" 36 # shellcheck disable=SC2068 37 $@ 38} 39 40# LABEL is needed to build the travis fold labels 41LABEL="$CC.$CMAKE.$REMOTE" 42if [ "$CMAKE" = no ]; then 43 echo '$ ./configure [...]' 44 travis_fold start configure 45 ./configure --prefix="$PREFIX" --enable-remote="$REMOTE" 46 travis_fold end configure 47else 48 # Remove the leftovers from any earlier in-source builds, so this 49 # out-of-source build does not break because of that. 50 # https://gitlab.kitware.com/cmake/community/-/wikis/FAQ#what-is-an-out-of-source-build 51 rm -rf CMakeFiles/ CMakeCache.txt 52 [ ! -d build ] && mkdir build 53 cd build 54 echo '$ cmake [...]' 55 travis_fold start cmake 56 cmake -DCMAKE_INSTALL_PREFIX="$PREFIX" -DENABLE_REMOTE="$REMOTE" .. 57 travis_fold end cmake 58fi 59run_after_echo "make -s clean" 60run_after_echo "make -s" 61run_after_echo "make -s testprogs" 62echo '$ make install' 63travis_fold start make_install 64make install 65travis_fold end make_install 66if [ "$CMAKE" = no ]; then 67 run_after_echo "testprogs/findalldevstest" 68else 69 run_after_echo "run/findalldevstest" 70fi 71if [ "$CMAKE" = no ]; then 72 system=$(uname -s) 73 if [ "$system" = Darwin ] || [ "$system" = Linux ]; then 74 run_after_echo "make releasetar" 75 fi 76fi 77if [ "$TRAVIS" = true ]; then 78 echo '$ cat Makefile [...]' 79 travis_fold start cat_makefile 80 sed '/^# DO NOT DELETE THIS LINE -- mkdep uses it.$/q' < Makefile 81 travis_fold end cat_makefile 82 echo '$ cat config.h' 83 travis_fold start cat_config_h 84 cat config.h 85 travis_fold end cat_config_h 86 if [ "$CMAKE" = no ]; then 87 echo '$ cat config.log' 88 travis_fold start cat_config_log 89 cat config.log 90 travis_fold end cat_config_log 91 fi 92fi 93if [ "$DELETE_PREFIX" = yes ]; then 94 rm -rf "$PREFIX" 95fi 96# vi: set tabstop=4 softtabstop=0 expandtab shiftwidth=4 smarttab autoindent : 97