@@ -15,67 +15,77 @@ composed of multiple project called `external project`. Here is the list of `ext
1515The flow chart represented below illustrates which external projects are included based on the configure
1616options and describes the role of each one:
1717
18- .. blockdiag ::
18+ .. mermaid ::
1919 :align: center
20- :desctable:
2120
22- blockdiag {
23- orientation = portrait
24- node_width = 200;
25- node_height = 60;
26-
27-
28- group{
29- label = "Outer Project";
30- color = "#FFF0D7";
31-
32- // properties
33- configure [shape = beginpoint, label = "CMakeLists", description="CMake configuration file"];
34- ask_download [label ="Download source ?", shape = diamond, description = "If option ``CMakeProject_SOURCE_DIR `` is set, skip source download."];
35- download_source [label ="Download Source archive", description = "External project downloading archives from https://cmake.org/files/."]
36- reuse_source_dir [label ="Re-use source directory", description = "Empty external project."]
37-
38- // connections
39- configure ->ask_download
40-
41- group{
42- label = "ExternalProject: CMakeProject-src-download";
43- color = "#E7CA92";
44- ask_download -> download_source [label = "yes"];
45- ask_download -> reuse_source_dir [label = "no"];
46- }
47- download_source -> ask_build
48- reuse_source_dir -> ask_build
49-
50- // properties
51- ask_build [label = "Build from Source ?", shape = diamond, description = "Answer based on option ``BUILD_CMAKE_FROM_SOURCE ``"];
52- download_binaries[label = "CMakeProject-binary-download", description = "External project downloading pre-built binary archives from https://cmake.org/files/."]
53- build_cmake[label = "CMakeProject-build", description = "External project building CMake from source."]
54- strip_executables[label = "Strip executables", description = "If possible, reduce wheel size stripping cmake, cpack and ctest executables"]
55-
56- // connections
57- group{
58- label = "External Projects";
59- color = "#E7CA92";
60- ask_build -> download_binaries [label = "no"];
61- ask_build -> build_cmake [label = "yes"];
62- build_cmake -> strip_executables
63- }
64- download_binaries -> ask_inner_build
65- strip_executables -> ask_inner_build
66-
67- // properties
68- ask_inner_build [label = "Which files to install?", shape = diamond, description = "Answer based on option ``BUILD_CMAKE_FROM_SOURCE ``"];
69- install_pre_built[label = "Install prebuilt binaries", description = "Recursively glob all files and explicitly add install rules."];
70- install_cmake_project[label = "Install CMake project", description = "Achieved by including ``${CMakeProject_BINARY_DIR}/cmake_install.cmake ``."];
71-
72- group{
73- label = "Inner Project: CMakePythonDistributions";
74- color = "#67789A";
75-
76- // connections
77- ask_inner_build -> install_pre_built [label = "no"];
78- ask_inner_build -> install_cmake_project [label = "yes"];
79- }
80- }
81- }
21+ flowchart LR
22+ subgraph OP[Outer Project]
23+ style OP fill:#FFF0D7
24+ configure["CMakeLists.tct"]
25+ ask_download{"Download source?"}
26+ download_source["Download Source archive"]
27+ reuse_source_dir["Re-use source directory"]
28+ ask_build{"Build from Source?"}
29+ download_binaries["CMakeProject-binary-download"]
30+ build_cmake["CMakeProject-build"]
31+ strip_executables["Strip executables"]
32+ ask_inner_build{"Which files to install?"}
33+ install_pre_built["Install prebuilt binaries"]
34+ install_cmake_project["Install CMake project"]
35+
36+ configure --> ask_download
37+
38+ subgraph EP1[ExternalProject: CMakeProject-src-download]
39+ style EP1 fill:#E7CA92
40+ ask_download -->|yes| download_source
41+ ask_download -->|no| reuse_source_dir
42+ end
43+
44+ download_source --> ask_build
45+ reuse_source_dir --> ask_build
46+
47+ subgraph EP2[External Projects]
48+ style EP2 fill:#E7CA92
49+ ask_build -->|no| download_binaries
50+ ask_build -->|yes| build_cmake
51+ build_cmake --> strip_executables
52+ end
53+
54+ download_binaries --> ask_inner_build
55+ strip_executables --> ask_inner_build
56+
57+ subgraph IP[Inner Project: CMakePythonDistributions]
58+ style IP fill:#a1acc2
59+ ask_inner_build -->|no| install_pre_built
60+ ask_inner_build -->|yes| install_cmake_project
61+ end
62+ end
63+
64+
65+ +----------------------------------------+--------------------------------------------------------------------------+
66+ | **Node Title ** | **Description ** |
67+ +========================================+==========================================================================+
68+ | CMakeLists | CMake configuration file |
69+ +----------------------------------------+--------------------------------------------------------------------------+
70+ | Download source ? | If option ``CMakeProject_SOURCE_DIR `` is set, skip source download. |
71+ +----------------------------------------+--------------------------------------------------------------------------+
72+ | Download Source archive | External project downloading archives from https://cmake.org/files/. |
73+ +----------------------------------------+--------------------------------------------------------------------------+
74+ | Re-use source directory | Empty external project. |
75+ +----------------------------------------+--------------------------------------------------------------------------+
76+ | Build from Source ? | Answer based on option ``BUILD_CMAKE_FROM_SOURCE `` |
77+ +----------------------------------------+--------------------------------------------------------------------------+
78+ | CMakeProject-binary-download | External project downloading pre-built binary archives from |
79+ | | https://cmake.org/files/. |
80+ +----------------------------------------+--------------------------------------------------------------------------+
81+ | CMakeProject-build | External project building CMake from source. |
82+ +----------------------------------------+--------------------------------------------------------------------------+
83+ | Strip executables | If possible, reduce wheel size stripping cmake, cpack and ctest |
84+ | | executables |
85+ +----------------------------------------+--------------------------------------------------------------------------+
86+ | Which files to install? | Answer based on option ``BUILD_CMAKE_FROM_SOURCE `` |
87+ +----------------------------------------+--------------------------------------------------------------------------+
88+ | Install prebuilt binaries | Recursively glob all files and explicitly add install rules. |
89+ +----------------------------------------+--------------------------------------------------------------------------+
90+ | Install CMake project | Achieved by including ``${CMakeProject_BINARY_DIR}/cmake_install.cmake `` |
91+ +----------------------------------------+--------------------------------------------------------------------------+
0 commit comments