#!/bin/sh

# This is a simple script which is meant to help developers
# better deal with the GNU autotools, specifically:
#
#   aclocal
#   autoheader
#   autoconf
#   autromake
#
# The whole thing is quite complex...
#
# The idea is to run this collection of tools on a single platform,
# typically the main development platform, running a recent version of
# autoconf. In theory, if we had these tools on each platform where we
# ever expected to port the software, we would never need to checkin
# more than a few autotools configuration files. However, the whole
# idea is to generate a configure script and associated files in a way
# that is portable across platforms, so we *have* to check in a whole
# bunch of files generated by all these tools.

# The real source files are:
#
# acinclude.m4 (used by aclocal)
# configure.ac (main autoconf file)
# Makefile.am, */Makefile.am (automake config files)
#
# All the rest is auto-generated.


# --- Step 1: Generate aclocal.m4 from:
#             . acinclude.m4 
#             . config/*.m4 (these files are referenced in acinclude.m4)

echo "Running aclocal"
aclocal

# --- Step 2: Generate config.h.in from:
#             . configure.ac (look for AM_CONFIG_HEADER tag or AC_CONFIG_HEADER tag)

echo "Running autoheader"
autoheader

# --- Step 3: Generate configure and include/miaconfig.h from:
#             . configure.ac
#

echo "Running autoconf"
autoconf

# --- Step 4: Generate Makefile.in, src/Makefile.in, and a whole bunch of
#             files in config (config.guess, config.sub, depcomp,
#             install-sh, missing, mkinstalldirs) plus COPYING and
#             INSTALL from:
#             . Makefile.am
#             . src/Makefile.am
#
# Using --add-missing --copy makes sure that, if these files are missing,
# they are copied from the system so they can be used in a distribution.

echo "Running automake --add-missing --copy"
automake --add-missing --copy

echo "All done."
echo "To build the software now, do something like:"
echo ""
echo "% mkdir build-directory"
echo "% cd build-directory"
echo "% ../configure [--with-debug] [...other options]"
echo ""
