106 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Makefile
		
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Makefile
		
	
	
### Remove GNU make implicit rules
 | 
						|
 | 
						|
## This speeds things up since we don't need to look for and stat() a
 | 
						|
## "foo.c,v" every time a rule referring to "foo.c" is in play. See
 | 
						|
## "make -p -f/dev/null | grep ^%::'".
 | 
						|
%:: %,v
 | 
						|
%:: RCS/%,v
 | 
						|
%:: RCS/%
 | 
						|
%:: s.%
 | 
						|
%:: SCCS/s.%
 | 
						|
 | 
						|
## Likewise delete default $(SUFFIXES). See:
 | 
						|
##
 | 
						|
##     info make --index-search=.SUFFIXES
 | 
						|
.SUFFIXES:
 | 
						|
 | 
						|
### Flags affecting all rules
 | 
						|
 | 
						|
# A GNU make extension since gmake 3.72 (released in late 1994) to
 | 
						|
# remove the target of rules if commands in those rules fail. The
 | 
						|
# default is to only do that if make itself receives a signal. Affects
 | 
						|
# all targets, see:
 | 
						|
#
 | 
						|
#    info make --index-search=.DELETE_ON_ERROR
 | 
						|
.DELETE_ON_ERROR:
 | 
						|
 | 
						|
### Global variables
 | 
						|
 | 
						|
## comma, empty, space: handy variables as these tokens are either
 | 
						|
## special or can be hard to spot among other Makefile syntax.
 | 
						|
comma := ,
 | 
						|
empty :=
 | 
						|
space := $(empty) $(empty)
 | 
						|
 | 
						|
### Quieting
 | 
						|
## common
 | 
						|
QUIET_SUBDIR0  = +$(MAKE) -C # space to separate -C and subdir
 | 
						|
QUIET_SUBDIR1  =
 | 
						|
 | 
						|
ifneq ($(findstring w,$(MAKEFLAGS)),w)
 | 
						|
PRINT_DIR = --no-print-directory
 | 
						|
else # "make -w"
 | 
						|
NO_SUBDIR = :
 | 
						|
endif
 | 
						|
 | 
						|
ifneq ($(findstring s,$(MAKEFLAGS)),s)
 | 
						|
ifndef V
 | 
						|
## common
 | 
						|
	QUIET_SUBDIR0  = +@subdir=
 | 
						|
	QUIET_SUBDIR1  = ;$(NO_SUBDIR) echo '   ' SUBDIR $$subdir; \
 | 
						|
			 $(MAKE) $(PRINT_DIR) -C $$subdir
 | 
						|
 | 
						|
	QUIET          = @
 | 
						|
	QUIET_GEN      = @echo '   ' GEN $@;
 | 
						|
 | 
						|
	QUIET_MKDIR_P_PARENT  = @echo '   ' MKDIR -p $(@D);
 | 
						|
 | 
						|
## Used in "Makefile"
 | 
						|
	QUIET_CC       = @echo '   ' CC $@;
 | 
						|
	QUIET_AR       = @echo '   ' AR $@;
 | 
						|
	QUIET_LINK     = @echo '   ' LINK $@;
 | 
						|
	QUIET_BUILT_IN = @echo '   ' BUILTIN $@;
 | 
						|
	QUIET_LNCP     = @echo '   ' LN/CP $@;
 | 
						|
	QUIET_XGETTEXT = @echo '   ' XGETTEXT $@;
 | 
						|
	QUIET_MSGINIT  = @echo '   ' MSGINIT $@;
 | 
						|
	QUIET_MSGFMT   = @echo '   ' MSGFMT $@;
 | 
						|
	QUIET_MSGMERGE = @echo '   ' MSGMERGE $@;
 | 
						|
	QUIET_GCOV     = @echo '   ' GCOV $@;
 | 
						|
	QUIET_SP       = @echo '   ' SP $<;
 | 
						|
	QUIET_HDR      = @echo '   ' HDR $(<:hcc=h);
 | 
						|
	QUIET_RC       = @echo '   ' RC $@;
 | 
						|
	QUIET_SPATCH   = @echo '   ' SPATCH $<;
 | 
						|
 | 
						|
## Used in "Documentation/Makefile"
 | 
						|
	QUIET_ASCIIDOC	= @echo '   ' ASCIIDOC $@;
 | 
						|
	QUIET_XMLTO	= @echo '   ' XMLTO $@;
 | 
						|
	QUIET_DB2TEXI	= @echo '   ' DB2TEXI $@;
 | 
						|
	QUIET_MAKEINFO	= @echo '   ' MAKEINFO $@;
 | 
						|
	QUIET_DBLATEX	= @echo '   ' DBLATEX $@;
 | 
						|
	QUIET_XSLTPROC	= @echo '   ' XSLTPROC $@;
 | 
						|
	QUIET_GEN	= @echo '   ' GEN $@;
 | 
						|
	QUIET_STDERR	= 2> /dev/null
 | 
						|
 | 
						|
	QUIET_LINT_GITLINK	= @echo '   ' LINT GITLINK $<;
 | 
						|
	QUIET_LINT_MANSEC	= @echo '   ' LINT MAN SEC $<;
 | 
						|
	QUIET_LINT_MANEND	= @echo '   ' LINT MAN END $<;
 | 
						|
 | 
						|
	export V
 | 
						|
endif
 | 
						|
endif
 | 
						|
 | 
						|
### Templates
 | 
						|
 | 
						|
## mkdir_p_parent: lazily "mkdir -p" the path needed for a $@
 | 
						|
## file. Uses $(wildcard) to avoid the "mkdir -p" if it's not
 | 
						|
## needed.
 | 
						|
##
 | 
						|
## Is racy, but in a good way; we might redundantly (and safely)
 | 
						|
## "mkdir -p" when running in parallel, but won't need to exhaustively create
 | 
						|
## individual rules for "a" -> "prefix" -> "dir" -> "file" if given a
 | 
						|
## "a/prefix/dir/file". This can instead be inserted at the start of
 | 
						|
## the "a/prefix/dir/file" rule.
 | 
						|
define mkdir_p_parent_template
 | 
						|
$(if $(wildcard $(@D)),,$(QUIET_MKDIR_P_PARENT)$(shell mkdir -p $(@D)))
 | 
						|
endef
 |