| #! /usr/bin/env bash | 
 |  | 
 | #  Licensed to the Apache Software Foundation (ASF) under one | 
 | #  or more contributor license agreements.  See the NOTICE file | 
 | #  distributed with this work for additional information | 
 | #  regarding copyright ownership.  The ASF licenses this file | 
 | #  to you under the Apache License, Version 2.0 (the | 
 | #  "License"); you may not use this file except in compliance | 
 | #  with the License.  You may obtain a copy of the License at | 
 | # | 
 | #      http://www.apache.org/licenses/LICENSE-2.0 | 
 | # | 
 | #  Unless required by applicable law or agreed to in writing, software | 
 | #  distributed under the License is distributed on an "AS IS" BASIS, | 
 | #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | #  See the License for the specific language governing permissions and | 
 | #  limitations under the License. | 
 |  | 
 | LCOV=${LCOV:-lcov} | 
 | GENHTML=${GENHTML:-genhtml} | 
 |  | 
 | TMPDIR=${TMPDIR:-/tmp} | 
 | BUILDID="org.apache.trafficserver.$$" | 
 |  | 
 | SRCROOT=${SRCROOT:-$(cd $(dirname $0)/.. && pwd)} # where the source lives | 
 | OBJROOT=${OBJROOT:-"$TMPDIR/$BUILDID/obj"} # where we are building | 
 | DSTROOT=${DSTROOT:-"$TMPDIR/$BUILDID/dst"} # where we are installing | 
 |  | 
 | # Force low make parallelization so that the build can complete in a VM with | 
 | # only a small amount of memory. | 
 | NPROCS=${NPROCS:-2} | 
 |  | 
 | mkdir -p $SRCROOT | 
 | mkdir -p $OBJROOT | 
 | mkdir -p $DSTROOT | 
 |  | 
 | autogen() { | 
 |   ( | 
 |     cd "$SRCROOT" | 
 |     [ configure -nt configure.ac -a Makefile.in -nt Makefile.am ] || autoreconf -fi | 
 |   ) | 
 | } | 
 |  | 
 | configure() { | 
 |   ( | 
 |     cd $OBJROOT | 
 |     $SRCROOT/configure \ | 
 |       --prefix=$DSTROOT \ | 
 |       --enable-debug \ | 
 |       --enable-coverage \ | 
 |       --enable-werror \ | 
 |       --enable-example-plugins \ | 
 |       --enable-test-tools \ | 
 |       --enable-experimental-plugins \ | 
 |       CC="$CC" \ | 
 |       CXX="$CXX" \ | 
 |       "$@" | 
 |   ) | 
 | } | 
 |  | 
 | build() { | 
 |   ( cd $OBJROOT && $MAKE -j $NPROCS ) | 
 |   ( cd $OBJROOT && $MAKE install ) | 
 | } | 
 |  | 
 | regress() { | 
 |   ( cd $OBJROOT && $MAKE check ) && \ | 
 |   $DSTROOT/bin/traffic_server -k -K -R 1 | 
 | } | 
 |  | 
 | CC=${CC:-gcc} | 
 | CXX=${CXX:-g++} | 
 | MAKE=${MAKE:-make} | 
 | export CC CXX MAKE | 
 |  | 
 | case $VERBOSE in | 
 |   Y*) set -x ;; | 
 |   y*) set -x ;; | 
 |   1) set -x ;; | 
 |   *) set +x ;; | 
 | esac | 
 |  | 
 | autogen || exit 1 | 
 | configure "$@" || exit 1 | 
 | build || exit 1 | 
 |  | 
 | $LCOV --quiet --capture --initial --directory $OBJROOT --output-file initial.info | 
 |  | 
 | regress | 
 |  | 
 | $LCOV --quiet --capture --directory $OBJROOT --output-file tests.info | 
 |  | 
 | # The --add-tracefile option refuses to create an output file with | 
 | # --output-file (contrary to documentation). Capture the combined | 
 | # coverage from stdout instead. | 
 | $LCOV \ | 
 |   --add-tracefile initial.info \ | 
 |   --add-tracefile tests.info \ | 
 | > combined.info | 
 |  | 
 | # genhtml will puke because it can't find the original TSConfig files. | 
 | # We don't need to bother generation anything for /usr/include. | 
 | $LCOV --remove combined.info \ | 
 |   'TsConfigSyntax.*' \ | 
 |   'TsConfigGrammar.*' \ | 
 |   '/usr/include/*' > coverage.info | 
 |  | 
 | $GENHTML --output-directory coverage.html coverage.info |