summaryrefslogtreecommitdiff
path: root/web/yacco2/diagrams/o2linker_overview.mp
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /web/yacco2/diagrams/o2linker_overview.mp
Initial commit
Diffstat (limited to 'web/yacco2/diagrams/o2linker_overview.mp')
-rw-r--r--web/yacco2/diagrams/o2linker_overview.mp78
1 files changed, 78 insertions, 0 deletions
diff --git a/web/yacco2/diagrams/o2linker_overview.mp b/web/yacco2/diagrams/o2linker_overview.mp
new file mode 100644
index 0000000000..f07b8dbe10
--- /dev/null
+++ b/web/yacco2/diagrams/o2linker_overview.mp
@@ -0,0 +1,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; \ No newline at end of file