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