*** empty log message ***

This commit is contained in:
Gordon Matzigkeit 1997-04-01 19:53:01 +00:00 committed by Gordon Matzigkeit
parent ef1ef543d1
commit 9276ad0be3
36 changed files with 369 additions and 277 deletions

View File

@ -1,5 +1,10 @@
Tue Apr 1 10:01:20 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
* Makefile.am (EXTRA_DIST): Distribute libtool.pkg.
* Shameless plug: Changed source code management system from CVS
to PRCS.
* libtool.scm: Initial Guile implementation of libtool.
* ltmain.sh.in: An unexpected inconsistency in my whole approach
@ -33,7 +38,8 @@ Tue Apr 1 10:01:20 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
I was hoping to get libtool 1.0 out the door by early April, but
now it looks like it will take at least another year before it'll
be usable by the public at large. April fools.
be usable by the public at large. April fools. libtool.scm
doesn't exist yet, either.
* ltconfig.in (verify_host): Remove redundant `Transform *-*-linux*
to *-*-linux-gnu*'. From Bruno Haible.

View File

@ -11,7 +11,7 @@ aclocal_macros = libtool.m4 replfunc.m4
# Distribute ltconfig and ltmain.sh so that the demo directory works.
EXTRA_DIST = $(aclocal_macros) libtoolize.in ltconfig ltconfig.in \
ltmain.sh ltmain.sh.in README-automake
ltmain.sh ltmain.sh.in README-automake libtool.pkg
CLEANFILES = libtool libtoolize
MAINTAINERCLEANFILES = ltconfig ltmain.sh

4
NEWS
View File

@ -1,7 +1,9 @@
NEWS - list of user-visible changes between releases of GNU libtool.
New in 0.9c:
New in 0.9d:
* Bug fixes.
* Support for convenience libraries made of libtool objects.
* New `-whole-archive' and `-no-whole-archive' linking flags.
* New Autoconf macros, AM_REPLACE_FUNCS, AM_FUNC_ALLOCA, AM_FUNC_MEMCMP,
AM_STRUCT_ST_BLOCKS that set and substitute LTLIBOBJS and LTALLOCA.
* Automake support for Libtool now uses the LTLIBRARIES primary. See

View File

@ -2,29 +2,32 @@
canonical host name compiler libtool results
release
----------------------------------------------------------------------
alpha-dec-osf3.2 gcc 0.7a fail
alpha-dec-osf3.2 cc 0.7a fail
hppa1.1-hp-hpux9.05 gcc 0.7a fail
hppa1.1-hp-hpux9.05 cc 0.7a fail
hppa1.1-hp-hpux10.10 cc 0.7a fail
i386-unknown-linux gcc 0.7c ok
i386-unknown-netbsd1.2 gcc 0.7c ok
mips-sgi-irix5.3 gcc 0.7a fail
mips-sgi-irix5.3 cc 0.7a fail
mips-sgi-irix6.2 cc -32 0.7a fail
mips-sgi-irix6.2 cc -n32 0.7a fail
rs6000-ibm-aix3.2.5 gcc 0.7c ok*
alpha-dec-osf3.2 cc 0.8 ok
alpha-dec-osf3.2 gcc 0.8 ok
hppa1.1-hp-hpux9.05 cc 0.8 ok*
hppa1.1-hp-hpux9.05 gcc 0.8 ok*
hppa1.1-hp-hpux10.10 cc 0.8 ok
i386-unknown-freebsd2.1.5 gcc 0.5 ok
i386-unknown-gnu0.0 gcc 0.5 ok
i386-unknown-linux2.0.16 gcc 0.8 ok
i386-unknown-netbsd1.2 gcc 0.8 ok
mips-sgi-irix5.3 cc 0.8 ok
mips-sgi-irix5.3 gcc 0.8 ok
mips-sgi-irix6.2 cc -32 0.8 ok
mips-sgi-irix6.2 cc -n32 0.8 fail
rs6000-ibm-aix3.2.5 xlc 0.7c ok
rs6000-ibm-aix4.1.4.0 gcc 0.7c ok**
rs6000-ibm-aix4.1.4.0 xlc 0.7c ok**
sparc-sun-sunos4.1.3_U1 gcc 0.7a ok
rs6000-ibm-aix3.2.5 gcc 0.7c ok**
rs6000-ibm-aix4.1.4.0 xlc 0.8 ok
rs6000-ibm-aix4.1.4.0 gcc 0.7c ok
sparc-sun-linux2.1.14 gcc 0.7c ok
sparc-sun-sunos4.1.3_U1 cc 0.7a ok
sparc-sun-solaris2.4 gcc 0.7a ok
sparc-sun-sunos4.1.3_U1 gcc 0.7a ok
sparc-sun-solaris2.4 cc 0.7a ok
sparc-sun-solaris2.5.1 gcc 0.7c ok
sparc-sun-solaris2.4 gcc 0.7a ok
sparc-sun-solaris2.5.1 gcc 0.8 ok
----------------------------------------------------------------------
* GCC 2.6.1 prints warnings about multiple symbol definitions.
* `sh internal 2K buffer overflow', under investigation. In the
meantime, set the CONFIG_SHELL environment variable to /usr/bin/ksh.
** Autoconf 2.12 uses /usr/bin/installbsd, which is buggy, so that
demo-inst fails.
** GCC 2.6.1 prints warnings about multiple symbol definitions.

2
README
View File

@ -11,7 +11,7 @@ Libtool supports building static libraries on all platforms.
Shared library support has been implemented for these platforms:
AIX 3.x (*-*-aix3*)
AIX 4.x (*-*-aix4*)
Digital/UNIX 3.x, a.k.a. OSF/1 (*-*-osf3*)
Digital/UNIX 3.x, 4.x, a.k.a. OSF/1 (*-*-osf3*, *-*-osf4*)
FreeBSD 2.x (*-*-freebsd*)
HP-UX 9.x, 10.x (*-*-hpux9*, *-*-hpux10*)
IRIX 5.x, 6.x (*-*-irix5*, *-*-irix6*)

View File

@ -3,14 +3,3 @@ This is an alpha testing release of GNU libtool.
Please do not send any bug reports or questions about it to public
forums (such as GNU newsgroups and mailing lists), send them directly
to Gordon Matzigkeit <gord@gnu.ai.mit.edu>.
There are several references to a future release of Automake in
libtool, that may not work with your own copy of Automake. Gordon is
working closely with Tom Tromey to integrate libtool patches into
Automake.
In the meantime, just ignore these references, or use Gord's
modified version of automake-1.1i that supports all the features
described in the libtool manual:
<URL:http://www.enci.ucalgary.ca/~gord/src/automake-1.1j.tar.gz>

View File

@ -1,6 +1,7 @@
There are several references to a future release of Automake in
libtool, that may not work with your own copy of Automake. Only
releases of Automake after automake-1.1j work with libtool.
releases of Automake after automake-1.1m work with libtool as
documented in the manual.
You can find the latest Automake prerelease (warning: it may have
bugs) at:
@ -13,19 +14,3 @@ mirror.
Thanks,
--Gord
** If you have automake-1.1k, you'll need to apply the following patch
before installing it:
diff -u automake-1.1k/automake.in.orig automake-1.1k/automake.in
--- automake-1.1k/automake.in.orig Sun Dec 8 04:03:10 1996
+++ automake-1.1k/automake.in Sun Dec 8 04:03:12 1996
@@ -4294,7 +4294,7 @@
{
# Note that we explicitly set the mode, to avoid
# lossage if the program name isn't what we expect.
- $more_xform = 's/\@LIBTOOL\@/$(LIBTOOL) --mode=install/;';
+ $more_xform = 's/\@LIBTOOL\@/\$(LIBTOOL) --mode=install/;';
}
else
{

1
THANKS
View File

@ -3,6 +3,7 @@ these people:
Akim Demaille <demaille@inf.enst.fr>
Bruno Haible <haible@ilog.fr>
Carl D. Roth <roth@cse.ucsc.edu>
Charles S. Kerr <cskerr@delenn.jccbi.gov>
Joel Cannon <cannon@alpha.centenary.edu>
Karl Berry <kb@cs.umb.edu>

15
TODO
View File

@ -1,14 +1,13 @@
* Need to change `-rpath FOO -rpath BAR' to `-rpath FOO:BAR' with at
least OSF/1 ld.
* Document convenience libraries, -whole-archive, and
-no-whole-archive.
* Document the -export-dynamic flag, and the new dlname mode.
For 1.1:
* Complete the -export-dynamic flag, and the new dlname mode.
* Complete convenience libraries made of libtool objects. Document
-whole-archive and -no-whole-archive. We also need a way to use these
convenience libraries just to resolve symbols, rather than the
(simplistic) whole-archive and no-whole-archive.
* We also need a way to use convenience libraries just to resolve
symbols, rather than the (simplistic) whole-archive and
no-whole-archive.
* Write libtool not to be dependent on the compiler used to configure
it.

View File

@ -1,6 +1,6 @@
dnl Process this file with autoconf to create configure.
AC_INIT(ltmain.sh.in)
AM_INIT_AUTOMAKE(libtool,0.9d)
AM_INIT_AUTOMAKE(libtool,0.9e)
pkgdatadir='${datadir}/libtool'
AC_SUBST(pkgdatadir)

View File

@ -1,4 +1,4 @@
# A brief demonstration of using Automake with Libtool.
# A brief demonstration of using Automake with Libtool. -*-Makefile-*-
AUTOMAKE_OPTIONS = foreign
EXTRA_DIST = $(TESTS) acinclude.m4

View File

@ -5,5 +5,8 @@ AM_INIT_AUTOMAKE(hell,1.0)
AC_PROG_CC
AM_PROG_LIBTOOL
dnl Check for the math library.
AC_CHECK_LIB(m, cos)
dnl Output the makefile
AC_OUTPUT(Makefile)

View File

@ -1,5 +1,6 @@
/* foo.c -- trivial test function for libfoo
Copyright (C) 1996 Free Software Foundation, Inc.
Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
This file is part of GNU Libtool.
This program is free software; you can redistribute it and/or modify
@ -16,11 +17,13 @@ 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
/* Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu> */
#include "foo.h"
#include <stdio.h>
#include <math.h>
/* Give a global variable definition. */
int nothing;
int
foo ()
{

View File

@ -1,7 +1,7 @@
/* foo.h -- interface to the libfoo library
Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of GNU Libtool.
Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
This file is part of GNU Libtool.
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
@ -48,10 +48,11 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#define HELLO_RET 0xe110
#define FOO_RET 0xf00
/* Function declarations. Note the wonderful use of the above macros. */
/* Declarations. Note the wonderful use of the above macros. */
__BEGIN_DECLS
int foo __P((void));
int hello __P((void));
extern int nothing;
__END_DECLS
#endif /* !_FOO_H_ */

View File

@ -21,7 +21,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdio.h>
int
hello (void)
hello ()
{
printf ("** This is not GNU Hello. There is no built-in mail reader. **\n");
return HELLO_RET;

View File

@ -27,6 +27,9 @@ main (argc, argv)
{
printf ("Welcome to GNU Hell!\n");
/* Try assigning to the nothing variable */
nothing = 1;
/* Just call the functions and check return values. */
if (foo () != FOO_RET)
return 1;

View File

@ -1,4 +1,4 @@
## Process Makefile.am with automake to create Makefile.in.
## Process Makefile.am with automake to create Makefile.in. -*-Makefile-*-
##
## Copyright (C) 1996 Free Software Foundation, Inc.
## This Makefile.am is free software; the Free Software Foundation

View File

@ -6,7 +6,7 @@
@c %**end of header
@include version.texi
@set BUGADDR Gord Matzigkeit <gord@@gnu.ai.mit.edu>
@set BUGADDR Gordon Matzigkeit <gord@@gnu.ai.mit.edu>
@dircategory GNU programming tools
@direntry
@ -77,8 +77,12 @@ except that this permission notice may be stated in a translation
approved by the Free Software Foundation.
@end titlepage
@c Index of Autoconf macros.
@defindex am
@c Put everything in one index (arbitrarily chosen to be the concept index).
@syncodeindex vr cp
@syncodeindex fn cp
@synindex pg cp
@ifinfo
@ -101,9 +105,10 @@ version @value{VERSION}.
* Other Languages:: Using libtool without a C compiler.
* Troubleshooting:: When libtool doesn't work as advertised.
* Maintaining:: Information used by the libtool maintainer.
* Index:: Index of concepts, variables, and programs.
* Index:: Full index.
@detailmenu
--- The Detailed Node Listing ---
Introduction
@ -146,6 +151,7 @@ Configuring Libtool
Including Libtool with Your Package
* Invoking libtoolize:: @file{libtoolize} command line options.
* Autoconf .o Macros:: Autoconf macros that set object file names.
Library Interface Versions
@ -1051,7 +1057,7 @@ that your users can install hassle-free shared libraries.
@section Writing Makefile Rules for Libtool
Libtool is fully integrated with Automake (@pxref{Top, , The Automake
Manual, automake.info, The Automake Manual}), starting with Automake
Manual, automake, The Automake Manual}), starting with Automake
version 1.2.
If you want to use libtool in a regular @file{Makefile} (or
@ -1076,8 +1082,8 @@ was generated automatically from the @file{Makefile.am} by Automake).
@node Using Automake
@section Using Automake with Libtool
Libtool library support fits conveniently into Automake's understanding
of what a @samp{PROGRAM} is.
Libtool library support is implemented under the @samp{LTLIBRARIES}
primary.
Here are some samples from the Automake @file{Makefile.am} in the
libtool distribution's @file{demo} subdirectory.
@ -1104,15 +1110,21 @@ you want to pass to libtool while linking @samp{program} (such as
Building a libtool library is almost as trivial@dots{} note the use of
@samp{libhello_la_LDFLAGS} to pass the @samp{-version-info}
(@pxref{Versioning}) and @samp{-rpath} options to libtool:
(@pxref{Versioning}) option to libtool:
@example
# Build a libtool library, libhello.la for installation in libdir.
lib_PROGRAMS = libhello.la
lib_LTLIBRARIES = libhello.la
libhello_la_SOURCES = hello.c foo.c
libhello_la_LDFLAGS = -version-info 3:12:1 -rpath $(libdir)
libhello_la_LDFLAGS = -version-info 3:12:1
@end example
The @samp{-rpath} option is passed automatically by Automake, so you
should not specify it.
@xref{A Shared Library, Building a Shared Library, The Automake Manual,
automake, The Automake Manual}, for more information.
@node Configuring
@section Configuring Libtool
@ -1189,22 +1201,25 @@ guessed by running @file{config.guess}.
@file{ltconfig} also recognizes the following environment variables:
@table @var
@item CC
@defvar CC
The C compiler that will be used by the generated @file{libtool}.
@end defvar
@item CFLAGS
@defvar CFLAGS
Compiler flags used to generate standard object files.
@end defvar
@item CPPFLAGS
@defvar CPPFLAGS
C preprocessor flags.
@end defvar
@item LD
@defvar LD
The system linker to use (if the generated @file{libtool} requires one).
@end defvar
@item RANLIB
@defvar RANLIB
Program to use rather than checking for @file{ranlib}.
@end table
@end defvar
@node ltconfig Example
@subsection Using @file{ltconfig}
@ -1253,24 +1268,28 @@ burger$
@node AM_PROG_LIBTOOL
@subsection The @code{AM_PROG_LIBTOOL} macro
@amindex AM_PROG_LIBTOOL
If you are using GNU Autoconf (or Automake), you should add a call to
@code{AM_PROG_LIBTOOL} to your @file{configure.in} file. This macro
offers seamless integration between the @file{configure} script and
@file{ltconfig}.
@file{ltconfig}:
@code{AM_PROG_LIBTOOL} also adds support for the @samp{--enable-shared}
and @samp{--disable-shared} @file{configure} flags.
@defmac AM_PROG_LIBTOOL
Add support for the @samp{--enable-shared} and @samp{--disable-shared}
@file{configure} flags. Invoke @file{ltconfig} with the correct
arguments to configure the package.@footnote{@code{AM_PROG_LIBTOOL}
requires that you define the Makefile variable @code{top_builddir} in
your @file{Makefile.in}. Automake does this automatically, but Autoconf
users should set it to the relative path to the top of your build
directory (@file{../..}, for example).}
@end defmac
When you invoke the @file{libtoolize} program (@pxref{Invoking
libtoolize}), it will tell you where to find a definition of
@code{AM_PROG_LIBTOOL}. If you use Automake, the @file{aclocal} program
will automatically add @code{AM_PROG_LIBTOOL} support to your
@file{configure} script.@footnote{@code{AM_PROG_LIBTOOL} requires that
you define the Makefile variable @code{top_builddir} in your
@file{Makefile.in}. Automake does this automatically, but Autoconf
users should set it to the relative path to the top of your build
directory (@file{../..}, for example).}
@file{configure} script.
@node Distributing
@section Including Libtool with Your Package
@ -1300,6 +1319,7 @@ use the @file{libtoolize} program.
@menu
* Invoking libtoolize:: @file{libtoolize} command line options.
* Autoconf .o Macros:: Autoconf macros that set object file names.
@end menu
@node Invoking libtoolize
@ -1350,12 +1370,49 @@ Print @file{libtoolize} version information and exit.
If @file{libtoolize} detects an explicit call to
@code{AC_CONFIG_AUX_DIR} (@pxref{Input, , The Autoconf Manual,
autoconf.info, The Autoconf Manual}) in your @file{configure.in}, it
autoconf, The Autoconf Manual}) in your @file{configure.in}, it
will put the files in the specified directory.
@file{libtoolize} displays hints for adding libtool support to your
package, as well.
@node Autoconf .o Macros
@subsection Autoconf @samp{.o} Macros
The Autoconf package comes with a few macros that run tests, then set a
variable corresponding to the name of an object file. Sometimes it is
necessary to use corresponding names for libtool objects.
So, included with libtool are convenience macros that do this kind of
work:
@defmac AM_REPLACE_FUNCS (@var{function}@dots{})
Same as @code{AC_REPLACE_FUNCS} (@pxref{Generic Functions, Generic
Function Checks, The Autoconf Manual, autoconf, The Autoconf
Manual}), except it also adds @samp{@var{function}.lo} to the value of
the output variable @code{LTLIBOBJS}.
@end defmac
@defmac AM_FUNC_ALLOCA
Same as @code{AC_FUNC_ALLOCA} (@pxref{Particular Functions, Particular
Function Checks, The Autoconf Manual, autoconf, The Autoconf
Manual}), but also sets the output variable @code{LTALLOCA} to
@samp{alloca.lo}.
@end defmac
@defmac AM_FUNC_MEMCMP
Same as @code{AC_FUNC_MEMCMP} (@pxref{Particular Functions, Particular
Function Checks, The Autoconf Manual, autoconf, The Autoconf
Manual}), except it also adds @samp{memcmp.lo} to the value of the output
variable @code{LTLIBOBJS}.
@end defmac
@defmac AM_STRUCT_ST_BLOCKS
Same as @code{AC_STRUCT_ST_BLOCKS} (@pxref{Structures, Structures, The
Autoconf Manual, autoconf, The Autoconf Manual}), except it also
adds @samp{fileblocks.lo} to the output variable @code{LTLIBOBJS}.
@end defmac
@node Versioning
@chapter Library Interface Versions
@ -1830,7 +1887,7 @@ First, check the documentation and help screens to make sure that the
behaviour you think is a problem is not already mentioned as a feature.
Then, you should read the Emacs guide to reporting bugs (@pxref{Bugs, , The
Emacs Manual, emacs.info, The Emacs Manual}). Some of the details
Emacs Manual, emacs, The Emacs Manual}). Some of the details
listed there are specific to Emacs, but the priciple behind them is a
general one.
@ -1893,10 +1950,6 @@ platforms where it claims to support shared libraries:
@include platforms.texi
@end example
Libtool versions ending in a single letter (such as @samp{0.7a})
designate beta releases. So, @samp{0.7a} comes after public release
@samp{0.7}, but before @samp{0.8}.
@node Platform Quirks
@section Platform Quirks
@ -2029,105 +2082,140 @@ The @file{libtool} script is generated by @file{ltconfig}
simply sets shell variables, then sources the libtool backend,
@file{ltmain.sh}.
Here is a listing of each of these variable, and how it is used within
@file{ltmain.sh}:
Here is a listing of each of these variables, and how they are used
within @file{ltmain.sh}:
@table @samp
@item LD
@defvar LD
The name of the linker that libtool should use internally for reloadable
linking and possibly shared libraries.
@end defvar
@item LTCONFIG_VERSION
@defvar LTCONFIG_VERSION
This is set to the version number of the @file{ltconfig} script, to
prevent mismatches between the configuration information in
@file{libtool}, and how that information is used in @file{ltmain.sh}.
@end defvar
@item RANLIB
@defvar RANLIB
Set to the name of the ranlib program, if any.
@end defvar
@item archive_cmds
@itemx old_archive_cmds
@defvar archive_cmds
@defvarx old_archive_cmds
Commands used to create shared and static libraries, respectively.
@end defvar
@item build_libtool_libs
@defvar build_libtool_libs
Whether libtool should build shared libraries on this system. Set to
@samp{yes} or @samp{no}.
@end defvar
@item build_old_libs
@defvar build_old_libs
Whether libtool should build static libraries on this system. Set to
@samp{yes} or @samp{no}.
@end defvar
@item finish_cmds
@defvar finish_cmds
Commands to tell the dynamic linker to find shared libraries a
directory.
@end defvar
@item hardcode_shlibpath_var
@defvar hardcode_action
Either @samp{immediately} or @samp{relink}, depending on whether shared
library paths can be hardcoded into executables before they are installed,
or if they need to be relinked.
@end defvar
@defvar hardcode_direct
Set to @samp{yes} or @samp{no}, depending on whether the linker
hardcodes directories specified by setting @samp{$shlibpath_var} into
the resulting executable.
hardcodes directories if a library is directly specified on the command
line (such as @samp{@var{dir}/lib@var{name}.a}).
@end defvar
@item hardcode_minus_L
@defvar hardcode_libdir_flag_spec
Flag to hardcode a @var{libdir} variable into a binary, so that the
dynamic linker searches @var{libdir} for shared libraries at runtime.
@end defvar
@defvar hardcode_minus_L
Set to @samp{yes} or @samp{no}, depending on whether the linker
hardcodes directories specified by @samp{-L} flags into the resulting
executable.
@end defvar
@item host
@itemx host_alias
@defvar hardcode_shlibpath_var
Set to @samp{yes} or @samp{no}, depending on whether the linker
hardcodes directories specified by setting @samp{$shlibpath_var} into
the resulting executable.
@end defvar
@defvar host
@defvarx host_alias
For information purposes, set to the specified and canonical names of
the system that libtool was configured for.
@end defvar
@item lib_names
@defvar library_names_spec
A list of shared library names. The first name is the name of the file,
the rest are symbolic links to the file.
the rest are symbolic links to the file. The last name in the list is
the one that the linker finds when given @samp{-l@var{name}}.
@end defvar
@item link_rpath_flag
Linker flag to specify a runtime search path for the dynamic linker.
@item link_static_flag
@defvar link_static_flag
Linker flag (passed through the C compiler) used to prevent dynamic
linking.
@end defvar
@item pic_flag
@defvar pic_flag
Any additional compiler flags for building library object files.
@end defvar
@item postinstall_cmds
@item old_postinstall_cmds
@defvar postinstall_cmds
@defvarx old_postinstall_cmds
Commands run after installing a shared or static librar, respectively.
@end defvar
@item reload_cmds
@itemx reload_flag
@defvar reload_cmds
@defvarx reload_flag
Commands to create a reloadable object.
@end defvar
@item shlibpath_var
@defvar shlibpath_var
The environment variable that tells the dynamic linker where to find
shared libraries.
@end defvar
@item striplib
@itemx old_striplib
@defvar striplib
@defvarx old_striplib
Programs to strip shared and static libraries, respectively.@footnote{In
the current implementation, libtool does not use any programs to strip
libraries. Support will be added after it is clear how to write a
portable test for library stripping programs.}
@end defvar
@item soname_spec
@defvar soname_spec
The name coded into shared libraries, if different from the real name of
the file.
@end defvar
@item version_type
@defvar version_type
The library version numbering type. One of @samp{libtool},
@samp{linux}, @samp{osf}, @samp{sunos}, or @samp{none}.
@end defvar
@item wl
@defvar wl
The C compiler flag that allows libtool to pass a flag directly to the
linker. Used as: @samp{$@{wl@}@var{some-flag}}.
@end table
@end defvar
Variables ending in @samp{_cmds} may contain a semicolon-separated list
of commands that are evaluated one after another. If any of the
of commands that are @code{eval}'ed one after another. If any of the
commands return a nonzero exit status, libtool generally exits with an
error message.
Variables ending in @samp{_spec} are @code{eval}'ed before being used by
libtool.
@node Index
@unnumbered Index

View File

@ -1,34 +1,35 @@
--------------------------------------------------------
canonical host name compiler libtool results
release
canonical host name compiler libtool results
release
--------------------------------------------------------
alpha-dec-osf3.2 cc 0.8 ok
alpha-dec-osf3.2 gcc 0.8 ok
alpha-dec-osf4.0 cc 0.9 ok
alpha-dec-osf4.0 gcc 0.9 ok
hppa1.1-hp-hpux9.05 cc 0.8 ok
hppa1.1-hp-hpux9.05 gcc 0.8 ok
hppa1.1-hp-hpux10.10 cc 0.8 ok
i386-unknown-freebsd2.1.5 gcc 0.5 ok
i386-unknown-gnu0.0 gcc 0.5 ok
i386-unknown-netbsd1.2 gcc 0.9a ok
i586-unknown-linux1.3.20 gcc 0.9 ok
i586-unknown-linux2.0.16 gcc 0.9a ok
mips-sgi-irix5.3 cc 0.8 ok
mips-sgi-irix5.3 gcc 0.8 ok
mips-sgi-irix6.2 cc -32 0.9 ok
mips-sgi-irix6.2 cc -n32 0.9 ok
powerpc-ibm-aix4.1.4.0 xlc 0.9a ok
powerpc-ibm-aix4.1.4.0 gcc 0.9a ok
rs6000-ibm-aix3.2.5 xlc 0.9 fail
rs6000-ibm-aix3.2.5 gcc 0.9 fail
rs6000-ibm-aix4.1.4.0 xlc 0.9 ok
rs6000-ibm-aix4.1.4.0 gcc 0.9 fail
sparc-sun-linux2.1.23 gcc 0.9 ok
sparc-sun-sunos4.1.3_U1 cc 0.9 ok
sparc-sun-sunos4.1.3_U1 gcc 0.9 ok
sparc-sun-solaris2.4 cc 0.9 ok
sparc-sun-solaris2.4 gcc 0.9 ok
sparc-sun-solaris2.5 cc 0.9 ok
sparc-sun-solaris2.5 gcc 0.9a ok
alpha-dec-osf3.2 cc 0.8 ok
alpha-dec-osf3.2 gcc 0.8 ok
alpha-dec-osf4.0 cc 0.9 ok
alpha-dec-osf4.0 gcc 0.9 ok
alpha-unknown-linux gcc 0.9d ok
hppa1.1-hp-hpux9.05 cc 0.8 ok
hppa1.1-hp-hpux9.05 gcc 0.8 ok
hppa1.1-hp-hpux10.10 cc 0.8 ok
i386-unknown-freebsd2.1.5 gcc 0.5 ok
i386-unknown-gnu0.0 gcc 0.5 ok
i386-unknown-netbsd1.2 gcc 0.9d ok
i586-unknown-linux1.3.20 gcc 0.9 ok
i586-unknown-linux2.0.16 gcc 0.9d ok
mips-sgi-irix5.3 cc 0.8 ok
mips-sgi-irix5.3 gcc 0.8 ok
mips-sgi-irix6.2 cc -32 0.9 ok
mips-sgi-irix6.2 cc -n32 0.9 ok
powerpc-ibm-aix4.1.4.0 xlc 0.9d ok
powerpc-ibm-aix4.1.4.0 gcc 0.9a ok
rs6000-ibm-aix3.2.5 xlc 0.9 fail
rs6000-ibm-aix3.2.5 gcc 0.9 fail
rs6000-ibm-aix4.1.4.0 xlc 0.9 ok
rs6000-ibm-aix4.1.4.0 gcc 0.9 fail
sparc-sun-linux2.1.23 gcc 0.9 ok
sparc-sun-sunos4.1.3_U1 cc 0.9 ok
sparc-sun-sunos4.1.3_U1 gcc 0.9 ok
sparc-sun-solaris2.4 cc 0.9 ok
sparc-sun-solaris2.4 gcc 0.9 ok
sparc-sun-solaris2.5 cc 0.9 ok
sparc-sun-solaris2.5 gcc 0.9d ok
--------------------------------------------------------

22
libtool.m4 vendored
View File

@ -21,7 +21,7 @@
## configuration script generated by Autoconf, you may include it under
## the same distribution terms that you use for the rest of that program.
# serial 2 AM_PROG_LIBTOOL
# serial 4 AM_PROG_LIBTOOL
AC_DEFUN(AM_PROG_LIBTOOL,
[AC_REQUIRE([AC_CANONICAL_HOST])
AC_REQUIRE([AC_PROG_CC])
@ -41,13 +41,23 @@ libtool_flags="$libtool_shared"
test "$silent" = yes && libtool_flags="$libtool_flags --silent"
test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
# On SCO OpenServer 5, we need -belf to get full-featured binaries.
case "$host" in
*-*-sco3.2v5*) CFLAGS="$CFLAGS -belf" ;;
esac
[case "$host" in
*-*-irix6*)
# For IRIX 6, ld needs -n32 if cc uses it.
if echo " $CC $CFLAGS " | egrep -e '[ ]-n32[ ]' > /dev/null; then
LD="${LD-ld} -n32"
fi
;;
*-*-sco3.2v5*)
# On SCO OpenServer 5, we need -belf to get full-featured binaries.
CFLAGS="$CFLAGS -belf"
;;
esac]
# Actually configure libtool. ac_aux_dir is where install-sh is found.
CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" LD="$LD" RANLIB="$RANLIB" \
$ac_aux_dir/ltconfig $libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \
${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig \
$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \
|| AC_MSG_ERROR([libtool configure failed])
])

View File

@ -122,24 +122,59 @@ fi
files=`cd $pkgdatadir && ls`
if test -z "$files"; then
echo "$progname: cannot \`cd' to \`$pkgdatadir'" 1>&2
echo "$progname: cannot list files in \`$pkgdatadir'" 1>&2
exit 1
fi
auxdir=.
auxdirline=`egrep '^AC_CONFIG_AUX_DIR' configure.in 2>/dev/null`
if test -n "$auxdirline"; then
# Handle explicit AC_CONFIG_AUX_DIR settings.
auxdir=`echo "$auxdirline" | sed 's/^AC_CONFIG_AUX_DIR(\([^)]*\)).*$/\1/'`
if test "$auxdir" = "$auxdirline"; then
echo "$progname: invalid AC_CONFIG_AUX_DIR syntax: $auxdirline" 1>&2
exit 1
else
# Strip any quote brackets.
auxdir=`echo "$auxdir" | sed 's/^\[\(.*\)\]$/\1/g'`
case "$auxdir" in
*\$*)
echo "$progname: cannot handle variables in AC_CONFIG_AUX_DIR" 1>&2
exit 1
;;
*)
;;
esac
fi
else
# Try to discover auxdir the same way it is discovered by configure.
# Note that we default to the current directory.
for dir in . .. ../..; do
if test -f $dir/install-sh; then
auxdir=$dir
break
elif test -f $dir/install.sh; then
auxdir=$dir
break
fi
done
fi
if test -z "$automake"; then
if egrep AM_PROG_LIBTOOL configure.in >/dev/null 2>&1; then :
if egrep '^AM_PROG_LIBTOOL' configure.in >/dev/null 2>&1; then :
else
echo "Remember to add \`AM_PROG_LIBTOOL' to \`configure.in'."
fi
if egrep AC_PROG_RANLIB configure.in >/dev/null 2>&1; then
if egrep '^AC_PROG_RANLIB' configure.in >/dev/null 2>&1; then
echo "Using \`AC_PROG_RANLIB' is rendered obsolete by \`AM_PROG_LIBTOOL'"
fi
if grep 'generated automatically by aclocal' aclocal.m4 >/dev/null 2>&1; then
updatemsg="You should update your \`aclocal.m4' by running aclocal."
updatemsg="update your \`aclocal.m4' by running aclocal"
else
updatemsg="You should add the contents of \`$libtool_m4' to \`aclocal.m4'."
updatemsg="add the contents of \`$libtool_m4' to \`aclocal.m4'"
fi
if egrep '^AC_DEFUN\(AM_PROG_LIBTOOL' aclocal.m4 >/dev/null 2>&1; then
@ -155,16 +190,29 @@ if test -z "$automake"; then
test -z "$localserial" && localserial=0
if test "$localserial" -lt "$instserial"; then
echo "$updatemsg"
echo "You should $updatemsg."
elif test "$localserial" -gt "$instserial"; then
echo "$progname: \`$libtool_m4' has serial number $instserial, less than $localserial found in \`aclocal.m4'" 1>&2
echo "$progname: \`$libtool_m4' is serial $instserial, less than $localserial in \`aclocal.m4'" 1>&2
if test -z "$force"; then
echo "Use \`--force' to replace newer libtool files with this version." 1>&2
exit 1
fi
echo "To remain compatible, you should $updatemsg."
fi
fi
else
echo "$updatemsg"
echo "You should $updatemsg."
fi
fi
# Change to the auxillary directory.
if test "$auxdir" != .; then
test -z "$automake" && echo "Putting files in AC_CONFIG_AUX_DIR, \`$auxdir'."
cd $auxdir || exit 1
fi
for file in $files; do
if test -f "$file" && test -z "$force"; then
test -z "$automake" && echo "$progname: \`$file' exists: use \`--force' to overwrite" 1>&2

View File

@ -243,12 +243,6 @@ if test "$verify_host" = yes; then
host=`$ac_config_sub $host_alias`
echo "$ac_t""$host" 1>&6
# Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts.
case "$host" in
*-*-linux-gnu*) ;;
*-*-linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
esac
elif test "$host" = NONE; then
echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2
echo "$help" 1>&2

View File

@ -881,8 +881,8 @@ if test -z "$show_help"; then
if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then
# Replace the output file specification.
compile_command=`echo "$compile_command" | sed "s%@OUTPUT@%$output%g"`
finalize_command=`echo "$finalize_command" | sed "s%@OUTPUT@%$output%g"`
compile_command=`echo "$compile_command" | sed 's%@OUTPUT@%'"$output"'%g'`
finalize_command=`echo "$finalize_command" | sed 's%@OUTPUT@%'"$output"'%g'`
# We have no uninstalled library dependencies, so finalize right now.
$show "$compile_command"
@ -901,8 +901,8 @@ if test -z "$show_help"; then
fi
# Replace the output file specification.
compile_command=`echo "$compile_command" | sed "s%@OUTPUT@%$objdir/$output%g"`
finalize_command=`echo "$finalize_command" | sed "s%@OUTPUT@%$objdir/$output"T"%g`
compile_command=`echo "$compile_command" | sed 's%@OUTPUT@%'"$objdir/$output"'%g'`
finalize_command=`echo "$finalize_command" | sed 's%@OUTPUT@%'"$objdir/$output"'T%g'`
# Create the binary in the object directory, then wrap it.
if test -d $objdir; then :

View File

@ -1,3 +1,8 @@
Tue Apr 1 12:48:32 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
* hardcode.test: AIX 3 doesn't have strings(1) so we need to do a
funny tr and pipe the output to fgrep. From Bruno Haible.
Mon Feb 3 15:17:18 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
* Makefile.am (TESTS): Do the full make sequence with

View File

@ -1,4 +1,4 @@
## Process this file with automake to create Makefile.in
## Process this file with automake to create Makefile.in -*-Makefile-*-
AUTOMAKE_OPTIONS = gnits

View File

@ -8,9 +8,12 @@ case "$srcdir" in
*) srcdir=`cd $srcdir && pwd` ;;
esac
progname=`echo "$0" | sed 's%^.*/%%'`
# tlibtool needs to know what srcdir is.
export srcdir
libtool="$srcdir/tlibtool"
make="${MAKE-make}"
prefix="./=inst"
if test "$need_prefix" = yes; then
@ -23,8 +26,10 @@ else
fi
# See how redirections should work.
if test -z "$VERBOSE"; then
exec > /dev/null 2>&1
fi
case "$VERBOSE" in
NO | no | 0 | "")
exec > /dev/null 2>&1
;;
esac
echo "=== Running test $0"
echo "=== Running $progname"

View File

@ -24,6 +24,6 @@ fi
# Configure the demonstration.
echo "= Configuring in ../demo (prefix=$prefix)"
$srcdir/../demo/configure --srcdir=$srcdir/../demo --prefix=$prefix || exit 1
${CONFIG_SHELL-/bin/sh} $srcdir/../demo/configure --srcdir=$srcdir/../demo --prefix=$prefix || exit 1
exit 0

View File

@ -19,13 +19,13 @@ fi
# Check to see if the programs really run.
echo "Executing uninstalled programs in ../demo"
if ../demo/hell.static | grep 'GNU Hell'; then :
if ../demo/hell.static | grep 'Welcome to GNU Hell'; then :
else
echo "$0: cannot execute ./hell.static" 1>&2
exit 1
fi
if ../demo/hell | grep 'GNU Hell'; then :
if ../demo/hell | grep 'Welcome to GNU Hell'; then :
else
echo "$0: cannot execute ./hell" 1>&2
exit 1

View File

@ -24,13 +24,13 @@ echo "= Running $make install in ../demo"
$make install || exit 1
echo "= Executing installed programs"
if $prefix/bin/hell.static | grep 'GNU Hell'; then :
if $prefix/bin/hell.static | grep 'Welcome to GNU Hell'; then :
else
echo "$0: cannot execute $prefix/bin/hell.static" 1>&2
exit 1
fi
if $prefix/bin/hell | grep 'GNU Hell'; then :
if $prefix/bin/hell | grep 'Welcome to GNU Hell'; then :
else
echo "$0: cannot execute $prefix/bin/hell" 1>&2

View File

@ -21,5 +21,5 @@ cd ../demo || exit 1
# Do the actual build.
echo "Making in ../demo"
make || exit 1
$make || exit 1
exit 0

View File

@ -20,12 +20,12 @@ fi
# Change to our build directory.
cd ../demo || exit 1
echo "= Running make uninstall in ../demo"
make uninstall || exit 1
echo "= Running $make uninstall in ../demo"
$make uninstall || exit 1
# See that there were no files leftover in $prefix.
# Ignore dotfiles, so that .nfsXXX files don't screw up the test.
leftovers=`find $prefix ! -type d -print | egrep -v '^\.'`
leftovers=`find $prefix ! -type d ! -name '.*' -print`
if test -n "$leftovers"; then
echo "= Leftover after make uninstall:"
ls -l $leftovers

View File

@ -76,8 +76,9 @@ for file in hc-*; do
hardcoded=no
if fgrep '.libs' $file > /dev/null; then
hardcoded=yes
elif strings -a $file 2>/dev/null | fgrep '.libs' > /dev/null; then
# At least AIX fgrep doesn't work for binary files, so we need strings.
elif cat $file | tr '\200-\277' '\100-\177' | tr '\300-\377' '\100-\177' | tr '\000-\037' '\040-\077' | fgrep '.libs' > /dev/null; then
# At least AIX fgrep doesn't work for binary files, and AIX also
# doesn't have strings(1), so we need this strange conversion.
hardcoded=yes
elif egrep 'unsupported' $file > /dev/null; then
hardcoded=unsupported

View File

@ -13,7 +13,7 @@ fi
# Try a sample link command.
linkresult=`$libtool -n --mode=link gcc -o something foo.o hell.lo`
test $? = 0 || exit 1
test $? -eq 0 || exit 1
echo "$linkresult"
case "$linkresult" in

View File

@ -11,5 +11,15 @@ fi
. $srcdir/defs || exit 1
# Try a sample link command.
$libtool -n --mode=link gcc -o gettext ../lib/libnlsut.a
exit $?
linkresult=`$libtool -n --mode=link gcc -o gettext ../lib/libnlsut.a`
test $? -eq 0 || exit 1
echo "$linkresult"
case "$linkresult" in
*../lib/libnlsut.a) ;;
*)
echo "$progname: ../lib/libnlsut.a was not used as expected in linking"
exit 1
;;
esac
exit 0

View File

@ -4,7 +4,8 @@
# Test script header.
need_prefix=no
if test -z "$srcdir"; then
srcdir=.
srcdir=`echo "$0" | sed 's%/[^/]*$%%'`
test "$srcdir" = "$0" && srcdir=.
test "${VERBOSE+set}" != "set" && VERBOSE=yes
fi
. $srcdir/defs || exit 1
@ -16,4 +17,3 @@ if grep -n 'test -e' $srcdir/../ltconfig $srcdir/../ltmain.sh; then
fi
exit 0

View File

@ -6,77 +6,12 @@ if test -z "$srcdir"; then
exit 1
fi
# Grab all the settings from the generated libtool.
eval "`egrep '^[A-Za-z_][A-Za-z0-9_]*=' ../libtool`"
# Use @VERSION@ so that we can use ../ltmain.sh.in directly.
LTCONFIG_VERSION="@VERSION@"
# Whether or not to build libtool libraries.
build_libtool_libs=yes
# Whether or not to build old-style libraries.
build_old_libs=yes
# The host system.
host_alias="i386-unknown-netbsd1.2"
host="i386-unknown-netbsd1.2"
# The linker used to build libraries.
LD='ld'
# How to create reloadable object files.
reload_flag=' -r'
reload_cmds='$LD$reload_flag -o $output$reload_objs'
# How to pass a linker flag through the compiler.
wl='-Wl,'
# Additional compiler flags for building library objects.
pic_flag=' -fPIC'
# Compiler flag to prevent dynamic linking.
link_static_flag='-static'
# Pattern to match compiler flags for creating libNAME_p libraries:
profile_flag_pattern='-pg?'
# Library versioning type.
version_type=sunos
# List of archive names. First name is the real one, the rest are links.
lib_names='$libname.so.$versuffix'
# The coded name of the library, if different from the real name.
soname_spec=''
# Commands used to build and install an old-style archive.
RANLIB='ranlib'
old_archive_cmds='ar cru $oldlib$oldobjs;$RANLIB $oldlib'
old_postinstall_cmds='chmod 644 $oldlib;$RANLIB $oldlib'
# Commands used to build and install a shared archive.
archive_cmds='$LD -Bshareable -o $lib$libobjs$deplibs'
postinstall_cmds=''
# Commands used to finish a libtool library installation in a directory.
finish_cmds='ldconfig -m $libdir'
# The flag that specifies a runtime search path when linking.
link_rpath_flag='-R$libdir'
# How to strip a library file.
striplib='strip -x'
old_striplib=''
# This is the shared library path variable.
shlibpath_var=LD_LIBRARY_PATH
# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the
# the resulting binary.
hardcode_shlibpath_var=no
# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
# resulting binary.
hardcode_minus_L=no
# Execute the libtool backend.
. $srcdir/../ltmain.sh.in
exit 1