@@ -15,67 +15,77 @@ composed of multiple project called `external project`. Here is the list of `ext
15
15
The flow chart represented below illustrates which external projects are included based on the configure
16
16
options and describes the role of each one:
17
17
18
- .. blockdiag ::
18
+ .. mermaid ::
19
19
:align: center
20
- :desctable:
21
20
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