Go to the first, previous, next, last section, table of contents.
The commands in built-in implicit rules make liberal use of certain
predefined variables. You can alter 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.
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.
Here is a table of variables used as names of programs in built-in rules:
AR
- Archive-maintaining program; default `ar'.
AS
- Program for doing assembly; default `as'.
CC
- Program for compiling C programs; default `cc'.
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 C programs or Ratfor programs;
default `lex'.
PC
- Program for compiling Pascal programs; default `pc'.
YACC
- Program to use to turn Yacc grammars into C programs; default `yacc'.
YACCR
- Program to use to turn Yacc grammars into Ratfor
programs; default `yacc -r'.
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.
PFLAGS
- Extra flags to give to the Pascal compiler.
RFLAGS
- Extra flags to give to the Fortran compiler for Ratfor programs.
YFLAGS
- Extra flags to give to Yacc.
Go to the first, previous, next, last section, table of contents.