NAMES := Chaosknoten

GNETLIST := gnetlist
GSCHEM := gschem
PCB := pcb
PS2PDF := ps2pdf

SUFFIXES :=

.PHONY: all nets pdfs gbrs tidy clean
.SUFFIXES:
.SECONDARY:

all: nets pdfs gbrs tidy

nets: $(addsuffix .net,$(NAMES))

pdfs: $(addsuffix .sch.pdf,$(NAMES)) $(addsuffix .pcb.pdf,$(NAMES))

gbrs: $(addsuffix .gerber.zip,$(NAMES))

%.net: %.sch
	$(GNETLIST) -q -g PCB -o $@ $<

%.sch.ps: %.sch gschem-print.scm
	$(GSCHEM) -p -s gschem-print.scm -o $@ $<

%.pcb.ps: %.pcb
	$(PCB) -x ps --psfile $@ --media A4 --ps-color --fill-page $<

%.pdf: %.ps
	$(PS2PDF) $< $@

%.gerber.zip: %.pcb
	rm -rf $*.gerber $@
	mkdir -p $*.gerber/tmp
	$(PCB) -x gerber --gerberfile $*.gerber/$* $<
	{ head -n $$(grep -n Via $< | head -n 1 | cut -d ':' -f 1) $<; \
	  tail -n +$$(grep -n Layer $< | head -n 1 | cut -d ':' -f 1) $<; } \
	  | sed 's/ 6.00mil / 1.00mil /g' > $*.gerber/tmp/$<
	$(PCB) -x gerber --gerberfile $*.gerber/tmp/$* $*.gerber/tmp/$<
	mv $*.gerber/tmp/$*.group7.gbr $*.gerber/$*.milling.gbr
	rm $(foreach X,group7,$*.gerber/$*.$X.gbr)
	rm -rf $*.gerber/tmp
	zip -r $@ $*.gerber

tidy:
	rm -f *~ *- *.log *.ps

clean: tidy
	rm -rf *.net *.pdf *.gerber *.gerber.zip