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
01cf0a3baa
commit
59abbf0c10
4
AUTHORS
4
AUTHORS
@ -1,3 +1,5 @@
|
||||
Authors of GNU Libtool.
|
||||
Authors of GNU Libtool. The following people contributed enough in
|
||||
order to warrant exchanging legal papers with the Free Software
|
||||
Foundation.
|
||||
|
||||
Gordon Matzigkeit. Designed and implemented libtool.
|
||||
|
@ -1,5 +1,10 @@
|
||||
1998-04-19 Gordon Matzigkeit <gord@profitpress.com>
|
||||
|
||||
* Makefile.am (maintainer-rekey): New rule to force us to change
|
||||
Project-Version after we make a release. This keeps all version
|
||||
numbers in sync, rather than branching just before the release.
|
||||
(maintainer-release, maintainer-checkin): Use maintainer-rekey.
|
||||
|
||||
* ltmain.in (finish): Notice when a finish command fails, so that
|
||||
we can add it to the list of recommendations.
|
||||
|
||||
|
@ -112,6 +112,7 @@ maintainer-rekey:
|
||||
if test "X$$newver" = "X$(VERSION)"; then \
|
||||
if test -f "$(released)"; then \
|
||||
echo "New development cycle: change Project-Version in $(top_srcdir)/$(PACKAGE).prj."; \
|
||||
exit 1; \
|
||||
else \
|
||||
echo "No need to rekey any files"; \
|
||||
fi; \
|
||||
@ -121,7 +122,7 @@ maintainer-rekey:
|
||||
cd $(top_srcdir) && $(PRCS) rekey -f $(PACKAGE) $(rekey_files); \
|
||||
fi
|
||||
|
||||
maintainer-release: distcheck
|
||||
maintainer-release: maintainer-rekey distcheck
|
||||
cd $(top_srcdir) && $(PRCS) checkin -f $(PACKAGE)
|
||||
echo timestamp > "$(released)"
|
||||
@echo "============================="; \
|
||||
|
10
NEWS
10
NEWS
@ -1,17 +1,19 @@
|
||||
NEWS - list of user-visible changes between releases of GNU Libtool
|
||||
|
||||
New:
|
||||
New in 1.2a - 1998-04-19, Gordon Matzigkeit:
|
||||
* Bug fixes.
|
||||
* ltconfig accepts an `--output' option to specify the name of the
|
||||
generated libtool.
|
||||
* New `--debug' flag to turn on shell script tracing for libtool,
|
||||
libtoolize, and ltconfig.
|
||||
* Changed `libtool --features' to print out all configuration variables.
|
||||
* Added `libtool --config' to print out all configuration variables.
|
||||
* Support for *-*-hpux11*.
|
||||
|
||||
|
||||
New in 1.2 - 1998-03-20, Gordon Matzigkeit:
|
||||
* Minor bug fixes to provide a stable public release.
|
||||
* Libtool no longer causes Solaris printf to barf due to silly
|
||||
2110-byte static buffers.
|
||||
|
||||
|
||||
New in 1.1 - 1998-03-08, Gordon Matzigkeit:
|
||||
* Bug fixes.
|
||||
* http://www.profitpress.com/libtool/ is libtool's homepage.
|
||||
|
49
TODO
49
TODO
@ -1,20 +1,41 @@
|
||||
For next public release:
|
||||
************************
|
||||
|
||||
* Try expr "..." : '^\(.*\)$' as a replacement for long echos on
|
||||
Solaris. Or awk. Or perl?
|
||||
* Create a new library version_type, `irix'. Janos Farkas writes:
|
||||
|
||||
* Remove references to `ltmain.sh' in generated files, because it's
|
||||
name really is an internal implementation detail.
|
||||
I just realized I also have mortal access to an SGI system, and found
|
||||
this in the dso.5 page, this looks more informative :)
|
||||
|
||||
Versioning of Shared Objects.
|
||||
|
||||
QUICK OVERVIEW
|
||||
|
||||
For a shared object to be versioned the following needs to be done:
|
||||
|
||||
* Version strings consist of 3 parts and a dot: The string "sgi",
|
||||
a decimal number (the major number), a dot, and a decimal number
|
||||
(the minor number).
|
||||
|
||||
* Add the command -set_version sgi1.0 to the command to build
|
||||
the shared object (cc -shared, ld -shared, etc.).
|
||||
|
||||
* Whenever you make a COMPATIBLE change update the minor version
|
||||
number (the one after the dot), and add the latest version string
|
||||
to colon-separated list of version strings, e.g., -set_version
|
||||
sgi1.0:sgi1.1:sgi1.3
|
||||
|
||||
* Whenever you make an INCOMPATIBLE change, update the
|
||||
major version number. Pass this as the version list, e.g.,
|
||||
-set_version sgi2.0. Change the filename of the OLD shared object
|
||||
by adding a dot followed by the previous major number to the filename
|
||||
of the shared object. DO NOT CHANGE the soname of the object.
|
||||
No change to the file contents are necessary or desirable. Simply
|
||||
rename the file.
|
||||
|
||||
* Inter-library dependencies should be fully tracked by libtool.
|
||||
Reminded by Alexandre Oliva. This requires looking up installed
|
||||
libtool libraries for transparent support.
|
||||
|
||||
* Get rid of the sections that try to change behaviour for GNU ld. We
|
||||
really should make our shared library support just depend on the
|
||||
compiler type.
|
||||
|
||||
* Alexandre Oliva suggests that we hardcode paths into libraries, as
|
||||
well as binaries: `... -Wl,-soname -Wl,/tmp/libtest.so.0 ...'.
|
||||
|
||||
@ -23,8 +44,6 @@ AIX 4), distinguishes between global function and global variable
|
||||
references. This means that we cannot declare every symbol as `extern
|
||||
char'. Find a workaround.
|
||||
|
||||
* Maybe show other maintainers my nasty ~/bin/libtool trick.
|
||||
|
||||
In the future:
|
||||
**************
|
||||
|
||||
@ -68,6 +87,11 @@ notes.
|
||||
Things to think about:
|
||||
**********************
|
||||
|
||||
* For OSes with symbol export lists, we should add some flags to allow
|
||||
packages to specify explicit lists, or to bypass them entirely.
|
||||
Automatic-generation using nm must be the default, since that is
|
||||
simplest.
|
||||
|
||||
* Talk with RMS about his so-called `automatic package generation
|
||||
tool.' This is probably what Thomas has been murmuring about for the
|
||||
Hurd. We'll need to integrate package-supplied programs such as
|
||||
@ -78,8 +102,3 @@ like libtool should be distributed as part of such a binary package.
|
||||
* Maybe implement full support for other orthogonal library types
|
||||
(libhello_g, libhello_p, 64 vs 32-bit ABI's, etc). Make these types
|
||||
configurable.
|
||||
|
||||
* Add support for windoze DLL's, and maybe other jumptable libs.
|
||||
Check out Lesstif and Tcl configuration again (maybe they would be
|
||||
interested in libtool by now?). The Cygnus win32 project may also be
|
||||
of value, though it still seems pretty rudimentary right now.
|
||||
|
194
doc/libtool.texi
194
doc/libtool.texi
@ -111,8 +111,7 @@ libtool.
|
||||
* Maintaining:: Information used by the libtool maintainer.
|
||||
* Index:: Full index.
|
||||
|
||||
@detailmenu
|
||||
--- The Detailed Node Listing ---
|
||||
@detailmenu --- The Detailed Node Listing ---
|
||||
|
||||
Introduction
|
||||
|
||||
@ -197,6 +196,7 @@ Maintenance notes for libtool
|
||||
* Tested platforms:: When libtool was last tested.
|
||||
* Platform quirks:: Information about different library systems.
|
||||
* libtool script contents:: Configuration information that libtool uses.
|
||||
* Cheap tricks:: Making libtool maintainership easier.
|
||||
|
||||
Platform quirks
|
||||
|
||||
@ -502,17 +502,18 @@ arguments (@pxref{Compile mode}):
|
||||
@example
|
||||
a23$ @kbd{libtool gcc -g -O -c foo.c}
|
||||
gcc -g -O -c foo.c
|
||||
ln -s foo.o foo.lo
|
||||
echo timestamp > foo.lo
|
||||
a23$ @kbd{libtool gcc -g -O -c hello.c}
|
||||
gcc -g -O -c hello.c
|
||||
ln -s hello.o hello.lo
|
||||
echo timestamp > hello.lo
|
||||
a23$
|
||||
@end example
|
||||
|
||||
Note that libtool creates two object files for each invocation. The
|
||||
@samp{.lo} file is a library object, and the @samp{.o} file is a
|
||||
standard object file. On @samp{a23}, these files are identical, because
|
||||
only static libraries are supported.
|
||||
Note that libtool creates two files for each invocation. The @samp{.lo}
|
||||
file is a library object, which may be built into a shared library, and
|
||||
the @samp{.o} file is a standard object file. On @samp{a23}, the
|
||||
library objects are just timestamps, because only static libraries are
|
||||
supported.
|
||||
|
||||
On shared library systems, libtool automatically inserts the PIC
|
||||
generation flags into the compilation command, so that the library
|
||||
@ -522,14 +523,17 @@ object and the standard object differ:
|
||||
burger$ @kbd{libtool gcc -g -O -c foo.c}
|
||||
gcc -g -O -c -fPIC -DPIC foo.c
|
||||
mv -f foo.o foo.lo
|
||||
gcc -g -O -c foo.c
|
||||
gcc -g -O -c foo.c >/dev/null 2>&1
|
||||
burger$ @kbd{libtool gcc -g -O -c hello.c}
|
||||
gcc -g -O -c -fPIC -DPIC hello.c
|
||||
mv -f hello.o hello.lo
|
||||
gcc -g -O -c hello.c
|
||||
gcc -g -O -c hello.c >/dev/null 2>&1
|
||||
burger$
|
||||
@end example
|
||||
|
||||
Notice that the second run of GCC has its output discarded. This is
|
||||
done so that compiler warnings aren't annoyingly duplicated.
|
||||
|
||||
@node Linking libraries
|
||||
@section Linking libraries
|
||||
|
||||
@ -565,10 +569,10 @@ the same ones you would use to produce an executable named
|
||||
@file{libhello.la} with your compiler (@pxref{Link mode}):
|
||||
|
||||
@example
|
||||
burger$ @kbd{libtool gcc -g -O -o libhello.la foo.o hello.o}
|
||||
a23$ @kbd{libtool gcc -g -O -o libhello.la foo.o hello.o}
|
||||
libtool: cannot build libtool library `libhello.la' from non-libtool \
|
||||
objects
|
||||
burger$
|
||||
a23$
|
||||
@end example
|
||||
|
||||
Aha! Libtool caught a common error@dots{} trying to build a library
|
||||
@ -576,10 +580,10 @@ from standard objects instead of library objects. This doesn't matter
|
||||
for static libraries, but on shared library systems, it is of great
|
||||
importance.
|
||||
|
||||
So, let's try again, this time with the library object
|
||||
files:@footnote{Remember that we need to add @kbd{-lm} to the link
|
||||
command line because @file{foo.c} uses the @code{cos(3)} math library
|
||||
function. @xref{Using libtool}.}
|
||||
So, let's try again, this time with the library object files. Remember
|
||||
also that we need to add @kbd{-lm} to the link command line because
|
||||
@file{foo.c} uses the @code{cos(3)} math library function (@pxref{Using
|
||||
libtool}):
|
||||
|
||||
@example
|
||||
a23$ @kbd{libtool gcc -g -O -o libhello.la foo.lo hello.lo -lm}
|
||||
@ -746,16 +750,16 @@ until we link it against at least a few more programs.
|
||||
|
||||
If @file{hell} was a complicated program, you would certainly want to
|
||||
test and debug it before installing it on your system. In the above
|
||||
section, you saw how the libtool wrapper script makes it possible to
|
||||
run the program directly, but unfortunately, it interferes with the
|
||||
debugger:
|
||||
section, you saw how the libtool wrapper script makes it possible to run
|
||||
the program directly, but unfortunately, this mechanism interferes with
|
||||
the debugger:
|
||||
|
||||
@example
|
||||
burger$ @kbd{gdb hell}
|
||||
GDB is free software and you are welcome to distribute copies of it
|
||||
under certain conditions; type "show copying" to see the conditions.
|
||||
There is absolutely no warranty for GDB; type "show warranty" for details.
|
||||
GDB 4.16 (i386-unknown-netbsd), Copyright 1996 Free Software Foundation, Inc...
|
||||
There is no warranty for GDB; type "show warranty" for details.
|
||||
GDB 4.16 (i386-unknown-netbsd), (C) 1996 Free Software Foundation, Inc.
|
||||
|
||||
"hell": not in executable format: File format not recognized
|
||||
|
||||
@ -771,8 +775,8 @@ burger$ @kbd{gdb @value{objdir}/hell}
|
||||
trick:/home/src/libtool/demo$ gdb .libs/hell
|
||||
GDB is free software and you are welcome to distribute copies of it
|
||||
under certain conditions; type "show copying" to see the conditions.
|
||||
There is absolutely no warranty for GDB; type "show warranty" for details.
|
||||
GDB 4.16 (i386-unknown-netbsd), Copyright 1996 Free Software Foundation, Inc...
|
||||
There is no warranty for GDB; type "show warranty" for details.
|
||||
GDB 4.16 (i386-unknown-netbsd), (C) 1996 Free Software Foundation, Inc.
|
||||
(gdb) @kbd{break main}
|
||||
Breakpoint 1 at 0x8048547: file main.c, line 29.
|
||||
(gdb) @kbd{run}
|
||||
@ -794,8 +798,8 @@ the executable wrapper (@pxref{Execute mode}):
|
||||
burger$ @kbd{libtool gdb hell}
|
||||
GDB is free software and you are welcome to distribute copies of it
|
||||
under certain conditions; type "show copying" to see the conditions.
|
||||
There is absolutely no warranty for GDB; type "show warranty" for details.
|
||||
GDB 4.16 (i386-unknown-netbsd), Copyright 1996 Free Software Foundation, Inc...
|
||||
There is no warranty for GDB; type "show warranty" for details.
|
||||
GDB 4.16 (i386-unknown-netbsd), (C) 1996 Free Software Foundation, Inc.
|
||||
(gdb) @kbd{break main}
|
||||
Breakpoint 1 at 0x8048547: file main.c, line 29.
|
||||
(gdb) @kbd{run}
|
||||
@ -844,9 +848,9 @@ ranlib /usr/local/lib/libhello.a
|
||||
a23#
|
||||
@end example
|
||||
|
||||
Note that the libtool library @file{libhello.la} is also installed, for
|
||||
informational purposes, and to help libtool with uninstallation
|
||||
(@pxref{Uninstall mode}).
|
||||
Note that the libtool library @file{libhello.la} is also installed, to
|
||||
help libtool with uninstallation (@pxref{Uninstall mode}) and to help
|
||||
programs with dlopening (@pxref{Dlopened modules}).
|
||||
|
||||
Here is the shared library example:
|
||||
|
||||
@ -879,10 +883,24 @@ further hints on what to do (@pxref{Finish mode}):
|
||||
|
||||
@example
|
||||
burger# @kbd{libtool -n --finish /usr/local/lib}
|
||||
ldconfig -m /usr/local/lib
|
||||
To link against installed libraries in LIBDIR, users may have to:
|
||||
- add LIBDIR to their `LD_LIBRARY_PATH' environment variable
|
||||
- use the `-LLIBDIR' linker flag
|
||||
PATH="$PATH:/sbin" ldconfig -m /usr/local/lib
|
||||
----------------------------------------------------------------------
|
||||
Libraries have been installed in:
|
||||
/usr/local/lib
|
||||
|
||||
To link against installed libraries in a given directory, LIBDIR,
|
||||
you must use the `-LLIBDIR' flag during linking.
|
||||
|
||||
You will also need to do one of the following:
|
||||
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
|
||||
during execution
|
||||
- add LIBDIR to the `LD_RUN_PATH' environment variable
|
||||
during linking
|
||||
- use the `-RLIBDIR' linker flag
|
||||
|
||||
See any operating system documentation about shared libraries for
|
||||
more information, such as the ld(1) and ld.so(8) manual pages.
|
||||
----------------------------------------------------------------------
|
||||
burger#
|
||||
@end example
|
||||
|
||||
@ -930,7 +948,7 @@ To do this, you should ignore libtool entirely, and just use the old
|
||||
@code{ar} and @code{ranlib} commands to create a static library.
|
||||
|
||||
If you want to install the library (but you probably don't), then you
|
||||
may use libtool if you want:
|
||||
may use libtool:
|
||||
|
||||
@example
|
||||
burger$ @kbd{libtool ./install-sh -c libhello.a /local/lib/libhello.a}
|
||||
@ -958,13 +976,16 @@ creating a standalone binary. Use libtool to do the linking and add the
|
||||
The @code{libtool} program has the following synopsis:
|
||||
|
||||
@example
|
||||
libtool [@var{option}]@dots{} [@var{mode-arg}]...
|
||||
libtool [@var{option}]@dots{} [@var{mode-arg}]@dots{}
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
and accepts the following options:
|
||||
|
||||
@table @samp
|
||||
@item --config
|
||||
Display libtool configuration variables and exit.
|
||||
|
||||
@item --debug
|
||||
Dump a trace of shell script execution to standard output. This
|
||||
produces a lot of output, so you may wish to pipe it to @code{more(1)}
|
||||
@ -976,9 +997,8 @@ Don't create, modify, or delete any files, just show what commands would
|
||||
be executed by libtool.
|
||||
|
||||
@item --features
|
||||
Display libtool configuration information and exit. This provides a way
|
||||
for packages to determine whether shared or static libraries will be
|
||||
built.
|
||||
Display basic configuration options. This provides a way for packages
|
||||
to determine whether shared or static libraries will be built.
|
||||
|
||||
@item --finish
|
||||
Same as @samp{--mode=finish}.
|
||||
@ -1363,6 +1383,13 @@ Display a help message and exit.
|
||||
Do not use @code{config.sub} to verify that @var{host} is a valid
|
||||
canonical host system name.
|
||||
|
||||
@item --output=@var{file}
|
||||
@item -o @var{file}
|
||||
Instead of creating a libtool script called @code{libtool}, create one
|
||||
called @var{file}. This can be useful if you want to create libtool
|
||||
scripts for cross-compilers, or you want to have more than one libtool
|
||||
in the same directory.
|
||||
|
||||
@item --quiet
|
||||
@itemx --silent
|
||||
Do not print informational messages when running configuration tests.
|
||||
@ -1475,17 +1502,18 @@ libraries. You can modify these defaults by calling either the
|
||||
@code{AM_DISABLE_SHARED} or @code{AM_DISABLE_STATIC} macros:
|
||||
|
||||
@example
|
||||
# Turn off shared libraries during beta-testing, since they make the
|
||||
# build process take too long.
|
||||
# Turn off shared libraries during beta-testing, since they
|
||||
# make the build process take too long.
|
||||
AM_DISABLE_SHARED
|
||||
AM_PROG_LIBTOOL
|
||||
@end example
|
||||
|
||||
The user may specify a modified form of @samp{--enable-shared} and
|
||||
@samp{--enable-static} to choose whether shared or static libraries are
|
||||
built based on the name of the package. For example, to have shared
|
||||
@samp{bfd} and @samp{gdb} libraries built, but not shared @samp{libg++},
|
||||
you can run all three @code{configure} scripts as follows:
|
||||
The user may specify modified forms of both the @samp{--enable-shared}
|
||||
and @samp{--enable-static} flags to choose whether shared or static
|
||||
libraries are built based on the name of the package. For example, to
|
||||
have shared @samp{bfd} and @samp{gdb} libraries built, but not shared
|
||||
@samp{libg++}, you can run all three @code{configure} scripts as
|
||||
follows:
|
||||
|
||||
@example
|
||||
trick$ ./configure --enable-shared=bfd,gdb
|
||||
@ -1493,9 +1521,10 @@ trick$ ./configure --enable-shared=bfd,gdb
|
||||
|
||||
In general, specifying @samp{--enable-shared=@var{pkgs}} is the same as
|
||||
specifying @samp{--enable-shared} to every package named in the
|
||||
@var{pkgs} list, and @samp{--disable-shared} to every other package.
|
||||
The @samp{--enable-static=@var{pkgs}} flag behaves similarly, except it
|
||||
translates into @samp{--enable-static} and @samp{--disable-static}.
|
||||
comma-separated @var{pkgs} list, and @samp{--disable-shared} to every
|
||||
other package. The @samp{--enable-static=@var{pkgs}} flag behaves
|
||||
similarly, but it uses @samp{--enable-static} and
|
||||
@samp{--disable-static}.
|
||||
|
||||
The package name @samp{default} matches any packages which have not set
|
||||
their name in the @code{PACKAGE} environment variable.
|
||||
@ -1881,8 +1910,8 @@ trick$ @kbd{ls /usr/lib/libbfd*}
|
||||
trick$
|
||||
@end example
|
||||
|
||||
On @samp{trick}, @file{/usr/lib/libbfd.so} is just a symbolic link to
|
||||
@file{/usr/lib/libbfd.so.2.7.0.2}, which was distributed as a part of
|
||||
On @samp{trick}, @file{/usr/lib/libbfd.so} is a symbolic link to
|
||||
@file{libbfd.so.2.7.0.2}, which was distributed as a part of
|
||||
@samp{binutils-2.7.0.2}.
|
||||
|
||||
Unfortunately, this convention conflicts directly with libtool's idea of
|
||||
@ -1904,9 +1933,9 @@ trick$
|
||||
@end example
|
||||
|
||||
In this case, @file{/usr/lib/libbfd.so} is a symbolic link to
|
||||
@file{/usr/lib/libbfd-2.9.0.so.0.0.0}. This makes it obvious that the
|
||||
user is dealing with @samp{binutils-2.9.0}, without compromising
|
||||
libtool's idea of interface versions.
|
||||
@file{libbfd-2.9.0.so.0.0.0}. This makes it obvious that the user is
|
||||
dealing with @samp{binutils-2.9.0}, without compromising libtool's idea
|
||||
of interface versions.
|
||||
|
||||
Note that this option actually causes a modification of the library
|
||||
name, so do not use it unless you want to break binary compatibility
|
||||
@ -2123,12 +2152,12 @@ libraries are found. This restriction is only necessary to preserve
|
||||
compatibility with static library systems and simple dynamic library
|
||||
systems.
|
||||
|
||||
Some platforms, such as AIX, do not even allow you this flexibility. In
|
||||
order to build a shared library, it must be entirely self-contained
|
||||
(that is, have no references to external symbols), and you need to
|
||||
specify the @var{-no-undefined} flag to allow a shared library to be
|
||||
built. By default, libtool builds only static libraries on these kinds
|
||||
of platforms.
|
||||
Some platforms, such as AIX and Windows 95, do not even allow you this
|
||||
flexibility. In order to build a shared library, it must be entirely
|
||||
self-contained (that is, have references only to symbols that are found
|
||||
in the @samp{.lo} files or the specified @samp{-l} libraries), and you
|
||||
need to specify the @var{-no-undefined} flag. By default, libtool
|
||||
builds only static libraries on these kinds of platforms.
|
||||
|
||||
@node Dlopened modules
|
||||
@chapter Dlopened modules
|
||||
@ -2561,6 +2590,7 @@ porting libtool to new systems, or writing your own libtool.
|
||||
* Tested platforms:: When libtool was last tested.
|
||||
* Platform quirks:: Information about different library systems.
|
||||
* libtool script contents:: Configuration information that libtool uses.
|
||||
* Cheap tricks:: Making libtool maintainership easier.
|
||||
@end menu
|
||||
|
||||
@node New ports
|
||||
@ -2629,7 +2659,7 @@ The following is a list of valuable documentation references:
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
SGI's IRIX Manual Pages,
|
||||
SGI's IRIX Manual Pages, which can be found at
|
||||
@url{http://techpubs.sgi.com/cgi-bin/infosrch.cgi?cmd=browse&db=man}.
|
||||
|
||||
@item
|
||||
@ -2721,12 +2751,14 @@ use the @code{ar ts} command, instead.
|
||||
@cindex libtool implementation
|
||||
|
||||
The @code{libtool} script is generated by @code{ltconfig}
|
||||
(@pxref{Configuring}). Ever since libtool version 0.7, this script
|
||||
simply sets shell variables, then sources the libtool backend,
|
||||
@code{ltmain.sh}.
|
||||
(@pxref{Configuring}). From libtool version 0.7 to 1.0, this script
|
||||
simply set shell variables, then sourced the libtool backend,
|
||||
@code{ltmain.sh}. @code{ltconfig} from libtool version 1.1 and later
|
||||
inlines the contents of @code{ltmain.sh} into the generated
|
||||
@code{libtool}, which improves performance on many systems.
|
||||
|
||||
Here is a listing of each of these variables, and how they are used
|
||||
within @code{ltmain.sh}:
|
||||
Here is a listing of each of the configuration variables, and how they
|
||||
are used within @code{ltmain.sh}:
|
||||
|
||||
@defvar AR
|
||||
The name of the system library archiver.
|
||||
@ -2936,6 +2968,40 @@ generally exits with an error message.
|
||||
Variables ending in @samp{_spec} are @code{eval}ed before being used by
|
||||
libtool.
|
||||
|
||||
@node Cheap tricks
|
||||
@section Cheap tricks
|
||||
|
||||
Here are a few tricks that you can use in order to make maintainership
|
||||
easier:
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
When people report bugs, ask them to use the @samp{--config},
|
||||
@samp{--debug}, or @samp{--features} flags, if you think they will help
|
||||
you. These flags are there to help you get information directly, rather
|
||||
than having to trust second-hand observation.
|
||||
|
||||
@item
|
||||
Rather than reconfiguring libtool every time I make a change to
|
||||
@code{ltconfig.in} or @code{ltmain.in}, I keep a permanent
|
||||
@code{libtool} script in my @var{PATH}, which sources @code{ltmain.in}
|
||||
directly.
|
||||
|
||||
The following steps describe how to create such a script, where
|
||||
@code{/home/src/libtool} is the directory containing the libtool source
|
||||
tree, and @code{/home/src/libtool/libtool} is a libtool script that has
|
||||
been configured for your platform, and :
|
||||
|
||||
@example
|
||||
trick$ @kbd{sed '/^# ltmain\.sh/q' /usr/local/bin/libtool > ~/bin/libtool}
|
||||
trick$ @kbd{cat >> ~/bin/libtool
|
||||
LTCONFIG_VERSION="@@VERSION@@"
|
||||
. /home/src/libtool/ltmain.in}
|
||||
trick$ @kbd{chmod +x ~/bin/libtool}
|
||||
trick$
|
||||
@end example
|
||||
@end itemize
|
||||
|
||||
@page
|
||||
@node Index
|
||||
@unnumbered Index
|
||||
|
18
libtool.m4
vendored
18
libtool.m4
vendored
@ -78,6 +78,10 @@ LD="$LD" NM="$NM" RANLIB="$RANLIB" LN_S="$LN_S" \
|
||||
${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
|
||||
$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \
|
||||
|| AC_MSG_ERROR([libtool configure failed])
|
||||
|
||||
# Redirect the config.log output again, so that the ltconfig log is not
|
||||
# clobbered by the next message.
|
||||
exec 5>>./config.log
|
||||
])
|
||||
|
||||
# AM_ENABLE_SHARED - implement the --enable-shared flag
|
||||
@ -225,13 +229,10 @@ fi])
|
||||
AC_DEFUN(AM_PROG_NM,
|
||||
[AC_MSG_CHECKING([for BSD-compatible nm])
|
||||
AC_CACHE_VAL(ac_cv_path_NM,
|
||||
[case "$NM" in
|
||||
changequote(,)dnl
|
||||
/* | [A-Za-z]:\\*)
|
||||
changequote([,])dnl
|
||||
ac_cv_path_NM="$NM" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
[if test -n "$NM"; then
|
||||
# Let the user override the test.
|
||||
ac_cv_path_NM="$NM"
|
||||
else
|
||||
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
|
||||
for ac_dir in /usr/ucb /usr/ccs/bin $PATH /bin; do
|
||||
test -z "$ac_dir" && ac_dir=.
|
||||
@ -251,8 +252,7 @@ changequote([,])dnl
|
||||
done
|
||||
IFS="$ac_save_ifs"
|
||||
test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm
|
||||
;;
|
||||
esac])
|
||||
fi])
|
||||
NM="$ac_cv_path_NM"
|
||||
AC_MSG_RESULT([$NM])
|
||||
AC_SUBST(NM)
|
||||
|
65
ltconfig.in
65
ltconfig.in
@ -46,8 +46,7 @@ else
|
||||
# backslashes. This makes it impossible to quote backslashes using
|
||||
# echo "$something" | sed 's/\\/\\\\/g'
|
||||
#
|
||||
# So, first we look for a working echo in the user's PATH, and if we
|
||||
# can't find one, we emulate echo with printf '%s\n'
|
||||
# So, first we look for a working echo in the user's PATH.
|
||||
IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:"
|
||||
for dir in $PATH /usr/ucb; do
|
||||
if test -f $dir/echo && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t'; then
|
||||
@ -58,12 +57,23 @@ else
|
||||
IFS="$save_ifs"
|
||||
|
||||
if test "X$echo" = Xecho; then
|
||||
# We didn't find a better echo, so try using printf.
|
||||
echo='printf %s\n'
|
||||
if test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then :
|
||||
# We didn't find a better echo, so look for alternatives.
|
||||
if test "X`(print -r '\t') 2>/dev/null`" = 'X\t'; then
|
||||
# This shell has a builtin print -r that does the trick.
|
||||
echo='print -r'
|
||||
elif test -f /bin/ksh && test "X$CONFIG_SHELL" != X/bin/ksh; then
|
||||
# If we have ksh, try running ltconfig again with it.
|
||||
CONFIG_SHELL=/bin/ksh
|
||||
export CONFIG_SHELL
|
||||
exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"}
|
||||
else
|
||||
# Oops. We lost, so just stick with echo.
|
||||
echo=echo
|
||||
# Try using printf.
|
||||
echo='printf %s\n'
|
||||
if test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then :
|
||||
else
|
||||
# Oops. We lost completely, so just stick with echo.
|
||||
echo=echo
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
@ -90,6 +100,7 @@ rm="rm -f"
|
||||
help="Try \`$progname --help' for more information."
|
||||
|
||||
# Global variables:
|
||||
default_ofile=libtool
|
||||
can_build_shared=yes
|
||||
enable_shared=yes
|
||||
# All known linkers require a `.a' archive for static linking.
|
||||
@ -101,6 +112,7 @@ ac_config_guess=
|
||||
ac_config_sub=
|
||||
host=
|
||||
nonopt=
|
||||
ofile="$default_ofile"
|
||||
verify_host=yes
|
||||
with_gcc=no
|
||||
with_gnu_ld=no
|
||||
@ -142,6 +154,7 @@ Generate a system-specific libtool script.
|
||||
--disable-static do not build static libraries
|
||||
--help display this help and exit
|
||||
--no-verify do not verify that HOST is a valid host type
|
||||
-o, --output=FILE specify the output file [default=$default_ofile]
|
||||
--quiet same as \`--silent'
|
||||
--silent do not print informational messages
|
||||
--srcdir=DIR find \`config.guess' in DIR
|
||||
@ -173,6 +186,9 @@ EOM
|
||||
|
||||
--no-verify) verify_host=no ;;
|
||||
|
||||
--output | -o) prev=ofile ;;
|
||||
--output=*) ofile="$optarg" ;;
|
||||
|
||||
--version) echo "$PROGRAM (GNU $PACKAGE) $VERSION"; exit 0 ;;
|
||||
|
||||
--with-gcc) with_gcc=yes ;;
|
||||
@ -827,7 +843,11 @@ else
|
||||
;;
|
||||
|
||||
irix5* | irix6*)
|
||||
archive_cmds='$LD -shared -o $lib -soname $soname -set_version $verstring$libobjs'
|
||||
if test "$with_gcc" = yes; then
|
||||
archive_cmds='$CC -shared -o $lib ${wl}-soname ${wl}$soname ${wl}-set_version ${wl}$verstring$libobjs'
|
||||
else
|
||||
archive_cmds='$LD -shared -o $lib -soname $soname -set_version $verstring$libobjs'
|
||||
fi
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
;;
|
||||
|
||||
@ -1138,7 +1158,7 @@ amigaos*)
|
||||
freebsd2* | freebsd3*)
|
||||
version_type=sunos
|
||||
library_names_spec='${libname}${release}.so.$versuffix $libname.so'
|
||||
finish_cmds='PATH="$PATH:/sbin" ldconfig -m $libdir'
|
||||
finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
|
||||
shlibpath_var=LD_LIBRARY_PATH
|
||||
;;
|
||||
|
||||
@ -1177,7 +1197,7 @@ linux-gnu*)
|
||||
version_type=linux
|
||||
library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so'
|
||||
soname_spec='${libname}${release}.so.$major'
|
||||
finish_cmds='PATH="$PATH:/sbin" ldconfig -n $libdir'
|
||||
finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
|
||||
shlibpath_var=LD_LIBRARY_PATH
|
||||
|
||||
if test -f /lib/ld.so.1; then
|
||||
@ -1194,7 +1214,7 @@ linux-gnu*)
|
||||
netbsd* | openbsd*)
|
||||
version_type=sunos
|
||||
library_names_spec='${libname}${release}.so.$versuffix'
|
||||
finish_cmds='PATH="$PATH:/sbin" ldconfig -m $libdir'
|
||||
finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
|
||||
shlibpath_var=LD_LIBRARY_PATH
|
||||
;;
|
||||
|
||||
@ -1229,7 +1249,7 @@ solaris2*)
|
||||
sunos4*)
|
||||
version_type=sunos
|
||||
library_names_spec='${libname}${release}.so.$versuffix'
|
||||
finish_cmds='PATH="$PATH:/usr/etc" ldconfig $libdir'
|
||||
finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
|
||||
shlibpath_var=LD_LIBRARY_PATH
|
||||
;;
|
||||
|
||||
@ -1319,14 +1339,13 @@ for var in ltecho old_CC old_CFLAGS old_CPPFLAGS old_LD old_NM old_RANLIB \
|
||||
esac
|
||||
done
|
||||
|
||||
ofile=libtool
|
||||
trap "$rm $ofile; exit 1" 1 2 15
|
||||
echo creating $ofile
|
||||
$rm $ofile
|
||||
cat <<EOF > $ofile
|
||||
trap "$rm \"$ofile\"; exit 1" 1 2 15
|
||||
echo "creating $ofile"
|
||||
$rm "$ofile"
|
||||
cat <<EOF > "$ofile"
|
||||
#! $SHELL
|
||||
|
||||
# libtool - Provide generalized library-building support services.
|
||||
# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
|
||||
# Generated automatically by $PROGRAM - GNU $PACKAGE $VERSION
|
||||
# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh.
|
||||
#
|
||||
@ -1498,7 +1517,7 @@ EOF
|
||||
|
||||
case "$host_os" in
|
||||
aix3*)
|
||||
cat <<\EOF >> $ofile
|
||||
cat <<\EOF >> "$ofile"
|
||||
|
||||
# AIX sometimes has problems with the GCC collect2 program. For some
|
||||
# reason, if we set the COLLECT_NAMES environment variable, the problems
|
||||
@ -1511,13 +1530,13 @@ EOF
|
||||
;;
|
||||
esac
|
||||
|
||||
echo '### END LIBTOOL CONFIG' >> $ofile
|
||||
echo >> $ofile
|
||||
echo '### END LIBTOOL CONFIG' >> "$ofile"
|
||||
echo >> "$ofile"
|
||||
|
||||
# Append the ltmain.sh script.
|
||||
cat "$ltmain" >> $ofile || (rm -f $ofile; exit 1)
|
||||
cat "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1)
|
||||
|
||||
chmod +x $ofile
|
||||
chmod +x "$ofile"
|
||||
exit 0
|
||||
|
||||
# Local Variables:
|
||||
|
68
ltmain.in
68
ltmain.in
@ -111,6 +111,11 @@ do
|
||||
exit 0
|
||||
;;
|
||||
|
||||
--config)
|
||||
sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0
|
||||
exit 0
|
||||
;;
|
||||
|
||||
--debug)
|
||||
echo "$progname: enabling shell trace mode"
|
||||
set -x
|
||||
@ -121,7 +126,17 @@ do
|
||||
;;
|
||||
|
||||
--features)
|
||||
sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0
|
||||
echo "host: $host"
|
||||
if test "$build_libtool_libs" = yes; then
|
||||
echo "enable shared libraries"
|
||||
else
|
||||
echo "disable shared libraries"
|
||||
fi
|
||||
if test "$build_old_libs" = yes; then
|
||||
echo "enable static libraries"
|
||||
else
|
||||
echo "disable static libraries"
|
||||
fi
|
||||
exit 0
|
||||
;;
|
||||
|
||||
@ -581,7 +596,7 @@ if test -z "$show_help"; then
|
||||
old_library=
|
||||
|
||||
# Check to see that this really is a libtool archive.
|
||||
if (sed -e '2q' $arg | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then :
|
||||
if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
|
||||
else
|
||||
$echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
|
||||
exit 1
|
||||
@ -1421,7 +1436,7 @@ dld_preloaded_symbols[] =
|
||||
#! $SHELL
|
||||
|
||||
# $output - temporary wrapper script for $objdir/$output
|
||||
# Generated by ltmain.sh - GNU $PACKAGE $VERSION
|
||||
# Generated by $PROGRAM - GNU $PACKAGE $VERSION
|
||||
#
|
||||
# The $output program cannot be directly executed until all the libtool
|
||||
# libraries that it depends on are installed.
|
||||
@ -1556,7 +1571,7 @@ fi\
|
||||
if test -z "$run"; then
|
||||
$echo > $output "\
|
||||
# $output - a libtool library file
|
||||
# Generated by ltmain.sh - GNU $PACKAGE $VERSION
|
||||
# Generated by $PROGRAM - GNU $PACKAGE $VERSION
|
||||
|
||||
# The name that we can dlopen(3).
|
||||
dlname='$dlname'
|
||||
@ -1627,7 +1642,7 @@ libdir='$install_libdir'\
|
||||
opts=
|
||||
prev=
|
||||
install_type=
|
||||
isdir=
|
||||
isdir=no
|
||||
stripme=
|
||||
for arg
|
||||
do
|
||||
@ -1697,7 +1712,7 @@ libdir='$install_libdir'\
|
||||
|
||||
# Check to see that the destination is a directory.
|
||||
test -d "$dest" && isdir=yes
|
||||
if test -n "$isdir"; then
|
||||
if test "$isdir" = yes; then
|
||||
destdir="$dest"
|
||||
destname=
|
||||
else
|
||||
@ -1747,7 +1762,7 @@ libdir='$install_libdir'\
|
||||
|
||||
*.la)
|
||||
# Check to see that this really is a libtool archive.
|
||||
if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then :
|
||||
if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
|
||||
else
|
||||
$echo "$modename: \`$file' is not a valid libtool archive" 1>&2
|
||||
$echo "$help" 1>&2
|
||||
@ -1883,8 +1898,16 @@ libdir='$install_libdir'\
|
||||
;;
|
||||
|
||||
*)
|
||||
# Figure out destination file name, if it wasn't already specified.
|
||||
if test -n "$destname"; then
|
||||
destfile="$destdir/$destname"
|
||||
else
|
||||
destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
|
||||
destfile="$destdir/$destfile"
|
||||
fi
|
||||
|
||||
# Do a test to see if this is really a libtool program.
|
||||
if (sed -e '4q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then
|
||||
if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
|
||||
link_against_libtool_libs=
|
||||
finalize_command=
|
||||
|
||||
@ -1940,8 +1963,8 @@ libdir='$install_libdir'\
|
||||
fi
|
||||
fi
|
||||
|
||||
$show "$install_prog$stripme $file $dest"
|
||||
$run eval "$install_prog\$stripme \$file \$dest" || exit $?
|
||||
$show "$install_prog$stripme $file $destfile"
|
||||
$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
|
||||
;;
|
||||
esac
|
||||
done
|
||||
@ -1984,6 +2007,7 @@ libdir='$install_libdir'\
|
||||
finish)
|
||||
modename="$modename: finish"
|
||||
libdirs="$nonopt"
|
||||
admincmds=
|
||||
|
||||
if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
|
||||
for dir
|
||||
@ -1999,19 +2023,21 @@ libdir='$install_libdir'\
|
||||
for cmd in $cmds; do
|
||||
IFS="$save_ifs"
|
||||
$show "$cmd"
|
||||
$run eval "$cmd"
|
||||
$run eval "$cmd" || admincmds="$admincmds
|
||||
$cmd"
|
||||
done
|
||||
IFS="$save_ifs"
|
||||
fi
|
||||
if test -n "$finish_eval"; then
|
||||
# Do the single finish_eval.
|
||||
eval cmds=\"$finish_eval\"
|
||||
$run eval "$cmds"
|
||||
$run eval "$cmds" || admincmds="$admincmds
|
||||
$cmds"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
echo "------------------------------------------------------------------------------"
|
||||
echo "----------------------------------------------------------------------"
|
||||
echo "Libraries have been installed in:"
|
||||
for libdir in $libdirs; do
|
||||
echo " $libdir"
|
||||
@ -2020,7 +2046,7 @@ libdir='$install_libdir'\
|
||||
echo "To link against installed libraries in a given directory, LIBDIR,"
|
||||
echo "you must use the \`-LLIBDIR' flag during linking."
|
||||
echo
|
||||
echo " You will also need to do one of the following:"
|
||||
echo " You will also need to do at least one of the following:"
|
||||
if test -n "$shlibpath_var"; then
|
||||
echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
|
||||
echo " during execution"
|
||||
@ -2035,13 +2061,16 @@ libdir='$install_libdir'\
|
||||
|
||||
echo " - use the \`$flag' linker flag"
|
||||
fi
|
||||
if test -n "$admincmds"; then
|
||||
echo " - have your system administrator run these commands:$admincmds"
|
||||
fi
|
||||
if test -f /etc/ld.so.conf; then
|
||||
echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
|
||||
fi
|
||||
echo
|
||||
echo "See any operating system documentation about shared libraries for"
|
||||
echo "more information, such as the ld(1) and ld.so(8) manual pages."
|
||||
echo "------------------------------------------------------------------------------"
|
||||
echo "----------------------------------------------------------------------"
|
||||
exit 0
|
||||
;;
|
||||
|
||||
@ -2070,7 +2099,7 @@ libdir='$install_libdir'\
|
||||
case "$file" in
|
||||
*.la)
|
||||
# Check to see that this really is a libtool archive.
|
||||
if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then :
|
||||
if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
|
||||
else
|
||||
$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
|
||||
$echo "$help" 1>&2
|
||||
@ -2141,7 +2170,7 @@ libdir='$install_libdir'\
|
||||
-*) ;;
|
||||
*)
|
||||
# Do a test to see if this is really a libtool program.
|
||||
if (sed -e '4q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then
|
||||
if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
|
||||
# If there is no directory component, then add one.
|
||||
case "$file" in
|
||||
*/* | *\\*) . $file ;;
|
||||
@ -2206,7 +2235,7 @@ libdir='$install_libdir'\
|
||||
case "$name" in
|
||||
*.la)
|
||||
# Possibly a libtool archive, so verify it.
|
||||
if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then
|
||||
if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
|
||||
. $dir/$name
|
||||
|
||||
# Delete the libtool libraries and symlinks.
|
||||
@ -2285,9 +2314,10 @@ case "$mode" in
|
||||
|
||||
Provide generalized library-building support services.
|
||||
|
||||
--config show all configuration variables
|
||||
--debug enable verbose shell tracing
|
||||
-n, --dry-run display commands without modifying any files
|
||||
--features display configuration information and exit
|
||||
--features display basic configuration information and exit
|
||||
--finish same as \`--mode=finish'
|
||||
--help display this help message and exit
|
||||
--mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
|
||||
|
@ -16,12 +16,11 @@ status=0
|
||||
echo=echo
|
||||
if test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then :
|
||||
else
|
||||
# The Solaris, AIX and Digital Unix default echo program unquotes
|
||||
# The Solaris, AIX, and Digital Unix default echo programs unquote
|
||||
# backslashes. This makes it impossible to quote backslashes using
|
||||
# echo "$something" | sed 's/\\/\\\\/g'
|
||||
#
|
||||
# So, first we look for a working echo in the user's PATH, and if we
|
||||
# can't find one, we emulate echo with printf '%s\n'
|
||||
# So, first we look for a working echo in the user's PATH.
|
||||
IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:"
|
||||
for dir in $PATH /usr/ucb; do
|
||||
if test -f $dir/echo && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t'; then
|
||||
@ -32,12 +31,23 @@ else
|
||||
IFS="$save_ifs"
|
||||
|
||||
if test "X$echo" = Xecho; then
|
||||
# We didn't find a better echo, so try using printf.
|
||||
echo='printf %s\n'
|
||||
if test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then :
|
||||
# We didn't find a better echo, so look for alternatives.
|
||||
if test "X`(print -r '\t') 2>/dev/null`" = 'X\t'; then
|
||||
# This shell has a builtin print -r that does the trick.
|
||||
echo='print -r'
|
||||
elif test -f /bin/ksh && test "X$CONFIG_SHELL" != X/bin/ksh; then
|
||||
# If we have ksh, try running ltconfig again with it.
|
||||
CONFIG_SHELL=/bin/ksh
|
||||
export CONFIG_SHELL
|
||||
exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"}
|
||||
else
|
||||
# Oops. We lost, so just stick with echo.
|
||||
echo=echo
|
||||
# Try using printf.
|
||||
echo='printf %s\n'
|
||||
if test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then :
|
||||
else
|
||||
# Oops. We lost completely, so just stick with echo.
|
||||
echo=echo
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
Loading…
Reference in New Issue
Block a user