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