(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