btrfs-progs/tests/build-tests.sh

117 lines
1.8 KiB
Bash

#!/bin/sh
# test various compilation options
# - 32bit, 64bit
# - dynamic, static
# - various configure options
#
# Arguments: anything will be passed to 'make', eg. define CC, D, V
#
# Requirements for full coverage:
# - static version of all libs
# - 32bit/64bit libraries, also the static variants
make=make
opts="-j16 $@"
conf=
target=
function die() {
echo "ERROR: $@"
exit 1
}
function check_result() {
local ret
local str
ret=$1
str="RESULT of target($target) conf($conf): "
case $ret in
0) str="$str OK";;
*) str="$str FAIL";;
esac
echo "$str"
verdict="$verdict
$str"
}
function buildme() {
make clean-all
./autogen.sh && configure "$conf" || die "configure not working with: $@"
$make clean
$make $opts $target
check_result "$?"
echo "VERDICT: $verdict"
}
function build_make_targets() {
# defaults
target=
buildme
# defaults, static
target=static
buildme
# defaults, busybox
target='btrfs.box btrfs.box.static'
buildme
# defaults, 32bit
target="EXTRA_CFLAGS=-m32"
buildme
# defaults, 64bit
target="EXTRA_CFLAGS=-m64"
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
verdict=
conf=
build_make_targets
conf='--disable-documentation'
build_make_targets
conf='--disable-backtrace'
build_make_targets
conf='--disable-convert'
build_make_targets
conf='--with-convert=ext2'
build_make_targets
conf='--with-convert=ext2,reiserfs'
build_make_targets
conf='--enable-zstd'
build_make_targets
# 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"