...
1# Copyright 2019 Datawire. All rights reserved.
2#
3# Magic for depending on the value of a variable.
4#
5## Eager inputs ##
6# (none)
7## Lazy inputs ##
8# (none)
9## Outputs ##
10# - Variable: var. = build-aux/.var.
11# - Targets: $(var.)%
12## common.mk targets ##
13# - clobber
14#
15# To have a target depend on the variable FOO, just depend on "$(var.)FOO". For example:
16#
17# foo.o: foo.c $(var.)FOOFLAGS
18# $(CC) $(FOOFLAGS) -o $@ $<
19ifeq ($(words $(filter $(abspath $(lastword $(MAKEFILE_LIST))),$(abspath $(MAKEFILE_LIST)))),1)
20_var.mk := $(lastword $(MAKEFILE_LIST))
21include $(dir $(_var.mk))prelude.mk
22include $(dir $(_var.mk))tools.mk
23
24var. = $(dir $(_var.mk)).var.
25$(var.)%: FORCE $(tools/write-ifchanged)
26 @printf '%s' $(call quote.shell,$($*)) | $(tools/write-ifchanged) $@
27
28clobber: _clobber-var
29_clobber-var:
30 rm -f $(var.)*
31.PHONY: _clobber-var
32
33endif
View as plain text