chiark / gitweb /
new gui-plan seems to work
[trains.git] / layout / Makefile
1 include ../cprogs.make
2 include ../common.make
3
4 M4INCS=         parts.i4
5
6 E_TRACK=        ArsCLMNo
7 LAYOUTOPTS_ALL= -ep=*Cm
8 LAYOUTOPTS=     -E=*$(E_TRACK) $(LAYOUTOPTS_ALL)
9 LAYOUTOPTS_PHYS= -S1.0 $(LAYOUTOPTS) '-e*A'
10 XLAYOUTOPTS_LAYER= -e'=5AN' -E'*~=5rsm' -e'p~=5r' -e'*~=9C' -e'*=*l'
11
12 LAYOUTOPTS_SEGS= '-e*=*rm'
13
14 LAYERS_LS=      0 10 20
15 LAYERS_PS=      $(addsuffix .ps, $(LAYERS_LS))
16 LAYERS_L=       $(addprefix ours-l, $(LAYERS_PS))
17 LAYERS_E=       $(addprefix ours-e, $(LAYERS_PS))
18 LAYERS=         $(LAYERS_L) $(LAYERS_E)
19
20 LPAGES=  $(foreach x, 0 1 2 3 4 5 6, $(foreach y, 1 2 3 4 5, ours-p0-$xx$y.ps))
21
22 CPROGS=         subseg2display compose-segenco
23
24 default:        $(CPROGS) for-test-ui
25 all:            default lpages layers extras
26 for-test-ui:    ours.graph.c ours.redactgraph ours.raw.neato.ps \
27                 ours.redacted.neato.ps ours.layout-data.o \
28                 ours.dgram-bot.segcmap ours.dgram-bot.plandata.c \
29                 ours.dgram-bot.plandata.o
30
31 layers:         $(LAYERS)
32 lpages:         $(LPAGES)
33 extras:         dualjn-a.ps parts.ps
34
35 include ours.dgram.m
36 include segencolayers.m
37
38 NETPBM=         -lnetpbm
39 # -lppm
40
41 REDACT=         consistency movfeatsplitedges   \
42                 consistency movfeatrmstubs      \
43                 consistency movfeatsplitnodes   \
44                 consistency trivpairnodes       \
45                 consistency trivnullnodes
46
47 subseg2display: subseg2display.o
48                 $(LINK) $(NETPBM) -lpub -lm
49
50 compose-segenco: compose-segenco.o
51                 $(LINK) $(NETPBM)
52
53 %.neato.ps:     %.neato
54                 neato -Tps <$< $o
55
56 %.raw.neato:    %.redactgraph
57                 ./$< consistency printforneato $o
58
59 %.redacted.neato: %.redactgraph
60                 ./$< $(REDACT) consistency printforneato $o
61
62 %.redacted.forsafety: %.redactgraph
63                 ./$< $(REDACT) consistency printforforsafety $o
64
65 %.layout-data.c: data2safety %.wiring %.redacted.forsafety \
66                         reversers.pin-info detectors.pin-info
67                 ./$(filter-out %.pin-info, $^) $o
68
69 %-pindata.asm:  %.layout-data.c
70                 @:
71
72 %.pin-info:     pin-info-gen ../pcb/%.net
73                 ./$< $* $o
74
75 %.redactgraph:  %.graph.o redactgraph.o
76                 $(LINK)
77
78 %.d4:           %.m4 $(M4INCS) Makefile
79                 m4 -s <$< $o
80
81 %-a.ps:         %.d4 layout
82                 ./layout <$< $(LAYOUTOPTS) '-E*l' $o
83
84 %-al.ps:        %.d4 layout
85                 ./layout <$< $(LAYOUTOPTS) '-e*C' '-ep=rm' $o
86
87 %-ap.ps:        %.d4 layout
88                 ./layout -S1.0 <$< $(LAYOUTOPTS) '-e*A' '-ep=rm' $o
89
90 %.segcmapreq:   %.run-layout
91                 ./$< $(LAYOUTOPTS_SEGS) -GR $o
92
93 %.segcmap:      %.segcmapreq segcmapassign segcmap.h
94                 ./segcmapassign <$< $o
95
96 %.dgram.m:      %.dgram-list make-dgram-make
97                 ./make-dgram-make <$< $* $o
98
99 %.m:            %.gen-make
100                 ./$< $o
101
102 %.segenco.ppm:  %.segenco.ps Makefile
103                 gs -dNOPAUSE -dBATCH -dSAFER -q \
104                         -sDEVICE=ppmraw -r72 -g595x842 \
105                         -sOutputFile=$@.new $< && mv -f $@.new $@
106
107 ours.graph.c:   extractgraph ours.dgram-bot.p0.segenco.ps
108                 ./$^ $o
109 # Strictly, this is wrong as it only uses layer 0.  When we have more
110 # layers, should put them all in same segenco specially for extractgraph
111
112 ours-l%.ps:     ours.d4 layout
113                 ./layout <$< -l$* $(LAYOUTOPTS) $(XLAYOUTOPTS_LAYER) $o
114
115 ours-e%.ps:     ours.d4 layout
116                 ./layout <$< -l$* -E'=*aRsclMno' \
117                         -e'p=*rm' -e'=5RN' -E'*~=5rsm' -e'p~=5r' -e'*=*l' $o
118
119 ours-p%.ps:     ours.d4 layout
120                 ./layout <$< -l$$(printf %s "$*" | sed -e 's/-/ -P/') \
121                         $(LAYOUTOPTS_PHYS) $(XLAYOUTOPTS_LAYER) $o
122
123 parts.ps:       showlib.d4 layout
124                 ./layout <$< $(LAYOUTOPTS_ALL) $o
125
126 # test case
127 t.ppm:          ours.dgram-bot.pa.segenco.ppm x.gdb subseg2display
128                 gdb -x x.gdb
129
130 ui-plan-%.ppm:  ours.dgram-%.pa.segenco.ppm Makefile
131                 pnmcrop <$< >$@.1.new
132                 pnmflip <$@.1.new -ccw >$@.2.new
133                 pnmpad <$@.2.new -white -l5 -r5 -t5 -b5 $o
134
135 subseg2display.o compose-segenco.o: segcmap.h
136
137 clean:
138                 -rm -f -- *.d4 *~ t.* *.m *.new core
139                 -rm -f ours-*.ps parts.ps
140                 -rm -f *.oprint-*.ps *.run-layout
141                 -rm -f *.segcmap *.segcmapreq
142                 -rm -f *.dgram-*.p*.segenco.ps *.dgram-*.p*.segenco.ppm
143                 -rm -f $(CPROGS) *.o *.d
144
145 .PRECIOUS:      $(OPRINTS)
146 .PRECIOUS:      %.segcmap %.segcmapreq %.segenco.ppm %.d4 %.neato %.raw.neato
147 .PRECIOUS:      %.redactgraph %.redacted.forsafety %.redacted.neato
148 .PRECIOUS:      %.layout-data.c
149
150 include $(wildcard *.d)