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;
|