The build system is based heavily on the GNU autotools,
autoconf, automake and
libtool. Each of these is checked in to the CVS
repository, and built and installed during the top-level
./bootstrap process. Run the commands with the
--version option to see the actual installed
version.
The checked-in libtool is an unmodified libtool distribution.
The Starlink autoconf is based on version 2.59, with additions to support preprocessable Fortran; these modifications have been submitted to the autoconf maintainers, so it is hoped that these will become part of the autoconf distribution, at which point the Starlink autoconf will revert to being an unmodified one.
The additions are the macros which start AC_...
described in Appendix A.
The Starlink automake is a more heavily modified version of automake. There are a few generic changes to support the added Fortran autoconf macros, but the majority of the changes are in the service of Starlink's specific requirements. They are summarised here.
MONOLITHS and
TASKS primaries: These function rather like
the PROGRAMS primary, in that the the
MONOLITHS primary specifies one or more
monoliths to install, and the TASKS one or
more IFL tasks to associate with it. Like the
PROGRAMS primary, each MONOLITHS
variable should have a xxx_SOURCES variable
associated with it. Starlink automake also
emits the makefile rules to compile .ifl
files to .ifc files.stardocs,
staretc,
starhelp
(and so on) prefixes to
the DATA primary. Setting these variables has
the same effect as giving an argument to the
STAR_DOCS_FILES macro (and friends). See
Appendix A.31.2.LDADD options: In standard
automake, the content of the
LDADD variables must be a list of extra
objects to add to a program, or extra libraries,
specified through -l and -L
flags. In Starlink automake, you can
additionally specify extra libraries using the standard
Starlink *_link and
*_link_adam commands. You can add to the
LDADD variable tokens matching
`[a-z_]*_link` or
`[a-z_]*_link_adam` (that is, a sequence
of lowercase letters and underscore), or either of
these preceded by exactly
$(srcdir)/, which you would need to do
only in the case of test code or the case below.You cannot include any options or arguments. If you
want, for example, ast_link -pgplot, then
you should create a local script named, for example,
my_ast_pgplot_link (that is, matching the
pattern above), which simply invokes the correct link
script. In this case, you will have to include the
$(srcdir)/ element in the line, so that
the script will be picked up from the current
directory.
automake spots use of the
STAR_MESSGEN and
STAR_LATEX_DOCUMENTATION macros in the associated
configure.ac, and produces
appropriate extra build rules in the generated
Makefile.in. If the
STAR_MANIFEST_DIR is to be substituted by
autoconf, then Starlink automake adds support for
installing manifests to the generated makefile.--startree strictness level to the default
--foreign, --gnu and
--gnits. At present, it
is almost indistinguishable from --foreign, and
is the default (the default for GNU automake is
--gnu strictness -- see also Appendix C).MANIFEST makefile
variable, and if it is set true, to include the path to the
installed file in the output of the command.
The modified install
target manages this variable. The makefile `install'
target has been modified to create and install such
manifests by default.missing script which is installed as part of
Starlink automake respects the
MISSING_SUPPRESS_RUN environment variable.1.8.2-starlink rather than plain
1.8.2.