1*05b00f60SXin Li#!/bin/sh -e 2*05b00f60SXin Li 3*05b00f60SXin Li# This script runs one build with setup environment variables: BUILD_LIBPCAP, 4*05b00f60SXin Li# REMOTE, CC, CMAKE, CRYPTO and SMB. 5*05b00f60SXin Li 6*05b00f60SXin Li: "${BUILD_LIBPCAP:=no}" 7*05b00f60SXin Li: "${REMOTE:=no}" 8*05b00f60SXin Li: "${CC:=gcc}" 9*05b00f60SXin Li: "${CMAKE:=no}" 10*05b00f60SXin Li: "${CRYPTO:=no}" 11*05b00f60SXin Li: "${SMB:=no}" 12*05b00f60SXin Li: "${TCPDUMP_TAINTED:=no}" 13*05b00f60SXin Li: "${TCPDUMP_CMAKE_TAINTED:=no}" 14*05b00f60SXin Li: "${MAKE_BIN:=make}" 15*05b00f60SXin Li 16*05b00f60SXin Li. ./build_common.sh 17*05b00f60SXin Li# Install directory prefix 18*05b00f60SXin Liif [ -z "$PREFIX" ]; then 19*05b00f60SXin Li PREFIX=`mktempdir tcpdump_build` 20*05b00f60SXin Li echo "PREFIX set to '$PREFIX'" 21*05b00f60SXin Lifi 22*05b00f60SXin LiTCPDUMP_BIN="$PREFIX/bin/tcpdump" 23*05b00f60SXin Li# For TESTrun 24*05b00f60SXin Liexport TCPDUMP_BIN 25*05b00f60SXin Li 26*05b00f60SXin Liprint_cc_version 27*05b00f60SXin Li 28*05b00f60SXin Li# The norm is to compile without any warnings, but tcpdump builds on some OSes 29*05b00f60SXin Li# are not warning-free for one or another reason. If you manage to fix one of 30*05b00f60SXin Li# these cases, please remember to remove respective exemption below to help any 31*05b00f60SXin Li# later warnings in the same matrix subset trigger an error. 32*05b00f60SXin Li 33*05b00f60SXin Licase `cc_id`/`os_id` in 34*05b00f60SXin Liclang-*/SunOS-5.11) 35*05b00f60SXin Li # (Clang 9 on OpenIndiana, Clang 11 on OmniOS) 36*05b00f60SXin Li # tcpdump.c:2312:51: warning: this function declaration is not a prototype 37*05b00f60SXin Li # [-Wstrict-prototypes] 38*05b00f60SXin Li # tcpdump.c:2737:11: warning: this function declaration is not a prototype 39*05b00f60SXin Li # [-Wstrict-prototypes] 40*05b00f60SXin Li [ "`uname -o`" = illumos ] && TCPDUMP_TAINTED=yes 41*05b00f60SXin Li ;; 42*05b00f60SXin Liesac 43*05b00f60SXin Li 44*05b00f60SXin Li[ "$TCPDUMP_TAINTED" != yes ] && CFLAGS=`cc_werr_cflags` 45*05b00f60SXin Li 46*05b00f60SXin Li# If necessary, set TCPDUMP_CMAKE_TAINTED here to exempt particular cmake from 47*05b00f60SXin Li# warnings. Use as specific terms as possible (e.g. some specific version and 48*05b00f60SXin Li# some specific OS). 49*05b00f60SXin Li 50*05b00f60SXin Li[ "$TCPDUMP_CMAKE_TAINTED" != yes ] && CMAKE_OPTIONS='-Werror=dev' 51*05b00f60SXin Li 52*05b00f60SXin Liif [ "$CMAKE" = no ]; then 53*05b00f60SXin Li if [ "$BUILD_LIBPCAP" = yes ]; then 54*05b00f60SXin Li echo "Using PKG_CONFIG_PATH=$PKG_CONFIG_PATH" 55*05b00f60SXin Li run_after_echo ./configure --with-crypto="$CRYPTO" \ 56*05b00f60SXin Li --enable-smb="$SMB" --prefix="$PREFIX" 57*05b00f60SXin Li LD_LIBRARY_PATH="$PREFIX/lib" 58*05b00f60SXin Li export LD_LIBRARY_PATH 59*05b00f60SXin Li else 60*05b00f60SXin Li run_after_echo ./configure --with-crypto="$CRYPTO" \ 61*05b00f60SXin Li --enable-smb="$SMB" --prefix="$PREFIX" --disable-local-libpcap 62*05b00f60SXin Li fi 63*05b00f60SXin Lielse 64*05b00f60SXin Li # See libpcap build.sh for the rationale. 65*05b00f60SXin Li run_after_echo rm -rf CMakeFiles/ CMakeCache.txt build/ 66*05b00f60SXin Li run_after_echo mkdir build 67*05b00f60SXin Li run_after_echo cd build 68*05b00f60SXin Li if [ "$BUILD_LIBPCAP" = yes ]; then 69*05b00f60SXin Li run_after_echo cmake "$CMAKE_OPTIONS" \ 70*05b00f60SXin Li -DWITH_CRYPTO="$CRYPTO" -DENABLE_SMB="$SMB" \ 71*05b00f60SXin Li ${CFLAGS:+-DEXTRA_CFLAGS="$CFLAGS"} \ 72*05b00f60SXin Li -DCMAKE_INSTALL_PREFIX="$PREFIX" -DCMAKE_PREFIX_PATH="$PREFIX" .. 73*05b00f60SXin Li LD_LIBRARY_PATH="$PREFIX/lib" 74*05b00f60SXin Li export LD_LIBRARY_PATH 75*05b00f60SXin Li else 76*05b00f60SXin Li run_after_echo cmake "$CMAKE_OPTIONS" \ 77*05b00f60SXin Li -DWITH_CRYPTO="$CRYPTO" -DENABLE_SMB="$SMB" \ 78*05b00f60SXin Li ${CFLAGS:+-DEXTRA_CFLAGS="$CFLAGS"} \ 79*05b00f60SXin Li -DCMAKE_INSTALL_PREFIX="$PREFIX" .. 80*05b00f60SXin Li fi 81*05b00f60SXin Lifi 82*05b00f60SXin Lirun_after_echo "$MAKE_BIN" -s clean 83*05b00f60SXin Liif [ "$CMAKE" = no ]; then 84*05b00f60SXin Li run_after_echo "$MAKE_BIN" -s ${CFLAGS:+CFLAGS="$CFLAGS"} 85*05b00f60SXin Lielse 86*05b00f60SXin Li # The "-s" flag is a no-op and CFLAGS is set using -DEXTRA_CFLAGS above. 87*05b00f60SXin Li run_after_echo "$MAKE_BIN" 88*05b00f60SXin Lifi 89*05b00f60SXin Lirun_after_echo "$MAKE_BIN" install 90*05b00f60SXin Liprint_so_deps "$TCPDUMP_BIN" 91*05b00f60SXin Lirun_after_echo "$TCPDUMP_BIN" -h 92*05b00f60SXin Li# The "-D" flag depends on HAVE_PCAP_FINDALLDEVS and it would not be difficult 93*05b00f60SXin Li# to run the command below only if the macro is defined. That said, it seems 94*05b00f60SXin Li# more useful to run it anyway: every system that currently runs this script 95*05b00f60SXin Li# has pcap_findalldevs(), thus if the macro isn't defined, it means something 96*05b00f60SXin Li# went wrong in the build process (as was observed with GCC, CMake and the 97*05b00f60SXin Li# system libpcap on Solaris 11). 98*05b00f60SXin Lirun_after_echo "$TCPDUMP_BIN" -D 99*05b00f60SXin Liif [ "$CIRRUS_CI" = true ]; then 100*05b00f60SXin Li # Likewise for the "-J" flag and HAVE_PCAP_SET_TSTAMP_TYPE. 101*05b00f60SXin Li run_after_echo sudo \ 102*05b00f60SXin Li ${LD_LIBRARY_PATH:+LD_LIBRARY_PATH="$LD_LIBRARY_PATH"} \ 103*05b00f60SXin Li "$TCPDUMP_BIN" -J 104*05b00f60SXin Li run_after_echo sudo \ 105*05b00f60SXin Li ${LD_LIBRARY_PATH:+LD_LIBRARY_PATH="$LD_LIBRARY_PATH"} \ 106*05b00f60SXin Li "$TCPDUMP_BIN" -L 107*05b00f60SXin Lifi 108*05b00f60SXin Liif [ "$BUILD_LIBPCAP" = yes ]; then 109*05b00f60SXin Li run_after_echo "$MAKE_BIN" check 110*05b00f60SXin Lifi 111*05b00f60SXin Liif [ "$CMAKE" = no ]; then 112*05b00f60SXin Li run_after_echo "$MAKE_BIN" releasetar 113*05b00f60SXin Lifi 114*05b00f60SXin Liif [ "$CIRRUS_CI" = true ]; then 115*05b00f60SXin Li run_after_echo sudo \ 116*05b00f60SXin Li ${LD_LIBRARY_PATH:+LD_LIBRARY_PATH="$LD_LIBRARY_PATH"} \ 117*05b00f60SXin Li "$TCPDUMP_BIN" -#n -c 10 118*05b00f60SXin Lifi 119*05b00f60SXin Lihandle_matrix_debug 120*05b00f60SXin Liif [ "$DELETE_PREFIX" = yes ]; then 121*05b00f60SXin Li run_after_echo rm -rf "$PREFIX" 122*05b00f60SXin Lifi 123*05b00f60SXin Li# vi: set tabstop=4 softtabstop=0 expandtab shiftwidth=4 smarttab autoindent : 124