Next Up Previous Contents
Next: 4.7 Adding components: the final step
Up: 4.6 Documentation
Previous: 4.6 Documentation
[ID index][Keyword index]

4.6.1 Components containing only documentation

Though most applications and libraries have some documentation associated with them, some documentation is not associated with any particular software, and so lives in a component by itself. These components are principally the various cookbooks and system notes, though there are a few SUNs in this category as well. Though the correct way to handle such components should be fairly clear from the discussion above, it seems worth while to make a few remarks here to clear up some ambiguities.

Like any other component, a documentation-only component must have a bootstrap file, and Makefile.am, configure.ac and component.xml.in files, as described in Section 4.1; however these will typically be rather simple.

We can look at the SC/3 configuration files for an example.

The configure.ac file, shorn of most of its comments, looks like this:


dnl    Process this file with autoconf to produce a configure script
AC_INIT(sc3, 2, ussc@star.rl.ac.uk)
AC_PREREQ(2.50)
AM_INIT_AUTOMAKE(1.8.2-starlink)
AC_CONFIG_SRCDIR(sc3.tex)

STAR_DEFAULTS(docs-only)

STAR_LATEX_DOCUMENTATION(sc3)

AC_CONFIG_FILES(Makefile component.xml)

AC_OUTPUT
Note the docs-only option to the STAR_DEFAULTS macro (see Appendix A.17 for discussion). This particular configure.ac file is to handle document SC/3.2 -- this second edition of the document is represented by the AC_INIT macro having a `version' number of `2'.

The Makefile.am file has some mild complications:


## Process this file with automake to produce Makefile.in

stardocs_DATA = @STAR_LATEX_DOCUMENTATION@
starexamples_DATA = $(distdir)-scripts.tar

sc3.htx_tar: sc3-scripts.tex

# sc3-scripts.tex is an appendix to the HTML version of the document,
# comprising the scripts contained in the scripts/ directory.  These are
# also bundled in the htx tarball by virtue of being listed in the
# sc3.htx_tar.extras file.
sc3-scripts.tex: scripts
	cd scripts; \
	for f in *; do if test -f $$f; then \
	    echo $$f | sed 's/\([a-z0-9_]*\).*/\\subsection{\\label{se_\1_source}\\xlabel{\1}\1}/'; \
	    echo "\htmladdnormallink{Download $$f}{$$f}"; \
	    echo ''; \
	    echo '\begin{verbatim}'; \
	    cat $$f; \
	    echo '\end{verbatim}'; \
	fi; done > ../$@

$(distdir)-scripts.tar: scripts
	DN=$(distdir)-scripts; \
	    mkdir $$DN; \
	    for f in scripts/*; do if test -f $$f; then cp $$f $$DN; fi; done;\
	    tar cf $@ $$DN; \
	    rm -Rf $$DN
This is the complete SC/3 file. The only thing that is always required in these docs-only Makefile.am files is the stardocs_DATA = @STAR_LATEX_DOCUMENTATION@ line, which has exactly the same function described in Section 4.6 above. However cookbooks like SC/3 often have both sets of examples (in this case, example scripts) and some automatically generated documentation, and this example illustrates how to describe both of these. The starexamples_DATA line specifies a file which is to be installed in the examples directory (typically /star/examples; see Appendix A.30), and the Makefile.am therefore provides the rule for generating that tarball of scripts.

In addition, the sc3.tex file includes (in the TeX sense) a generated file sc3-scripts.tex, which documents these various scripts, and so we include in this Makefile.am the rule for generating this file from the contents of the scripts/ directory. We must also indicate that the sc3.htx_tar file depends on this generated file, and we do this by including that dependency (without the build rule, which is generated automatically) in this Makefile.am file.

Finally, note that this SC/3 directory uses the .htx_tar.extra mechanism which is described rather in passing in Appendix A.20.


Next Up Previous Contents
Next: 4.7 Adding components: the final step
Up: 4.6 Documentation
Previous: 4.6 Documentation
[ID index][Keyword index]
The Starlink Build System
Starlink System Note 78
Norman Gray, Peter W Draper, Mark B Taylor, Steven E Rankin
11 April 2005. Release snapshot: $Revision: 1.116 $. Last updated 28 May 2006