Getting Started Documentation Glish Learn More Programming Contact Us
Version 1.9 Build 1556
News FAQ
Search Home


next up previous contents index
Next: depstat Up: Code development Previous: Code development makedefs conventions

Subsections



Code development makefile rules

Use of the AIPS++ makefiles for code development.

Synopsis

makefile
makefile.{app,aps,chk,doc,ftn,imp,pkg,scr,tst}

Description

The AIPS++ code development targets are listed below by category. These lists are not exhaustive, but do aim to cover everything of practical use. In particular, they omit targets which are intended for the internal use of the makefiles.

A target is labelled as ``recursive'' if it causes gmake (p[*]) to be invoked in all subdirectories. It is ``general'' if it applies to all makefiles; such targets are defined in makedefs (p[*]). A target is ``specific'' if defined in a specific makefile.

Some targets such as allsys have a general meaning, the specific behaviour of which differs for specific makefiles. These are referred to as ``general/specific'' and where appropriate the details of a target's behaviour are described for each of the generic makefiles, for the top-level makefile (top), and the installation makefile (ins).

Targets which apply only if the RCS source code repositories are present are marked as ``RCS''.

Programmer-oriented variables:

Rules for programmer-oriented targets look for source files first in the programmer directory and if not found search the corresponding subdirectory of $AIPSCODE which is referred to below as $(CODEDIR). This means that programmers can compile code in their own workspace without having to copy source files from $(CODEDIR), thereby minimizing the number of files that need to be present in the programmer's workspace and reducing the possibility that these may be ``stale''.

Certain variables are defined in makedefs (p[*]) for the exclusive use of programmer-oriented rules and may be redefined as necessary on the gmake (p[*]) command line. These are:

These variables may be printed with the show_prg target. The *FLAGS variables are the subject of a convention for setting alternate programmer compilation flags described in the section on 11.3.

Programmer-oriented targets:

The programmer-oriented targets are as follows; note that where targets are defined in terms of a gmake (p[*]) variable, for example $(SUBDIRS), it, and all other variables, may be printed via the show_all target:

Notes

Examples

The mylib target for the implement makefile rebuilds a programmer's private library in its entirety, including all object modules generated from sources in $(CODEDIR). To rebuild only the modules with sources in the programmer's directory the following would suffice:

   cd $HOME/aips++/code/aips/implement
   gmake

This is the recommended way of updating a private libarary.

See also

The GNU Make manual.
The GNU manual page for gmake.
The unix manual page for ranlib(1).
AIPS++ variable names (§1.2).
gmake (p[*]), GNU make.
makedefs (p[*]), AIPS++ makefile definitions.
mkinst (p[*]), Generate template instantiation files from a list.
updatelib (p[*]), update an AIPS++ object library.


next up previous contents index
Next: depstat Up: Code development Previous: Code development makedefs conventions   Contents   Index
Please send questions or comments about AIPS++ to aips2-request@nrao.edu.
Copyright © 1995-2000 Associated Universities Inc., Washington, D.C.

Return to AIPS++ Home Page
2006-10-15