• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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