#! /bin/sh
# tagdemo-undef - test generating shared libraries with undefined symbols
#
#   Copyright (C) 2003, 2004 Free Software Foundation, Inc.
#   Written by Gary V. Vaughan, 2003
#
#   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.
####

. tests/defs || exit 1


func_mkprefixdir
func_cd "tests/tagdemo"
func_make_distclean
func_configure "--disable-static"

grep '^allow_undefined=.?unsupported.?$' ./libtool >/dev/null 2>&1 \
    && func_skip "$host doesn't support undefined symbols in shared libs"

if test -f ./libtool; then
  $SED 's,allow_undefined=no,allow_undefined=yes,g' ./libtool > ltnew
else
  exit 1
fi

if test -f ./ltnew; then
  rm -f libtool
  mv ltnew libtool
else
  exit 1
fi

exit 0
