OUTDIR = public dirname = $(patsubst %/,%,$(dir $(1))) dirnames = $(sort $(call dirname,$(1))) pages_src = $(filter-out template.html,$(wildcard *.html)) pages = $(foreach p,$(pages_src),$(OUTDIR)/$(p)) members_src = $(wildcard *.membre.in) members_pages = $(patsubst %.membre.in,$(OUTDIR)/%.html,$(members_src)) feeds = $(wildcard *.xml) resources_src = $(feeds) resources = $(foreach f,$(resources_src),$(OUTDIR)/$(f)) images = $(foreach img,$(shell find images -type f),$(OUTDIR)/$(img)) images_folders = $(call dirnames,$(images)) stylesheets = $(foreach img,$(shell find stylesheets -type f),$(OUTDIR)/$(img)) stylesheets_folders = $(call dirnames,$(stylesheets)) .PHONY: all clean site all: site site: $(pages) $(members_pages) $(resources) $(images) $(stylesheets) $(OUTDIR) $(images_folders) $(stylesheets_folders): mkdir $@ .SECONDEXPANSION: $(resources): $(OUTDIR)/%: % | $$(@D) cp $< $@ .SECONDEXPANSION: $(images): $(OUTDIR)/%: % | $$(@D) cp $< $@ .SECONDEXPANSION: $(stylesheets): $(OUTDIR)/%: % | $$(@D) cp $< $@ .SECONDEXPANSION: $(pages): $(OUTDIR)/%.html: %.html %.sh template.html | $$(@D) ./build.sh $< $*.sh $@ .SECONDEXPANSION: $(members_pages): $(OUTDIR)/%.html: %.membre.in build-member.sh template.html | $$(@D) ./build-member.sh $< $@ $(OUTDIR)/quatuor.html: quatuor.md $(OUTDIR)/programmes.html: programs.in clean: -rm -r $(OUTDIR)