ltmain.in: Use func_warning for all warnings
[libtool.git] / README.md
blobe0039cc476ba5b79a95bbbd8cf91c5c1c40b49eb
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   If you are a member of the savannah group for GNU Libtool, a writable
170   copy of the libtool repository can be obtained by:
172       git clone <savannah-user>@git.sv.gnu.org:/srv/git/libtool.git
174   If you are behind a firewall that blocks the git protocol, you may
175   find it useful to use
177       git config --global url.https://git.sv.gnu.org/r/.insteadof \
178         git://git.sv.gnu.org/
180   to force git to transparently rewrite all savannah git references to
181   use http.
183   If you are not a member of the savannah group for GNU Libtool, you can
184   still fetch a read-only copy with either:
186       git clone git://git.sv.gnu.org/libtool.git
188   or using the CVS pserver protocol:
190       cvs -d:pserver:anonymous@pserver.git.sv.gnu.org:/srv/git/libtool.git \
191           co -d libtool HEAD
193 * Before you can build from git, you need to bootstrap.  This requires:
194   - Autoconf 2.64 or later
195   - Automake 1.11.1 or later
196   - Help2man 1.29 or later
197   - Xz 4.999.8beta or later (from [tukaani.org](https://tukaani.org/xz))
198   - Texinfo 4.8 or later
199   - Any prerequisites of the above (such as m4, perl, tex)
201   Note that these bootstrapping dependencies are much stricter than
202   those required to use a distributed release for your own packages.
203   After installation, GNU Libtool is designed to work either standalone,
204   or optionally with:
205   - Autoconf 2.59 or later
206   - Automake 1.9.6 or later
208 * The `bootstrap` script sets up the source directory for you to hack.
211 5. Version Numbering
212 ====================
214 People have complained that they find the version numbering scheme under
215 which libtool is released confusing... so we've changed it!
217 It works like this:
219     <major-number>.<minor-number>
221 Releases with a **major-number** less than 1 were not yet feature
222 complete.  Releases with a **major-number** of 1 used the old numbering
223 scheme that everyone disliked so much.  Releases with a **major-number**
224 of 2 us the new scheme described here.  If libtool ever undergoes a
225 major rewrite or substantial restructuring, the **major-number** will be
226 incremented again.
228 If we make a patch release to fix bugs in a stable release, we use a
229 third number, so:
231     2.4.2
233 If we make an alpha quality prerelease, we use a fourth number for the
234 number of changsets applied since the version it's based on:
236     2.4.2.418
238 And finally, if you build an unreleased version it will have a short git
239 revision hash string in hexadecimal appended to all of that:
241     2.4.2.418.3-30eaa
244   Copyright (C) 2004-2010, 2015-2019, 2021-2024 Free Software
245   Foundation, Inc.
247   Written by Gary V. Vaughan, 2004
249   This file is part of GNU Libtool.
251 Copying and distribution of this file, with or without modification,
252 are permitted in any medium without royalty provided the copyright
253 notice and this notice are preserved.  This file is offered as-is,
254 without warranty of any kind.
257 Local Variables:
258 mode: text
259 fill-column: 72
260 End:
261 vim:tw=72