DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(make.info.gz) Implicit Variables

Info Catalog (make.info.gz) Catalogue of Rules (make.info.gz) Implicit Rules (make.info.gz) Chained Rules
 
 10.3 Variables Used by Implicit Rules
 =====================================
 
 The commands in built-in implicit rules make liberal use of certain
 predefined variables.  You can alter the values of these variables in
 the makefile, with arguments to `make', or in the environment to alter
 how the implicit rules work without redefining the rules themselves.
 You can cancel all variables used by implicit rules with the `-R' or
 `--no-builtin-variables' option.
 
    For example, the command used to compile a C source file actually
 says `$(CC) -c $(CFLAGS) $(CPPFLAGS)'.  The default values of the
 variables used are `cc' and nothing, resulting in the command `cc -c'.
 By redefining `CC' to `ncc', you could cause `ncc' to be used for all C
 compilations performed by the implicit rule.  By redefining `CFLAGS' to
 be `-g', you could pass the `-g' option to each compilation.  _All_
 implicit rules that do C compilation use `$(CC)' to get the program
 name for the compiler and _all_ include `$(CFLAGS)' among the arguments
 given to the compiler.
 
    The variables used in implicit rules fall into two classes: those
 that are names of programs (like `CC') and those that contain arguments
 for the programs (like `CFLAGS').  (The "name of a program" may also
 contain some command arguments, but it must start with an actual
 executable program name.)  If a variable value contains more than one
 argument, separate them with spaces.
 
    The following tables describe of some of the more commonly-used
 predefined variables.  This list is not exhaustive, and the default
 values shown here may not be what are selected by `make' for your
 environment.  To see the complete list of predefined variables for your
 instance of GNU `make' you can run `make -p' in a directory with no
 makefiles.
 
    Here is a table of some of the more common variables used as names of
 programs in built-in rules: makefiles.
 
 `AR'
      Archive-maintaining program; default `ar'.  
 
 `AS'
      Program for compiling assembly files; default `as'.  
 
 `CC'
      Program for compiling C programs; default `cc'.  
 
 `CO'
      Program for checking out files from RCS; default `co'.  
 
 `CXX'
      Program for compiling C++ programs; default `g++'.  
 
 `CO'
      Program for extracting a file from RCS; default `co'.  
 
 `CPP'
      Program for running the C preprocessor, with results to standard
      output; default `$(CC) -E'.
 
 `FC'
      Program for compiling or preprocessing Fortran and Ratfor programs;
      default `f77'.  
 
 `GET'
      Program for extracting a file from SCCS; default `get'.  
 
 `LEX'
      Program to use to turn Lex grammars into source code; default
      `lex'.  
 
 `YACC'
      Program to use to turn Yacc grammars into source code; default
      `yacc'.  
 
 `LINT'
      Program to use to run lint on source code; default `lint'.  
 
 `M2C'
      Program to use to compile Modula-2 source code; default `m2c'.  
 
 `PC'
      Program for compiling Pascal programs; default `pc'.  
 
 `MAKEINFO'
      Program to convert a Texinfo source file into an Info file; default
      `makeinfo'.  
 
 `TEX'
      Program to make TeX DVI files from TeX source; default `tex'.  
 
 `TEXI2DVI'
      Program to make TeX DVI files from Texinfo source; default
      `texi2dvi'.  
 
 `WEAVE'
      Program to translate Web into TeX; default `weave'.  
 
 `CWEAVE'
      Program to translate C Web into TeX; default `cweave'.  
 
 `TANGLE'
      Program to translate Web into Pascal; default `tangle'.  
 
 `CTANGLE'
      Program to translate C Web into C; default `ctangle'.  
 
 `RM'
      Command to remove a file; default `rm -f'.  
 
    Here is a table of variables whose values are additional arguments
 for the programs above.  The default values for all of these is the
 empty string, unless otherwise noted.
 
 `ARFLAGS'
      Flags to give the archive-maintaining program; default `rv'.
 
 `ASFLAGS'
      Extra flags to give to the assembler (when explicitly invoked on a
      `.s' or `.S' file).
 
 `CFLAGS'
      Extra flags to give to the C compiler.
 
 `CXXFLAGS'
      Extra flags to give to the C++ compiler.
 
 `COFLAGS'
      Extra flags to give to the RCS `co' program.
 
 `CPPFLAGS'
      Extra flags to give to the C preprocessor and programs that use it
      (the C and Fortran compilers).
 
 `FFLAGS'
      Extra flags to give to the Fortran compiler.
 
 `GFLAGS'
      Extra flags to give to the SCCS `get' program.
 
 `LDFLAGS'
      Extra flags to give to compilers when they are supposed to invoke
      the linker, `ld'.
 
 `LFLAGS'
      Extra flags to give to Lex.
 
 `YFLAGS'
      Extra flags to give to Yacc.
 
 `PFLAGS'
      Extra flags to give to the Pascal compiler.
 
 `RFLAGS'
      Extra flags to give to the Fortran compiler for Ratfor programs.
 
 `LINTFLAGS'
      Extra flags to give to lint.
 
Info Catalog (make.info.gz) Catalogue of Rules (make.info.gz) Implicit Rules (make.info.gz) Chained Rules
automatically generated byinfo2html