| #! /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 |