* Removed built-in .? -> .s suffix rules.
authorRoland McGrath <roland@redhat.com>
Thu, 26 May 1988 17:55:55 +0000 (17:55 +0000)
committerRoland McGrath <roland@redhat.com>
Thu, 26 May 1988 17:55:55 +0000 (17:55 +0000)
* Misc cleanup, etc.

make.texinfo

index 0e9672322a11100e82fe564ccf78cbf37dba2ea9..e0a2a07327c9646c29ad34c5d27751a8fe1bc306 100644 (file)
@@ -6,7 +6,11 @@
 $Header$
 
 $Log$
-Revision 1.50  1988/05/22 14:49:44  mcgrath
+Revision 1.51  1988/05/26 17:55:55  mcgrath
+* Removed built-in .? -> .s suffix rules.
+* Misc cleanup, etc.
+
+Revision 1.50  88/05/22  14:49:44  mcgrath
 Major Beta release before release 2.0.
 
 Revision 1.24  88/05/22  13:39:08  mcgrath
@@ -2801,15 +2805,14 @@ produces the result @samp{foo}.
 
 @item $(wildcard @var{pattern})
 @findex wildcard
-The argument @var{pattern} is a file name pattern, typically
-containing wildcards characters.  The result of @code{wildcard} is a
-space-separated list of the names of existing files that match the
-pattern.
-
-Wildcard are expanded automatically in rules (@pxref{Wildcards}).  But
-it does not normally take place when a variable is set, or inside the
-arguments of other functions.  Those occasions are when the
-@code{wildcard} function is useful.
+The argument @var{pattern} is a file name pattern, typically containing
+wildcard characters.  The result of @code{wildcard} is a space-separated
+list of the names of existing files that match the pattern.
+
+Wildcards are expanded automatically in rules (@pxref{Wildcards}).
+But they are not normally expanded when a variable is set, or inside the
+arguments of other functions.  Those occasions are when the @code{wildcard}
+function is useful.
 @end table
 
 @node Running, Implicit, Functions, Top
@@ -2890,6 +2893,7 @@ file that you wish to remake.  For example, consider a directory containing
 a several programs, with a makefile that starts like this:
 
 @example
+.PHONY: all
 all: size nm ld ar as
 @end example
 
@@ -2909,9 +2913,17 @@ request it explicitly with @samp{make clean}.  Here is a list of typical
 phony and empty target names:
 
 @table @file
+@item all
+Make all the top-level targets the makefile knows about.
+
 @item clean
 Delete all files that the makefile could remake.
 
+@item clobber
+Delete absolutely everything the makefile could remake (whereas
+@samp{make clean} often leaves intact some files that might take a
+long time to remake).
+
 @item install
 Copy the executable file into a directory that users typically search for
 commands.
@@ -2921,6 +2933,9 @@ Print listings of the source files that have changed.
 
 @item tar
 Create a tar file of the source files.
+
+@item shar
+Create a shell archive (shar file) of the source files.
 @end table
 
 @node Avoid Compilation, Instead of Execution, Goals, Running
@@ -3055,8 +3070,8 @@ you can enclose spaces and other special characters in the value of a
 variable when you override it.)
 
 The variable @code{CFLAGS} is only one of many standard variables that
-exist just so that you can change them this way.  @xref{Implicit
-Variables}, for a complete list.
+exist just so that you can change them this way.
+@xref{Implicit Variables}, for a complete list.
 
 You can also program the makefile to look at additional variables of your
 own, giving the user ability to control other aspects of how the makefile
@@ -3118,8 +3133,7 @@ Here is a table of all the options @code{make} understands:
 
 @table @samp
 @item -b
-This option is ignored for compatibility with other versions of
-@code{make}.
+This option is ignored for compatibility with other versions of @code{make}.
 
 @item -c @var{dir}
 Change to directory @var{dir} before executing the rules.  If multiple
@@ -3376,38 +3390,29 @@ running the linker @code{ld} via the C compiler.  The precise command
 used is @samp{$(CC) $(LDFLAGS) @dots{} $(LOADLIBES)}.@refill
 
 This rule does the right thing for a simple program with only one source
-file.  In more complicated cases, you must write an explicit command for
-linking.
-
-@item Compiling C into assembler code
-@file{@var{n}.s} will be made automatically from @file{@var{n}.c}
-with the command @samp{$(CC) -S $(CFLAGS)}.@refill
-
-It would be possible for @code{make} to convert @file{@var{n}.c} into
-@file{@var{n}.o} by way of @file{@var{n}.s}, using this rule and the
-rule for running the assembler.  But that is not what @code{make}
-does, because the rule for compiling @file{@var{n}.c} into
-@file{@var{n}.o} directly comes earlier in the order of rules.  The
-upshot is that the file @file{@var{n}.s} is not created or changed
-when @file{@var{n}.o} is being remade.  This rule is used only if you
-explicitly specify @file{@var{n}.s} as a goal or needed dependency.
-
-This is a deliberate decision, for the sake of compatibility with Unix
-@code{make}.@refill
-
-If you want @code{make} update @file{@var{n}.s} on the way to updating
-@file{@var{n}.o}, you can request this by canceling the other rule
-that allows direct compilation.  @xref{Canceling Rules}.@refill
-
-@item Compiling Pascal, Fortran, EFL or Ratfor into assembler code
-@file{@var{n}.s} will be made automatically from @file{@var{n}.p},
-@file{@var{n}.e}, @file{@var{n}.r}, @file{@var{n}.F} or @file{@var{n}.F}
-by running the appropriate compiler with the @samp{-S} flag
-instead of the @samp{-c} flag.@refill
-
-For compatibility with Unix @code{make}, these rules apply only if you
-expressly request @code{make} to update @file{@var{n}.s}.  See the
-information immediately above.
+file.  It will also do the right thing if there are multiple object files
+(presumably coming from various other source files), the first of which has
+a name matching that of the executable file.  Thus,
+
+@example
+x: y.o z.o
+@end example
+
+@noindent
+when @file{x.c}, @file{y.c} and @file{z.c} all exist will execute:
+
+@example
+cc -c x.c -o x.o
+cc -c y.c -o y.o
+cc -c z.c -o z.o
+cc x.o y.o z.o -o x
+rm -f x.o
+rm -f y.o
+rm -f z.o
+@end example
+
+@noindent
+In more complicated cases, you must write an explicit command for linking.
 
 @item Yacc for C programs
 @file{@var{n}.c} will be made automatically from @file{@var{n}.y} by
@@ -3449,9 +3454,9 @@ Any file @file{@var{n}} will be extracted if necessary from an SCCS
 file named either @file{s.@var{n}} or @file{SCCS/s.@var{n}}.  The
 precise command used is @samp{$(GET) $(GFLAGS)}.
 
-I recommend that you avoid the use of SCCS.  RCS is widely held to be
-superior, and RCS is also free.  By choosing free software in place of
-comparable proprietary software, you support the free software
+We recommend that you avoid the use of SCCS.  RCS is widely held to be
+superior, and is also free.  By choosing free software in place of
+comparable (or lesser) proprietary software, you support the free software
 movement.
 @end table
 
@@ -3499,8 +3504,8 @@ Program for extracting a file from RCS; default @samp{co}.
 
 @item FC
 @vindex FC
-Program for compiling or preprocessing Fortran programs (or Ratfor or
-EFL programs); default @samp{f77}.
+Program for compiling or preprocessing Fortran, Ratfor,
+and EFL programs; default @samp{f77}.
 
 @item GET
 @vindex GET
@@ -3517,18 +3522,17 @@ Program for compiling Pascal programs; default @samp{pc}.
 
 @item YACC
 @vindex YACC
-Program to use to turn Yacc grammars into C programs; default
-@samp{yacc}.
+Program to use to turn Yacc grammars into C programs; default @samp{yacc}.
 
 @item YACCR
 @vindex YACCR
-Program to use to turn Yacc grammars into Ratfor programs; default
-@samp{yacc -r}.
+Program to use to turn Yacc grammars into Ratfor
+programs; default @samp{yacc -r}.
 
 @item YACCE
 @vindex YACCE
-Program to use to turn Yacc grammars into EFL programs; default
-@samp{yacc -e}.
+Program to use to turn Yacc grammars into EFL
+programs; default @samp{yacc -e}.
 
 @item RANLIB
 @vindex RANLIB
@@ -3537,48 +3541,46 @@ Program to use to update the symbol-directory of an archive
 @end table
 
 Here is a table of variables whose values are additional arguments for the
-programs above:
+programs above.  The default values for all of these is the empty string.
 
 @table @code
 @item ASFLAGS
 @vindex ASFLAGS
-Extra flags to give to the assembler (when explicitly invoked
-on a @samp{.s} file).
+Extra flags to give to the assembler (when explicitly
+invoked on a @samp{.s} file).
 
 @item CFLAGS
 @vindex CFLAGS
-Extra flags to give to the C compiler; default is empty.
+Extra flags to give to the C compiler.
 
 @item EFLAGS
 @vindex EFLAGS
-Extra flags to give to the Fortran compiler for EFL programs; default
-is empty.
+Extra flags to give to the Fortran compiler for EFL programs.
 
 @item FFLAGS
 @vindex FFLAGS
-Extra flags to give to the Fortran compiler; default is empty.
+Extra flags to give to the Fortran compiler.
 
 @item LFLAGS
 @vindex LFLAGS
-Extra flags to give to Lex; default is empty.
+Extra flags to give to Lex.
 
 @item LDFLAGS
 @vindex LDFLAGS
 Extra flags to give to compilers when they are supposed to invoke the
-linker, @samp{ld}; default is empty.
+linker, @samp{ld} (actually the value of the variable @code{LD}).
 
 @item PFLAGS
 @vindex PFLAGS
-Extra flags to give to the Pascal compiler; default is empty.
+Extra flags to give to the Pascal compiler.
 
 @item RFLAGS
 @vindex RFLAGS
-Extra flags to give to the Fortran compiler for Ratfor programs;
-default is empty.
+Extra flags to give to the Fortran compiler for Ratfor programs.
 
 @item YFLAGS
 @vindex YFLAGS
-Extra flags to give to Yacc; default is empty.
+Extra flags to give to Yacc.
 @end table
 
 @node Chained Rules, Pattern Rules, Implicit Variables, Implicit