+GNU Libtool
+***********
+
+Introduction
+============
+
This is GNU Libtool, a generic library support script. Libtool hides
the complexity of using shared libraries behind a consistent, portable
interface.
Makefile, Makefile.in, or Makefile.am. See the documentation for
details.
-Libtool supports building static libraries on all platforms.
-
-Shared library support has been implemented for these platforms:
- AIX 3.x, 4.x (*-*-aix3*, *-*-aix4*)
- BeOS (*-*-beos*)
- BSD/OS 2.1, 3.x, 4.x (*-*-bsdi2.1, *-*-bsdi3*, *-*-bsdi4*)
- Darwin 5.x, 6.x a.k.a Mac OS X (*-*-darwin*) [see note]
- Digital/UNIX 3.x, 4.x, a.k.a. OSF/1 (*-*-osf3*, *-*-osf4*)
- DG/UX R4.11, R4.12, R4.20 (*-*-dguxR411*, *-*-dguxR412*, *-*-dguxR420*)
- FreeBSD 2.x, 3.x, 4.x (*-*-freebsd2*, *-*-freebsd3*, *-*-freebsd4*)
- GNU Hurd (*-*-gnu*)
- GNU/Linux ELF (*-*-linux-gnu*, except aout, coff, and oldld)
- HP-UX 9.x, 10.x, 11.x (*-*-hpux9*, *-*-hpux10*, *-*-hpux11*) [see note]
- IRIX 5.x, 6.x (*-*-irix5*, *-*-irix6*)
- NCR MP-RAS 3.x (*-ncr-sysv4.3*) [see note]
- NEWS-OS Release 6 (*-*-newsos6)
- Motorola System V 4 (mk88-motorola-sysv4) [see note]
- NetBSD 1.x (*-*-netbsd*)
- OpenBSD 2.x (*-*-openbsd*)
- OS/2 using EMX (*-*-os2*)
- Reliant Unix (*-sni-sysv4) [see note]
- SCO OpenServer 5.x (*-*-sco3.2v5*)
- SCO UnixWare 7.x (*-*-sysv5*)
- Solaris 2.x (*-*-solaris2*)
- SunOS 4.x, a.k.a. Solaris 1.x (*-*-sunos4*)
- UnixWare 2.x (*-*-sysv4.2uw2*)
- UTS 4.x (*-*-uts4*)
- All ELF targets that use both the GNU C compiler (gcc) and GNU ld
-
-NOTE: Some HP-UX sed programs are horribly broken, and cannot handle
-libtool's requirements, so users may report unusual problems. There
-is no workaround except to install a working sed (such as GNU sed) on
-these systems.
-
-NOTE: The vendor-distributed NCR MP-RAS cc programs emits copyright
-on standard error that confuse tests on size of conftest.err. The
-workaround is to specify CC when run configure with CC='cc -Hnocopyr'.
-
-NOTE: Due to a bug in autoconf cc isn't supported on Motorola System V 4.
-You can only use gcc. This bug will hopefully be fixed in autoconf 2.14.
-
-NOTE: Any earlier DG/UX system with ELF executables, such as R3.10 or
-R4.10, is also likely to work, but hasn't been explicitly tested.
-
-NOTE: Libtool has only been tested with the Siemens C-compiler and
-an old version of gcc provided by Marco Walther you can find on
-ftp://ftp.mch.sni.de/sni/mr/pd/gnu/gcc/gcc.2.7.2.3 on Reliant Unix.
-
-NOTE: libtool.m4, ltdl.m4 and the configure.ac files are marked to use
-autoconf-mode, which is distributed with GNU Emacs 21, and all recent
-releases of XEmacs.
-
-NOTE: In some cases support is more limited on Darwin 5.x because of
-the use of zsh as the default system shell.
+See the info node (libtool)Tested Platforms. (or the file
+doc/PLATFORMS) for a list of platforms that libtool supports.
Libtool's home page is:
See the file INSTALL for instructions on how to build and install
libtool.
-See the info node (libtool)Tested Platforms. (or the file
-doc/PLATFORMS) for a list of platforms that libtool shared library
-support was tested on.
+Version Numbering
+=================
+
+Note the version numbers in the libtool-1.5.x series are a little strange,
+the micro version (x) jumps by two on each release. The version in cvs always
+has an odd micro version, while only released versions have even micro versions.
+This will change again in the future. For more information about version
+numbers see:
+
+ http://www.gnu.org/software/libtool/contribute.html
+
+
+Reporting Bugs
+==============
If you have any suggestions or bug reports, or you wish to port
libtool to a new platform, please send electronic mail to the libtool
mailing list <libtool@gnu.org> or bug reports to <bug-libtool@gnu.org>.
-Don't forget to mention the version of libtool that you are currently
-using (by typing `libtool --version').
+Be sure to include the version of libtool that you are using - you can find
+out with `./libtool --version'. Also give as much information as necessary on
+your OS, compiler and other build tools.
-People have complained that they find the version numbering scheme
-under which libtool is released confusing... it works like this:
- <major-number>.<minor-number>
+The Test Suite
+==============
-Releases with a <major-number> less than 1 were not yet feature
-complete. If libtool ever undergoes a major rewrite or substantial
-restructuring, the <major-number> will be incremented again. In the
-mean time, whenever we make a stable release it will have its
-<minor-number> incremented with respect to the previous stable
-release.
+Libtool comes with an integrated set of tests to check that your build
+is sane. You can run the entire suite like this:
-So that alpha releases can be distinguished from stable releases,
-we append a letter to them, starting with `a' and continuing
-alphabetically:
+ make check
- <major-number>.<minor-number><alpha>
+The tests 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.
-Since alpha releases are start with the code of a previous stable
-release, the <major-number> and <minor-number> are the same as the
-stable release they started with. So release `1.3b' is the first
-alpha release after stable release `1.3', and so on.
+To run a test group 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:
-To complicate matters slightly 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. For
-example, you can tell that libtool-1.3c is an alpha release that is a
-snapshot of the repository taken between official alpha releases
-1.3b and 1.3d. Since the odd lettered alpha release number potentially
-cover many states of the tree, we somtimes qualify such releases by
-adding the cvs version of the ChangeLog:
+ env TESTS='cdemo-static.test cdemo-make.test cdemo-exec.test' make check
- $ libtool --version
- ltmain.sh (GNU libtool) 1.3c (1.666 2000/01/14 13:50:21)
+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.
-Finally, if we need to make a patch release to fix bugs in a stable
-release, and the development on the trunk has made the tree unstable,
-we use a third number, so:
+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
+information such as the host OS, compiler tools, shell etc. to the
+bug report mailing list, <bug-libtool@gnu.org>. You can generate verbose
+test output like this:
- <major-number>.<minor-number>.<patch number>
+ env VERBOSE=1 TESTS='cdemo-static.test cdemo-make.test cdemo-exec.test' \
+ make check
+
+Alternatively, because each test is a shell script, in a non VPATH build,
+you can simply execute the tests, they will be verbose.
+
+Notes
+=====
+
+1) Some HP-UX sed programs are horribly broken, and cannot handle
+libtool's requirements, so users may report unusual problems. There
+is no workaround except to install a working sed (such as GNU sed) on
+these systems.
+
+2) The vendor-distributed NCR MP-RAS cc programs emits copyright
+on standard error that confuse tests on size of conftest.err. The
+workaround is to specify CC when run configure with CC='cc -Hnocopyr'.
+
+3) Any earlier DG/UX system with ELF executables, such as R3.10 or
+R4.10, is also likely to work, but hasn't been explicitly tested.
- $ libtool --version
- ltconfig (GNU libtool) 1.3.4 (1.385.2.196 1999/12/07 21:47:57)
+4) On Reliant Unix libtool has only been tested with the Siemens C-compiler
+and an old version of gcc provided by Marco Walther.
-There might be several patch releases to the last stable release,
-and all happening concurrently with alpha releases. For example,
-libtool-1.3.4 and libtool-1.3b might be available at the same time:
-`1.3.4' is the fourth patch release after stable release `1.3';
-`1.3b' is the first alpha release after stable release `1.3'.
+5) libtool.m4, ltdl.m4 and the configure.ac files are marked to use
+autoconf-mode, which is distributed with GNU Emacs 21, Autoconf itself, and
+all recent releases of XEmacs.
+6) The default shell on UNICOS 9, a ksh 88e variant, is too buggy to
+correctly execute the libtool script. Users are advised to install a
+modern shell such as GNU bash.