diff options
author | Egor Tensin <Egor.Tensin@gmail.com> | 2021-04-07 03:16:04 +0300 |
---|---|---|
committer | Egor Tensin <Egor.Tensin@gmail.com> | 2021-04-07 03:16:04 +0300 |
commit | 0ccff951e58fdf1a71b474eb5ecbe2d1c2030fce (patch) | |
tree | d16c39f43c70528e6e7f30973d0afceb0a7fd596 | |
parent | workflows/build: tweak step names (diff) | |
download | cv-0ccff951e58fdf1a71b474eb5ecbe2d1c2030fce.tar.gz cv-0ccff951e58fdf1a71b474eb5ecbe2d1c2030fce.zip |
Makefile: best practices
-rw-r--r-- | Makefile | 31 |
1 files changed, 23 insertions, 8 deletions
@@ -1,32 +1,47 @@ MAKEFLAGS += --no-builtin-rules --no-builtin-variables --warn-undefined-variables +unexport MAKEFLAGS .DEFAULT_GOAL := all .DELETE_ON_ERROR: .SUFFIXES: SHELL := bash .SHELLFLAGS := -eu -o pipefail -c +.PHONY: DO +DO: + +escape = $(subst ','\'',$(1)) + +define noexpand +ifeq ($$(origin $(1)),environment) + $(1) := $$(value $(1)) +endif +ifeq ($$(origin $(1)),environment override) + $(1) := $$(value $(1)) +endif +ifeq ($$(origin $(1)),command line) + override $(1) := $$(value $(1)) +endif +endef + MKDIR := mkdir -p -- -RMDIR := $(RM) -r -- +RMDIR := rm -r -- name := cv pdf := $(name)/$(name).pdf -.PHONY: DO -DO: - .PHONY: all all: $(pdf) $(pdf): $(name).tex img/selfie_face.jpg | $(name)/ - pdflatex -interaction=nonstopmode -halt-on-error -output-directory=$(name)/ $< + pdflatex -interaction=nonstopmode -halt-on-error '-output-directory=$(call escape,$(name))/' '$(call escape,$<)' %/: - $(MKDIR) $@ + $(MKDIR) '$(call escape,$@)' .PHONY: clean clean: - find $(name) '!' -name cv.pdf -type f -delete + find '$(call escape,$(name))' '!' -name cv.pdf -type f -delete .PHONY: clean-all clean-all: - $(RMDIR) $(name)/ + $(RMDIR) '$(call escape,$(name))/' |