mirror of
git://git.savannah.gnu.org/libtool.git
synced 2024-11-27 06:09:57 +08:00
193 lines
4.3 KiB
Plaintext
193 lines
4.3 KiB
Plaintext
|
# Hand crafted tests for GNU Libtool. -*- Autotest -*-
|
||
|
# Copyright 2005 Free Software Foundation, Inc.
|
||
|
|
||
|
# This program 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, or (at your option)
|
||
|
# any later version.
|
||
|
|
||
|
# This program 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 this program; if not, write to the Free Software
|
||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||
|
# 02110-1301, USA.
|
||
|
|
||
|
|
||
|
AT_BANNER([Support for older m4 interface.])
|
||
|
|
||
|
########################################################################
|
||
|
##
|
||
|
## TODO:
|
||
|
## test all the interfaces currently supported by AU_DEFUN/AU_ALIAS
|
||
|
## test autoupdate on all of those tests' configure.in
|
||
|
##
|
||
|
########################################################################
|
||
|
|
||
|
## -------------------------------------------------------- ##
|
||
|
## An overtly simple old-school AM_PROG_LIBTOOL invocation. ##
|
||
|
## -------------------------------------------------------- ##
|
||
|
|
||
|
AT_SETUP([AM_PROG_LIBTOOL])
|
||
|
|
||
|
AT_DATA([configure.in],
|
||
|
[[AC_INIT(old.c)
|
||
|
AM_PROG_LIBTOOL
|
||
|
AC_OUTPUT(Makefile)
|
||
|
]])
|
||
|
|
||
|
AT_DATA([Makefile.in],
|
||
|
[[COMPILE = @CC@ @CPPFLAGS@ @CFLAGS@
|
||
|
LINK = @CC@ @CFLAGS@ @LDFLAGS@ -o $@
|
||
|
SHELL = @SHELL@
|
||
|
|
||
|
all: old@EXEEXT@
|
||
|
|
||
|
old@EXEEXT@: old.@OBJEXT@
|
||
|
$(LINK) old.@OBJEXT@
|
||
|
|
||
|
.SUFFIXES:
|
||
|
.SUFFIXES: .c .@OBJEXT@
|
||
|
|
||
|
.c.@OBJEXT@:
|
||
|
$(COMPILE) -c $<
|
||
|
]])
|
||
|
|
||
|
|
||
|
AT_DATA([old.c],
|
||
|
[[#include <stdio.h>
|
||
|
|
||
|
int main (int argc, char **argv)
|
||
|
{
|
||
|
printf ("Hello, World!");
|
||
|
return 0;
|
||
|
}
|
||
|
]])
|
||
|
|
||
|
test -f ltmain.sh || LT_AT_LIBTOOLIZE([--install])
|
||
|
|
||
|
# This is slightly bogus, since only libtool.m4 was required in aclocal.m4
|
||
|
# with libtool-1.5x...
|
||
|
test -f aclocal.m4 \
|
||
|
|| cat "$macrodir/libtool.m4" "$macrodir/ltoptions.m4" \
|
||
|
"$macrodir/ltsugar.m4" "$macrodir/ltversion.m4" > aclocal.m4 \
|
||
|
|| exit 1
|
||
|
|
||
|
test -f configure || $AUTOCONF --force || exit 1
|
||
|
test -f Makefile || ./configure || exit 1
|
||
|
${MAKE-make}
|
||
|
|
||
|
LT_AT_EXEC_CHECK([./old], 0, [Hello, World!])
|
||
|
|
||
|
AT_CLEANUP
|
||
|
|
||
|
|
||
|
## --------------------------- ##
|
||
|
## An old style libltdl build. ##
|
||
|
## --------------------------- ##
|
||
|
|
||
|
AT_SETUP([AC_WITH_LTDL])
|
||
|
|
||
|
AT_DATA([configure.in],
|
||
|
[[AC_INIT(old.c)
|
||
|
AC_PROG_MAKE_SET
|
||
|
AM_PROG_LIBTOOL
|
||
|
AC_WITH_LTDL
|
||
|
AC_OUTPUT(Makefile)
|
||
|
]])
|
||
|
|
||
|
AT_DATA([Makefile.in],
|
||
|
[[top_builddir = .
|
||
|
COMPILE = @CC@ @CPPFLAGS@ @INCLTDL@ @CFLAGS@
|
||
|
LTCOMPILE = @LIBTOOL@ --mode=compile $(COMPILE)
|
||
|
LTLINK = @LIBTOOL@ --mode=link @CC@ -no-undefined @CFLAGS@ @LDFLAGS@ -o $@
|
||
|
SHELL = @SHELL@
|
||
|
@SET_MAKE@
|
||
|
|
||
|
TARGETS = libltdl/libltdlc.la module.la old@EXEEXT@
|
||
|
|
||
|
all: $(TARGETS)
|
||
|
|
||
|
libltdl/libltdlc.la:
|
||
|
cd libltdl && ./configure && $(MAKE)
|
||
|
|
||
|
module.la: module.lo
|
||
|
$(LTLINK) module.lo -module -avoid-version -rpath /dev/null
|
||
|
|
||
|
old@EXEEXT@: old.@OBJEXT@
|
||
|
$(LTLINK) old.@OBJEXT@ -dlopen module.la @LIBLTDL@
|
||
|
|
||
|
.SUFFIXES:
|
||
|
.SUFFIXES: .c .@OBJEXT@ .lo
|
||
|
|
||
|
.c.@OBJEXT@:
|
||
|
$(COMPILE) -c $<
|
||
|
|
||
|
.c.lo:
|
||
|
$(LTCOMPILE) -c -o $@ $<
|
||
|
]])
|
||
|
|
||
|
AT_DATA([old.c],
|
||
|
[[#include <stdio.h>
|
||
|
#include "ltdl.h"
|
||
|
|
||
|
int main (int argc, char **argv)
|
||
|
{
|
||
|
lt_dlhandle module;
|
||
|
const char *(*foo) (const char *) = 0;
|
||
|
int status = 1;
|
||
|
|
||
|
LTDL_SET_PRELOADED_SYMBOLS();
|
||
|
if (lt_dlinit() != 0) {
|
||
|
fprintf (stderr, "error during initialisation: %s\n", lt_dlerror());
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
module = lt_dlopen("module.la");
|
||
|
if (!module) {
|
||
|
fprintf (stderr, "error dlopening module.la: %s\n", lt_dlerror());
|
||
|
goto finish;
|
||
|
}
|
||
|
|
||
|
foo = (const char *(*)(const char *)) lt_dlsym (module, "foo");
|
||
|
if (!foo) {
|
||
|
fprintf (stderr, "error fetching func: %s\n", lt_dlerror());
|
||
|
goto finish;
|
||
|
}
|
||
|
|
||
|
printf ("%s", (*foo) ("foo bar"));
|
||
|
status = 0;
|
||
|
|
||
|
finish:
|
||
|
if (lt_dlexit() != 0) {
|
||
|
fprintf (stderr, "error during finalisation: %s\n", lt_dlerror());
|
||
|
status = 1;
|
||
|
}
|
||
|
|
||
|
return status;
|
||
|
}
|
||
|
]])
|
||
|
|
||
|
AT_DATA([module.c],
|
||
|
[[const char *
|
||
|
foo (const char *str)
|
||
|
{
|
||
|
while (*str++ != ' ')
|
||
|
;
|
||
|
return str;
|
||
|
}
|
||
|
]])
|
||
|
|
||
|
test -f ltmain.sh || LT_AT_LIBTOOLIZE([--ltdl --install])
|
||
|
test -f aclocal.m4 || $ACLOCAL -I libltdl/m4 || exit 1
|
||
|
test -f configure || $AUTOCONF --force || exit 1
|
||
|
test -f Makefile || ./configure || exit 1
|
||
|
${MAKE-make}
|
||
|
|
||
|
LT_AT_EXEC_CHECK([./old], 0, [bar])
|
||
|
|
||
|
AT_CLEANUP
|