HP-UX Reference (11i v1 05/09) - 1 User Commands A-M (vol 1)

m
make(1) make(1)
given is used. This enables overriding the presence of the
k flag in the MAKEFLAGS
environment variable.
-t Touch the target files (causing them to be up-to-date) rather than issue the usual com-
mands.
-u Unconditionally
make the target, ignoring all timestamps.
-w Suppress warning messages. Fatal messages will not be affected.
[macro_name=value]
Zero or more command line macro definitions can be specified. See the Macros section.
[names] Zero or more target names that appear in the makefile. Each target so specified is updated
by make. If no names are specified,
make updates the first target in the makefile that is
not an inference rule.
Parallel Make
If
make is invoked with the -P option, it tries to build more than one target at a time, in parallel. (This is
done by using the standard UNIX system process mechanism which enables multiple processes to run
simultaneously.) For the makefile shown in the example in the previous section, it would create processes
to build a.o and b.o in parallel. After these processes were complete, it would build pgm.
The number of targets
make will try to build in parallel is determined by the value of the environment
variable PARALLEL. If -P is invoked, but PARALLEL is not set, then make will try to build no more than
two targets in parallel.
You can use the .MUTEX directive to serialize the updating of some specified targets. This is useful when
two or more targets modify a common output file, such as when inserting modules into an archive or when
creating an intermediate file with the same name, as is done by lex and yacc. If the makefile in the previ-
ous section contained a .MUTEX directive of the form
.MUTEX: a.o b.o
it would prevent make from building a.o and b.o in parallel.
Environment
All variables defined in the environment (see environ(5)) are read by make and are treated and processed
as macro definitions, with the exception of the
SHELL environment variable which is always ignored. The
value of the SHELL environment variable will not be used as a macro and will not be modified by defining
the SHELL macro in a makefile or on the command line. Variables with no definition or empty string
definitions are included by make.
There are four possible sources of macro definitions which are read in the following order: internal
(default), current environment, the makefile(s), and command line. Because of this order of processing,
macro assignments in a makefile override environment variables. The -e option allows the environment to
override the macro assignments in a makefile. Command-line macro definitions always override any other
definitions.
The MAKEFLAGS environment variable is processed by make on the assumption that it contains any legal
input option (except -f, -p, and -d) defined for the command line. The
MAKEFLAGS variable can also be
specified in the makefile.
(XPG4 only.
MAKEFLAGS in the makefile replaces the MAKEFLAGS environment variable. Command line
options have precedence over MAKEFLAGS environment variable.)
If MAKEFLAGS is not defined in either of these places, make constructs the variable for itself, puts the
options specified on the command line and any default options into it, and passes it on to invocations of
commands. Thus, MAKEFLAGS always contains the current input options. This proves very useful for
recursive makes. Even when the -n option is specified, command lines containing the string $(MAKE) or
${MAKE} are executed; hence, one can perform a make -n recursively on an entire software system to
see what would have been executed. This is possible because the -n is put into MAKEFLAGS and passed to
the recursive invocations of $(MAKE) or ${MAKE}. This is one way of debugging all of the makefiles for a
software project without actually executing any of the commands.
Each of the commands in the rules is given to a shell to be executed. The shell used is the shell command
interpreter (see sh(1)), or the one specified in the makefile by the SHELL macro. To ensure the same shell
is used each time a makefile is executed, the line:
HP-UX 11i Version 1: September 2005 4 Hewlett-Packard Company Section 1531