Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: move off of abandoned dep #556

Merged
merged 1 commit into from
Nov 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 72 additions & 62 deletions docs/build_system.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,67 +15,77 @@ composed of multiple project called `external project`. Here is the list of `ext
The flow chart represented below illustrates which external projects are included based on the configure
options and describes the role of each one:

.. blockdiag::
.. mermaid::
:align: center
:desctable:

blockdiag {
orientation = portrait
node_width = 200;
node_height = 60;


group{
label = "Outer Project";
color = "#FFF0D7";

// properties
configure [shape = beginpoint, label = "CMakeLists", description="CMake configuration file"];
ask_download [label ="Download source ?", shape = diamond, description = "If option ``CMakeProject_SOURCE_DIR`` is set, skip source download."];
download_source [label ="Download Source archive", description = "External project downloading archives from https://cmake.org/files/."]
reuse_source_dir [label ="Re-use source directory", description = "Empty external project."]

// connections
configure ->ask_download

group{
label = "ExternalProject: CMakeProject-src-download";
color = "#E7CA92";
ask_download -> download_source [label = "yes"];
ask_download -> reuse_source_dir [label = "no"];
}
download_source -> ask_build
reuse_source_dir -> ask_build

// properties
ask_build [label = "Build from Source ?", shape = diamond, description = "Answer based on option ``BUILD_CMAKE_FROM_SOURCE``"];
download_binaries[label = "CMakeProject-binary-download", description = "External project downloading pre-built binary archives from https://cmake.org/files/."]
build_cmake[label = "CMakeProject-build", description = "External project building CMake from source."]
strip_executables[label = "Strip executables", description = "If possible, reduce wheel size stripping cmake, cpack and ctest executables"]

// connections
group{
label = "External Projects";
color = "#E7CA92";
ask_build -> download_binaries [label = "no"];
ask_build -> build_cmake [label = "yes"];
build_cmake -> strip_executables
}
download_binaries -> ask_inner_build
strip_executables -> ask_inner_build

// properties
ask_inner_build [label = "Which files to install?", shape = diamond, description = "Answer based on option ``BUILD_CMAKE_FROM_SOURCE``"];
install_pre_built[label = "Install prebuilt binaries", description = "Recursively glob all files and explicitly add install rules."];
install_cmake_project[label = "Install CMake project", description = "Achieved by including ``${CMakeProject_BINARY_DIR}/cmake_install.cmake``."];

group{
label = "Inner Project: CMakePythonDistributions";
color = "#67789A";

// connections
ask_inner_build -> install_pre_built [label = "no"];
ask_inner_build -> install_cmake_project [label = "yes"];
}
}
}
flowchart LR
subgraph OP[Outer Project]
style OP fill:#FFF0D7
configure["CMakeLists.tct"]
ask_download{"Download source?"}
download_source["Download Source archive"]
reuse_source_dir["Re-use source directory"]
ask_build{"Build from Source?"}
download_binaries["CMakeProject-binary-download"]
build_cmake["CMakeProject-build"]
strip_executables["Strip executables"]
ask_inner_build{"Which files to install?"}
install_pre_built["Install prebuilt binaries"]
install_cmake_project["Install CMake project"]

configure --> ask_download

subgraph EP1[ExternalProject: CMakeProject-src-download]
style EP1 fill:#E7CA92
ask_download -->|yes| download_source
ask_download -->|no| reuse_source_dir
end

download_source --> ask_build
reuse_source_dir --> ask_build

subgraph EP2[External Projects]
style EP2 fill:#E7CA92
ask_build -->|no| download_binaries
ask_build -->|yes| build_cmake
build_cmake --> strip_executables
end

download_binaries --> ask_inner_build
strip_executables --> ask_inner_build

subgraph IP[Inner Project: CMakePythonDistributions]
style IP fill:#a1acc2
ask_inner_build -->|no| install_pre_built
ask_inner_build -->|yes| install_cmake_project
end
end


+----------------------------------------+--------------------------------------------------------------------------+
| **Node Title** | **Description** |
+========================================+==========================================================================+
| CMakeLists | CMake configuration file |
+----------------------------------------+--------------------------------------------------------------------------+
| Download source ? | If option ``CMakeProject_SOURCE_DIR`` is set, skip source download. |
+----------------------------------------+--------------------------------------------------------------------------+
| Download Source archive | External project downloading archives from https://cmake.org/files/. |
+----------------------------------------+--------------------------------------------------------------------------+
| Re-use source directory | Empty external project. |
+----------------------------------------+--------------------------------------------------------------------------+
| Build from Source ? | Answer based on option ``BUILD_CMAKE_FROM_SOURCE`` |
+----------------------------------------+--------------------------------------------------------------------------+
| CMakeProject-binary-download | External project downloading pre-built binary archives from |
| | https://cmake.org/files/. |
+----------------------------------------+--------------------------------------------------------------------------+
| CMakeProject-build | External project building CMake from source. |
+----------------------------------------+--------------------------------------------------------------------------+
| Strip executables | If possible, reduce wheel size stripping cmake, cpack and ctest |
| | executables |
+----------------------------------------+--------------------------------------------------------------------------+
| Which files to install? | Answer based on option ``BUILD_CMAKE_FROM_SOURCE`` |
+----------------------------------------+--------------------------------------------------------------------------+
| Install prebuilt binaries | Recursively glob all files and explicitly add install rules. |
+----------------------------------------+--------------------------------------------------------------------------+
| Install CMake project | Achieved by including ``${CMakeProject_BINARY_DIR}/cmake_install.cmake`` |
+----------------------------------------+--------------------------------------------------------------------------+
2 changes: 1 addition & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = ['sphinxcontrib.blockdiag']
extensions = ['sphinxcontrib.mermaid']

# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
Expand Down
3 changes: 1 addition & 2 deletions docs/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
docutils
funcparserlib>=1.0.0
furo
pillow<10
pygments
sphinx
sphinxcontrib-blockdiag # old, not compatible with pillow 10+
sphinxcontrib-mermaid
tomli; python_version<"3.11"
Loading