111 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Makefile
		
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.3 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,$(firstword -$(MAKEFLAGS))),w)
 | |
| PRINT_DIR = --no-print-directory
 | |
| else # "make -w"
 | |
| NO_SUBDIR = :
 | |
| endif
 | |
| 
 | |
| ifneq ($(findstring s,$(firstword -$(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_CP       = @echo '   ' CP $< $@;
 | |
| 	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 $@;
 | |
| 
 | |
| ## Used in "Makefile": SPATCH
 | |
| 	QUIET_SPATCH			= @echo '   ' SPATCH $< \>$@;
 | |
| 	QUIET_SPATCH_TEST		= @echo '   ' SPATCH TEST $(@:.build/%=%);
 | |
| 	QUIET_SPATCH_CAT		= @echo '   ' SPATCH CAT $(@:%.patch=%.d/)\*\*.patch \>$@;
 | |
| 
 | |
| ## 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
 |