[sword-devel] Re: SWORD Automake/Autoconf

Patrick Earl sword-devel@crosswire.org
Mon, 29 Nov 1999 14:43:16 -0700

"Troy A. Griffitts" wrote:
> Patrick,
>         Yes.  We have a fairly extensive directory structure which makes it
> difficult to use auto[make|conf].  I'm fairly pleased with our make
> system as it works and is easily maintainable when adding new files to
> the tree, etc.  There have been attempts in the past to create configure
> support but to the end of placing all the .cpp and .c files in one
> directory and include file with them.  I don't wish to resort to this.
> I don't know much about autoconf/automake, but it seems to me that since
> we only have about 5 configurable properties located in Makefile.cfg in
> the top level of the tree, a configure script to modify a similar type
> file at the top level that the others include would be the easiest first
> step.  Not sure.  I'm sure you have much more insight into the matter.

Automake and autoconf handle primarily 3 types of directory structures. 
The simplist of course being the flat structure with everything in one
directory.  They also handle two nested directory forms, one in which
there are no source files at the top level, and the other where there
are source files.  It is possible to have numerous nested directories
without a problem.

I'm curious about the make system... are the same makefiles used under
Windows?  Automake generally makes fairly featureful makefiles, and that
might cause a problem.  As far as I know, it might be difficult using
autoconf makefiles under Windows.  I don't know much about windows make
systems, or what you're using for making under windows even.

Autoconf can be used without automake, although it is easier to create a
project that has all of the standard targets (ex. make dist, make
install, make uninstall, make distclean) using automake.

Automake automates the process of making makefiles, and having gone
through the process of converting a sizeable makefile to automake, I
know it can be a bit of a pain sometimes :)

Once you've got a Makefile.in that either you or automake builds, you
use autoconf to detect machine specific options such as the endian, or
the tool options (one of your ar commands in the makefile complained
about an invalid -s option on this particular machine).

There's also libtool which is designed to help in the creation of shared
libraries in a portable manner.  It is designed to work in combination
with the auto* system.  Various platforms handle shared libraries in
different ways and libtool provides a generic way to create shared
libraries on them.  I have not used libtool yet, although I have looked
into using it.

	Patrick Earl - patearl@pobox.com