Last active
October 26, 2021 07:14
-
-
Save arbipher/0db7714aee0cc1b6315183174280e798 to your computer and use it in GitHub Desktop.
OCaml z3 linking
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
flowchart TD | |
classDef alert-red fill:#f55,stroke-width:3px | |
subgraph z3-source | |
subgraph z3-c++-source[z3 C++ source] | |
z3-src[z3 C++ code] -->|make shared-lib| z3-libz3.so[libz3.so] | |
z3-src -->|make static-lib| z3-libz3.a[libz3.a] | |
end | |
subgraph z3-ocaml[z3 OCaml binding source] | |
z3-stub[z3.ml <br /> z3native_stub.ml <br /> z3native.ml ] | |
end | |
subgraph z3mls | |
z3-z3ml.cm*[z3ml.cm_] | |
z3-dllz3ml.so[dllz3ml.so] | |
z3-libz3ml.a[libz3ml.a] | |
z3-META[META] | |
end | |
z3-ocaml --> ocamlmklib[ocamlmklib... -dllpath <sitelib>/stublibs -ccopt -L<sitelib>/stublibs]:::alert-red | |
ocamlmklib --> z3mls | |
end | |
z3-libz3.a -->|ocamlfind install| sitelib-libz3.a | |
z3-libz3.so:::alert-red -->|ocamlfind install| sitelib-libz3.so | |
z3-libz3ml.a -->|ocamlfind install| sitelib-libz3ml.a | |
z3-dllz3ml.so -->|ocamlfind install| sitelib-dllz3ml.so | |
z3-META -->|ocamlfind install| sitelib-meta | |
z3mls -->|ocamlfind install| sitelib-z3 | |
subgraph z3:install[z3:install into opam-sitelib] | |
subgraph sitelib-z3 | |
sitelib-*.mli[*.mli] | |
sitelib-z3ml.cm*[z3ml.cm_] | |
sitelib-libz3.a[libz3.a] | |
sitelib-libz3ml.a[libz3ml.a] | |
sitelib-meta[META] | |
end | |
subgraph sitelib/stublibs | |
sitelib-libz3.so[libz3.so]:::alert-red | |
sitelib-dllz3ml.so[dllz3ml.so]:::alert-red | |
end | |
end | |
subgraph Hello:ml | |
main.ml | |
end | |
subgraph system | |
ld.so:::alert-red | |
end | |
subgraph bytecodes | |
ocaml-linker[ocaml linker] | |
main.ml --> ocamlc | |
ocamlc --> main-static.bc | |
ocamlc --> main-shared.bc | |
ocamlc -->|-custom| main-static-c.bc | |
ocamlc -->|-custom| main-shared-c.bc | |
main-static.bc | |
main-shared.bc | |
main-static-c.bc | |
main-shared-c.bc | |
end | |
subgraph nativecodes | |
main.ml --> ocamlopt | |
ocamlopt --> main-shared.exe | |
ocamlopt --> main-static.exe | |
ocamlopt .-> c-linker[cc linker] | |
%% sitelib-libz3.so ..-> c-linker | |
c-linker --> main-shared.exe | |
sitelib-libz3.a -----> main-static.exe | |
main-static.exe | |
main-shared.exe | |
end | |
sitelib-z3ml.cm* -->ocaml-linker | |
subgraph g-ocamlrun[ocamlrun or exec] | |
main-static.bc ---> ocamlrun | |
main-shared.bc ---> ocamlrun | |
main-static-c.bc ---> ocamlrun | |
main-shared-c.bc ---> ocamlrun | |
ocamlrun --> ld.so | |
main-shared.exe:::alert-red --> ld.so | |
main-static.exe --> ld.so | |
sitelib-dllz3ml.so --> ld.so | |
sitelib-libz3.so --> ld.so | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment