next up previous contents
Next: Revision Control Up: Introduction Previous: Introduction

The Basics

All Starlink software uses the SYSTEM environment variable to control machine dependent aspects of software construction. It is normal for accounts doing software development to set this up in their .cshrc file. The values currently in use are,

sun4_Solaris
SUN SPARCs running Solaris
alpha_OSF1
DEC Alphas running OSF1
ix86_Linux
Generic PC architecture running Linux

In addition we have supported sun4 (SUNs running SunOS) and mips (DECstations running Ultrix) in the past, although we don't any longer.

All Starlink software uses the UNIX system utility make to build its software. The associated make files are written in a generic fashion with the aim of containing no system dependent statements. Operations which are potentially non-portable (eg. the command to replace an object module in an archive) are tokenised. Each Starlink package then has a Bourne shell script called mk which sets up the values of these tokens depending on the value of $SYSTEM. All make files are therefore invoked using this mk script rather than running make directly.

Make files define a number of targets. The ones used by Starlink are usually high level operations such as `build the system from the source code', or `install this package into the Starlink tree'. These high level targets are called primary targets. The secondary targets are the actual files which are built or modified by the system. Generally it is good practise not to access the secondary targets directly. A make target is activated if the file which the target specifies is to be built is out of date with respect to its dependencies. A target with no dependencies is always activated.

For primary targets it is not unusual to have dummy or zero length files which due to their date stamp in the file system can be used as date carrying flags. Starlink software usually maintains 3 such files in each directory called .BUILT, .INSTALLED and .TESTED. These flag files tell the system in which of 4 potential states the package exists. In ASTERIX, because we build our volatile files from one copy of the source code, these files are suffixed with the value of $SYSTEM. Starlink aren't too keen on this, but who cares, and they get flack for having multiple copies of software.



next up previous contents
Next: Revision Control Up: Introduction Previous: Introduction



Asterix
Tue Oct 7 12:01:41 BST 1997