mirror of
git://git.savannah.gnu.org/libtool.git
synced 2024-12-27 07:09:26 +08:00
387ac2e703
See maintain.texi (Copyright Notices) for rules for maintaining the years in copyright notices. * All Files (Copyright): Updated with missing 2011 and 2012. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
327 lines
12 KiB
Plaintext
327 lines
12 KiB
Plaintext
GNU Libtool
|
|
***********
|
|
|
|
1. Introduction
|
|
===============
|
|
|
|
This is GNU Libtool, a generic library support script. Libtool hides
|
|
the complexity of using shared libraries behind a consistent, portable
|
|
interface.
|
|
|
|
Libtool's home page is:
|
|
|
|
http://www.gnu.org/software/libtool/libtool.html
|
|
|
|
See the file NEWS for a description of recent changes to Libtool.
|
|
|
|
Please note that you can build GNU Libtool from this directory using a
|
|
vendor Make program as long as this is an official release tarball;
|
|
otherwise you will need GNU Make for sane VPATH support. See the file
|
|
INSTALL for complete generic instructions on how to build and install
|
|
Libtool. Also, see the file doc/notes.txt for some platform- specific
|
|
information.
|
|
|
|
See the info node (libtool)Tested Platforms. (or the file doc/PLATFORMS)
|
|
for a list of platforms that Libtool already supports.
|
|
|
|
Please try it on all the platforms you have access to:
|
|
|
|
* If it builds and passes the test suite (`gmake check'), please send
|
|
a short note to the libtool mailing list <libtool@gnu.org> with a
|
|
subject line including the string `[PLATFORM]', and containing the
|
|
details from the end of `./libtool --help' in the body.
|
|
* Otherwise, see `Reporting Bugs' below for how to help us fix any
|
|
problems you discover.
|
|
|
|
To use Libtool, add the new generic library building commands to your
|
|
Makefile, Makefile.in, or Makefile.am. See the documentation for
|
|
details.
|
|
|
|
|
|
2. Reporting Bugs
|
|
=================
|
|
|
|
If this distribution doesn't work for you, before you report the
|
|
problem, at least try upgrading to the latest released version first,
|
|
and see whether the issue persists. If you feel able, you can also
|
|
check whether the issue has been fixed in the development sources for
|
|
the next release (see `Obtaining the Latest Sources' below).
|
|
|
|
Once you've determined that your bug is still not fixed in the latest
|
|
version, please send a full report to <bug-libtool@gnu.org>, including:
|
|
|
|
1. the information from the end of the help message given by
|
|
`./libtool --help', and the verbose output of any failed tests
|
|
(see `The Test Suites' immediately below);
|
|
2. complete instructions for how to reproduce your bug, along with
|
|
the results you were expecting, and how they differ from what you
|
|
actually see;
|
|
3. a workaround or full fix for the bug, if you have it;
|
|
4. a copy of `tests/testsuite.log' if you are experiencing failures
|
|
in the Autotest testsuite.
|
|
5. new test cases for the testsuite that demonstrate the bug are
|
|
especially welcome, and will help to ensure that future releases
|
|
don't reintroduce the problem - if you're not able to write a
|
|
complete testsuite case, a simple standalone shell script is
|
|
usually good enough to help us write a test for you.
|
|
|
|
If you have any other suggestions, or if you wish to port Libtool to a
|
|
new platform, please send email to the mailing list <libtool@gnu.org>.
|
|
|
|
Please note that if you send us an non-trivial code for inclusion in a
|
|
future release, we may ask you for a copyright assignment (for brief
|
|
details see the `Copyright Assignment' section on our `Contributing'
|
|
webpage <http://www.gnu.org/software/libtool/contribute.html>).
|
|
|
|
|
|
3. The Test Suites
|
|
==================
|
|
|
|
Libtool comes with two integrated sets of tests to check that your build
|
|
is sane. You can run both test suites like this, assuming that `gmake'
|
|
refers to GNU make:
|
|
|
|
gmake -k check
|
|
|
|
If you want to run the old testsuite only, do it like this:
|
|
|
|
gmake check TESTSUITEFLAGS=-V
|
|
|
|
If you want to run the new testsuite only, do it like this:
|
|
|
|
gmake check-local
|
|
|
|
The tests of the old test suite run in groups in the various demo
|
|
subdirectories, so if one of the tests early in a group FAILs, the rest
|
|
of the tests in that group will be SKIPped. If you see a FAIL further
|
|
into a group, even if a test with the same name PASSes in another test
|
|
group, you need to take note of the name of the first test in the group
|
|
if you want to rerun the group with FAILures to get verbose output.
|
|
|
|
To run a test group of the old test suite in isolation (say, you think
|
|
you have fixed a bug, but don't want to rerun the entire suite), you can
|
|
do it like this:
|
|
|
|
gmake check TESTSUITEFLAGS=-V TESTS="tests/cdemo-static.test \
|
|
tests/cdemo-static-make.test tests/cdemo-static-exec.test"
|
|
|
|
Providing that you have a FAIL from the most recent group from a
|
|
particular demo directory (like the cdemo-static.test group above), you
|
|
can explore the state of the directory to help with debugging.
|
|
|
|
If you wish to report a test group failure to the libtool list, you need
|
|
to send the verbose output of the FAILing group, along with the
|
|
information from the end of `$(top_builddir)/libtool --help' to the bug
|
|
report mailing list, <bug-libtool@gnu.org> with a subject line that
|
|
includes the string `[TEST FAILURE]'. The file test-suite.log contains
|
|
the verbose output from all failed tests.
|
|
|
|
In order to enable debug shell tracing, you can set VERBOSE=debug when
|
|
running the old test suite.
|
|
|
|
In the long run, Libtool will move to using only the new, Autotest-
|
|
driven testsuite. Its usage is documented in:
|
|
|
|
info Autoconf 'testsuite Invocation'
|
|
|
|
but simple help may also be obtained through:
|
|
|
|
gmake check-local TESTSUITEFLAGS='--help'
|
|
|
|
For verbose output, add the flag `-v', for running only a subset of the
|
|
independent tests, merely specify them by number or by keyword, both of
|
|
which are displayed with the `--list' flag. For example, the `libtool'
|
|
keyword is used for the tests that exercise only this script. So it is
|
|
possible to test an installed script, possibly from a different Libtool
|
|
release, with:
|
|
|
|
gmake check-local \
|
|
TESTSUITEFLAGS="-k libtool LIBTOOL=/path/to/libtool"
|
|
|
|
Some tests, like the one exercising max_cmd_len limits, make use of this
|
|
to invoke the testsuite recursively on a subset of tests. For these
|
|
tests, the variable INNER_TESTSUITEFLAGS may be used. It will be
|
|
expanded right after the `-k libtool', without separating whitespace, so
|
|
that further limiting of the recursive set of tests is possible. For
|
|
example, to run only the template tests within the max_cmd_len, use:
|
|
|
|
gmake check-local TESTSUITEFLAGS="-v -x -k max_cmd_len \
|
|
INNER_TESTSUITEFLAGS=',template -v -x'"
|
|
|
|
If you wish to report test failures to the libtool list, you need to
|
|
send the file `tests/testsuite.log' to the bug report mailing list,
|
|
<bug-libtool@gnu.org>.
|
|
|
|
|
|
4. Obtaining the Latest Sources
|
|
===============================
|
|
|
|
* With the exception of ancient releases, all official GNU Libtool
|
|
releases have a detached GPG signature file. With this you can verify
|
|
that the corresponding file (i.e. without the `.sig' suffix) is the
|
|
same file that was released by the owner of it's GPG key ID. First,
|
|
be sure to download both the .sig file and the corresponding release,
|
|
then run a command like this:
|
|
|
|
gpg --verify libtool-x.y.z.tar.gz.sig
|
|
|
|
If that command fails because you don't have the required public key,
|
|
then run this command to import it:
|
|
|
|
gpg --keyserver keys.gnupg.net --recv-keys 2983D606
|
|
|
|
and then rerun the `gpg --verify' command.
|
|
|
|
* Official stable releases of GNU Libtool, along with these detached
|
|
signature files are available from:
|
|
|
|
ftp://ftp.gnu.org/gnu/libtool
|
|
|
|
To reduce load on the main server, please use one of the mirrors
|
|
listed at:
|
|
|
|
http://www.gnu.org/order/ftp.html
|
|
|
|
* Alpha quality pre-releases of GNU Libtool, also with detached
|
|
signature files are available from:
|
|
|
|
ftp://alpha.gnu.org/gnu/libtool
|
|
|
|
and some of the mirrors listed at:
|
|
|
|
http://www.gnu.org/order/ftp.html
|
|
|
|
* Nightly snapshots of the unreleased development trunk of GNU Libtool
|
|
are available from:
|
|
|
|
http://pogma.com/libtool
|
|
|
|
These files do not have signatures, but will allow you to easily
|
|
determine whether the most recent development code still exhibits any
|
|
bugs you have discovered, without requiring you to install a complete
|
|
build environment and the extra tools needed to bootstrap a version
|
|
control checkout.
|
|
|
|
* The master libtool repository is stored in git.
|
|
|
|
If you are a member of the savannah group for GNU Libtool, a writable
|
|
copy of the libtool repository can be obtained by:
|
|
|
|
git clone <savannah-user>@git.sv.gnu.org:/srv/git/libtool.git
|
|
|
|
If you are behind a firewall that blocks the git protocol, you may
|
|
find it useful to use
|
|
|
|
git config --global url.http://git.sv.gnu.org/r/.insteadof \
|
|
git://git.sv.gnu.org/
|
|
|
|
to force git to transparently rewrite all savannah git references to
|
|
use http.
|
|
|
|
If you are not a member of the savannah group for GNU Libtool, you can
|
|
still fetch a read-only copy with either:
|
|
|
|
git clone git://git.sv.gnu.org/libtool.git
|
|
|
|
or using the CVS pserver protocol:
|
|
|
|
cvs -d:pserver:anonymous@pserver.git.sv.gnu.org:/srv/git/libtool.git \
|
|
co -d libtool HEAD
|
|
|
|
* Before you can build from git, you need to bootstrap. This requires:
|
|
- Autoconf 2.62 or later
|
|
- Automake 1.11.1 or later
|
|
- Help2man 1.29 or later
|
|
- Xz 4.999.8beta or later (from <http://tukaani.org/xz>)
|
|
- Texinfo 4.8 or later
|
|
- Any prerequisites of the above (such as m4, perl, tex)
|
|
|
|
Note that these bootstrapping dependencies are much stricter than
|
|
those required to use a destributed release for your own packages.
|
|
After installation, GNU Libtool is designed to work either standalone,
|
|
or optionally with:
|
|
- Autoconf 2.59 or later
|
|
- Automake 1.9.6 or later
|
|
|
|
* The `bootstrap' script sets up the source directory for you to hack,
|
|
though it may take quite some time to run. If you don't intend to
|
|
re-run the test suite, you can speed up the `bootstrap' step by an
|
|
order of magnitude if you call it like this instead:
|
|
|
|
reconfdirs='. libltdl' ./bootstrap
|
|
|
|
|
|
5. Version Numbering
|
|
====================
|
|
|
|
People have complained that they find the version numbering scheme under
|
|
which libtool is released confusing... so we've changed it!
|
|
|
|
It works like this:
|
|
|
|
<major-number>.<minor-number>
|
|
|
|
Releases with a <major-number> less than 1 were not yet feature
|
|
complete. Releases with a <major-number> of 1 used the old numbering
|
|
scheme that everyone disliked so much. Releases with a <major-number>
|
|
of 2 us the new scheme described here. If libtool ever undergoes a
|
|
major rewrite or substantial restructuring, the <major-number> will be
|
|
incremented again.
|
|
|
|
If we make a patch release to fix bugs in a stable release, we use a
|
|
third number, so:
|
|
|
|
<major-number>.<minor-number>.<micro-number>
|
|
|
|
Version numbers are chosen to make it easy for users to decide two
|
|
things:
|
|
|
|
Q: How `developed' is this release?
|
|
A: The higher the number, the better!
|
|
Q: How `stable' is this release?
|
|
A: - If the <minor-number> is even, it is a stable release, `2.0'.
|
|
- If the <minor-number> is odd, it is a development version with
|
|
new features compared to the last stable release, `2.1a'.
|
|
- If it has an `odd'[1] letter after the version number, it is a
|
|
snapshot direct from CVS, `2.1a'.
|
|
- If it has an `even'[1] letter after the version number, it is an
|
|
alpha quality release, `2.1b'.
|
|
- If it has three numbers in the version, it is a patch release,
|
|
fixing bugs from the stable release (with no new features), `2.0.1'.
|
|
|
|
[1] We always increment the letter in the repository before *and* after
|
|
making a release tarball. This means that "odd" letters
|
|
(a,c,e,g...) only exist in the repository, and "even" letters are
|
|
used instantaneously for an alpha release. Since the odd lettered
|
|
version numbers cover many states of the tree, we also qualify them
|
|
by adding the cvs version of the ChangeLog:
|
|
|
|
$ libtool --version
|
|
ltmain.sh (GNU libtool 1.1603 2004/09/12 22:02:07) 2.1a
|
|
|
|
Copyright (C) 2004, 2011-2012 Free Software Foundation, Inc.
|
|
This is free software; see the source for copying conditions. There is NO
|
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
For more details about version numbers, see:
|
|
|
|
http://www.gnu.org/software/libtool/contribute.html
|
|
--
|
|
Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
|
|
Foundation, Inc.
|
|
Written by Gary V. Vaughan, 2004
|
|
|
|
This file is part of GNU Libtool.
|
|
|
|
Copying and distribution of this file, with or without modification,
|
|
are permitted in any medium without royalty provided the copyright
|
|
notice and this notice are preserved. This file is offered as-is,
|
|
without warranty of any kind.
|
|
|
|
|
|
Local Variables:
|
|
mode: text
|
|
fill-column: 72
|
|
End:
|
|
vim:tw=72
|