btrfs-progs/tests/build-tests.sh

155 lines
2.5 KiB
Bash
Executable File

#!/bin/sh
# Usage: $0 [--ccache] [make options]
#
# Test various compilation options:
# - native arch
# - dynamic, static
# - various configure options
#
# Arguments:
# - (first arugment) --ccache - enable ccache for build which can speed up
# rebuilding same files if the options do not affect them, the ccache will
# be created in the toplevel git directory
# - anything else will be passed to 'make', eg. define CC, D, V
#
# Requirements for full coverage:
# - static version of all libs
die() {
echo "ERROR: $@"
exit 1
}
check_result() {
local ret
local str
ret=$1
str="RESULT of target($target) conf($conf) CFLAGS($CFLAGS): "
case $ret in
0) str="$str OK";;
*) str="$str FAIL";;
esac
echo "$str"
verdict="$verdict
$str"
}
buildme() {
make clean-all
./autogen.sh && CFLAGS="$CFLAGS" configure "$conf" || die "configure not working with: $@"
$make clean
$make $opts $target
check_result "$?"
echo "VERDICT: $verdict"
}
buildme_cflags() {
CFLAGS="$1"
buildme
CFLAGS=''
}
build_make_targets() {
# defaults
target=
buildme
# defaults, static
target=static
buildme
# defaults, busybox
target='btrfs.box btrfs.box.static'
buildme
# defaults, library
target="library-test"
buildme
# defaults, static library
target="library-test.static"
buildme
}
# main()
if ! [ -f configure.ac ]; then
echo "Please run me from the top directory"
exit 1
fi
if [ "$1" = "--ccache" ]; then
shift
ccache=true
export CCACHE_DIR=`pwd`/.ccache
mkdir -p -- "$CCACHE_DIR"
PATH="/usr/lib64/ccache:$PATH"
echo "Enable ccache at CCACHE_DIR=$CCACHE_DIR"
ccache -s
fi
make=make
jobs=16
opts="-j${jobs} $@"
verdict=
target=
export CLFAGS
CFLAGS=
conf=
build_make_targets
conf='--disable-documentation'
build_make_targets
conf='--disable-backtrace'
build_make_targets
conf='--disable-convert'
build_make_targets
conf='--disable-zoned'
build_make_targets
conf='--disable-libudev'
build_make_targets
conf='--disable-python'
build_make_targets
conf='--with-convert=ext2'
build_make_targets
conf='--enable-zstd'
build_make_targets
conf='--with-crypto=libgcrypt'
build_make_targets
conf='--with-crypto=libsodium'
build_make_targets
conf='--with-crypto=libkcapi'
build_make_targets
# Old architectures
conf='--with-crypto=builtin'
buildme_cflags '-march=core2'
conf='--with-crypto=builtin'
buildme_cflags '-march=x86-64-v3'
# debugging builds, just the default targets
target='D=1'
buildme
target='D=asan'
buildme
target='D=tsan'
buildme
target='D=ubsan'
buildme
echo "---------------------------------------------------"
echo "$verdict"