| #!/bin/sh -e | 
 |  | 
 | # This script runs one build with setup environment variables: BUILD_LIBPCAP, | 
 | # REMOTE, CC, CMAKE, CRYPTO and SMB. | 
 |  | 
 | : "${BUILD_LIBPCAP:=no}" | 
 | : "${REMOTE:=no}" | 
 | : "${CC:=gcc}" | 
 | : "${CMAKE:=no}" | 
 | : "${CRYPTO:=no}" | 
 | : "${SMB:=no}" | 
 | : "${TCPDUMP_TAINTED:=no}" | 
 | : "${TCPDUMP_CMAKE_TAINTED:=no}" | 
 | : "${MAKE_BIN:=make}" | 
 |  | 
 | . ./build_common.sh | 
 | # Install directory prefix | 
 | if [ -z "$PREFIX" ]; then | 
 |     PREFIX=`mktempdir tcpdump_build` | 
 |     echo "PREFIX set to '$PREFIX'" | 
 | fi | 
 | TCPDUMP_BIN="$PREFIX/bin/tcpdump" | 
 | # For TESTrun | 
 | export TCPDUMP_BIN | 
 |  | 
 | print_cc_version | 
 |  | 
 | # The norm is to compile without any warnings, but tcpdump builds on some OSes | 
 | # are not warning-free for one or another reason.  If you manage to fix one of | 
 | # these cases, please remember to remove respective exemption below to help any | 
 | # later warnings in the same matrix subset trigger an error. | 
 |  | 
 | case `cc_id`/`os_id` in | 
 | clang-*/SunOS-5.11) | 
 |     # (Clang 9 on OpenIndiana, Clang 11 on OmniOS) | 
 |     # tcpdump.c:2312:51: warning: this function declaration is not a prototype | 
 |     #   [-Wstrict-prototypes] | 
 |     # tcpdump.c:2737:11: warning: this function declaration is not a prototype | 
 |     #   [-Wstrict-prototypes] | 
 |     [ "`uname -o`" = illumos ] && TCPDUMP_TAINTED=yes | 
 |     ;; | 
 | esac | 
 |  | 
 | [ "$TCPDUMP_TAINTED" != yes ] && CFLAGS=`cc_werr_cflags` | 
 |  | 
 | # If necessary, set TCPDUMP_CMAKE_TAINTED here to exempt particular cmake from | 
 | # warnings. Use as specific terms as possible (e.g. some specific version and | 
 | # some specific OS). | 
 |  | 
 | [ "$TCPDUMP_CMAKE_TAINTED" != yes ] && CMAKE_OPTIONS='-Werror=dev' | 
 |  | 
 | if [ "$CMAKE" = no ]; then | 
 |     if [ "$BUILD_LIBPCAP" = yes ]; then | 
 |         echo "Using PKG_CONFIG_PATH=$PKG_CONFIG_PATH" | 
 |         run_after_echo ./configure --with-crypto="$CRYPTO" \ | 
 |             --enable-smb="$SMB" --prefix="$PREFIX" | 
 |         LD_LIBRARY_PATH="$PREFIX/lib" | 
 |         export LD_LIBRARY_PATH | 
 |     else | 
 |         run_after_echo ./configure --with-crypto="$CRYPTO" \ | 
 |             --enable-smb="$SMB" --prefix="$PREFIX" --disable-local-libpcap | 
 |     fi | 
 | else | 
 |     # See libpcap build.sh for the rationale. | 
 |     run_after_echo rm -rf CMakeFiles/ CMakeCache.txt build/ | 
 |     run_after_echo mkdir build | 
 |     run_after_echo cd build | 
 |     if [ "$BUILD_LIBPCAP" = yes ]; then | 
 |         run_after_echo cmake "$CMAKE_OPTIONS" \ | 
 |             -DWITH_CRYPTO="$CRYPTO" -DENABLE_SMB="$SMB" \ | 
 |             ${CFLAGS:+-DEXTRA_CFLAGS="$CFLAGS"} \ | 
 |             -DCMAKE_INSTALL_PREFIX="$PREFIX" -DCMAKE_PREFIX_PATH="$PREFIX" .. | 
 |         LD_LIBRARY_PATH="$PREFIX/lib" | 
 |         export LD_LIBRARY_PATH | 
 |     else | 
 |         run_after_echo cmake "$CMAKE_OPTIONS" \ | 
 |             -DWITH_CRYPTO="$CRYPTO" -DENABLE_SMB="$SMB" \ | 
 |              ${CFLAGS:+-DEXTRA_CFLAGS="$CFLAGS"} \ | 
 |             -DCMAKE_INSTALL_PREFIX="$PREFIX" .. | 
 |     fi | 
 | fi | 
 | run_after_echo "$MAKE_BIN" -s clean | 
 | if [ "$CMAKE" = no ]; then | 
 |     run_after_echo "$MAKE_BIN" -s ${CFLAGS:+CFLAGS="$CFLAGS"} | 
 | else | 
 |     # The "-s" flag is a no-op and CFLAGS is set using -DEXTRA_CFLAGS above. | 
 |     run_after_echo "$MAKE_BIN" | 
 | fi | 
 | run_after_echo "$MAKE_BIN" install | 
 | print_so_deps "$TCPDUMP_BIN" | 
 | run_after_echo "$TCPDUMP_BIN" -h | 
 | # The "-D" flag depends on HAVE_PCAP_FINDALLDEVS and it would not be difficult | 
 | # to run the command below only if the macro is defined.  That said, it seems | 
 | # more useful to run it anyway: every system that currently runs this script | 
 | # has pcap_findalldevs(), thus if the macro isn't defined, it means something | 
 | # went wrong in the build process (as was observed with GCC, CMake and the | 
 | # system libpcap on Solaris 11). | 
 | run_after_echo "$TCPDUMP_BIN" -D | 
 | if [ "$CIRRUS_CI" = true ]; then | 
 |     # Likewise for the "-J" flag and HAVE_PCAP_SET_TSTAMP_TYPE. | 
 |     run_after_echo sudo \ | 
 |         ${LD_LIBRARY_PATH:+LD_LIBRARY_PATH="$LD_LIBRARY_PATH"} \ | 
 |         "$TCPDUMP_BIN" -J | 
 |     run_after_echo sudo \ | 
 |         ${LD_LIBRARY_PATH:+LD_LIBRARY_PATH="$LD_LIBRARY_PATH"} \ | 
 |         "$TCPDUMP_BIN" -L | 
 | fi | 
 | if [ "$BUILD_LIBPCAP" = yes ]; then | 
 |     run_after_echo "$MAKE_BIN" check | 
 | fi | 
 | if [ "$CMAKE" = no ]; then | 
 |     run_after_echo "$MAKE_BIN" releasetar | 
 | fi | 
 | if [ "$CIRRUS_CI" = true ]; then | 
 |     run_after_echo sudo \ | 
 |         ${LD_LIBRARY_PATH:+LD_LIBRARY_PATH="$LD_LIBRARY_PATH"} \ | 
 |         "$TCPDUMP_BIN" -#n -c 10 | 
 | fi | 
 | handle_matrix_debug | 
 | if [ "$DELETE_PREFIX" = yes ]; then | 
 |     run_after_echo rm -rf "$PREFIX" | 
 | fi | 
 | # vi: set tabstop=4 softtabstop=0 expandtab shiftwidth=4 smarttab autoindent : |