git
/
shared.mak
118 строк · 3.6 Кб
1### Remove GNU make implicit rules
2
3## This speeds things up since we don't need to look for and stat() a
4## "foo.c,v" every time a rule referring to "foo.c" is in play. See
5## "make -p -f/dev/null | grep ^%::'".
6%:: %,v7%:: RCS/%,v8%:: RCS/%9%:: s.%10%:: SCCS/s.%11
12## Likewise delete default $(SUFFIXES). See:
13##
14## info make --index-search=.SUFFIXES
15.SUFFIXES:16
17### Flags affecting all rules
18
19# A GNU make extension since gmake 3.72 (released in late 1994) to
20# remove the target of rules if commands in those rules fail. The
21# default is to only do that if make itself receives a signal. Affects
22# all targets, see:
23#
24# info make --index-search=.DELETE_ON_ERROR
25.DELETE_ON_ERROR:26
27### Global variables
28
29## comma, empty, space: handy variables as these tokens are either
30## special or can be hard to spot among other Makefile syntax.
31comma := ,32empty :=33space := $(empty) $(empty)34
35### Quieting
36## common
37QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir38QUIET_SUBDIR1 =39
40ifneq ($(findstring w,$(firstword -$(MAKEFLAGS))),w)41PRINT_DIR = --no-print-directory42else # "make -w"43NO_SUBDIR = :44endif
45
46ifneq ($(findstring s,$(firstword -$(MAKEFLAGS))),s)47ifndef V48## common
49QUIET_SUBDIR0 = +@subdir=50QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \51$(MAKE) $(PRINT_DIR) -C $$subdir52
53QUIET = @54QUIET_GEN = @echo ' ' GEN $@;55
56QUIET_MKDIR_P_PARENT = @echo ' ' MKDIR -p $(@D);57
58## Used in "Makefile"
59QUIET_CC = @echo ' ' CC $@;60QUIET_AR = @echo ' ' AR $@;61QUIET_LINK = @echo ' ' LINK $@;62QUIET_BUILT_IN = @echo ' ' BUILTIN $@;63QUIET_CP = @echo ' ' CP $< $@;64QUIET_LNCP = @echo ' ' LN/CP $@;65QUIET_XGETTEXT = @echo ' ' XGETTEXT $@;66QUIET_MSGINIT = @echo ' ' MSGINIT $@;67QUIET_MSGFMT = @echo ' ' MSGFMT $@;68QUIET_MSGMERGE = @echo ' ' MSGMERGE $@;69QUIET_GCOV = @echo ' ' GCOV $@;70QUIET_SP = @echo ' ' SP $<;71QUIET_HDR = @echo ' ' HDR $(<:hcc=h);72QUIET_RC = @echo ' ' RC $@;73
74## Used in "Makefile": SPATCH
75QUIET_SPATCH = @echo ' ' SPATCH $< \>$@;76QUIET_SPATCH_TEST = @echo ' ' SPATCH TEST $(@:.build/%=%);77QUIET_SPATCH_CAT = @echo ' ' SPATCH CAT $(@:%.patch=%.d/)\*\*.patch \>$@;78
79## Used in "Documentation/Makefile"
80QUIET_ASCIIDOC = @echo ' ' ASCIIDOC $@;81QUIET_XMLTO = @echo ' ' XMLTO $@;82QUIET_DB2TEXI = @echo ' ' DB2TEXI $@;83QUIET_MAKEINFO = @echo ' ' MAKEINFO $@;84QUIET_DBLATEX = @echo ' ' DBLATEX $@;85QUIET_XSLTPROC = @echo ' ' XSLTPROC $@;86QUIET_GEN = @echo ' ' GEN $@;87QUIET_STDERR = 2> /dev/null88
89QUIET_LINT_GITLINK = @echo ' ' LINT GITLINK $<;90QUIET_LINT_MANSEC = @echo ' ' LINT MAN SEC $<;91QUIET_LINT_MANEND = @echo ' ' LINT MAN END $<;92
93export V94endif
95endif
96
97### Templates
98
99## mkdir_p_parent: lazily "mkdir -p" the path needed for a $@
100## file. Uses $(wildcard) to avoid the "mkdir -p" if it's not
101## needed.
102##
103## Is racy, but in a good way; we might redundantly (and safely)
104## "mkdir -p" when running in parallel, but won't need to exhaustively create
105## individual rules for "a" -> "prefix" -> "dir" -> "file" if given a
106## "a/prefix/dir/file". This can instead be inserted at the start of
107## the "a/prefix/dir/file" rule.
108define mkdir_p_parent_template109$(if $(wildcard $(@D)),,$(QUIET_MKDIR_P_PARENT)$(shell mkdir -p $(@D)))110endef
111
112## Getting sick of writing -L$(SOMELIBDIR) $(CC_LD_DYNPATH)$(SOMELIBDIR)?
113## Write $(call libpath_template,$(SOMELIBDIR)) instead, perhaps?
114## With CC_LD_DYNPATH set to either an empty string or to "-L", the
115## the directory is not shown the second time.
116define libpath_template117-L$(1) $(if $(filter-out -L,$(CC_LD_DYNPATH)),$(CC_LD_DYNPATH)$(1))118endef
119