2008-04-22 04:18:41 +08:00
|
|
|
# darwin.at - tests specific to Mac OS X
|
|
|
|
#
|
maint: update copyright notices to include 2014.
* .x-update-copyright: New file. Exclude files not owned by this
project from update-copyright rules.
* doc/libtool.texi: Replace m-dash with n-dash in texinfo
copyright notice so that update-copyright matches correctly.
Undo bogus copyright updates to example output from gdb session.
Bump copyright year.
* Changelog.old: Revert bogus updates from previous years
without .x-update-copyright.
AUTHORS, HACKING, Makefile.am, NEWS, README, THANKS, TODO,
bootstrap, bootstrap.conf, build-aux/edit-readme-alpha,
build-aux/git-hooks/commit-msg, build-aux/ltmain.in, cfg.mk,
configure.ac, gl/build-aux/bootstrap.in,
gl/build-aux/extract-trace, gl/build-aux/funclib.sh,
gl/build-aux/inline-source, gl/build-aux/options-parser,
libltdl/README, libltdl/argz.c, libltdl/argz_.h,
libltdl/configure.ac, libltdl/libltdl/lt__alloc.h,
libltdl/libltdl/lt__dirent.h, libltdl/libltdl/lt__glibc.h,
libltdl/libltdl/lt__private.h, libltdl/libltdl/lt__strl.h,
libltdl/libltdl/lt_dlloader.h, libltdl/libltdl/lt_error.h,
libltdl/libltdl/lt_system.h, libltdl/libltdl/slist.h,
libltdl/loaders/dld_link.c, libltdl/loaders/dlopen.c,
libltdl/loaders/dyld.c, libltdl/loaders/load_add_on.c,
libltdl/loaders/loadlibrary.c, libltdl/loaders/preopen.c,
libltdl/loaders/shl_load.c, libltdl/lt__alloc.c,
libltdl/lt__dirent.c, libltdl/lt__strl.c, libltdl/lt_dlloader.c,
libltdl/lt_error.c, libltdl/ltdl.c, libltdl/ltdl.h,
libltdl/ltdl.mk, libltdl/slist.c, libtoolize.in, m4/argz.m4,
m4/autobuild.m4, m4/libtool.m4, m4/ltdl.m4, m4/ltoptions.m4,
m4/ltsugar.m4, m4/ltversion.in, m4/lt~obsolete.m4,
tests/am-subdir.at, tests/archive-in-archive.at,
tests/bindir.at, tests/cdemo.at, tests/cmdline_wrap.at,
tests/configure-iface.at, tests/convenience.at, tests/ctor.at,
tests/cwrapper.at, tests/darwin.at, tests/demo.at,
tests/depdemo.at, tests/deplib-in-subdir.at,
tests/deplibs-ident.at, tests/deplibs-mingw.at,
tests/destdir.at, tests/dlloader-api.at,
tests/dumpbin-symbols.at, tests/duplicate_conv.at,
tests/duplicate_deps.at, tests/duplicate_members.at,
tests/early-libtool.at, tests/exceptions.at,
tests/execute-mode.at, tests/exeext.at, tests/export-def.at,
tests/export.at, tests/f77demo.at, tests/fail.at,
tests/fcdemo.at, tests/flags.at, tests/help.at,
tests/indirect_deps.at, tests/infer-tag.at,
tests/inherited_flags.at, tests/install.at,
tests/lalib-syntax.at, tests/libtool.at, tests/libtoolize.at,
tests/link-order.at, tests/link-order2.at, tests/loadlibrary.at,
tests/localization.at, tests/lt_dladvise.at, tests/lt_dlexit.at,
tests/lt_dlopen.at, tests/lt_dlopen_a.at, tests/lt_dlopenext.at,
tests/ltdl-api.at, tests/ltdl-libdir.at, tests/mdemo.at,
tests/need_lib_prefix.at, tests/no-executables.at,
tests/nocase.at, tests/nonrecursive.at, tests/old-ltdl-iface.at,
tests/old-m4-iface.at, tests/pic_flag.at, tests/recursive.at,
tests/resident.at, tests/runpath-in-lalib.at,
tests/search-path.at, tests/shlibpath.at, tests/slist.at,
tests/standalone.at, tests/static.at, tests/stresstest.at,
tests/subproject.at, tests/sysroot.at, tests/tagdemo.at,
tests/template.at, tests/testsuite.at, tests/versioning.at,
tests/with-pic.at: Bump copyright year.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2014-01-02 06:45:36 +08:00
|
|
|
# Copyright (C) 2008-2009, 2011-2014 Free Software Foundation, Inc.
|
2008-04-22 04:18:41 +08:00
|
|
|
# Written by Peter O'Gorman, 2008
|
|
|
|
#
|
|
|
|
# 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_BANNER([Mac OS X tests])
|
|
|
|
AT_SETUP([darwin fat compile])
|
|
|
|
noskip=:
|
syntax-check: fix violations and implement sc_useless_quotes_in_case.
Contrary to popular belief, Bourne shell does not resplit case
expressions after expansion, so if there are no unquoted shell
metacharacters or whitespace, the quotes are useless.
* cfg.mk (sc_useless_quotes_in_case): New syntax-check rule to
ensure we don't reintroduce useless quoted case expressions.
* build-aux/ltmain.m4sh, m4/libtool.m4, tests/bindir.at,
tests/darwin.at, tests/defs.m4sh, tests/demo-hardcode.test,
tests/demo-nopic.test, tests/link-2.test, tests/quote.test,
tests/sysroot.at: Remove spurious quotes.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2011-11-16 16:00:47 +08:00
|
|
|
case $host_os in
|
2008-04-22 04:18:41 +08:00
|
|
|
darwin*) ;;
|
|
|
|
*) noskip=false ;;
|
|
|
|
esac
|
|
|
|
|
2008-06-01 01:12:31 +08:00
|
|
|
AT_DATA([simple.c] ,[[
|
|
|
|
int main() { return 0;}
|
2008-04-22 04:18:41 +08:00
|
|
|
]])
|
|
|
|
|
|
|
|
$noskip && {
|
2014-11-05 02:09:32 +08:00
|
|
|
$CC $CPPFLAGS $CFLAGS -arch x86_64 -arch i386 -o simple simple.c 2>&1 > /dev/null || noskip=false
|
syntax-check: fix violations and implement sc_trailing_blank-non-rfc3676.
* cfg.mk (local-checks-to-fix): Move sc_trailing_blank from
here...
(local-checks-to-skip): ...to here, because otherwise it flags
valid RFC3676 signature blocks.
(sc_trailing_blank-non-rfc3676): An improved sc_trailing_blank
implementation that doesn't flag signature blocks as violations.
* Makefile.am, bootstrap.conf, doc/PLATFORMS,
libltdl/config/ltmain.m4sh, libltdl/m4/libtool.m4,
libltdl/m4/lt~obsolete.m4, tests/archive-in-archive.at,
tests/convenience.at, tests/darwin.at, tests/depdemo/l1/l1.c,
tests/depdemo/l2/l2.c, tests/depdemo/l3/l3.c,
tests/depdemo/l4/l4.c, tests/f77demo/README,
tests/f77demo/cprogram.c, tests/f77demo/foof.f,
tests/f77demo/foof2.f, tests/f77demo/foof3.f,
tests/f77demo/fprogram.f, tests/fcdemo/README,
tests/fcdemo/cprogram.c, tests/fcdemo/foof.f90,
tests/fcdemo/foof2.f90, tests/fcdemo/foof3.f90,
tests/fcdemo/fprogram.f90, tests/mdemo/README,
tests/mdemo/main.c, tests/mdemo/mlib.c, tests/objectlist.test,
tests/static.at, tests/template.at, tests/testsuite.at: Remove
trailing blanks.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2011-10-25 12:16:02 +08:00
|
|
|
rm -f simple
|
2008-04-22 04:18:41 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
AT_CHECK([$noskip || (exit 77)])
|
|
|
|
|
2008-06-01 01:12:31 +08:00
|
|
|
AT_DATA([foo.c],[[
|
|
|
|
int x=0;
|
|
|
|
]])
|
|
|
|
|
2008-04-22 04:18:41 +08:00
|
|
|
AT_DATA([baz.c],[[
|
|
|
|
int y=0;
|
|
|
|
]])
|
|
|
|
|
|
|
|
AT_DATA([bar.c],[[
|
|
|
|
extern int x;
|
|
|
|
int bar(void);
|
|
|
|
int bar() { return x;}
|
|
|
|
]])
|
|
|
|
|
|
|
|
AT_DATA([main.c],[[
|
|
|
|
extern int x;
|
|
|
|
extern int y;
|
|
|
|
|
|
|
|
int main() {
|
|
|
|
return x+y;
|
|
|
|
}
|
|
|
|
]])
|
|
|
|
|
|
|
|
mkdir bin
|
|
|
|
AT_DATA([bin/basename],[[
|
|
|
|
#! /bin/sh
|
|
|
|
|
|
|
|
usage="usage: $0 argument"
|
|
|
|
if test $# != 1; then
|
|
|
|
echo $usage >&2
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
tests: use $SED throughout.
Trust the user, and use $SED from TESTS_ENVIRONMENT uniformly.
Hardcoding 'sed' for "simple" edits is a premature optimisation.
* tests/cdemo.at, tests/cmdline_wrap.at, tests/cwrapper.at,
tests/darwin.at, tests/demo.at, tests/duplicate_conv.at,
tests/duplicate_members.at, tests/execute-mode.at, tests/export.at,
tests/inherited_flags.at, tests/install.at, tests/libtoolize.at,
tests/mdemo.at, tests/need_lib_prefix.at, tests/old-m4-iface.at,
tests/sysroot.at, tests/tagdemo.at, tests/testsuite.at: Replace all
hardcoded sed invocations with $SED.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2013-10-30 12:21:38 +08:00
|
|
|
echo $1 | $SED "s|^.*/||"
|
2008-04-22 04:18:41 +08:00
|
|
|
]])
|
|
|
|
|
|
|
|
chmod +x bin/basename
|
|
|
|
save_PATH=$PATH
|
|
|
|
PATH=`pwd`/bin:$PATH
|
|
|
|
export PATH
|
|
|
|
|
2014-11-05 02:09:32 +08:00
|
|
|
AT_CHECK([$LIBTOOL --mode=compile --tag=CC $CC -c -o foo.lo $CPPFLAGS $CFLAGS -arch x86_64 -arch i386 foo.c],[0],[ignore],[ignore])
|
2008-04-22 04:18:41 +08:00
|
|
|
|
2014-11-05 02:09:32 +08:00
|
|
|
AT_CHECK([$LIBTOOL --mode=compile --tag=CC $CC -c -o baz.lo $CPPFLAGS $CFLAGS -arch x86_64 -arch i386 baz.c],[0],[ignore],[ignore])
|
2008-04-22 04:18:41 +08:00
|
|
|
|
2014-11-05 02:09:32 +08:00
|
|
|
AT_CHECK([$LIBTOOL --mode=link --tag=CC $CC -o libfoo.la $CPPFLAGS $CFLAGS $LDFLAGS -arch x86_64 -arch i386 foo.lo baz.lo],[0],[ignore],[ignore])
|
2008-04-22 04:18:41 +08:00
|
|
|
|
2014-11-05 02:09:32 +08:00
|
|
|
AT_CHECK([$LIBTOOL --mode=compile --tag=CC $CC -c -o bar.lo $CPPFLAGS $CFLAGS -arch x86_64 -arch i386 bar.c],[0],[ignore],[ignore])
|
2008-04-22 04:18:41 +08:00
|
|
|
|
2014-11-05 02:09:32 +08:00
|
|
|
AT_CHECK([$LIBTOOL --mode=link --tag=CC $CC -o libbar.la $CPPFLAGS $CFLAGS $LDFLAGS -arch x86_64 -arch i386 bar.lo libfoo.la -rpath /nonexistent],[0],[ignore],[ignore])
|
2008-04-22 04:18:41 +08:00
|
|
|
|
2014-11-05 02:09:32 +08:00
|
|
|
AT_CHECK([$LIBTOOL --mode=compile --tag=CC $CC -c -o main.lo $CPPFLAGS $CFLAGS -arch x86_64 -arch i386 main.c],[0],[ignore],[ignore])
|
2008-04-22 04:18:41 +08:00
|
|
|
|
2014-11-05 02:09:32 +08:00
|
|
|
AT_CHECK([$LIBTOOL --mode=link --tag=CC $CC -o main$EXEEXT $CPPFLAGS $CFLAGS $LDFLAGS -arch x86_64 -arch i386 main.lo libbar.la],[0],[ignore],[ignore])
|
2008-04-22 04:18:41 +08:00
|
|
|
|
|
|
|
PATH=$save_PATH
|
|
|
|
AT_CLEANUP
|
2009-06-11 01:47:33 +08:00
|
|
|
|
|
|
|
|
|
|
|
AT_SETUP([darwin concurrent library extraction])
|
|
|
|
|
|
|
|
AT_DATA([foo.c], [[
|
|
|
|
int foo (void) { return 0; }
|
|
|
|
]])
|
|
|
|
|
|
|
|
AT_DATA([bar.c], [[
|
|
|
|
extern int foo1 (void);
|
|
|
|
int bar (void) { return foo1 (); }
|
|
|
|
]])
|
|
|
|
cp bar.c baz.c
|
|
|
|
|
|
|
|
objects=
|
|
|
|
for obj in 1 2 3 4 5 6 7 8; do
|
tests: use $SED throughout.
Trust the user, and use $SED from TESTS_ENVIRONMENT uniformly.
Hardcoding 'sed' for "simple" edits is a premature optimisation.
* tests/cdemo.at, tests/cmdline_wrap.at, tests/cwrapper.at,
tests/darwin.at, tests/demo.at, tests/duplicate_conv.at,
tests/duplicate_members.at, tests/execute-mode.at, tests/export.at,
tests/inherited_flags.at, tests/install.at, tests/libtoolize.at,
tests/mdemo.at, tests/need_lib_prefix.at, tests/old-m4-iface.at,
tests/sysroot.at, tests/tagdemo.at, tests/testsuite.at: Replace all
hardcoded sed invocations with $SED.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2013-10-30 12:21:38 +08:00
|
|
|
$SED "s/foo/foo$obj/" < foo.c > foo$obj.c
|
2009-06-11 01:47:33 +08:00
|
|
|
AT_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c foo$obj.c],
|
|
|
|
[], [ignore], [ignore])
|
|
|
|
objects="$objects foo$obj.lo"
|
|
|
|
done
|
|
|
|
AT_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c bar.c],
|
|
|
|
[], [ignore], [ignore])
|
|
|
|
AT_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c baz.c],
|
|
|
|
[], [ignore], [ignore])
|
|
|
|
AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o libfoo.la $objects],
|
|
|
|
[], [ignore], [ignore])
|
|
|
|
|
|
|
|
# Hypothesis: concurrent convenience archive extraction works.
|
|
|
|
for i in 1 2 3 4 5; do
|
|
|
|
rm -f libbar.la libbaz.la
|
|
|
|
AT_CHECK([($LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS ]dnl
|
|
|
|
[ -o libbar.la bar.lo -rpath /foo libfoo.la) & ]dnl
|
|
|
|
[($LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS ]dnl
|
|
|
|
[ -o libbaz.la baz.lo -rpath /foo libfoo.la) & ]dnl
|
|
|
|
[wait; test -f libbar.la && test -f libbaz.la],
|
|
|
|
[], [ignore], [ignore])
|
|
|
|
done
|
|
|
|
|
|
|
|
# Hypothesis: the lock is not used in dry run mode.
|
|
|
|
eval "`$LIBTOOL --config | $EGREP '^(objdir)='`"
|
|
|
|
# Next line is internal detail.
|
|
|
|
lockfile=$objdir/libfoo.a.lock
|
|
|
|
echo stamp > $lockfile
|
|
|
|
AT_CHECK([$LIBTOOL --dry-run --mode=link $CC $CFLAGS $LDFLAGS ]dnl
|
|
|
|
[ -o libbar.la bar.lo -rpath /foo libfoo.la],
|
|
|
|
[], [ignore], [ignore])
|
tests: use $GREP throughout.
Trust the user, and use $GREP from TESTS_EVVIRONMENT uniformly.
* Makefile.am (TESTS_ENVIRONMENT): Add GREP setting.
* tests/am-subdir.at, tests/archive-in-archive.at, tests/bindir.at,
tests/configure-iface.at, tests/cwrapper.at, tests/darwin.at,
tests/demo.at, tests/destdir.at, tests/dumpbin-symbols.at,
tests/early-libtool.at, tests/execute-mode.at, tests/export-def.at,
tests/export.at, tests/f77demo.at, tests/fcdemo.at, tests/flags.at,
tests/help.at, tests/inherited_flags.at, tests/install.at,
tests/lalib-syntax.at, tests/libtool.at, tests/libtoolize.at,
tests/localization.at, tests/lt_dladvise.at, tests/lt_dlopen.at,
tests/lt_dlopenext.at, tests/ltdl-api.at, tests/ltdl-libdir.at,
tests/mdemo.at, tests/old-m4-iface.at, tests/pic_flag.at,
tests/resident.at, tests/runpath-in-lalib.at, tests/search-path.at,
tests/static.at, tests/sysroot.at, tests/template.at,
tests/testsuite.at, tests/versioning.at: Replace all hardcoded grep
invocations with $GREP.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2013-10-30 12:39:06 +08:00
|
|
|
AT_CHECK([$GREP stamp $lockfile], [], [ignore])
|
2009-06-11 01:47:33 +08:00
|
|
|
|
|
|
|
AT_CLEANUP
|
2009-09-07 13:41:58 +08:00
|
|
|
|
|
|
|
AT_SETUP([darwin gdb debug information])
|
|
|
|
|
|
|
|
AT_CHECK([gdb --version || (exit 77)],[ignore],[ignore],[ignore])
|
|
|
|
|
|
|
|
AT_DATA([foo.c], [[
|
|
|
|
int foo (void) { return 0; }
|
|
|
|
]])
|
|
|
|
|
|
|
|
AT_DATA([bar.c], [[
|
|
|
|
extern int foo (void);
|
|
|
|
int bar (void) { return foo (); }
|
|
|
|
]])
|
|
|
|
|
|
|
|
AT_DATA([main.c], [[
|
|
|
|
extern int bar(void);
|
|
|
|
|
|
|
|
int main() { return bar();}
|
|
|
|
]])
|
|
|
|
|
|
|
|
AT_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c bar.c],
|
|
|
|
[], [ignore], [ignore])
|
|
|
|
AT_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c foo.c],
|
|
|
|
[], [ignore], [ignore])
|
|
|
|
AT_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c main.c],
|
|
|
|
[], [ignore], [ignore])
|
|
|
|
|
|
|
|
AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o libfoo.la foo.lo],
|
|
|
|
[], [ignore], [ignore])
|
|
|
|
|
|
|
|
AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS ]dnl
|
|
|
|
[ -o libbar.la bar.lo -rpath /foo libfoo.la ],
|
|
|
|
[], [ignore], [ignore])
|
|
|
|
|
|
|
|
AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS ]dnl
|
|
|
|
[ -o main main.lo libbar.la],[], [ignore], [ignore])
|
2009-09-08 04:17:03 +08:00
|
|
|
AT_CHECK([echo quit | $LIBTOOL --mode=execute gdb main],
|
2009-09-07 13:41:58 +08:00
|
|
|
[ignore], [ignore], [stderr])
|
|
|
|
|
tests: use $GREP throughout.
Trust the user, and use $GREP from TESTS_EVVIRONMENT uniformly.
* Makefile.am (TESTS_ENVIRONMENT): Add GREP setting.
* tests/am-subdir.at, tests/archive-in-archive.at, tests/bindir.at,
tests/configure-iface.at, tests/cwrapper.at, tests/darwin.at,
tests/demo.at, tests/destdir.at, tests/dumpbin-symbols.at,
tests/early-libtool.at, tests/execute-mode.at, tests/export-def.at,
tests/export.at, tests/f77demo.at, tests/fcdemo.at, tests/flags.at,
tests/help.at, tests/inherited_flags.at, tests/install.at,
tests/lalib-syntax.at, tests/libtool.at, tests/libtoolize.at,
tests/localization.at, tests/lt_dladvise.at, tests/lt_dlopen.at,
tests/lt_dlopenext.at, tests/ltdl-api.at, tests/ltdl-libdir.at,
tests/mdemo.at, tests/old-m4-iface.at, tests/pic_flag.at,
tests/resident.at, tests/runpath-in-lalib.at, tests/search-path.at,
tests/static.at, tests/sysroot.at, tests/template.at,
tests/testsuite.at, tests/versioning.at: Replace all hardcoded grep
invocations with $GREP.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2013-10-30 12:39:06 +08:00
|
|
|
AT_CHECK([$GREP 'Could not find object file' stderr],[1],[ignore],[ignore])
|
2009-09-07 13:41:58 +08:00
|
|
|
|
|
|
|
AT_XFAIL_IF([
|
|
|
|
eval "`$LIBTOOL --config | $EGREP '^(whole_archive_flag_spec)='`"
|
|
|
|
case $whole_archive_flag_spec:$host_os in
|
|
|
|
:darwin*) : ;;
|
|
|
|
*) false ;;
|
|
|
|
esac ])
|
|
|
|
|
|
|
|
# Remove any dSYM bundle
|
|
|
|
rm -rf .libs/*.dSYM
|
|
|
|
|
|
|
|
AT_CHECK([echo quit | $LIBTOOL --mode=execute gdb main],
|
|
|
|
[ignore], [ignore], [stderr])
|
tests: use $GREP throughout.
Trust the user, and use $GREP from TESTS_EVVIRONMENT uniformly.
* Makefile.am (TESTS_ENVIRONMENT): Add GREP setting.
* tests/am-subdir.at, tests/archive-in-archive.at, tests/bindir.at,
tests/configure-iface.at, tests/cwrapper.at, tests/darwin.at,
tests/demo.at, tests/destdir.at, tests/dumpbin-symbols.at,
tests/early-libtool.at, tests/execute-mode.at, tests/export-def.at,
tests/export.at, tests/f77demo.at, tests/fcdemo.at, tests/flags.at,
tests/help.at, tests/inherited_flags.at, tests/install.at,
tests/lalib-syntax.at, tests/libtool.at, tests/libtoolize.at,
tests/localization.at, tests/lt_dladvise.at, tests/lt_dlopen.at,
tests/lt_dlopenext.at, tests/ltdl-api.at, tests/ltdl-libdir.at,
tests/mdemo.at, tests/old-m4-iface.at, tests/pic_flag.at,
tests/resident.at, tests/runpath-in-lalib.at, tests/search-path.at,
tests/static.at, tests/sysroot.at, tests/template.at,
tests/testsuite.at, tests/versioning.at: Replace all hardcoded grep
invocations with $GREP.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2013-10-30 12:39:06 +08:00
|
|
|
AT_CHECK([$GREP 'Could not find object file' stderr],[1],[ignore],[ignore])
|
2009-09-07 13:41:58 +08:00
|
|
|
|
|
|
|
AT_CLEANUP
|
2011-01-20 02:53:32 +08:00
|
|
|
|
|
|
|
AT_SETUP([darwin ld warnings changing configure results])
|
|
|
|
|
|
|
|
AT_DATA([configure.ac],
|
|
|
|
[[AC_INIT([ld-stderr], ]AT_PACKAGE_VERSION[, ]AT_PACKAGE_BUGREPORT[)
|
libtoolize: migrate to new AC_CONFIG_MACRO_DIRS api.
* libtoolize.in (func_install_pkgmacro_files): Uee
AC_CONFIG_MACRO_DIRS.
(func_check_macros): Advise using AC_CONFIG_MACRO_DIRS.
(require_ac_macro_dir): Give priority to AC_CONFIG_MACRO_DIRS.
(require_macro_dir): Likewise.
* bootstrap: Give priority to AC_CONFIG_MACRO_DIRS.
* configure.ac: Define dummy AC_CONFIG_MACRO_DIRS for older
Autotools, that is allow bootstrap with current release versions.
Use AC_CONFIG_MACRO_DIRS instead of AC_CONFIG_MACRO_DIR.
* tests/testsuite.at: Source build-aux/extract-trace for access
to func_extract_trace.
(LT_AT_ACLOCAL): Use it to get the AC_CONFIG_MACRO_DIRS argument
to pass manually to aclocal for compatibility with old Automake.
Add a fallback AC_CONFIG_MACRO_DIRS definition to acinclude.m4
in the test directory.
(LT_AT_AUTORECONF): Likewise.
* tests/cdemo.at, tests/configure-iface.at, tests/darwin.at,
tests/demo.at, tests/depdemo.at, tests/early-libtool.at,
tests/libtoolize.at, tests/mdemo.at, tests/no-executables.at,
tests/nonrecursive.at, tests/old-ltdl-iface.at,
tests/recursive.at, tests/subproject.at, tests/tagdemo.at,
tests/template.at: Likewise.
* doc/libtool.texi: Update.
* NEWS: Update.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2012-10-18 21:37:03 +08:00
|
|
|
AC_CONFIG_MACRO_DIRS([m4])
|
2011-01-20 02:53:32 +08:00
|
|
|
AM_INIT_AUTOMAKE([foreign])
|
|
|
|
AC_PROG_CC
|
|
|
|
LT_INIT
|
|
|
|
AC_CONFIG_FILES([Makefile])
|
|
|
|
AC_OUTPUT
|
|
|
|
]])
|
|
|
|
|
|
|
|
AT_DATA([Makefile.am],[
|
|
|
|
ACLOCAL_AMFLAGS = -I m4
|
|
|
|
])
|
|
|
|
LT_AT_LIBTOOLIZE([--copy --force])
|
|
|
|
LT_AT_AUTORECONF([--force --install])
|
|
|
|
LT_AT_CONFIGURE
|
|
|
|
AT_CHECK([./libtool --config],[ignore],[stdout],[ignore])
|
|
|
|
mv stdout expout
|
|
|
|
LT_AT_CONFIGURE([LDFLAGS=-L/there/is/no/dir/here])
|
|
|
|
AT_CHECK([./libtool --config],[ignore],[expout],[ignore])
|
|
|
|
AT_CLEANUP
|
2011-03-05 04:35:14 +08:00
|
|
|
|
|
|
|
AT_SETUP([darwin can lt_dlopen .dylib and .so files])
|
|
|
|
|
|
|
|
AT_KEYWORDS([libltdl dylib])
|
|
|
|
|
|
|
|
# This test requires shared library support.
|
tests: use $GREP throughout.
Trust the user, and use $GREP from TESTS_EVVIRONMENT uniformly.
* Makefile.am (TESTS_ENVIRONMENT): Add GREP setting.
* tests/am-subdir.at, tests/archive-in-archive.at, tests/bindir.at,
tests/configure-iface.at, tests/cwrapper.at, tests/darwin.at,
tests/demo.at, tests/destdir.at, tests/dumpbin-symbols.at,
tests/early-libtool.at, tests/execute-mode.at, tests/export-def.at,
tests/export.at, tests/f77demo.at, tests/fcdemo.at, tests/flags.at,
tests/help.at, tests/inherited_flags.at, tests/install.at,
tests/lalib-syntax.at, tests/libtool.at, tests/libtoolize.at,
tests/localization.at, tests/lt_dladvise.at, tests/lt_dlopen.at,
tests/lt_dlopenext.at, tests/ltdl-api.at, tests/ltdl-libdir.at,
tests/mdemo.at, tests/old-m4-iface.at, tests/pic_flag.at,
tests/resident.at, tests/runpath-in-lalib.at, tests/search-path.at,
tests/static.at, tests/sysroot.at, tests/template.at,
tests/testsuite.at, tests/versioning.at: Replace all hardcoded grep
invocations with $GREP.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2013-10-30 12:39:06 +08:00
|
|
|
AT_CHECK([$LIBTOOL --features | $GREP 'enable shared libraries' || exit 77],
|
2011-03-05 04:35:14 +08:00
|
|
|
[], [ignore])
|
|
|
|
|
|
|
|
eval `$LIBTOOL --config | $EGREP '^shrext_cmds='`
|
|
|
|
|
|
|
|
module=no
|
|
|
|
eval shared_ext=\"$shrext_cmds\"
|
|
|
|
module=yes
|
|
|
|
eval module_ext=\"$shrext_cmds\"
|
|
|
|
|
|
|
|
# Only bother with this test if module extension is different from
|
|
|
|
# shared extension
|
|
|
|
AT_CHECK([test "$shared_ext" != "$module_ext" || exit 77])
|
|
|
|
|
|
|
|
# Skip this test when called from:
|
|
|
|
# make distcheck DISTCHECK_CONFIGURE_FLAGS=--disable-ltdl-install
|
|
|
|
AT_CHECK([case $LIBLTDL in #(
|
tests: migrate tests/sh.test checks to syntax-checks.
Some modernization of the legacy testsuite.
* tests/sh.test: Remove.
* Makefile.am (COMMON_TESTS): Adjust.
* cfg.mk (sc_libtool_m4_cc_basename, sc_prohibit_bracket_as_test)
(sc_prohibit_nested_quotes, sc_prohibit_set_dummy_without_shift)
(sc_prohibit_set_minus_minus, sc_prohibit_test_binary_operators)
(sc_prohibit_test_dollar, sc_prohibit_test_minus_e)
(sc_prohibit_test_unary_operators, sc_prohibit_test_X)
(sc_prohibit_Xsed_withou_X, sc_require_function_nl_brace):
Functionally identical tests to what used to be performed by
sh.test, only with coverage of all files.
* bootstrap, build-aux/edit-readme-alpha,
build-aux/extract-trace, build-aux/getopt.m4sh,
build-aux/ltmain.m4sh, configure.ac, m4/libtool.m4, m4/ltdl.m4,
tests/bindir.at, tests/configure-iface.at, tests/cwrapper.at,
tests/darwin.at, tests/defs.m4sh, tests/demo-hardcode.test,
tests/dlloader-api.at, tests/exceptions.at,
tests/getopt-m4sh.at, tests/lalib-syntax.at, tests/link-2.test,
tests/link-order2.at, tests/loadlibrary.at,
tests/lt_dladvise.at, tests/lt_dlexit.at, tests/lt_dlopen_a.at,
tests/lt_dlopenext.at, tests/need_lib_prefix.at,
tests/nonrecursive.at, tests/recursive.at, tests/resident.at,
tests/standalone.at, tests/static.at, tests/stresstest.at,
tests/subproject.at, tests/sysroot.at, tests/tagtrace.test,
tests/testsuite.at: Fix violations of the new syntax checks.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2011-11-17 00:21:18 +08:00
|
|
|
*/_inst/lib/*) test -f "$LIBLTDL" || (exit 77) ;;
|
2011-03-05 04:35:14 +08:00
|
|
|
esac], [], [ignore])
|
|
|
|
|
|
|
|
prefix=`pwd`/inst
|
|
|
|
libdir=$prefix/lib
|
|
|
|
bindir=$prefix/bin
|
|
|
|
mkdir $prefix $libdir $bindir
|
|
|
|
|
|
|
|
# This code is copied from the Autobook:
|
|
|
|
# <http://sources.redhat.com/autobook/autobook/autobook_169.html>
|
|
|
|
# so if it needs changes, be sure to notify the Autobook authors
|
|
|
|
# about them.
|
|
|
|
|
|
|
|
AT_DATA([simple-module.c],
|
|
|
|
[[
|
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C"
|
|
|
|
#endif
|
|
|
|
int
|
|
|
|
run (const char *argument)
|
|
|
|
{
|
|
|
|
printf ("Hello, %s!\n", argument);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
]])
|
|
|
|
|
|
|
|
AT_DATA([ltdl-loader.c],
|
|
|
|
[[
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#ifndef EXIT_FAILURE
|
|
|
|
# define EXIT_FAILURE 1
|
|
|
|
# define EXIT_SUCCESS 0
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <limits.h>
|
|
|
|
#ifndef PATH_MAX
|
|
|
|
# define PATH_MAX 255
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <string.h>
|
|
|
|
#include <ltdl.h>
|
|
|
|
|
|
|
|
#ifndef MODULE_PATH_ENV
|
|
|
|
# define MODULE_PATH_ENV "MODULE_PATH"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
typedef int entrypoint (const char *argument);
|
|
|
|
|
|
|
|
/* Save and return a copy of the dlerror() error message,
|
|
|
|
since the next API call may overwrite the original. */
|
|
|
|
static char *dlerrordup (char *errormsg);
|
|
|
|
|
|
|
|
int
|
|
|
|
main (int argc, const char *argv[])
|
|
|
|
{
|
|
|
|
char *errormsg = NULL;
|
|
|
|
lt_dlhandle module = NULL;
|
|
|
|
entrypoint *run = NULL;
|
|
|
|
int errors = 0;
|
|
|
|
|
|
|
|
if (argc != 3)
|
|
|
|
{
|
|
|
|
fprintf (stderr, "USAGE: main MODULENAME ARGUMENT\n");
|
|
|
|
exit (EXIT_FAILURE);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Initialise libltdl. */
|
|
|
|
errors = lt_dlinit ();
|
|
|
|
|
|
|
|
/* Set the module search path. */
|
|
|
|
if (!errors)
|
|
|
|
{
|
|
|
|
const char *path = getenv (MODULE_PATH_ENV);
|
|
|
|
|
|
|
|
if (path != NULL)
|
|
|
|
errors = lt_dlsetsearchpath (path);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Load the module. */
|
|
|
|
if (!errors)
|
|
|
|
module = lt_dlopenext (argv[1]);
|
|
|
|
|
|
|
|
/* Find the entry point. */
|
|
|
|
if (module)
|
|
|
|
{
|
|
|
|
run = (entrypoint *) lt_dlsym (module, "run");
|
|
|
|
|
|
|
|
/* In principle, run might legitimately be NULL, so
|
|
|
|
I don't use run == NULL as an error indicator
|
|
|
|
in general. */
|
|
|
|
errormsg = dlerrordup (errormsg);
|
|
|
|
if (errormsg != NULL)
|
|
|
|
{
|
|
|
|
errors = lt_dlclose (module);
|
|
|
|
module = NULL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
errors = 1;
|
|
|
|
|
|
|
|
/* Call the entry point function. */
|
|
|
|
if (!errors)
|
|
|
|
{
|
|
|
|
int result = (*run) (argv[2]);
|
|
|
|
if (result < 0)
|
|
|
|
errormsg = strdup ("module entry point execution failed");
|
|
|
|
else
|
|
|
|
printf ("\t=> %d\n", result);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Unload the module, now that we are done with it. */
|
|
|
|
if (!errors)
|
|
|
|
errors = lt_dlclose (module);
|
|
|
|
|
|
|
|
if (errors)
|
|
|
|
{
|
|
|
|
/* Diagnose the encountered error. */
|
|
|
|
errormsg = dlerrordup (errormsg);
|
|
|
|
|
|
|
|
if (!errormsg)
|
|
|
|
{
|
|
|
|
fprintf (stderr, "%s: dlerror() failed.\n", argv[0]);
|
|
|
|
return EXIT_FAILURE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Finished with ltdl now. */
|
|
|
|
if (!errors)
|
|
|
|
if (lt_dlexit () != 0)
|
|
|
|
errormsg = dlerrordup (errormsg);
|
|
|
|
|
|
|
|
if (errormsg)
|
|
|
|
{
|
|
|
|
fprintf (stderr, "%s: %s.\n", argv[0], errormsg);
|
|
|
|
free (errormsg);
|
|
|
|
exit (EXIT_FAILURE);
|
|
|
|
}
|
|
|
|
|
|
|
|
return EXIT_SUCCESS;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Be careful to save a copy of the error message,
|
|
|
|
since the next API call may overwrite the original. */
|
|
|
|
static char *
|
|
|
|
dlerrordup (char *errormsg)
|
|
|
|
{
|
|
|
|
char *error = (char *) lt_dlerror ();
|
|
|
|
if (error && !errormsg)
|
|
|
|
errormsg = strdup (error);
|
|
|
|
return errormsg;
|
|
|
|
}
|
|
|
|
]])
|
|
|
|
|
|
|
|
: ${LTDLINCL="-I$abs_top_srcdir/libltdl"}
|
|
|
|
: ${LIBLTDL="$abs_builddir/../libltdl/libltdlc.la"}
|
|
|
|
|
|
|
|
CPPFLAGS="$LTDLINCL $CPPFLAGS"
|
|
|
|
LDFLAGS="$LDFLAGS -no-undefined"
|
|
|
|
|
|
|
|
AT_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c simple-module.c],
|
|
|
|
[], [ignore], [ignore])
|
|
|
|
AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o simple-module.la ]dnl
|
|
|
|
[simple-module.lo -rpath $libdir -module -avoid-version],
|
|
|
|
[], [ignore], [ignore])
|
|
|
|
AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o libsimple-dylib.la ]dnl
|
|
|
|
[simple-module.lo -rpath $libdir -avoid-version],
|
|
|
|
[], [ignore], [ignore])
|
|
|
|
AT_CHECK([$CC $CPPFLAGS $CFLAGS -c ltdl-loader.c],
|
|
|
|
[], [ignore], [ignore])
|
|
|
|
AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o ltdl-loader$EXEEXT ]dnl
|
|
|
|
[ltdl-loader.$OBJEXT -dlopen self $LIBLTDL],
|
|
|
|
[], [ignore], [ignore])
|
|
|
|
AT_CHECK([$LIBTOOL --mode=install cp simple-module.la $libdir/simple-module.la], [], [ignore], [ignore])
|
|
|
|
AT_CHECK([$LIBTOOL --mode=install cp libsimple-dylib.la $libdir/libsimple-dylib.la], [], [ignore], [ignore])
|
|
|
|
AT_CHECK([$LIBTOOL --mode=clean rm -f simple-module.la], [], [ignore], [ignore])
|
|
|
|
AT_CHECK([$LIBTOOL --mode=clean rm -f libsimple-dylib.la], [], [ignore], [ignore])
|
|
|
|
|
|
|
|
rm $libdir/simple-module.la
|
|
|
|
rm $libdir/libsimple-dylib.la
|
|
|
|
|
|
|
|
for dir in inst/lib "$libdir"; do
|
|
|
|
LT_AT_EXEC_CHECK([./ltdl-loader], [], [stdout], [ignore],
|
|
|
|
[$dir/simple-module World])
|
tests: use $GREP throughout.
Trust the user, and use $GREP from TESTS_EVVIRONMENT uniformly.
* Makefile.am (TESTS_ENVIRONMENT): Add GREP setting.
* tests/am-subdir.at, tests/archive-in-archive.at, tests/bindir.at,
tests/configure-iface.at, tests/cwrapper.at, tests/darwin.at,
tests/demo.at, tests/destdir.at, tests/dumpbin-symbols.at,
tests/early-libtool.at, tests/execute-mode.at, tests/export-def.at,
tests/export.at, tests/f77demo.at, tests/fcdemo.at, tests/flags.at,
tests/help.at, tests/inherited_flags.at, tests/install.at,
tests/lalib-syntax.at, tests/libtool.at, tests/libtoolize.at,
tests/localization.at, tests/lt_dladvise.at, tests/lt_dlopen.at,
tests/lt_dlopenext.at, tests/ltdl-api.at, tests/ltdl-libdir.at,
tests/mdemo.at, tests/old-m4-iface.at, tests/pic_flag.at,
tests/resident.at, tests/runpath-in-lalib.at, tests/search-path.at,
tests/static.at, tests/sysroot.at, tests/template.at,
tests/testsuite.at, tests/versioning.at: Replace all hardcoded grep
invocations with $GREP.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2013-10-30 12:39:06 +08:00
|
|
|
AT_CHECK([$GREP "Hello, World" stdout], [], [ignore])
|
2011-03-05 04:35:14 +08:00
|
|
|
LT_AT_EXEC_CHECK([./ltdl-loader], [], [stdout], [ignore],
|
|
|
|
[$dir/libsimple-dylib World])
|
tests: use $GREP throughout.
Trust the user, and use $GREP from TESTS_EVVIRONMENT uniformly.
* Makefile.am (TESTS_ENVIRONMENT): Add GREP setting.
* tests/am-subdir.at, tests/archive-in-archive.at, tests/bindir.at,
tests/configure-iface.at, tests/cwrapper.at, tests/darwin.at,
tests/demo.at, tests/destdir.at, tests/dumpbin-symbols.at,
tests/early-libtool.at, tests/execute-mode.at, tests/export-def.at,
tests/export.at, tests/f77demo.at, tests/fcdemo.at, tests/flags.at,
tests/help.at, tests/inherited_flags.at, tests/install.at,
tests/lalib-syntax.at, tests/libtool.at, tests/libtoolize.at,
tests/localization.at, tests/lt_dladvise.at, tests/lt_dlopen.at,
tests/lt_dlopenext.at, tests/ltdl-api.at, tests/ltdl-libdir.at,
tests/mdemo.at, tests/old-m4-iface.at, tests/pic_flag.at,
tests/resident.at, tests/runpath-in-lalib.at, tests/search-path.at,
tests/static.at, tests/sysroot.at, tests/template.at,
tests/testsuite.at, tests/versioning.at: Replace all hardcoded grep
invocations with $GREP.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2013-10-30 12:39:06 +08:00
|
|
|
AT_CHECK([$GREP "Hello, World" stdout], [], [ignore])
|
2011-03-05 04:35:14 +08:00
|
|
|
done
|
|
|
|
|
|
|
|
AT_CLEANUP
|