DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(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