summaryrefslogtreecommitdiffstats
path: root/bootstrap.sh
blob: eb8056fa19c8a9fd40d7cf323502a43ca32ab575 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/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
OpenPOWER on IntegriCloud