mirror of
git://git.savannah.gnu.org/libtool.git
synced 2024-11-27 06:09:57 +08:00
*** empty log message ***
This commit is contained in:
parent
ae2ee26b65
commit
60369e2786
36
ChangeLog
36
ChangeLog
@ -1,3 +1,39 @@
|
||||
Sun Jan 26 15:50:07 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
|
||||
|
||||
* Release 0.8.
|
||||
|
||||
Fri Jan 24 23:32:03 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
|
||||
|
||||
* Makefile.am (demo_distfiles): Add demo/acinclude.m4 to the
|
||||
distribution.
|
||||
|
||||
Wed Jan 22 17:22:17 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
|
||||
|
||||
* libtool.m4: For IRIX 6, ld needs -n32 if cc uses it. Reported
|
||||
by Bruno Haible.
|
||||
|
||||
* ltconfig.in: IRIX ld does not hardcode direct libraries.
|
||||
Reported by Bruno Haible.
|
||||
|
||||
Sat Jan 18 15:15:12 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
|
||||
|
||||
* ltconfig.in, ltmain.sh.in (hardcode_shlibpath_var): Allow new
|
||||
value, `unsupported', since most linkers do not allow you to use
|
||||
shlibpath_var for initial linking.
|
||||
|
||||
* ltconfig.in: Lots of bug fixes from Bruno Haible. Set wl on
|
||||
OSF/1, fix definitions of hardcode_* variables.
|
||||
(archive_cmds): Fix not to use +h on HP-UX 9.x. Reported by Bruno
|
||||
Haible.
|
||||
|
||||
Fri Jan 17 09:58:22 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
|
||||
|
||||
* libtoolize.in: Handle explicit AC_CONFIG_AUX_DIR settings.
|
||||
Suggested by Akim Demaille.
|
||||
|
||||
* libtool.m4: Change ltconfig line to use $CONFIG_SHELL when it is
|
||||
specified. Reported by Bruno Haible.
|
||||
|
||||
Thu Jan 16 17:57:38 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
|
||||
|
||||
* demo/Makefile.am (hc-direct): Do better searching for the proper
|
||||
|
@ -10,7 +10,7 @@ CLEANFILES = libtool libtoolize
|
||||
MAINTAINERCLEANFILES = ltconfig ltmain.sh
|
||||
|
||||
# Files in the demo subdirectory that go in the distribution.
|
||||
demo_distfiles = Makefile.in Makefile.am README aclocal.m4 \
|
||||
demo_distfiles = Makefile.in Makefile.am README acinclude.m4 aclocal.m4 \
|
||||
configure configure.in foo.c foo.h hello.c main.c \
|
||||
run.test
|
||||
|
||||
|
9
NEWS
9
NEWS
@ -1,8 +1,13 @@
|
||||
New in 0.7a:
|
||||
New in 0.7b:
|
||||
* Bug fixes, and more documentation.
|
||||
* Basic support for other language compilers (C++, Fortran, and
|
||||
preprocessed assembler).
|
||||
* Support for *-*-irix5 and *-*-irix6*.
|
||||
* Libtool is now more persistent when linking with the `-static'
|
||||
flag fails.
|
||||
* New test for hardcoding system linkers, to verify that libtool
|
||||
neither creates incorrect binaries, nor takes unnecessary
|
||||
precautions while linking against uninstalled shared libraries.
|
||||
* Support for *-*-irix5, *-*-irix6*, and *-*-sco3.2v5*.
|
||||
|
||||
New in 0.7:
|
||||
* Total rewrite of libtool, along with a new model for library building.
|
||||
|
2
README
2
README
@ -14,7 +14,7 @@ Shared library support has been implemented for these platforms:
|
||||
NetBSD 1.x (*-*-netbsd*)
|
||||
Solaris 2.x (*-*-solaris2*)
|
||||
Linux ELF targets (*-*-linux*, except *-*-linuxaout* and *-*-linuxoldld*)
|
||||
All ELF targets that use both GCC and GNU ld
|
||||
All ELF targets that use both the GNU C compiler (gcc) and GNU ld
|
||||
|
||||
Shared library support is implemented, but untested on:
|
||||
AIX 3.x (*-*-aix3*)
|
||||
|
26
TODO
26
TODO
@ -1,30 +1,32 @@
|
||||
For 1.0:
|
||||
|
||||
* Have people test libtool on AIX 3, OSF/1, HP-UX, and SunOS 4.
|
||||
* Give some hints for languages other than C, such as C++, Fortran,
|
||||
and preprocessed assembler. There are beginnings of this in the
|
||||
manual (Other Languages).
|
||||
|
||||
* Don't forget to find link_static_flag for native cc's on HP-UX and
|
||||
OSF/1.
|
||||
* Finish documenting shared library systems. Ugh. I'll need more
|
||||
primary documentation in order to do this well.
|
||||
|
||||
* Implement shared libraries and `-static' linking on platforms that
|
||||
support them. Ones that stand out, which libtool doesn't support:
|
||||
IRIX.
|
||||
|
||||
For 1.1:
|
||||
Sometime in the future (maybe):
|
||||
|
||||
* Implement full support for other basic library types (libhello_g,
|
||||
libhello_p). Make these types configurable. Some thinking will have
|
||||
to be done about the defaults, and what libhello (standard type)
|
||||
should be.
|
||||
|
||||
Sometime in the future (maybe):
|
||||
Unfortunately, if we do this, we're back to the pre-0.6
|
||||
one-directory-per-object type. Maybe we should just add an autoconf
|
||||
macro and get creative with program_transform_name, or something.
|
||||
|
||||
* Add support for windoze DLL's, and maybe old Linux jumptable
|
||||
libraries. Check out Lesstif and Tcl configuration again.
|
||||
|
||||
* What should be done about the difference between -fpic and -fPIC?
|
||||
Probably nothing.
|
||||
|
||||
* GCC docs imply that all rs6000 code is PIC. See if it is true of
|
||||
any other processors (like maybe powerpc).
|
||||
* GCC docs imply that all rs6000 code is PIC. See if it is really
|
||||
true of any other processors: at least powerpc, powerpcle.
|
||||
|
||||
* Maybe choosing between ln -s and cp -p should be done in ltconfig,
|
||||
not ltmain.sh?
|
||||
not ltmain.sh? Maybe we should avoid it entirely, and just create
|
||||
timestamp .lo files, with the PIC objects in .libs/*.o.
|
||||
|
@ -1,5 +1,5 @@
|
||||
AC_INIT(ltmain.sh.in)
|
||||
AM_INIT_AUTOMAKE(libtool, 0.7b)
|
||||
AM_INIT_AUTOMAKE(libtool, 0.7c)
|
||||
|
||||
pkgdatadir='${datadir}/libtool'
|
||||
AC_SUBST(pkgdatadir)
|
||||
|
@ -23,7 +23,7 @@ hell_static_LDFLAGS = -static
|
||||
|
||||
TESTS = run.test
|
||||
|
||||
# Regenerate our acinclude.m4 only if it doesn't exist.
|
||||
# Only for libtool demo: Regenerate our acinclude.m4 only if it doesn't exist.
|
||||
$(srcdir)/acinclude.m4:
|
||||
rm -f $(srcdir)/acinclude.m4
|
||||
ln -s ../libtool.m4 $(srcdir)/acinclude.m4
|
||||
|
109
doc/libtool.texi
109
doc/libtool.texi
@ -93,7 +93,6 @@ version @value{VERSION}.
|
||||
* Integrating Libtool:: Using libtool in your own packages.
|
||||
* Versioning:: Using library interface versions.
|
||||
* Library Tips:: Tips for library interface design.
|
||||
* Modifying:: Changing the libtool script.
|
||||
* Index:: Index of concepts, variables, and programs.
|
||||
|
||||
--- The Detailed Node Listing ---
|
||||
@ -175,10 +174,10 @@ package build shared libraries. They just run your package
|
||||
work.
|
||||
|
||||
There are several examples throughout this document. All assume the
|
||||
same environment: we want to build a library, @file{libfoo}, in a
|
||||
same environment: we want to build a library, @file{libhello}, in a
|
||||
generic way.
|
||||
|
||||
@file{libfoo} could be a shared library, a static library, or
|
||||
@file{libhello} could be a shared library, a static library, or
|
||||
both@dots{} whatever is available on the host system, as long as libtool
|
||||
has been ported to it.
|
||||
|
||||
@ -210,9 +209,8 @@ The problem is compounded by the absence of a standard procedure for
|
||||
creating shared libraries on different platforms.
|
||||
|
||||
The following sections outline the major issues facing shared library
|
||||
support in GNU, how some developers have overcome these issues, and how
|
||||
I propose that shared library support should be standardized with
|
||||
libtool.
|
||||
support in GNU, and how I propose that shared library support could be
|
||||
standardized with libtool.
|
||||
|
||||
@cindex Specifications for libtool
|
||||
@cindex Libtool specifications
|
||||
@ -334,6 +332,8 @@ object types. After porting libtool to more platforms, the author
|
||||
discovered a new (at least for him) paradigm of what libraries and
|
||||
programs are.
|
||||
|
||||
@cindex Definition of libraries
|
||||
@cindex Libraries, definition of
|
||||
In summary: ``libraries are programs with multiple entry points, and
|
||||
more formally defined interfaces.''
|
||||
|
||||
@ -350,6 +350,8 @@ when you understand it the world gets simpler.
|
||||
@comment node-name, next, previous, up
|
||||
@chapter Using Libtool
|
||||
|
||||
@cindex Examples of using libtool
|
||||
@cindex Libtool examples
|
||||
It makes little sense to talk about using libtool in your own packages
|
||||
until you have seen how it makes your life simpler. The examples in
|
||||
this chapter introduce the main features of libtool by comparing the
|
||||
@ -389,6 +391,8 @@ After we have built that library, we want to create a program by linking
|
||||
@comment node-name, next, previous, up
|
||||
@section Creating Object Files
|
||||
|
||||
@cindex Compiling object files
|
||||
@cindex Object files, compiling
|
||||
To create an object file from a source file, the compiler is invoked
|
||||
with the `-c' flag (and any other desired flags):
|
||||
|
||||
@ -410,11 +414,16 @@ burger$ @kbd{gcc -g -O -c hello.c}
|
||||
burger$
|
||||
@end example
|
||||
|
||||
@cindex Position-independant code
|
||||
@cindex PIC (position-independant code)
|
||||
Shared libraries, however, may only be built from
|
||||
@dfn{position-independant code} (PIC). So, special flags must be passed
|
||||
to the compiler to tell it to generate PIC rather than the standard
|
||||
position-dependant code.
|
||||
|
||||
@cindex Library object file
|
||||
@cindex `.lo' files
|
||||
@cindex Object files, library
|
||||
Since this is a library implementation detail, libtool hides the
|
||||
complexity of PIC compiler flags by using separate library object files
|
||||
(which end in `.lo' instead of `.o'). On systems without shared
|
||||
@ -460,6 +469,7 @@ burger$
|
||||
@comment node-name, next, previous, up
|
||||
@section Linking Libraries
|
||||
|
||||
@pindex ar
|
||||
Without libtool, the programmer would invoke the @file{ar} command to
|
||||
create a static library:
|
||||
|
||||
@ -468,6 +478,7 @@ burger$ @kbd{ar cru libhello.a hello.o foo.o}
|
||||
burger$
|
||||
@end example
|
||||
|
||||
@pindex ranlib
|
||||
But of course, that would be too simple, so many systems require that
|
||||
you run the @file{ranlib} command on the resulting library (to give it
|
||||
better karma, or something):
|
||||
@ -482,6 +493,8 @@ libtool's ``libraries are programs'' approach. So, on platforms without
|
||||
shared libraries, libtool simply acts as a wrapper for the system
|
||||
@file{ar} (and possibly @file{ranlib}) commands.
|
||||
|
||||
@cindex Libtool libraries
|
||||
@cindex `.la' files
|
||||
Again, the libtool library name differs from the standard name (it has a
|
||||
`.la' suffix instead of a `.a' suffix). The arguments to libtool are
|
||||
the same ones you would use to produce an executable named
|
||||
@ -540,6 +553,7 @@ Now that's significantly cooler@dots{} libtool just ran an obscure
|
||||
@file{ld} command to create a shared library, as well as the static
|
||||
library.
|
||||
|
||||
@cindex @file{.libs} subdirectory
|
||||
Note how libtool creates extra files in the @file{.libs} subdirectory,
|
||||
rather than the current directory. This feature is to make it easier to
|
||||
clean up the build directory, and to help ensure that other programs
|
||||
@ -549,15 +563,20 @@ fail horribly if you accidentally forget to use libtool when you should.
|
||||
@comment node-name, next, previous, up
|
||||
@section Linking Executables
|
||||
|
||||
@cindex Linking against installed libraries
|
||||
If you choose at this point to @dfn{install} the library (put it in a
|
||||
permanent location) before linking executables against it, then you
|
||||
don't need to use libtool to do the linking.
|
||||
don't need to use libtool to do the linking. Simply use the appropriate
|
||||
@samp{-L} and @samp{-l} flags to specify the library's location.
|
||||
|
||||
@cindex Buggy system linkers
|
||||
Some system linkers insist on encoding the full directory name of each
|
||||
shared library in the resulting executable. Libtool has to work around
|
||||
this misfeature by special magic to ensure that only permanent directory
|
||||
names are put into installed executables.
|
||||
|
||||
@cindex Security problems with buggy linkers
|
||||
@cindex Bugs, subtle ones caused by buggy linkers
|
||||
The importance of this bug must not be overlooked: it won't cause
|
||||
programs to crash in obvious ways. It creates a security hole,
|
||||
and possibly even worse, if you are modifying the library source code
|
||||
@ -567,6 +586,7 @@ the installed programs!
|
||||
So, if you want to link programs against the library before you install
|
||||
it, you must use libtool to do the linking.
|
||||
|
||||
@cindex Linking against uninstalled libraries
|
||||
Here's the old way of linking against an uninstalled library:
|
||||
|
||||
@example
|
||||
@ -598,6 +618,8 @@ creating hell
|
||||
burger$
|
||||
@end example
|
||||
|
||||
@cindex Wrapper scripts for programs
|
||||
@cindex Program wrapper scripts
|
||||
Notice that the executable, @file{hell} was actually created in the
|
||||
@file{.libs} subdirectory. Then, a wrapper script was created in the
|
||||
current directory.
|
||||
@ -653,10 +675,12 @@ until we link it against at least a few more programs.
|
||||
@comment node-name, next, previous, up
|
||||
@section Installing Libraries
|
||||
|
||||
@pindex strip
|
||||
Installing libraries on a non-libtool system is quite
|
||||
straightforward@dots{} just copy them into place:@footnote{Don't
|
||||
accidentally strip the libraries, though, or they will be unusable.}
|
||||
|
||||
@pindex su
|
||||
@example
|
||||
burger$ @kbd{su}
|
||||
Password: ********
|
||||
@ -671,6 +695,7 @@ burger# @kbd{ranlib /usr/local/lib/libhello.a}
|
||||
burger#
|
||||
@end example
|
||||
|
||||
@pindex install
|
||||
Libtool installation is quite simple, as well. Just use the
|
||||
@file{install} or @file{cp} command that you normally would:
|
||||
|
||||
@ -683,7 +708,8 @@ a23#
|
||||
@end example
|
||||
|
||||
Note that the libtool library @file{libhello.la} is also installed, for
|
||||
informational purposes.
|
||||
informational purposes, and to help libtool with uninstallation
|
||||
(@pxref{Uninstall Mode}).
|
||||
|
||||
Here is the shared library example:
|
||||
|
||||
@ -696,6 +722,8 @@ ranlib /usr/local/lib/libhello.a
|
||||
burger#
|
||||
@end example
|
||||
|
||||
@cindex Stripping libraries
|
||||
@cindex Libraries, stripping
|
||||
It is safe to specify the @samp{-s} (strip symbols) flag to the install
|
||||
program (if you use a BSD-compatible install) when installing libraries.
|
||||
Libtool will either ignore the @samp{-s} flag, or will run a program
|
||||
@ -706,6 +734,9 @@ configuration that you need to do before using them. First, you must
|
||||
make sure that where the library is installed actually agrees with the
|
||||
@samp{-rpath} flag you used to build it.
|
||||
|
||||
@cindex Postinstallation
|
||||
@cindex Installation, finishing
|
||||
@cindex Libraries, finishing installation
|
||||
Then, running @samp{libtool -n --finish @var{libdir}} can give you
|
||||
further hints on what to do:
|
||||
|
||||
@ -752,6 +783,8 @@ burger#
|
||||
@comment node-name, next, previous, up
|
||||
@section Linking Static Libraries
|
||||
|
||||
@cindex Static linking
|
||||
@cindex Convenience libraries
|
||||
Sometimes it is desirable to create a static archive that can never be
|
||||
shared. The most frequent case is when you have a ``convenience
|
||||
library'' that is a collection of unrelated object files without a
|
||||
@ -773,10 +806,10 @@ Link the files in the same way you would a libtool library, but use a
|
||||
`.a' suffix (instead of `.la'):
|
||||
|
||||
@example
|
||||
burger$ @kbd{libtool gcc -o libfoo.a main.o foo.lo hello.lo}
|
||||
rm -f libfoo.a
|
||||
ar cru libfoo.a main.o foo.o hello.o
|
||||
ranlib libfoo.a
|
||||
burger$ @kbd{libtool gcc -o libhello.a main.o foo.lo hello.lo}
|
||||
rm -f libhello.a
|
||||
ar cru libhello.a main.o foo.o hello.o
|
||||
ranlib libhello.a
|
||||
burger$
|
||||
@end example
|
||||
|
||||
@ -785,13 +818,14 @@ If you want to install the library (but you probably don't), then you
|
||||
can use libtool to do it, too:
|
||||
|
||||
@example
|
||||
burger$ @kbd{libtool ./install-sh -c libfoo.a /local/lib/libfoo.a}
|
||||
./install-sh -c libfoo.a /local/lib/libfoo.a
|
||||
ranlib /local/lib/libfoo.a
|
||||
burger$ @kbd{libtool ./install-sh -c libhello.a /local/lib/libhello.a}
|
||||
./install-sh -c libhello.a /local/lib/libhello.a
|
||||
ranlib /local/lib/libhello.a
|
||||
burger$
|
||||
@end example
|
||||
@end enumerate
|
||||
|
||||
@cindex Standalone binaries
|
||||
Another common situation where static linking is desirable is in
|
||||
creating a standalone binary. Use libtool to do the linking and add the
|
||||
@samp{-static} flag.
|
||||
@ -800,6 +834,7 @@ creating a standalone binary. Use libtool to do the linking and add the
|
||||
@comment node-name, next, previous, up
|
||||
@chapter Invoking @file{libtool}
|
||||
|
||||
@c FIXME this is where I got sick of writing index entries
|
||||
The @file{libtool} program has the following synopsis:
|
||||
|
||||
@example
|
||||
@ -1025,13 +1060,13 @@ First, to link a program against a libtool library, just use the
|
||||
@example
|
||||
bin_PROGRAMS = hell hell.static
|
||||
|
||||
# Build hell from main.c and libhell.la
|
||||
# Build hell from main.c and libhello.la
|
||||
hell_SOURCES = main.c
|
||||
hell_LDADD = libhell.la
|
||||
hell_LDADD = libhello.la
|
||||
|
||||
# Create a statically-linked version of hell.
|
||||
hell_static_SOURCES = main.c
|
||||
hell_static_LDADD = libhell.la
|
||||
hell_static_LDADD = libhello.la
|
||||
hell_static_LDFLAGS = -static
|
||||
@end example
|
||||
|
||||
@ -1040,14 +1075,14 @@ you want to pass to libtool while linking @samp{program} (such as
|
||||
@samp{-static} to create a statically-linked executable).
|
||||
|
||||
Building a libtool library is almost as trivial@dots{} note the use of
|
||||
@samp{libhell_la_LDFLAGS} to pass the @samp{-version-info}
|
||||
@samp{libhello_la_LDFLAGS} to pass the @samp{-version-info}
|
||||
(@pxref{Versioning}) and @samp{-rpath} options to libtool:
|
||||
|
||||
@example
|
||||
# Build a libtool library, libhell.la for installation in libdir.
|
||||
lib_PROGRAMS = libhell.la
|
||||
libhell_la_SOURCES = hello.c foo.c
|
||||
libhell_la_LDFLAGS = -version-info 3:12:1 -rpath $(libdir)
|
||||
# Build a libtool library, libhello.la for installation in libdir.
|
||||
lib_PROGRAMS = libhello.la
|
||||
libhello_la_SOURCES = hello.c foo.c
|
||||
libhello_la_LDFLAGS = -version-info 3:12:1 -rpath $(libdir)
|
||||
@end example
|
||||
|
||||
@node Configuring, Distributing, Using Automake, Integrating Libtool
|
||||
@ -1368,18 +1403,18 @@ library.
|
||||
Note that this can cause problems because libtool's compatibility
|
||||
requirements are actually stricter than is necessary.
|
||||
|
||||
Say @file{libfoo} supports interfaces 5, 16, 17, 18, and 19, and that
|
||||
libtool is used to link @file{test} against @file{libfoo}.
|
||||
Say @file{libhello} supports interfaces 5, 16, 17, 18, and 19, and that
|
||||
libtool is used to link @file{test} against @file{libhello}.
|
||||
|
||||
Libtool encodes the numbers 5 and 19 in @file{test}, and the dynamic
|
||||
linker will only link @file{test} against libraries that support
|
||||
@emph{every} interface between 5 and 19. So, the dynamic linker refuses
|
||||
to link @file{test} against @file{libfoo}!
|
||||
to link @file{test} against @file{libhello}!
|
||||
|
||||
In order to eliminate this problem, libtool only allows libraries to
|
||||
declare consecutive interface numbers. So, @file{libfoo} can declare at
|
||||
declare consecutive interface numbers. So, @file{libhello} can declare at
|
||||
most that it supports interfaces 16 through 19. Then, the dynamic
|
||||
linker will link @file{test} against @file{libfoo}.
|
||||
linker will link @file{test} against @file{libhello}.
|
||||
|
||||
So, libtool library versions are described by three integers:
|
||||
|
||||
@ -1452,7 +1487,7 @@ set @var{age} to 0.
|
||||
to the release of the package that you are making. This is an abuse
|
||||
that only fosters misunderstanding of the purpose of library versions.
|
||||
|
||||
@node Library Tips, Modifying, Versioning, Top
|
||||
@node Library Tips, Index, Versioning, Top
|
||||
@comment node-name, next, previous, up
|
||||
@chapter Tips for Interface Design
|
||||
|
||||
@ -1597,15 +1632,15 @@ and @code{__END_DECLS} into your own headers. Then, you may use them to
|
||||
create header files that are valid for C++, ANSI, and non-ANSI
|
||||
compilers.
|
||||
|
||||
@node Modifying, Index, Library Tips, Top
|
||||
@comment node-name, next, previous, up
|
||||
@chapter Modifying Libtool
|
||||
@c @node Modifying, Index, Library Tips, Top
|
||||
@c @comment node-name, next, previous, up
|
||||
@c @chapter Modifying Libtool
|
||||
@c
|
||||
@c FIXME
|
||||
@c Description of libtool script contents, the interface between
|
||||
@c ltconfig and libtool
|
||||
|
||||
FIXME
|
||||
Description of libtool script contents, the interface between ltconfig
|
||||
and libtool
|
||||
|
||||
@node Index, , Modifying, Top
|
||||
@node Index, , Library Tips, Top
|
||||
@comment node-name, next, previous, up
|
||||
@unnumbered Index
|
||||
|
||||
|
32
ltconfig.in
32
ltconfig.in
@ -486,6 +486,7 @@ archive_cmds=
|
||||
link_rpath_flag=
|
||||
hardcode_minus_L=no
|
||||
hardcode_shlibpath_var=no
|
||||
hardcode_direct=no
|
||||
|
||||
ld_shlibs=yes
|
||||
if test "$with_gnu_ld" = yes; then
|
||||
@ -494,10 +495,13 @@ if test "$with_gnu_ld" = yes; then
|
||||
case "$host" in
|
||||
*-*-sunos4*)
|
||||
ld_shlibs=yes
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
|
||||
*)
|
||||
if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
|
||||
# GNU ld on ELF does not support linking via the shlibpath_var.
|
||||
hardcode_shlibpath_var=yes
|
||||
ld_shlibs=yes
|
||||
else
|
||||
ld_shlibs=no
|
||||
@ -514,24 +518,32 @@ else
|
||||
case "$host" in
|
||||
*-*-aix3*)
|
||||
archive_cmds='$rm $lib.exp;/usr/ucb/nm$libobjs | egrep \" D \" | sed \"s/^.* //\" > $lib.exp;$LD -o $objdir/$soname$libobjs -bE:$lib.exp -T512 -H512 -bM:SRE -lc$deplibs;ar cru $lib $objdir/$soname'
|
||||
hardcode_shlibpath_var=yes
|
||||
hardcode_direct=yes
|
||||
hardcode_minus_L=yes
|
||||
|
||||
# AIX ld does not support linking via the shlibpath_var.
|
||||
hardcode_shlibpath_var=yes
|
||||
;;
|
||||
|
||||
*-*-aix4*)
|
||||
archive_cmds='$rm $lib.exp;/bin/nm -B$libobjs | egrep \" D \" | sed \"s/^.* //\" > $lib.exp;$cc -o $objdir/$soname$libobjs ${wl}-bE:$lib.exp ${wl}-bM:SRE ${wl}-bnoentry$deplibs;ar cru $lib $objdir/$soname'
|
||||
hardcode_shlibpath_var=yes
|
||||
hardcode_direct=yes
|
||||
hardcode_minus_L=yes
|
||||
|
||||
# AIX ld does not support linking via the shlibpath_var.
|
||||
hardcode_shlibpath_var=yes
|
||||
;;
|
||||
|
||||
*-*-freebsd*)
|
||||
archive_cmds='$LD -Bshareable -o $lib$libobjs$deplibs'
|
||||
hardcode_direct=yes
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
|
||||
*-*-hpux9* | *-*-hpux10*)
|
||||
archive_cmds='$LD -b +h $soname +s +b $install_libdir -o $lib$libobjs$deplibs'
|
||||
link_rpath_flag='${wl}+b ${wl}$libdir'
|
||||
hardcode_direct=yes
|
||||
hardcode_minus_L=yes
|
||||
hardcode_shlibpath_var=yes
|
||||
;;
|
||||
@ -539,21 +551,25 @@ else
|
||||
*-*-irix5* | *-*-irix6*)
|
||||
archive_cmds='$LD -shared -o $lib -soname $soname -set_version $verstring$libobjs -lc$deplibs'
|
||||
link_rpath_flag='${wl}-rpath ${wl}$libdir'
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
|
||||
*-*-netbsd*)
|
||||
# Tested with NetBSD 1.2 ld
|
||||
archive_cmds='$LD -Bshareable -o $lib$libobjs$deplibs'
|
||||
link_rpath_flag='-R$libdir'
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
|
||||
*-*-osf3*)
|
||||
archive_cmds='$LD -shared -o $lib -soname $soname -set_version $verstring$libobjs -lc$deplibs'
|
||||
link_rpath_flag='${wl}-rpath ${wl}$libdir'
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
|
||||
*-*-sco3.2v5*)
|
||||
archive_cmds='$LD -G -o $lib$libobjs$deplibs'
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
|
||||
*-*-solaris2*)
|
||||
@ -564,6 +580,7 @@ else
|
||||
*-*-sunos4*)
|
||||
archive_cmds='$LD -assert pure-text -Bstatic -o $lib$libobjs'
|
||||
link_rpath_flag='-L$libdir'
|
||||
hardcode_direct=yes
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
|
||||
@ -800,6 +817,7 @@ profile_flag_pattern='$profile_flag_pattern'
|
||||
version_type=$version_type
|
||||
|
||||
# List of archive names. First name is the real one, the rest are links.
|
||||
# The last name is the one that the linker finds with -lNAME.
|
||||
lib_names='$lib_names'
|
||||
|
||||
# The coded name of the library, if different from the real name.
|
||||
@ -827,14 +845,18 @@ old_striplib='$old_striplib'
|
||||
# This is the shared library path variable.
|
||||
shlibpath_var=$shlibpath_var
|
||||
|
||||
# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the
|
||||
# the resulting binary.
|
||||
hardcode_shlibpath_var=$hardcode_shlibpath_var
|
||||
# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
|
||||
# resulting binary.
|
||||
hardcode_direct=$hardcode_direct
|
||||
|
||||
# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
|
||||
# resulting binary.
|
||||
hardcode_minus_L=$hardcode_minus_L
|
||||
|
||||
# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the
|
||||
# the resulting binary.
|
||||
hardcode_shlibpath_var=$hardcode_shlibpath_var
|
||||
|
||||
EOF
|
||||
|
||||
# Detect if we are using a relative or absolute path to ltmain.sh.
|
||||
|
28
ltmain.sh.in
28
ltmain.sh.in
@ -110,7 +110,7 @@ done
|
||||
|
||||
if test -n "$prevopt"; then
|
||||
echo "$progname: option \`$prevopt' requires an argument" 1>&2
|
||||
echo "$help"
|
||||
echo "$help" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@ -174,12 +174,12 @@ if test -z "$show_help"; then
|
||||
done
|
||||
|
||||
# Get the name of the library object.
|
||||
libobj=`echo "$srcfile" | sed -e 's%^.*/%%`
|
||||
libobj=`echo "$srcfile" | sed -e 's%^.*/%%'`
|
||||
|
||||
# Recognize several different file suffixes.
|
||||
xform='[cCFSf]'
|
||||
case $libobj in
|
||||
*.c++) xform='c\+\+' ;;
|
||||
case "$libobj" in
|
||||
*.c++) xform='c++' ;;
|
||||
*.cc) xform=cc ;;
|
||||
*.cpp) xform=cpp ;;
|
||||
*.cxx) xform=cxx ;;
|
||||
@ -189,10 +189,10 @@ if test -z "$show_help"; then
|
||||
|
||||
libobj=`echo "$libobj" | sed -e "s/\.$xform$/.lo/"`
|
||||
|
||||
case $libobj in
|
||||
case "$libobj" in
|
||||
*.lo) obj=`echo "$libobj" | sed -e 's/\.lo$/.o/'` ;;
|
||||
*)
|
||||
echo "$progname: cannot determine name of library object from \`$srcfile'"
|
||||
echo "$progname: cannot determine name of library object from \`$srcfile'" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@ -412,7 +412,7 @@ if test -z "$show_help"; then
|
||||
|
||||
*)
|
||||
echo "$progname: unknown file suffix for \`$arg'" 1>&2
|
||||
echo "$help"
|
||||
echo "$help" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@ -425,7 +425,7 @@ if test -z "$show_help"; then
|
||||
done
|
||||
|
||||
if test -n "$prev"; then
|
||||
echo "$progname: the \`$prevarg' option requires an argument"
|
||||
echo "$progname: the \`$prevarg' option requires an argument" 1>&2
|
||||
echo "$help" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
@ -763,7 +763,7 @@ if test -z "$show_help"; then
|
||||
# Things are fine, the world is a beautiful place.
|
||||
$show "$compile_command"
|
||||
|
||||
elif test "$hardcode_shlibpath_var" != yes; then
|
||||
elif test "$hardcode_shlibpath_var" = yes; then
|
||||
# We just need to export the shlibpath for the link command.
|
||||
$show "$shlibpath_var=$linkrpath $compile_command"
|
||||
eval "$shlibpath_var=$linkrpath"
|
||||
@ -1128,7 +1128,7 @@ EOF
|
||||
|
||||
# Check the variables that should have been set.
|
||||
if test -z "$link_against_libtool_libs" || test -z "$finalize_command"; then
|
||||
echo "$progname: invalid libtool wrapper script \`$file'"
|
||||
echo "$progname: invalid libtool wrapper script \`$file'" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@ -1145,7 +1145,7 @@ EOF
|
||||
fi
|
||||
libfile="$libdir/`echo "$lib" | sed 's%^.*/%%g'`"
|
||||
if test -z "$libdir"; then
|
||||
echo "$progname: warning: \`$lib' contains no -rpath information"
|
||||
echo "$progname: warning: \`$lib' contains no -rpath information" 1>&2
|
||||
elif test -f "$libfile"; then :
|
||||
else
|
||||
echo "$progname: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
|
||||
@ -1155,9 +1155,9 @@ EOF
|
||||
|
||||
if test "$hardcode_minus_L" = yes && test "$hardcode_shlibpath_var" = yes; then
|
||||
if test "$finalize" = no; then
|
||||
echo "$progname: warning: cannot relink \`$file' on behalf of your buggy system linker"
|
||||
echo "$progname: warning: cannot relink \`$file' on behalf of your buggy system linker" 1>&2
|
||||
else
|
||||
echo "$progname: warning: relinking \`$file' on behalf of your buggy system linker"
|
||||
echo "$progname: warning: relinking \`$file' on behalf of your buggy system linker" 1>&2
|
||||
$show "$finalize_command"
|
||||
if $run $finalize_command; then :
|
||||
else
|
||||
@ -1223,7 +1223,7 @@ EOF
|
||||
done
|
||||
|
||||
if test -n "$future_libdirs"; then
|
||||
echo "$progname: warning: remember to run \`$progname --finish$future_libdirs'"
|
||||
echo "$progname: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
|
||||
fi
|
||||
|
||||
if test -n "$current_libdirs"; then
|
||||
|
@ -1,3 +1,20 @@
|
||||
Fri Jan 3 23:15:22 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
|
||||
|
||||
* Makefile.am (distclean-local): Remove all files that the tests
|
||||
may have created. Reported by Bruno Haible.
|
||||
|
||||
* For all tests, discover srcdir when running from the command
|
||||
line.
|
||||
|
||||
* demo-unst.test: Don't fail if make uninstall doesn't delete
|
||||
files beginning with a dot, since spurious .nfsXXX files may be
|
||||
present when running NFS. Reported by Bruno Haible.
|
||||
|
||||
Thu Jan 2 13:03:41 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
|
||||
|
||||
* suffix.test: New test to guarantee that libtool compile
|
||||
recognizes valid source file suffixes.
|
||||
|
||||
Sun Dec 8 14:43:15 1996 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
|
||||
|
||||
* demo.test: Break up into demo-conf.test, demo-make.test,
|
||||
@ -21,4 +38,3 @@ Mon Dec 2 16:31:10 1996 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
|
||||
|
||||
* test-e.test: Check that we haven't used `test -e' anywhere in
|
||||
our portable shell scripts.
|
||||
|
||||
|
@ -3,6 +3,11 @@
|
||||
AUTOMAKE_OPTIONS = gnits
|
||||
|
||||
TESTS = demo-conf.test demo-make.test demo-exec.test demo-inst.test \
|
||||
demo-unst.test link.test link-2.test test-e.test
|
||||
demo-unst.test link.test link-2.test suffix.test test-e.test
|
||||
|
||||
EXTRA_DIST = defs tlibtool $(TESTS)
|
||||
|
||||
# We need to remove any files that the above tests created.
|
||||
distclean-local:
|
||||
test -f ../demo/Makefile && cd ../demo && $(MAKE) distclean
|
||||
rm -rf =inst
|
||||
|
Loading…
Reference in New Issue
Block a user