Skip to content

Commit 419c37f

Browse files
authored
Sphinx Plantuml integration (#175)
1 parent 7b2ce84 commit 419c37f

File tree

17 files changed

+342
-120
lines changed

17 files changed

+342
-120
lines changed

.github/workflows/pages.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
- name: Setup
2121
run: |
2222
sudo apt-get install ninja-build doxygen graphviz python3-sphinx
23-
pip install breathe sphinx_rtd_theme furo
23+
pip install breathe sphinx_rtd_theme furo sphinxcontrib-plantuml
2424
2525
- name: Configure CMake
2626
shell: bash
9.41 MB
Binary file not shown.

docs/source/arch/project_layout.rst

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,109 @@
11
Project Layout
22
==============
3+
4+
[workspace root]
5+
----------------
6+
7+
* .clang-format
8+
* LLVM style clang format
9+
* .gitmodules
10+
* See ``third_party`` folder for git submodules
11+
* CMakeLists.txt
12+
* Main project level CMakeLists
13+
* Contains all the configurable options for CMake
14+
* CMakePresets.json
15+
* Default configurable options for different presets / compilers
16+
* codecov.yml
17+
* Codecov parameters
18+
* LICENSE
19+
* Apache-2.0 License
20+
* README.md
21+
* Project outline and details
22+
* TODO.md
23+
* TODO list for community interactions
24+
25+
bootstrap
26+
---------
27+
28+
Bootstrap build files to compile the ``build_in_cpp`` project
29+
30+
* Contains build files for compiling ``third_party`` libraries
31+
* Most of them are header only
32+
* ``tiny-process-library`` is the only library that compiles to a static / dynamic library
33+
* Contains build file for ``buildcc`` library compilation
34+
35+
buildcc
36+
--------
37+
38+
Contains the core ``buildcc`` library
39+
40+
* schema
41+
* lib
42+
* env
43+
* toolchain
44+
* target
45+
* args
46+
* targets
47+
* toolchains
48+
* plugins
49+
50+
buildexe
51+
---------
52+
53+
Standalone ``buildcc`` executable for compiling projects in immediate mode or script mode
54+
55+
56+
cmake
57+
-------
58+
59+
Global cmake variables and custom_targets
60+
61+
* coverage
62+
* gcovr.cmake
63+
* lcov.cmake
64+
* flags
65+
* build_flags.cmake
66+
* test_flags.cmake
67+
* target
68+
* flatbuffers.cmake
69+
* fmt.cmake
70+
* spdlog.cmake
71+
* tpl.cmake
72+
* taskflow.cmake
73+
* cli11.cmake
74+
* cpputest.cmake
75+
* tool
76+
* clangtidy.cmake
77+
* cppcheck.cmake
78+
* doxygen.cmake
79+
80+
docs
81+
-----
82+
83+
Project documentation
84+
85+
* arch
86+
* Project / Software architecture documentation
87+
* user_api
88+
* User usable APIs
89+
90+
example
91+
---------
92+
93+
* gcc
94+
* Lowlevel tests for the GCC compiler
95+
* msvc
96+
* Lowlevel tests for the MSVC compiler
97+
* hybrid
98+
* Real world usages with both GCC and MSVC compiler support
99+
100+
third_party
101+
-----------
102+
103+
* Flatbuffers
104+
* Fmtlib
105+
* Spdlog
106+
* CLI11
107+
* Taskflow
108+
* Tiny Process Library
109+
* CppUTest
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,81 @@
11
Software Heirarchy
22
==================
3+
4+
BuildCC single lib
5+
-------------------
6+
7+
**BuildCC** sources are compiled into a single library
8+
9+
.. uml::
10+
11+
rectangle Flatbuffers as flatbuffers
12+
rectangle fmt as fmt
13+
rectangle spdlog as spdlog
14+
rectangle Taskflow as taskflow
15+
rectangle CLI11 as cli11
16+
rectangle "tiny-process-library" as tpl
17+
18+
rectangle BuildCC as buildcc
19+
20+
flatbuffers -up-> buildcc
21+
fmt -up-> buildcc
22+
spdlog -up-> buildcc
23+
taskflow -up-> buildcc
24+
cli11 -up-> buildcc
25+
tpl -up-> buildcc
26+
27+
28+
BuildCC interface lib
29+
---------------------
30+
31+
**BuildCC** is broken up into multiple smaller libraries
32+
33+
* This has been done mainly for unit-testing and mocking segregation
34+
* It helps to easily architect the ``BuildCC`` library by visualizing internal dependencies
35+
36+
.. uml::
37+
38+
rectangle Flatbuffers as flatbuffers #palegreen
39+
rectangle fmt as fmt #palegreen
40+
rectangle spdlog as spdlog #palegreen
41+
rectangle Taskflow as taskflow #palegreen
42+
rectangle CLI11 as cli11 #palegreen
43+
rectangle "tiny-process-library" as tpl #palegreen
44+
45+
rectangle Environment as env #aliceblue
46+
rectangle Toolchain as toolchain #aliceblue
47+
rectangle Target as target #aliceblue
48+
rectangle "Toolchain specialized" as toolchain_specialized #aliceblue
49+
rectangle "Target specialized" as target_specialized #aliceblue
50+
rectangle Args as args #aliceblue
51+
rectangle Register as register #aliceblue
52+
rectangle "Supported Plugins" as plugins #aliceblue
53+
rectangle BuildCC as buildcc
54+
55+
56+
fmt -up-> env
57+
spdlog .up.> env
58+
tpl .up.> env
59+
60+
flatbuffers .up.> target
61+
taskflow -up-> target
62+
63+
cli11 -up-> args
64+
taskflow -up-> register
65+
66+
env -up-> toolchain
67+
68+
toolchain -up-> target
69+
toolchain -up-> toolchain_specialized
70+
71+
target -up-> target_specialized
72+
73+
target -up-> args
74+
target -up-> register
75+
target -up-> plugins
76+
77+
toolchain_specialized -up-> buildcc
78+
target_specialized -up-> buildcc
79+
args -up-> buildcc
80+
register -up-> buildcc
81+
plugins -up-> buildcc

docs/source/arch/style_guide.rst

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
Style Guide
2+
============
3+
4+
Defaults
5+
--------
6+
7+
``PascalCase`` for struct, classes and member functions (inside classes and structs)
8+
9+
``snake_case`` for free functions and local function variables
10+
11+
Google Style
12+
------------
13+
14+
``[snake_case_variable_name]``` for public member variables
15+
16+
``[snake_case_variable_name]_`` for private member variables
17+
18+
``k[PascalCaseVariableName]`` constexpr variables and enum / enum classes names
19+
20+
.. attention:: If you see any wrong usage in the project please raise an issue

docs/source/arch/toc.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
Architecture
2+
=============
3+
4+
.. toctree::
5+
6+
project_layout
7+
software_heirarchy
8+
namespaces
9+
design_patterns
10+
testing
11+
outputs
12+
style_guide

docs/source/conf.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
# add these directories to sys.path here. If the directory is relative to the
1111
# documentation root, use os.path.abspath to make it absolute, like shown here.
1212
#
13-
# import os
13+
import os
1414
# import sys
1515
# sys.path.insert(0, os.path.abspath('.'))
1616

@@ -31,12 +31,16 @@
3131
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
3232
# ones.
3333
extensions = [
34-
"breathe"
34+
"breathe",
35+
"sphinxcontrib.plantuml"
3536
]
3637

3738
breathe_default_project = "buildcc_documentation"
3839
breathe_default_members = ("members", "undoc-members")
3940

41+
print(f"Current Dir for plantuml jar file: {os.getcwd()}")
42+
plantuml = f"java -jar {os.getcwd()}/_plantuml/plantuml-1.2021.16.jar"
43+
4044
# Add any paths that contain templates here, relative to this directory.
4145
templates_path = ['_templates']
4246

docs/source/index.rst

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,12 @@ Welcome to BuildCC's documentation!
77
===================================
88

99
.. toctree::
10-
:maxdepth: 2
10+
:maxdepth: 1
1111
:caption: Contents
1212

13-
page/user_api
13+
arch/toc
14+
user_api/toc
1415

15-
.. toctree::
16-
:caption: Architecture
17-
18-
arch/project_layout
19-
arch/software_heirarchy
20-
arch/namespaces
21-
arch/design_patterns
22-
arch/testing
23-
arch/outputs
2416

2517
Indices and tables
2618
==================

docs/source/page/user_api.rst

Lines changed: 0 additions & 106 deletions
This file was deleted.

docs/source/user_api/args.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
Args
2+
=====
3+
4+
args.h
5+
-------
6+

0 commit comments

Comments
 (0)