The build tool is a tool written in Perl. It reads the file <build.lst> in the prj directory of the cvs module, builds a dependencies chain and according to the chain goes through the directories of the module calling dmake in each of them. It can also generate a shell script (-file option), which can be started afterwards. All directories to build and their dependencies are listed in the file <build.lst>. The build.lst has the following format:
two character prefix of the project (obsolete)
directory name (described in Windows\MSDOS pathname convention; using a backslash '\' between each subdirectory)
The action to be done. Usually the name of the make-tool, for historical reason still called nmake. There is also a get-action which indicates, that this directory contains source files but no makefiles. If the third entry is a ":" the next entry is a list of dependent modules. This list has to be terminated with an 'NULL' string.
Special Entry. I have no idea what this is for. In all cases '-'.
platform: Used if this directory is only relevant for platform 'x'. 'x' is a placeholder for "all, w, p, m u". all stands for all platforms, w for windows, p for OS/2 (Presentation Manager), u for Unix platforms.
Name for directory: Unique name for this directory.
List of dependency for this directory. List has to be terminated with 'NULL'. The list contains list or directory names. No circular dependencies are allowed.
Example for an build.lst:
#========================================================================= r rsc : tools NULL r rsc\source\misc nmake - all rsc_misc NULL r rsc\source\tools nmake - all rsc_tool NULL r rsc\source\res nmake - all rsc_res NULL r rsc\source\parser nmake - all rsc_pars NULL r rsc\source\rsc nmake - all rsc_rsc NULL r rsc\source\prj nmake - all rsc_sprj rsc_misc rsc_tool rsc_res rsc_pars rsc_rsc NULL r rsc\inc get - all rsc_inc NULL r rsc\util nmake - all rsc_util rsc_sprj NULL
The build accepts following switches:
--file|-F <filename>: write build shell script into <filename>
--all|-a[:prjname] builds all projects from very beginning [starting from prjname, i.e. set the -all sequence forward when build was broken in prjname] till current one.
--since|-c <prjname>: the same as '--all:prjname', but omitting <prjname> build
--from|-f <prjname:broken_build_prj [prjname1 [prjname2 [...prjnameN]]]>: build all projects dependent from <prjname [prjname...]> till current one starting from broken_build_prj
--with_branches|-b: build all projects in neighbour branches and the current branch till current project.
--show|-s: do not build, only show what is going to be done
--deliver|-d: only deliver, do not build
-dlv_switch: use deliver with switches passed
--help|-h: print help
-P <number>: start <number> processes if possible (Unices only), works on modules level as well
--prepare|-p: prepare the workspace for incompatible build (recommended to use with “--from prjname” switch when you have incompatible changes in prjname project (see description to “-from” switch))
--ignore|-i: ignore all errors
--version|-v: print tool version
-- dmake_switch1 [dmake_switch2[ ...dmake_switchN]]: explicitly pass switch(es) to dmake
All unknown switches are passed to dmake tool.
In general, build is used via alias which is created by configure.
alias build="perl $SOLARENV/bin/build.pl"