]> The Tcpdump Group git mirrors - tcpdump/blob - build.sh
CI: Get Travis CI vestige sorted in build.sh.
[tcpdump] / build.sh
1 #!/bin/sh -e
2
3 # This script runs one build with setup environment variables: BUILD_LIBPCAP,
4 # REMOTE, CC, CMAKE, CRYPTO and SMB
5 # (default: BUILD_LIBPCAP=no, REMOTE=no, CC=gcc, CMAKE=no, CRYPTO=no, SMB=no).
6
7 # BUILD_LIBPCAP: no or yes
8 BUILD_LIBPCAP=${BUILD_LIBPCAP:-no}
9 # REMOTE: no or yes
10 REMOTE=${REMOTE:-no}
11 # CC: gcc or clang
12 CC=${CC:-gcc}
13 # GCC and Clang recognize --version and print to stdout. Sun compilers
14 # recognize -V and print to stderr.
15 "$CC" --version 2>/dev/null || "$CC" -V || :
16 # CMAKE: no or yes
17 CMAKE=${CMAKE:-no}
18 # CRYPTO: no or yes
19 CRYPTO=${CRYPTO:-no}
20 # SMB: no or yes
21 SMB=${SMB:-no}
22 # Install directory prefix
23 if [ -z "$PREFIX" ]; then
24 PREFIX=$(mktemp -d -t tcpdump_build_XXXXXXXX)
25 echo "PREFIX set to '$PREFIX'"
26 fi
27 # For TESTrun
28 export TCPDUMP_BIN="$PREFIX/bin/tcpdump"
29
30 # Run a command after displaying it
31 run_after_echo() {
32 printf '$ '
33 echo "$@"
34 # shellcheck disable=SC2068
35 $@
36 }
37
38 if [ "$CMAKE" = no ]; then
39 echo '$ ./configure [...]'
40 if [ "$BUILD_LIBPCAP" = yes ]; then
41 echo "Using PKG_CONFIG_PATH=$PKG_CONFIG_PATH"
42 ./configure --with-crypto="$CRYPTO" --enable-smb="$SMB" --prefix="$PREFIX"
43 export LD_LIBRARY_PATH="$PREFIX/lib"
44 else
45 ./configure --disable-local-libpcap --with-crypto="$CRYPTO" --enable-smb="$SMB" --prefix="$PREFIX"
46 fi
47 else
48 rm -rf build
49 mkdir build
50 cd build
51 echo '$ cmake [...]'
52 if [ "$BUILD_LIBPCAP" = yes ]; then
53 cmake -DWITH_CRYPTO="$CRYPTO" -DENABLE_SMB="$SMB" -DCMAKE_PREFIX_PATH="$PREFIX" -DCMAKE_INSTALL_PREFIX="$PREFIX" ..
54 export LD_LIBRARY_PATH="$PREFIX/lib"
55 else
56 cmake -DWITH_CRYPTO="$CRYPTO" -DENABLE_SMB="$SMB" -DCMAKE_INSTALL_PREFIX="$PREFIX" ..
57 fi
58 fi
59 run_after_echo "make -s clean"
60 run_after_echo "make -s CFLAGS=-Werror"
61 echo '$ make install'
62 make install
63 run_after_echo "$TCPDUMP_BIN --version"
64 run_after_echo "$TCPDUMP_BIN -h"
65 run_after_echo "$TCPDUMP_BIN -D"
66 system=$(uname -s)
67 case "$system" in
68 Linux|FreeBSD|NetBSD|OpenBSD)
69 run_after_echo "ldd $TCPDUMP_BIN"
70 ;;
71 Darwin)
72 run_after_echo "otool -L $TCPDUMP_BIN"
73 ;;
74 esac
75 if [ "$BUILD_LIBPCAP" = yes ]; then
76 run_after_echo "make check"
77 fi
78 if [ "$CMAKE" = no ]; then
79 system=$(uname -s)
80 if [ "$system" = Darwin ] || [ "$system" = Linux ]; then
81 run_after_echo "make releasetar"
82 fi
83 fi
84 # Beware that setting MATRIX_DEBUG will produce A LOT of additional output
85 # here and in any nested libpcap builds. Multiplied by the matrix size, the
86 # full output log size might exceed limits of some CI systems (as previously
87 # happened with Travis CI). Use with caution on a reduced matrix.
88 if [ "$MATRIX_DEBUG" = true ]; then
89 echo '$ cat Makefile [...]'
90 sed '/DO NOT DELETE THIS LINE -- mkdep uses it/q' < Makefile
91 echo '$ cat config.h'
92 cat config.h
93 if [ "$CMAKE" = no ]; then
94 echo '$ cat config.log'
95 cat config.log
96 fi
97 fi
98 if [ "$DELETE_PREFIX" = yes ]; then
99 rm -rf "$PREFIX"
100 fi
101 # vi: set tabstop=4 softtabstop=0 expandtab shiftwidth=4 smarttab autoindent :