# dmacks.at --  test for dmacks bug  -*- Autotest -*-
#
#   Copyright (C) 2007, 2008 Free Software Foundation, Inc.
#   Written by Peter O'Gorman, 2007
#
#   This file is part of GNU Libtool.
#
# GNU Libtool is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of
# the License, or (at your option) any later version.
#
# GNU Libtool is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU Libtool; see the file COPYING.  If not, a copy
# can be downloaded from  http://www.gnu.org/licenses/gpl.html,
# or obtained by writing to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
####


AT_SETUP([static library contains static library])
AT_KEYWORDS([libtool])

AT_DATA([foo.c],
[
int foo() { return 1;}
])

AT_DATA([bar.c],
[
int bar() { return 1;}
])

thisdir=`cd . && pwd`
$LIBTOOL --mode=compile --tag=CC $CC $CPPFLAGS $CFLAGS -c -o foo.lo foo.c
$LIBTOOL --mode=compile --tag=CC $CC $CPPFLAGS $CFLAGS -c -o bar.lo bar.c
$LIBTOOL --mode=link --tag=CC --tag=disable-shared $CC $CFLAGS $LDFLAGS \
-o libfoo.la foo.lo -version-info 1:0:0 -rpath $thisdir
$LIBTOOL --mode=install cp libfoo.la $thisdir 
AT_CHECK([$LIBTOOL --mode=link --tag=CC --tag=disable-shared $CC $CFLAGS $LDFLAGS \
	 -o libbar.la bar.lo ./libfoo.a -version-info 1:0:0 -rpath $thisdir],
	 [], [ignore], [ignore])
AT_CHECK([$LIBTOOL --mode=install cp libbar.la $thisdir], [], [ignore], [ignore])
AT_CHECK([ar -t libbar.a | grep libfoo.a],[1],[ignore],[ignore])
archive_contents=`ar -t libbar.a`
AT_XFAIL_IF([case "$archive_contents" in *"libfoo.a"*) : ;; esac])
AT_CLEANUP
