summaryrefslogtreecommitdiffstats
path: root/tests/ts/build-sys/config
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ts/build-sys/config')
-rwxr-xr-xtests/ts/build-sys/config83
1 files changed, 83 insertions, 0 deletions
diff --git a/tests/ts/build-sys/config b/tests/ts/build-sys/config
new file mode 100755
index 0000000..2d12913
--- /dev/null
+++ b/tests/ts/build-sys/config
@@ -0,0 +1,83 @@
+#!/bin/bash
+
+# Copyright (C) 2011 Karel Zak <kzak@redhat.com>
+
+TS_TOPDIR="${0%/*}/../.."
+TS_DESC="config"
+
+# Don't execute this test by default, --force required
+TS_OPTIONAL="yes"
+
+. "$TS_TOPDIR"/functions.sh
+ts_init "$*"
+
+ts_check_prog "readelf"
+ts_check_prog "file"
+
+config_gen_dir="$top_srcdir/tools"
+. $config_gen_dir/config-gen-functions.sh
+
+[ -n "$CFLAGS" ] && export CFLAGS="$CFLAGS"
+
+ts_cd $top_builddir && make -j clean &> /dev/null
+
+wanted=$(ts_option_argument "conf" "$*")
+
+function make_conf {
+ local conf="$1"
+
+ ts_init_subtest $(basename $conf | sed 's/\.conf//')
+
+ opts=$(ul_get_configuration $conf | sed 's/--enable-asan//')
+
+ olddir=$(pwd)
+ ts_cd $top_builddir
+
+ ./configure $opts &> /dev/null
+ make -j &> /dev/null
+
+ bins=$(find . -type f \( -perm -u=x -o -perm -g=x -o -perm -o=x \) | sort)
+ for b in $bins; do
+ libs=$(readelf --dynamic $b 2> /dev/null | \
+ awk '/NEEDED/ { print $5 }' | \
+ sed 's:\[::g; s:\..*::g; s:^libc$::g; s:ld\-.*::g' | \
+ sort -u | tr '\n' ' ')
+
+ if [ -n "$libs" ]; then
+ echo "$(basename $b): $libs" >> $TS_OUTPUT
+ else
+ fres=$(file $b)
+ case $fres in
+ *statically*)
+ echo "$(basename $b): STATIC" >> $TS_OUTPUT
+ ;;
+ *) # ignore scripts, ...etc.
+ ;;
+ esac
+ fi
+ done
+
+ # clean the tree, but exclude tests/{diff,output} dirs
+ #
+ [ -d tests/diff ] && mv tests/diff tests/diff.save
+ [ -d tests/output ] && mv tests/output tests/output.save
+
+ make -j clean &> /dev/null
+
+ [ -d tests/diff.save ] && mv tests/diff.save tests/diff
+ [ -d tests/output.save ] && mv tests/output.save tests/output
+
+ ts_cd $olddir
+ ts_finalize_subtest
+}
+
+
+if [ -n "$wanted" ]; then
+ make_conf $wanted
+else
+ for x in $config_gen_dir/config-gen.d/*.conf; do
+ make_conf "$x"
+ done
+fi
+
+ts_finalize