ARPAVAX:edward (06/09/82)
From: edward (Edward Wang) Here are the replies to my make query. The headers have been edited for brevity: ---------- >From decvax!harpo!zeppo!whuxlb!egb Mon Jun 7 06:15:28 1982 I extended the version 7 make that is now distributed with "system II". Basically, it knows about the environment, knows about libraries (in an intelligent way; i.e. no need to keep ".o" files around); knows about sccs files; has the capability to update a library in three commands (i.e. cc -c -O $(?:.o=.c) ar rv lib $? rm $? as opposed to the old one at a time method); allows single suffix rules (i.e. .c: cc -o $* $*.c for the large number of single file commands). --------- >From floyd!cmcl2!salkind Fri Jun 4 14:29:59 1982 I added support for getting make variables from the environment. These variables can either be reset in the makefile or override the variables set in the makefile. Lou Salkind --------- >From Lepreau@Utah-20 Fri Jun 4 14:29:59 1982 [Excerpts from manual page] ADDITIONS The following are additions to the BELL V7 make. Macro names are expanded like other text, and so themselves may contain macro names. E.g. $($(SYS)LIBES) is allowed. This provides a kind of case statement for macro definitions which is sometimes useful. Macro names are also expanded when they appear on the left side of a macro definition; but the expansion of the right side is delayed until the macro is used. An entry with a name of the form .FILES.y for suffix .y may be used to list all the allowable implicit prerequisite files with suffix .y. The dependants of .FILES.y are the allowed prerequisites. If a file name f.x ends in a suffix .x, and if an implicit rule .y.x exists for suffix .y, and if the entry .FILES.y exists, then .FILES.y is made, and its dependency list is searched for an implicit prerequisite name of the form f.y or <some_directory>/f.y. If such a name is found, it is used as a prerequisite with the shell commands of the .y.x rule. In any case if .FILES.y exists the search of the current directory for the prerequiste f.y is surpressed. Sometimes searches for implicit prerequisites fill up memory with useless possible prerequisite names. These can be eliminated only by providing a .FILES.y entry for every pos- sible prerequisite suffix. The .INCLUDE statement may be use like the #include state- ment of the C macro processor. The syntax is .INCLUDE "file" .INCLUDE <file> with the meaning that the file is inserted at the point the statement appears. If "" surrounds the file name, the file is first searched for in the directory that contains the file which contains the .INCLUDE statement. If not found, the file is searched for in the directory /usr/include. If <> surrounds the file name, only /usr/include is searched. If the file name begins with a /, no directories are searched and it is assumed that the full pathname has been given. .INCLUDE statements may be nested. The .INCLUDE must be at the very beginning of the line, and any comments must follow the file name. Macros defined before a file is included may not be rede- fined during the inclusion: the included definitions are overridden and ignored just as such definitions are overrid- den and ignored by definitions appearing as arguments. Oth- erwise macro redefinitions are allowed provided the macro has not yet been used. An explicit exception to this rule is that builtin macros may always be redefined anytime before they are used. The entry which is made by default if no argument lists an entry to be made is the first file name encounterred which does not begin with "." or which contains a "/": this is not an addition; it is true of standard V7 make. This means that the default entry may come from a .INCLUDE file. The special suffix .NONE is known to make and should not appear in the suffix list. If a target file has no suffix from the .SUFFIX list, it is considered to have the suffix .NONE for the purposes of implicit prerequisite file search- ing. Rules with names of the form <suffix>.NONE use this feature. If a rule exists with a name of the form .NONE<suffix> then implied prerequisite files whose names should be of the form <prefix>.NONE will in fact be taken to have names of the form <prefix> with no extension.
lepreau (06/10/82)
The mods that were (sort of) attributed to me were done by Robert Walton, Walton@ll-xn, and are on the most recent USENIX tape in directory linclab. -jay lepreau