#!/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

for conf in $config_gen_dir/config-gen.d/*.conf; do
	ts_init_subtest $(basename $conf | sed 's/\.conf//')

	opts=$(ul_get_configuration $conf)

	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
done

ts_finalize
