| #!/bin/sh |
| |
| set -eu |
| |
| AUTOCONF_FILES="Makefile.in aclocal.m4 ar-lib autom4te.cache compile \ |
| config.guess config.h.in config.sub configure depcomp install-sh \ |
| ltmain.sh missing *libtool test-driver" |
| |
| BOOTSTRAP_MODE="" |
| |
| if [ $# -gt 0 ]; |
| then |
| BOOTSTRAP_MODE="${1}" |
| shift 1 |
| fi |
| |
| case "${BOOTSTRAP_MODE}" in |
| dev) |
| AX_CODE_COVERAGE_PATH="$(aclocal --print-ac-dir)"/ax_code_coverage.m4 |
| if [ ! -e ${AX_CODE_COVERAGE_PATH} ]; |
| then |
| echo "Failed to find AX_CODE_COVERAGE macro file at ${AX_CODE_COVERAGE_PATH}" 1>&2 |
| exit 1 |
| fi |
| LCOV_VERSION=$(lcov --version | tr ' ' '\n' | tail -1) |
| |
| # Ubuntu Zesty ships with lcov v1.13, but Zesty's autoconf-archive |
| # package (the provider of the AX_CODE_COVERAGE macro) doesn't support |
| # it. |
| # |
| # sed-patch ax_code_coverage.m4 as it's GPLv3, and this is an Apache v2 |
| # licensed repository. The licenses are not compatible in our desired |
| # direction[1]. |
| # |
| # [1] https://www.apache.org/licenses/GPL-compatibility.html |
| |
| cp ${AX_CODE_COVERAGE_PATH} m4/ |
| sed -ri 's|(lcov_version_list=)"([ 0-9.]+)"$|\1"'${LCOV_VERSION}'"|' \ |
| m4/ax_code_coverage.m4 |
| ;; |
| clean) |
| test -f Makefile && make maintainer-clean |
| test -d linux && find linux -type d -empty | xargs -r rm -rf |
| for file in ${AUTOCONF_FILES}; do |
| find -name "$file" | xargs -r rm -rf |
| done |
| exit 0 |
| ;; |
| *) ;; |
| esac |
| |
| autoreconf -i |
| |
| case "${BOOTSTRAP_MODE}" in |
| dev) |
| FLAGS="-fsanitize=address -fsanitize=leak -fsanitize=undefined -Wall -Werror" |
| ./configure \ |
| CPPFLAGS="-UNDEBUG" \ |
| CFLAGS="${FLAGS}" \ |
| CXXFLAGS="${FLAGS}" \ |
| --enable-code-coverage \ |
| "$@" |
| ;; |
| *) |
| echo 'Run "./configure ${CONFIGURE_FLAGS} && make"' |
| ;; |
| esac |