all.sh 2.01 KB
Newer Older
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
#!/bin/sh

# Run all available tests (mostly).
#
# Warning: includes various build modes, so it will mess with the current
# CMake configuration. After this script is run, the CMake cache is lost and
# CMake is not initialised any more!

# Abort on errors (and uninitiliased variables)
set -eu

if [ -d library -a -d include -a -d tests ]; then :; else
    echo "Must be run from PolarSSL root" >&2
    exit 1
fi

MEMORY=0

while [ $# -gt 0 ]; do
    case "$1" in
        -m|--memory)
            MEMORY=1
            ;;
        *)
            echo "Unknown argument: '$1'" >&2
            echo "Use the source, Luke!" >&2
            exit 1
            ;;
    esac
    shift
done

# remove built files as well as the cmake cache/config
cleanup()
{
    make clean
    find -iname '*cmake*' -not -name CMakeLists.txt -exec rm -rf {} \+
38 39
    rm -f include/Makefile include/polarssl/Makefile programs/*/Makefile
    git update-index --no-skip-worktree {.,library,programs,tests}/Makefile
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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
    git checkout -- {.,library,programs,tests}/Makefile
}

# Step 0: compile with max warnings, with GCC and Clang

if which gcc > /dev/null; then
    cleanup
    CC=gcc cmake -D CMAKE_BUILD_TYPE:String=Check .
    make
fi

if which clang > /dev/null; then
    cleanup
    CC=clang cmake -D CMAKE_BUILD_TYPE:String=Check .
    make
fi

# Step 1: Unix Make, default compiler, all test suites/scripts

cleanup
make
make check
cd tests
./compat.sh
./ssl-opt.sh
cd ..
tests/scripts/test-ref-configs.pl

# Step 2: using ASan

if [ "$MEMORY" -gt 0 ]; then
    cleanup
    cmake -D CMAKE_BUILD_TYPE:String=ASan .
    make
    make test
    cd tests
    ./compat.sh
    ./ssl-opt.sh
    cd ..
    tests/scripts/test-ref-configs.pl
fi

# Step 3: using valgrind's memcheck

if [ "$MEMORY" -gt 0 ] && which valgrind >/dev/null; then
    cleanup
    cmake -D CMAKE_BUILD_TYPE:String=Debug .
    make
    make memcheck
    cd tests
    ./compat.sh --memcheck
    ./ssl-opt.sh --memcheck
    cd ..
    # no test-ref-configs: doesn't have a memcheck option (yet?)
fi

# Done

cleanup