DESTDIR = . PARAMETERS := $(shell cat Lego.json | grep -v '"parameterSets": ""' | jq -r '.parameterSets | keys[]') STL = $(PARAMETERS:%=$(DESTDIR)/%.stl) PNG = $(PARAMETERS:%=$(DESTDIR)/%.png) INDEX = $(DESTDIR)/index.html SCAD = Lego.scad CONFIG = Lego.json .PHONY: all all: models thumbnails .PHONY: help help: @echo Targets: @echo all Builds models and thumbnails @echo help Shows this help file @echo clean Removes generated files @echo models Builds all models @echo thumbnails Generates model thumbnails @echo webpage Generates web page @echo MODEL Builds an STL and a PNG for the given model @echo @echo Available models: $(PARAMETERS) .PHONY: clean clean: rm -f $(STL) $(PNG) $(INDEX) .PHONY: models models: $(STL) .PHONY: thumbnails thumbnails: $(PNG) .PHONY: webpage webpage: thumbnails $(INDEX) $(PARAMETERS): % : $(DESTDIR)/%.png $(DESTDIR)/%.stl $(STL) $(PNG): $(SCAD) $(CONFIG) Makefile mkdir -p $(@D) openscad -o $@ -p $(CONFIG) -P $(basename $(@F)) --camera=0,0,0,60,0,135,0 --autocenter --viewall $(SCAD) $(INDEX): header.html entry.html footer.html Makefile cat header.html | sed "s/%date/`date '+%Y-%m-%d at %T'`/g" | sed "s/%version/`git describe --always --dirty`/g" > $@ $(foreach P,$(PARAMETERS),cat entry.html | sed 's/%/$P/g' >> $@;) cat footer.html >> $@