[net.unix-wizards] Result of Make Query

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