From 15c5b637136e004d56afd6948e391460ec519cab Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Thu, 26 May 1988 17:55:55 +0000 Subject: * Removed built-in .? -> .s suffix rules. * Misc cleanup, etc. --- make.texinfo | 142 ++++++++++++++++++++++++++++++----------------------------- 1 file changed, 72 insertions(+), 70 deletions(-) diff --git a/make.texinfo b/make.texinfo index 0e96723..e0a2a07 100644 --- a/make.texinfo +++ b/make.texinfo @@ -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 -- cgit v1.2.3