summaryrefslogtreecommitdiff
path: root/web/yacco2/diagrams/o2linker_overview.mp
blob: f07b8dbe10209526faf3bd278d0d231c1900adef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
% file: o2linker_overview.mp
% flow control of O2, O2linker, and c++
input boxes
u:=1cc;
pair sep,fldsep;
sep := (0,3u);
fldsep := (3u,0);
beginfig(1);

boxit.fsc(btex yyy.fsc etex); % input control file
boxit.o(btex \strut$O_{2}$linker etex); % linker prg
boxit.err(btex yyy\_errors.log etex); % error log
boxit.tr(btex yyy\_tracings.log etex); % trace log and o2linker chatter

boxit.occ(btex yyy\_fsc.cpp file etex); % linker c++ tble
boxit.docs(btex \strut$O_{2}$linker\_doc.w etex); % linker doc
boxit.cpp(btex CC etex); % c++ compiler
boxit.objs(btex threads's bit maps object etex); 
boxit.cweave(btex cweave etex); 
boxit.tex(btex \strut$O_{2}$linker\_doc.tex etex); 
boxit.pdftex(btex pdftex etex);
boxit.xpdf(btex \strut$O_{2}$linker\_doc.pdf file etex); 
%% place the boxes

.5[fsc.e,fsc.w] - sep = .5[o.e,o.w];
tr.e + fldsep = o.w;
o.e + fldsep = err.w;
occ.e + 1.5fldsep = docs.w;
docs.e + .5fldsep = cweave.w;
cweave.e + .5fldsep = tex.w;
tex.s - .5sep = pdftex.n;
pdftex.s - .5sep = xpdf.n;

o.s - sep  = .5[occ.e,docs.w];

occ.s -.5sep  = cpp.n;
cpp.s -.5sep  = objs.n;

%% form the boxes
drawboxed(fsc);
drawboxed(o);
drawboxed(err);
drawboxed(tr);

drawboxed(occ);
drawboxed(docs);

drawboxed(cweave);
drawboxed(tex);
drawboxed(pdftex);
drawboxed(xpdf);

drawboxed(cpp);
drawboxed(objs);

%% draw lined arrows between the boxes
drawarrow fsc.s -- o.n;
pair mopt,ldeltaopt,rdeltaopt; 
mopt := .5[o.e,o.w] - .5(0,ypart sep);
ldeltaopt := (xpart occ.n, ypart mopt);
rdeltaopt := (xpart docs.n,  ypart mopt);
drawarrow o.e -- err.w dashed withdots;
drawarrow o.w -- tr.e dashed withdots;
draw o.s -- mopt;
draw mopt -- ldeltaopt;
draw mopt -- rdeltaopt;
drawarrow ldeltaopt -- occ.n;
drawarrow rdeltaopt -- docs.n;

%y = ypart objs.n - ypart cpp.s;
drawarrow occ.s -- cpp.n;
drawarrow cpp.s -- objs.n;
drawarrow docs.e -- cweave.w;
drawarrow cweave.e -- tex.w;
drawarrow tex.s -- pdftex.n;
drawarrow pdftex.s -- xpdf.n;
endfig;
end;