fuel-main/rules.mk

47 lines
1.0 KiB
Makefile

define ACTION.COPY
@mkdir -p $(@D)
cp $< $@
endef
define ACTION.TOUCH
@mkdir -p $(@D)
touch $@
endef
# This macros is to make targets dependent on variables
# It writes variable value into temporary file varname.tmp,
# then it compares temporary file with the varname.dep file.
# If there is a difference between them, varname.dep will be updated
# and the target which depends on it will be rebuilt.
# Example:
# target: $(call depv,varname)
DEPV_DIR:=$(BUILD_DIR)/depv
define depv
$(shell mkdir -p $(DEPV_DIR))
$(shell echo "$($1)" > $(DEPV_DIR)/$1.tmp)
$(shell diff >/dev/null 2>&1 $(DEPV_DIR)/$1.tmp $(DEPV_DIR)/$1.dep \
|| mv $(DEPV_DIR)/$1.tmp $(DEPV_DIR)/$1.dep)
$(DEPV_DIR)/$1.dep
endef
define NEWLINE
endef
$(BUILD_DIR)/%/.dir:
mkdir -p $(@D)
@touch $@
assert-variable=$(if $($1),,$(error Variable $1 need to be defined))
find-files=$(shell test -e $1 && find $1 -type f 2> /dev/null)
# uppercase conversion routine
# usage: UPPER_VAR = $(call uc,$(VAR))
uc = $(shell echo $(1) | tr a-z A-Z)
comma:=,
space:=
space+=