DJGPP port of GNU libtool 1.5, release 1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Introduction
------------

This is the Readme file for the DJGPP port of libtool 1.5. Please
see the file 'NEWS' for a full list of user-visible changes
from the previous versions. Please see 'changelog.dos' for a list
of bugs fixed in each release of the port.

To use the libtool program, you only need to download
the binary distribution, which includes documentation in info format.
You may also wish to download the documentation distribution, to get
the documentation in HTML, PostScript and DVI formats. If you wish
to examine or rebuild the libtool sources, you need to download
the source distribution.

The libtool port is available here:

Binaries:
http://www.simtel.net/gnudlpage.php?product=/gnu/djgpp/v2gnu/libt15b.zip&name=libt15b.zip

Documentation:
http://www.simtel.net/gnudlpage.php?product=/gnu/djgpp/v2gnu/libt15d.zip&name=libt15d.zip

Sources:
http://www.simtel.net/gnudlpage.php?product=/gnu/djgpp/v2gnu/libt15s.zip&name=libt15s.zip

Please read the sections below for the distributions you have downloaded,
before installing libtool. Please also read the "Known Issues" section,
which contains important information about the DJGPP port.

Installing the Binary Distribution of libtool
---------------------------------------------

Unzip the distribution preserving the directory structure (use -d
switch if you do that with PKUNZIP) from the top DJGPP installation
directory.

libtool will not work, if the following packages have not been installed:

. DJGPP development environment;
. GNU bash;
. GNU sed;
. GNU grep;
. GNU C compiler;
. GNU binutils;
. GNU fileutils;
. GNU sh-utils;
. GNU textutils.

See the section "Rebuilding libtool using the Source Distribution"
for suggested versions of each of these packages. If you are developing
with DJGPP, it is likely that most of the packages have already
been installed.

To add libtool to the info directory page, run:

    install-info --info-file=/dev/env/DJDIR/info/libtool.info \
        --info-dir=/dev/env/DJDIR/info

(Type this as one line.) Then run 'info libtool', to read
the libtool manual.

Installing the Documentation Distribution of libtool
----------------------------------------------------

If you want the libtool documentation in a format other than info format,
then you need the documentation distribution. This contains documentation
in texinfo source, HTML, DVI (TeX) and PostScript. This documentation
will be installed in gnudocs\libtool1.5.

Rebuilding libtool using the Source Distribution
------------------------------------------------

To build the DJGPP port of libtool from sources, I used the following
packages:

. DJGPP development environment 2.03 (v2/djdev203.zip);
. GNU C compiler 3.2.2 (v2gnu/gcc322b.zip);
. GNU binutils 2.13 (v2gnu/bnu213b.zip);
. GNU make 3.79.2 alpha 1 (but try v2gnu/mak3791b.zip);
. GNU bash 2.04 (v2gnu/bsh204b.zip);
. GNU sed 3.02.80 (v2gnu/sed3028b.zip);
. GNU awk 3.1.1 (v2gnu/gwk311b.zip);
. GNU fileutils 4.1 release 6 (v2gnu/fil41b.zip);
. GNU sh-utils 2.0.11 (v2gnu/shl2011b.zip);
. GNU textutils 2.0 (v2gnu/txt20b.zip);
. GNU grep 2.4 (v2gnu/grep24b.zip);
. GNU texinfo 4.2 (v2gnu/txi42b.zip);
. Perl 5.6.1 release 3 (v2gnu/perl561b.zip).

I also used the following packages - you will not need these, unless
you edit the configure script or Makefile.am files.

. GNU autoconf 2.57 (v2gnu/acnf257b.zip);
. GNU automake 1.7.3 release 2 (v2gnu/amake173b.zip);

libtool 1.5 can probably be built using later versions
of these packages, where available.

Firstly, change into the top-level directory of the libtool sources
(i.e. gnu\libtool1.5) and configure the package:

    bash djgpp\djconfig.sh

This patches some of the test scripts to use DJGPP's config.site.
The DJGPP port of autoconf does not work correctly without config.site.

If you want to install libtool somewhere other than the DJGPP directory,
modify djgpp\djconfig.sh to use configure's '--prefix' option
(use 'bash configure --help' for more information).

Then build the package:

    make

To run the test suite, use:

    make check

If you are interested in the test suite, please see the section entitled
"Expected test suite results" below.

Once libtool is built and the tests have passed/been skipped/failed
as expected, install the package:

    make install

Changes made to the libtool 1.5 Sources
---------------------------------------

The file 'gnu\libtool1.5\djgpp\diffs' contains all the changes made
to the sources, to support DJGPP.

Here are the steps necessary to get from a libtool 1.5 tarball
(libtool-1.5.tar.gz) to a patched copy of the sources for DJGPP:

1. Extract the sources using the 'fnchange.lst' file: You will need
   the 'fnchange.lst' from the source distribution of libtool 1.5
   for DJGPP.

    djtar -x -o gnu/libtool1.5/djgpp/fnchange.lst -p \
        > /path/to/fnchange.lst

   (Type this as one line.) /path/to is some temporary directory,
   e.g.: /temp.

   Then extract the libtool tarball using djtar:

    djtar -n /path/to/fnchange.lst -x /path/to/libtool-1.5.tar.gz

2. Apply the DJGPP patch: You will need the file 'diffs' from
   the source distribution. Change into the libtool 1.5
   source directory and apply the path:

    patch -Z -p7 -i diffs

3. Copy the 'djgpp' directory from the source distribution
   into the libtool source directory. You can now build as directed
   in the section 'Rebuilding libtool using the Source Distribution'
   above.

You will not need autoconf and automake to be installed, to build from
patched sources, since the 'diffs' file includes changes to
the configure script, Makefiles, etc.

If you modify any of the Makefile.am, Makefile.in or configure.in files,
you will need to install autoconf and automake.

NB: The source distribution of the DJGPP port comes with all patches
applied and will build "out of the box" with Long Filenames. It may build
with Short Filenames.

Known Issues
------------

DJGPP does not support dynamic linking. Consequently this package
will not be very useful to people writing DJGPP-only programs. It may be
useful to people who are trying to make a DJGPP program cross-platform,
starting from the DJGPP environment rather than, say,
a Linux environment.

Expected test suite results
---------------------------

Run the test suite like so:

    bash djgpp/runtests.sh

The test suite takes a long time to run. (On my Athlon 850MHz with 640MB
of memory it took around half an hour.)

This will produce two output files: tests.log, which contains
the verbose output of the test suite; tests.summ, which contains
a simple PASS/XPASS/SKIP/FAIL/XFAIL status per test.

NB: The tests below have been renamed, to fit into DOS's 8+3 filename
convention: build-relink* -> bldrlnk*; *demo-* -> *d-*.

NB: The DJGPP ports of the GNU tools currently only support
static linking.

PASS: cd-static.test
PASS: cd-make.test
PASS: cd-exec.test
PASS: d-static.test
PASS: d-make.test
PASS: d-exec.test
PASS: d-inst.test
PASS: d-unst.test
PASS: depd-static.test
PASS: depd-make.test
PASS: depd-exec.test
PASS: depd-inst.test
PASS: depd-unst.test
PASS: md-static.test
PASS: md-make.test
PASS: md-exec.test
PASS: md-inst.test
PASS: md-unst.test
SKIP: cd-conf.test   <--- Skipped because static & dynamic linking required
SKIP: cd-make.test   <--- OK - depends on cd-conf.test
SKIP: cd-exec.test   <--- OK - depends on cd-conf.test
SKIP: d-conf.test    <--- Skipped because static & dynamic linking required
SKIP: d-make.test    <--- OK - depends on d-conf.test
SKIP: d-exec.test    <--- OK - depends on d-conf.test
SKIP: d-inst.test    <--- OK - depends on d-conf.test
SKIP: d-unst.test    <--- OK - depends on d-conf.test
SKIP: deplibs.test   <--- OK - depends on d-conf.test
SKIP: depd-conf.test <--- Skipped because static & dynamic linking required
SKIP: depd-make.test <--- OK - depends on depd-conf.test
SKIP: depd-exec.test <--- OK - depends on depd-conf.test
SKIP: depd-inst.test <--- OK - depends on depd-conf.test
SKIP: depd-unst.test <--- OK - depends on depd-conf.test
SKIP: md-conf.test   <--- Skipped because static & dynamic linking required
SKIP: md-make.test   <--- OK - depends on md-conf.test
SKIP: md-exec.test   <--- OK - depends on md-conf.test
SKIP: md-inst.test   <--- OK - depends on md-conf.test
SKIP: md-unst.test   <--- OK - depends on md-conf.test
SKIP: dryrun.test    <--- OK - depends on md-conf.test
PASS: d-nofast.test
PASS: d-make.test
PASS: d-exec.test
PASS: d-inst.test
PASS: d-unst.test
PASS: d-pic.test
PASS: d-make.test
PASS: d-exec.test
PASS: d-nopic.test
PASS: d-make.test
PASS: d-exec.test
PASS: depd-nofast.test
PASS: depd-make.test
PASS: depd-exec.test
PASS: depd-inst.test
PASS: depd-unst.test
SKIP: cd-shared.test   <--- Skipped because dynamic linking required
SKIP: cd-make.test     <--- OK - depends on cd-shared.test
SKIP: cd-exec.test     <--- OK - depends on cd-shared.test
SKIP: d-shared.test    <--- Skipped because dynamic linking required
SKIP: d-make.test      <--- OK - depends on d-shared.test
SKIP: d-exec.test      <--- OK - depends on d-shared.test
SKIP: d-inst.test      <--- OK - depends on d-shared.test
SKIP: hardcode.test    <--- OK - depends on d-shared.test
SKIP: bldrlnk.test     <--- OK - depends on d-shared.test
SKIP: noinst-link.test <--- OK - depends on d-shared.test
SKIP: d-unst.test      <--- OK - depends on d-shared.test
SKIP: depd-shared.test <--- Skipped because dynamic linking required
SKIP: depd-make.test   <--- OK - depends on depd-shared.test
SKIP: depd-exec.test   <--- OK - depends on depd-shared.test
SKIP: depd-inst.test   <--- OK - depends on depd-shared.test
SKIP: bldrlnk2.test    <--- OK - depends on depd-shared.test
SKIP: depd-unst.test   <--- OK - depends on depd-shared.test
SKIP: md-shared.test   <--- Skipped because dynamic linking required
SKIP: md-make.test     <--- OK - depends on md-shared.test
SKIP: md-exec.test     <--- OK - depends on md-shared.test
SKIP: md-inst.test     <--- OK - depends on md-shared.test
SKIP: md-unst.test     <--- OK - depends on md-shared.test
PASS: assign.test
PASS: link.test
PASS: link-2.test
PASS: nomode.test
PASS: quote.test
PASS: sh.test
PASS: suffix.test
SKIP: pd-conf.test     <--- Skipped because dynamic linking required
SKIP: pd-make.test     <--- OK - depends on pd-conf.test
SKIP: pd-exec.test     <--- OK - depends on pd-conf.test
SKIP: pd-inst.test     <--- OK - depends on pd-conf.test
PASS: tagd-static.test
PASS: tagd-make.test
PASS: tagd-exec.test
SKIP: tagd-conf.test   <--- Skipped because dynamic linking required
SKIP: tagd-make.test   <--- OK - depends on tagd-conf.test
SKIP: tagd-exec.test   <--- OK - depends on tagd-conf.test
SKIP: tagd-shared.test <--- OK - depends on tagd-conf.test
SKIP: tagd-make.test   <--- OK - depends on tagd-conf.test
SKIP: tagd-exec.test   <--- OK - depends on tagd-conf.test
PASS: f77d-static.test
PASS: f77d-make.test
PASS: f77d-exec.test
SKIP: f77d-conf.test   <--- Skipped because dynamic linking required
SKIP: f77d-make.test   <--- OK - depends on f77d-conf.test
SKIP: f77d-exec.test   <--- OK - depends on f77d-conf.test
SKIP: f77d-shared.test <--- OK - depends on f77d-conf.test
SKIP: f77d-make.test   <--- OK - depends on f77d-conf.test
SKIP: f77d-exec.test   <--- OK - depends on f77d-conf.test

Finally
-------

If you encounter any problems with this port, please feel free to contact me
by e-mail (address below). I also try to read the DJGPP newsgroup,
comp.os.msdos.djgpp, on a regular basis.

Regards,

Richard Dawe <rich@phekda.freeserve.co.uk> 2003-04-21
