![Ævar Arnfjörð Bjarmason](/assets/img/avatar_default.png)
Change the "coccinelle" rule so that we first copy the *.cocci source in e.g. "contrib/coccinelle/strbuf.cocci" to ".build/contrib/coccinelle/strbuf.cocci" before operating on it. For now this serves as a rather pointless indirection, but prepares us for the subsequent commit where we'll be able to inject generated *.cocci files. Having the entire dependency tree live inside .build/* simplifies both the globbing we'd need to do, and any "clean" rules. It will also help for future targets which will want to act on the generated patches or the logs, e.g. targets to alert if we can't parse certain files (or, less so than usual) with "spatch", and e.g. a replacement for "ci/run-static-analysis.sh". Such a replacement won't care about placing the patches in the in-tree, only whether they're "OK" (and about the diff). Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Taylor Blau <me@ttaylorr.com>
111 lines
3.2 KiB
Makefile
111 lines
3.2 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_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 $$^ \>$@;
|
|
|
|
## 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
|