chiark / gitweb /
undo broken deletion
[trains.git] / spice / Makefile
diff --git a/spice/Makefile b/spice/Makefile
new file mode 100644 (file)
index 0000000..d6b297d
--- /dev/null
@@ -0,0 +1,190 @@
+
+M4INCS=                parts.i4
+
+E_TRACK=       ArsCLMNo
+LAYOUTOPTS_ALL=        -ep=*Cm
+LAYOUTOPTS=    -E=*$(E_TRACK) $(LAYOUTOPTS_ALL)
+LAYOUTOPTS_PHYS= -S1.0 $(LAYOUTOPTS) '-e*A'
+XLAYOUTOPTS_LAYER= -e'=5AN' -E'*~=5rsm' -e'p~=5r' -e'*~=9C' -e'*=*l'
+
+LAYERS_LS=     0 10 20
+LAYERS_PS=     $(addsuffix .ps, $(LAYERS_LS))
+LAYERS_L=      $(addprefix ours-l, $(LAYERS_PS))
+LAYERS_E=      $(addprefix ours-e, $(LAYERS_PS))
+LAYERS=                $(LAYERS_L) $(LAYERS_E)
+
+LPAGES=         $(foreach x, 0 1 2 3 4 5 6, $(foreach y, 1 2 3 4 5, ours-p0-$xx$y.ps))
+
+default:       netlists picprogs
+layers:                $(LAYERS)
+lpages:                $(LPAGES)
+
+all:           default layers bulkres.bom divider-tables \
+               picprogs netlists panel3.pcb
+
+o=>$@.new && mv -f $@.new $@
+
+CIRCUITPARTS=  control.partlist circuit.partlist
+BULKRESPARTS=  bulkres-select.partlist bulkres-items.partlist
+
+picprogs:      flasher.hex
+
+netlists:      reversers.net detectors.net \
+               reversers.hole-rep detectors.hole-rep \
+               both.hole-rep panel3.hole-rep
+
+# print from pcb(1) as follows:
+#   File / Print Layout / ...
+#      select media and offsets: A4
+#      rotate
+#      ok
+#    (If `... exists, use anyway?', Sequence OK)
+#
+# then
+#   make {reversers,detectors}.oprints{-l,-lpr}
+#   for f in *.oprint-*.ps; do gv -scale -1 -media A4 $f; done
+#   etc.
+
+OPRINTS=       %.oprint-copper.ps              \
+               %.pcb.output_fab.ps             \
+               %.pcb.output_frontsilk.ps       \
+               %.oprint-assembly.ps
+
+%.hole-rep:    %.pcb hole-report.pl
+               ./hole-report.pl <$< $o
+
+include reversers.layers.dep
+include detectors.layers.dep
+include panel3.layers.dep
+
+%.zip:         layers.txt.tmpl Makefile
+               rm -rf $@.d; mkdir -p $@.d
+               set -e; exec <$<; cd $@.d; perl -pe '                   \
+                       m/^(\S+)\s+(\w+)\s+(\w+)\s+(\S.*)$$/ or die;    \
+                       system "cp ../$*.pcb.output_$$1.$$3 $$2.$$3";   \
+                       die $$? if $$?;                                 \
+                       $$_= sprintf "%-20s %s\n", "$$2.$$3", $$4;      \
+               ' >readme.txt;                                          \
+               zip -l ../$@.new *
+               mv -f $@.new $@
+               unzip -v $@
+
+PANEL3_PCBS=   reversers.pcb detectors.pcb detectors.pcb
+
+panel3.pcb:    pcb-panelise $(PANEL3_PCBS) Makefile
+               ./$< -g100 $(PANEL3_PCBS) $o
+
+$*.zip: $*.pcb.output_$$1.$$2/ or die' \
+
+%.out-ps.tar:
+               GZIP=-9v tar zvcf $@.gz $*.pcb.output_*.ps
+
+%.layers.dep:  layers.txt.tmpl Makefile
+               perl -pe \
+       's/^(\S+)\s+\w+\s+(\w+)\s.*/$*.zip: $*.pcb.output_$$1.$$2/ or die' \
+                       <$< $o
+
+both.hole-rep: hole-report.pl reversers.pcb detectors.pcb
+               ./$^ $o
+
+%.oprints:     $(OPRINTS)
+                       echo $^ >$@-l-tmp
+
+%.oprints-l:   $(OPRINTS) %.oprints Makefile
+                       cp $@-tmp $@
+
+pcboprints:    reversers.oprints-l detectors.oprints-l
+
+%.oprints-lpr: %.oprints-l
+               set -ex; for f in `cat $^`; do lpr $$f; done
+
+%.distilled.ps:        %.ps
+               ps2ps $< $@
+
+%.oprint-copper.ps:    %.pcb.output_back.distilled.ps \
+                       %.pcb.output_front.distilled.ps
+               cat $^ >$@.tmp
+               ps2ps $@.tmp $@-2.tmp
+               pstops '2:0(-50mm,0mm)+1(50mm,0mm)' <$@-2.tmp $o
+
+%.oprint-copper.ps:    Makefile
+
+%.oprint-assembly.ps:  %.pcb.output_assembly.ps Makefile
+               pstops -pa4 '0@2(-109mm,-290mm)' <$< $o
+
+%.net:         %.net-info
+               sed -e '/^\#/d' <$< $o
+
+%.net-info:    %.net-spec netlist-expand
+               ./netlist-expand $< $o
+
+%.net-spec:    generate-netspec.pl
+               ./$< $@ $o
+
+%.hex:         %.asm
+               gpasm -p 18f458 $<
+
+circuit.bom:   farnell-find $(CIRCUITPARTS)
+               ./farnell-find bom $(CIRCUITPARTS) $o
+
+bulkres.bom:   farnell-find $(BULKRESPARTS)
+               ./farnell-find bom $(BULKRESPARTS) $o
+
+bulkres-select.partlist:       bulkres-select-gen.pl
+               ./$^ $o
+
+bulkres-items.suggest:
+               cat bulkres-searchout*[0-9] | ./farnell-resistor-convert.pl $o
+
+bulkres-items.descs:   bulkres-items.suggest
+               xargs ./farnell-find describe <$< $o
+
+bulkres-items.partlist:
+               ./farnell-resistor-convert.pl <bulkres-items.descs MRS25 std $o
+
+divider-table.txt:     divider-table.pl
+               ./$< $o
+
+divider-tables:                divider-table.ps divider-table.txt
+
+divider-table.ps:      divider-table.txt Makefile
+               a2ps -o- -R -1 --borders no -B -L"$$(wc -l <$<)" -l158 \
+                --center-title='E24 resistor ratios and logarithms' <$< $o
+
+%.d4:          %.m4 $(M4INCS) Makefile
+               m4 -s <$< $o
+
+%-a.ps:                %.d4 layout
+               ./layout <$< $(LAYOUTOPTS) '-E*l' $o
+
+%-al.ps:       %.d4 layout
+               ./layout <$< $(LAYOUTOPTS) '-e*C' '-ep=rm' $o
+
+%-ap.ps:       %.d4 layout
+               ./layout -S1.0 <$< $(LAYOUTOPTS) '-e*A' '-ep=rm' $o
+
+ours-l%.ps:    ours.d4 layout
+               ./layout <$< -l$* $(LAYOUTOPTS) $(XLAYOUTOPTS_LAYER) $o
+
+ours-e%.ps:    ours.d4 layout
+               ./layout <$< -l$* -E'=*aRsclMno' \
+                       -e'p=*rm' -e'=5RN' -E'*~=5rsm' -e'p~=5r' -e'*=*l' $o
+
+ours-p%.ps:    ours.d4 layout
+               ./layout <$< -l$$(printf %s "$*" | sed -e 's/-/ -P/') \
+                       $(LAYOUTOPTS_PHYS) $(XLAYOUTOPTS_LAYER) $o
+
+parts.ps:      showlib.d4 layout
+               ./layout <$< $(LAYOUTOPTS_ALL) $o
+
+clean:
+               -rm -f -- *.d4 farn.* *~ *.new
+               -rm -f bulkres-*.partlist bulkres-items.suggest *.bom
+               -rm -f t,*.gnuplot-data t,*.gnuplot-cmd t,gnuplot-fifo
+               -rm -f t,gnuplots.sh reversers.net reversers.net-info
+               -rm -f flasher.hex flasher.cod flasher.lst
+               -rm -f ours-*.ps parts.ps
+               -rm -f *.oprint-*.ps
+
+.PRECIOUS:     %.net-info %.net-spec
+.PRECIOUS:     $(OPRINTS)