/* * aegis - project change supervisor * This file is in the Public Domain, 1995, Peter Miller. * * The make(1) program exists in many forms, usually one is available with each * UNIX version. The one used in the writing of this section is GNU Make 3.70, * available by anonymous FTP from your nearest GNU archive site. GNU Make was * chosen because it was the most powerful, it is widely available (usually for * little or no cost) and discussion of the alternatives (SunOS make, BSD 4.3 * make, etc), would not be universally applicable. "Plain vanilla" make * (with no transitive closure, no pattern rules, no functions) is not * sufficiently capable to satisfy the demands placed on it by aegis. * * As mentioned in the Dependency Maintenance Tool chapter of the User Guide, * make is not really sufficient, because it lacks dynamic include dependencies. * However, GNU Make has a form of dynamic include dependencies, and it has a * few quirks, but mostly works well. * * The other feature lacking in make is a search path. While GNU Make has * functionality called VPATH, the implementation leaves something to be * desired, and can't be used for the search path functionality required by * aegis. Because of this, the create_symlinks_before_build field of the * project config file is set to true so that aegis will arrange for the * development directory to be full of symbolic links, making it appear that * the entire project is in each change's development directory. */ /* * The build_command field of the project config file is used to invoke the * relevant build command. This command tells make where to find the rules. * The ${s Makefile} expands to a path into the baseline during development * if the file is not in the change. Look in aesub(5) for more information * about command substitutions. */ build_command = "gmake -f ${s Makefile} project=$p change=$c version=$v"; /* * The rules used in the User Guide all remove their targets before * constructing them, which qualifies them for the following entry in the * config file. The files must be removed first, otherwise the baseline would * cease to be self-consistent. */ link_integration_directory = true; /* * Another field to be set in this file is one which tells aegis to maintain * symbolic links between the development directory and the baseline. This also * requires that rules remove their targets before constructing them, to ensure * that development builds do not attempt to write their results onto the * read-only versions in the baseline. */ create_symlinks_before_build = true;