#! /bin/sh# link-order.test - make sure that library linking order matches# Test script header.need_prefix=noif test -z "$srcdir"; thensrcdir=`echo "$0" | sed 's%/[^/]*$%%'`test "$srcdir" = "$0" && srcdir=.test "${VERBOSE+set}" != "set" && VERBOSE=yesfi. $srcdir/defs || exit 1retcode=0rm -rf linkorder.dirmkdir linkorder.dirtop_dir=`pwd`/linkorder.dirprefix_old=$top_dir/oldprefix_new=$top_dir/newsrcdir=linkorder.dir/srcmkdir $srcdir $prefix_old $prefix_new $prefix_old/lib $prefix_new/libcat >$srcdir/c.c <<EOFint c = 1;EOF$libtool --mode=compile $CC $CFLAGS -c $srcdir/c.c -o $srcdir/c.lo$libtool --mode=link $CC $CFLAGS $LDFLAGS -o $srcdir/libcee.la $srcdir/c.lo \-rpath $prefix_old/lib$libtool --mode=install cp $srcdir/libcee.la $prefix_old/lib/libcee.lafor i in old new; dorm -rf $srcdirmkdir $srcdircat >$srcdir/a_$i.c <<EOFextern int c;extern int b_$i();int a_$i() { return c + b_$i(); }EOFcat >$srcdir/b_$i.c <<EOFextern int c;int b_$i() { return 1 + c; }EOFprefix=`eval echo \\$prefix_$i`$libtool --mode=compile $CC $CFLAGS -c $srcdir/a_$i.c -o $srcdir/a.lo$libtool --mode=compile $CC $CFLAGS -c $srcdir/b_$i.c -o $srcdir/b.lo$libtool --mode=link $CC $CFLAGS $LDFLAGS -o $srcdir/libb.la $srcdir/b.lo \-L$prefix_old/lib -lcee -rpath $prefix/lib$libtool --mode=link $CC $CFLAGS -o $srcdir/liba.la $srcdir/a.lo \$srcdir/libb.la -L$prefix_old/lib -lcee -rpath $prefix/lib$libtool --mode=install cp $srcdir/libb.la $prefix/lib/libb.la$libtool --mode=install cp $srcdir/liba.la $prefix/lib/liba.la \>$srcdir/stdout 2>$srcdir/stderr || retcode=1cat $srcdir/stdoutcat $srcdir/stderr >&2done# Do not error if we do not relink (e.g. static-only systems)if $EGREP relinking $srcdir/stderr; thenif $EGREP ' -L.*\/new\/lib -lb -L.*\/old\/lib -lcee' $srcdir/stdout; then :; elseecho "$0: wrong link order" 1>&2retcode=1fififor i in old new; docat >$srcdir/main_$i.c <<EOFextern int a_$i();int main(void) { return a_$i() != 3; }EOFprefix=`eval echo \\$prefix_$i`$libtool --mode=compile $CC $CFLAGS -c $srcdir/main_$i.c -o $srcdir/main_$i.lo$libtool --mode=link $CC $CFLAGS $LDFLAGS -o $srcdir/main_$i $srcdir/main_$i.lo \-L$prefix/lib -la || retcode=1if $srcdir/main_$i; then :elseecho "$0: cannot execute $srcdir/main_$i" 1>&2if test "X$host" != "X$build"; thenecho "This may be ok since you seem to be cross-compiling." 1>&2retcode=77elseretcode=1fifidonerm -rf $top_direxit $retcode