diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 59 |
1 files changed, 44 insertions, 15 deletions
@@ -1,22 +1,20 @@ +pathsearch = $(firstword $(wildcard $(addsuffix /$(1),$(subst :, ,$(PATH))))) + RM = rm -f CP = cp PATCH = patch SASS = sass -PHP = php5 +PHP := $(firstword $(call pathsearch,php5) $(call pathsearch,php)) +SVG2PNG = rsvg-convert +PNGCRUSH = $(firstword $(call pathsearch,pngcrush) $(call pathsearch,cp)) -srcfiles = \ - img/swoosh.svg \ - style.scss \ - header.php.patch \ - Makefile \ - logo-style.scss.php \ - license.txt \ - css_shadow.php \ - twentyeleven-fix.scss +default: all -all: header.php style.css img/swoosh.png .gitignore +include theme.mk +srcfiles += twentyeleven-fix.scss license.txt +srcfiles += .gitignore theme.mk Makefile -style.css: logo-style.scss twentyeleven-fix.scss +all: .gitignore $(targets) %: %.patch ../twentyeleven/% $(RM) $@ @@ -30,12 +28,43 @@ style.css: logo-style.scss twentyeleven-fix.scss $(PHP) -f $< > $@ %.png: %.svg - rsvg-convert $< > $@.$$$$ && pngcrush $@.$$$$ $@ ; $(RM) $@.$$$$ + $(SVG2PNG) $< > $@.$$$$ && $(PNGCRUSH) $@.$$$$ $@ ; $(RM) $@.$$$$ + +################################################################################ -.gitignore: Makefile +in_dir = $(patsubst ./%,%,$(dir $1)) +my_dir = $(patsubst %/,%,$(dir $1)) +define gitignore_file +$(if $(in_dir), + $(call gitignore_file,$(my_dir)) + echo '$(my_dir)/*' >> '$@'; +) +echo '!$1' >> '$@'; +endef + +.gitignore: Makefile theme.mk echo "# DO NOT EDIT, this file is automatically made by \`Makefile'" >$@ echo '# ' >> '$@' echo '# ignore everyting' >> '$@' echo '*' >> '$@' echo '# but these:' >> '$@' - for file in $(srcfiles); do echo !"$$file" >> '$@'; done + $(foreach file,$(srcfiles),$(call gitignore_file,$(file))) + +################################################################################ + +git2make = $1 $(subst *,.*,$1) +gitignore_y = $(call git2make,$(shell sed -n 's/^[^\#!]/&/p' .gitignore)) +gitignore_n = $(call git2make,$(shell sed -n 's/^!//p' .gitignore)) +gitignore_i = . .. .git %/.. %/. +gitignore = $(filter-out $(gitignore_i) $(wildcard $(gitignore_n)),$(wildcard $(gitignore_y))) + +clean: .gitignore PHONY + $(RM) -r $(filter-out $(targets),$(gitignore)) +distclean: .gitignore PHONY + $(RM) -r $(gitignore) + +################################################################################ + +.PHONY: FORCE PHONY +FORCE: ; +PHONY: ; |