maint: post-release administrivia
[libtool.git] / README.md
blobbf1c39ea6971a1ba09a39cda54c7951a9b2c45be
1 # GNU Libtool
3 1. Introduction
4 ===============
6 [GNU Libtool][libtool] is a generic library support script.
7 [Libtool][] hides the complexity of using shared libraries behind a
8 consistent, portable interface.
10 Libtool's home page is:
12     https://www.gnu.org/software/libtool/libtool.html
14 See the file [NEWS][] for a description of recent changes to Libtool.
16 Please note that you can build GNU Libtool from this directory using a
17 vendor Make program as long as this is an official release tarball;
18 otherwise you will need GNU Make for sane VPATH support.  See the file
19 [INSTALL][] for complete generic instructions on how to build and install
20 Libtool.  Also, see the file [doc/notes.txt][notes] for some platform-
21 specific information.
23 See the info node (libtool)Tested Platforms. (or the file
24 [doc/PLATFORMS][platforms]) for a list of platforms that Libtool already
25 supports.
27 Please try it on all the platforms you have access to:
29  * If it builds and passes the test suite (`gmake check`), please send
30    a short note to the [libtool mailing list][libtool list] with a
31    subject line including the string `[PLATFORM]`, and containing the
32    details from the end of `./libtool --help` in the body.
33  * Otherwise, see _Reporting Bugs_ below for how to help us fix any
34    problems you discover.
36 To use Libtool, add the new generic library building commands to your
37 `Makefile`, `Makefile.in`, or `Makefile.am`.  See the documentation for
38 details.
40 [install]: https://git.savannah.gnu.org/cgit/automake.git/tree/INSTALL
41 [libtool]: https://www.gnu.org/s/libtool
42 [libtool list]: mailto:libtool@gnu.org
43 [news]: https://git.savannah.gnu.org/cgit/libtool.git/tree/NEWS
44 [notes]: https://git.savannah.gnu.org/cgit/libtool.git/tree/doc/notes.texi
45 [platforms]: https://git.savannah.gnu.org/cgit/libtool.git/tree/doc/PLATFORMS
48 2. Reporting Bugs
49 =================
51 If this distribution doesn't work for you, before you report the
52 problem, at least try upgrading to the latest released version first,
53 and see whether the issue persists.  If you feel able, you can also
54 check whether the issue has been fixed in the development sources for
55 the next release (see _Obtaining the Latest Sources_ below).
57 Once you've determined that your bug is still not fixed in the latest
58 version, please send a full report to the libtool [bug mailing list][],
59 including:
61   1. the information from the end of the help message given by
62      `./libtool --help`, and the verbose output of any failed tests
63      (see _The Test Suites_ immediately below);
64   2. complete instructions for how to reproduce your bug, along with
65      the results you were expecting, and how they differ from what you
66      actually see;
67   3. a workaround or full fix for the bug, if you have it;
68   4. a copy of `tests/testsuite.log` if you are experiencing failures
69      in the Autotest testsuite.
70   5. new test cases for the testsuite that demonstrate the bug are
71      especially welcome, and will help to ensure that future releases
72      don't reintroduce the problem - if you're not able to write a
73      complete testsuite case, a simple standalone shell script is
74      usually good enough to help us write a test for you.
76 If you have any other suggestions, or if you wish to port Libtool to a
77 new platform, please send email to the [mailing list][libtool list].
79 Please note that if you send us an non-trivial code for inclusion in a
80 future release, we may ask you for a copyright assignment (for brief
81 details see the 'Copyright Assignment' section on our
82 [Contributing][contribute] webpage.
84 [bug mailing list]: mailto:bug-libtool@gnu.org
85 [contribute]: https://www.gnu.org/software/libtool/contribute.html
88 3. The Test Suite
89 =================
91 Libtool comes an integrated sets of tests to check that your build
92 is sane.  You can run like this, assuming that `gmake` refers to GNU
93 make:
95     gmake check
97 The new, Autotest-driven testsuite is documented in:
99     info Autoconf 'testsuite Invocation'
101 but simple help may also be obtained through:
103     gmake check TESTSUITEFLAGS='--help'
105 For verbose output, add the flag '-v', for running only a subset of the
106 independent tests, merely specify them by number or by keyword, both of
107 which are displayed with the '--list' flag.  For example, the 'libtool'
108 keyword is used for the tests that exercise only this script.  So it is
109 possible to test an installed script, possibly from a different Libtool
110 release, with:
112     gmake check \
113         TESTSUITEFLAGS="-k libtool LIBTOOL=/path/to/libtool"
115 Some tests, like the one exercising `max_cmd_len` limits, make use of
116 this to invoke the testsuite recursively on a subset of tests.  For these
117 tests, the variable `INNER_TESTSUITEFLAGS` may be used.  It will be
118 expanded right after the `-k libtool`, without separating whitespace, so
119 that further limiting of the recursive set of tests is possible.  For
120 example, to run only the template tests within the `max_cmd_len`, use:
122     gmake check TESTSUITEFLAGS="-v -x -k max_cmd_len \
123                 INNER_TESTSUITEFLAGS=',template -v -x'"
125 If you wish to report test failures to the libtool list, you need to
126 send the file `tests/testsuite.log` to the [bug mailing list][].
129 4. Obtaining the Latest Sources
130 ===============================
132 * With the exception of ancient releases, all official GNU Libtool
133   releases have a detached GPG signature file.  With this you can verify
134   that the corresponding file (i.e. without the `.sig` suffix) is the
135   same file that was released by the owner of it's GPG key ID.  First,
136   be sure to download both the .sig file and the corresponding release,
137   then run a command like this:
139       gpg --verify libtool-x.y.z.tar.gz.sig
141   If that command fails because you don't have the required public key,
142   then run this command to import it:
144       gpg --keyserver keys.gnupg.net --recv-keys 2983D606
146   and then rerun the `gpg --verify` command.
148 * Official stable releases of GNU Libtool, along with these detached
149   signature files are available from:
151       ftp://ftp.gnu.org/gnu/libtool
153   To reduce load on the main server, please use one of the mirrors
154   listed at:
156       https://www.gnu.org/order/ftp.html
158 * Alpha quality pre-releases of GNU Libtool, also with detached
159   signature files are available from:
161       ftp://alpha.gnu.org/gnu/libtool
163   and some of the mirrors listed at:
165       https://www.gnu.org/order/ftp.html
167 * The master libtool repository is stored in git.
169   Development and testing is primarily done on the 'development' git
170   branch. 'master' is used for release ready code. Periodically,
171   commits are cherry-picked from 'development' to 'master'.
173   If you are a member of the savannah group for GNU Libtool, a writable
174   copy of the libtool repository can be obtained by:
176       git clone <savannah-user>@git.sv.gnu.org:/srv/git/libtool.git
178   If you are behind a firewall that blocks the git protocol, you may
179   find it useful to use
181       git config --global url.https://git.sv.gnu.org/r/.insteadof \
182         git://git.sv.gnu.org/
184   to force git to transparently rewrite all savannah git references to
185   use http.
187   If you are not a member of the savannah group for GNU Libtool, you can
188   still fetch a read-only copy with either:
190       git clone git://git.sv.gnu.org/libtool.git
192   or using the CVS pserver protocol:
194       cvs -d:pserver:anonymous@pserver.git.sv.gnu.org:/srv/git/libtool.git \
195           co -d libtool HEAD
197 * Before you can build from git, you need to bootstrap.  This requires:
198   - Autoconf 2.64 or later
199   - Automake 1.11.1 or later
200   - Help2man 1.29 or later
201   - Xz 4.999.8beta or later (from [tukaani.org](https://tukaani.org/xz))
202   - Texinfo 4.8 or later
203   - Any prerequisites of the above (such as m4, perl, tex)
205   Note that these bootstrapping dependencies are much stricter than
206   those required to use a distributed release for your own packages.
207   After installation, GNU Libtool is designed to work either standalone,
208   or optionally with:
209   - Autoconf 2.59 or later
210   - Automake 1.9.6 or later
212 * The `bootstrap` script sets up the source directory for you to hack.
215 5. Version Numbering
216 ====================
218 People have complained that they find the version numbering scheme under
219 which libtool is released confusing... so we've changed it!
221 It works like this:
223     <major-number>.<minor-number>
225 Releases with a **major-number** less than 1 were not yet feature
226 complete.  Releases with a **major-number** of 1 used the old numbering
227 scheme that everyone disliked so much.  Releases with a **major-number**
228 of 2 us the new scheme described here.  If libtool ever undergoes a
229 major rewrite or substantial restructuring, the **major-number** will be
230 incremented again.
232 If we make a patch release to fix bugs in a stable release, we use a
233 third number, so:
235     2.4.2
237 If we make an alpha quality prerelease, we use a fourth number for the
238 number of changsets applied since the version it's based on:
240     2.4.2.418
242 And finally, if you build an unreleased version it will have a short git
243 revision hash string in hexadecimal appended to all of that:
245     2.4.2.418.3-30eaa
248   Copyright (C) 2004-2010, 2015-2019, 2021-2024 Free Software
249   Foundation, Inc.
251   Written by Gary V. Vaughan, 2004
253   This file is part of GNU Libtool.
255 Copying and distribution of this file, with or without modification,
256 are permitted in any medium without royalty provided the copyright
257 notice and this notice are preserved.  This file is offered as-is,
258 without warranty of any kind.
261 Local Variables:
262 mode: text
263 fill-column: 72
264 End:
265 vim:tw=72