| 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 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 |