Skip to content

Commit 3bc445e

Browse files
Merge pull request #2788 from johnnonweiler/doc/update-folder-walkthrough
Update folder walkthrough [DOC-5]
2 parents b38b671 + 47c741c commit 3bc445e

File tree

1 file changed

+121
-2
lines changed

1 file changed

+121
-2
lines changed

doc/architectural/folder-walkthrough.md

Lines changed: 121 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,9 @@ containing the code for a different part of the system.
3535
- Tools
3636

3737
* \ref cbmc
38-
* \ref clobber
3938
* \ref goto-analyzer
4039
* \ref goto-instrument
4140
* \ref goto-diff
42-
* \ref memory-models
4341
* \ref goto-cc
4442
* \ref jbmc
4543

@@ -84,3 +82,124 @@ develop regression tests.
8482
The `unit/` directory contains the unit test suites. See
8583
\ref compilation-and-development for information on how to run and
8684
develop unit tests.
85+
86+
## Directory dependencies ##
87+
88+
This diagram shows *intended* directory dependencies. Arrows should
89+
be read transitively - dependencies of dependencies are often used
90+
directly.
91+
92+
There are `module_dependencies.txt` files in each directory,
93+
which are checked by the linter. Where directories in `module_dependencies.txt`
94+
are marked with comments such as 'dubious' or 'should go away', these
95+
dependencies have generally not been included in the diagram.
96+
97+
\dot
98+
digraph directory_dependencies {
99+
node [style = filled, color = white];
100+
101+
subgraph cluster_executables {
102+
label = "Executables";
103+
style = filled;
104+
color = lightgrey;
105+
node [style = filled, color = white];
106+
CBMC [URL = "\ref cbmc"];
107+
goto_cc [label = "goto-cc", URL = "\ref goto-cc"];
108+
goto_analyzer [label = "goto-analyzer", URL = "\ref goto-analyzer"];
109+
goto_instrument [label = "goto-instrument", URL = "\ref goto-instrument"];
110+
goto_diff [label = "goto-diff", URL = "\ref goto-diff"];
111+
janalyzer [URL = "\ref janalyzer"];
112+
jdiff [URL = "\ref jdiff"];
113+
JBMC [URL = "\ref jbmc"];
114+
smt2_solver;
115+
}
116+
117+
subgraph cluster_symbolic_execution {
118+
label = "Symbolic Execution";
119+
style = filled;
120+
color = lightgrey;
121+
node [style = filled, color = white];
122+
goto_symex [label = "goto-symex", URL = "\ref goto-symex"];
123+
}
124+
125+
subgraph cluster_abstract_interpretation {
126+
label = "Abstract Interpretation";
127+
style = filled;
128+
color = lightgrey;
129+
node [style = filled, color = white];
130+
pointer_analysis [label = "pointer-analysis", URL = "\ref pointer-analysis"];
131+
analyses [URL = "\ref analyses"];
132+
}
133+
134+
subgraph cluster_goto_programs {
135+
label = "Goto Programs";
136+
style = filled;
137+
color = lightgrey;
138+
goto_programs [label = "goto-programs", URL = "\ref goto-programs"];
139+
linking [URL = "\ref linking"];
140+
}
141+
142+
subgraph cluster_solvers {
143+
label = "Solvers"
144+
style = filled;
145+
color = lightgrey;
146+
solvers [URL = "\ref solvers"];
147+
}
148+
149+
subgraph cluster_languages {
150+
label = "Languages";
151+
style = filled;
152+
color = lightgrey;
153+
ansi_c [label = "ansi-c", URL = "\ref ansi-c"];
154+
langapi [URL = "\ref langapi"];
155+
cpp [URL = "\ref cpp"];
156+
jsil [URL = "\ref jsil"];
157+
java_bytecode [URL = "\ref java_bytecode"];
158+
}
159+
160+
subgraph cluster_utilities {
161+
label = "Utilities";
162+
style = filled;
163+
color = lightgrey;
164+
big_int [label = "big-int", URL = "\ref big-int"];
165+
miniz [URL = "\ref miniz"];
166+
util [URL = "\ref util"];
167+
nonstd [URL = "\ref nonstd"];
168+
json [URL = "\ref json"];
169+
xmllang [URL = "\ref xmllang"];
170+
assembler [URL = "\ref assembler"];
171+
}
172+
173+
JBMC -> { CBMC, java_bytecode };
174+
jdiff -> { goto_diff, java_bytecode };
175+
janalyzer -> { goto_analyzer, java_bytecode };
176+
CBMC -> { goto_instrument, jsil };
177+
goto_diff -> { goto_instrument };
178+
goto_analyzer -> { analyses, jsil, cpp };
179+
goto_instrument -> { goto_symex, cpp };
180+
goto_cc -> { cpp, jsil };
181+
smt2_solver -> solvers;
182+
183+
java_bytecode -> { analyses, miniz };
184+
jsil -> linking;
185+
cpp -> ansi_c;
186+
ansi_c -> langapi;
187+
langapi -> goto_programs;
188+
189+
goto_symex -> { solvers, pointer_analysis };
190+
191+
pointer_analysis -> { analyses, goto_programs };
192+
analyses -> pointer_analysis;
193+
194+
solvers -> util;
195+
196+
linking -> goto_programs;
197+
goto_programs -> { linking, xmllang, json, assembler };
198+
199+
json -> util;
200+
xmllang -> util;
201+
assembler -> util;
202+
util -> big_int;
203+
util -> nonstd;
204+
}
205+
\enddot

0 commit comments

Comments
 (0)