You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -18,8 +18,8 @@ Build C, C++ and ASM files in C++
18
18
- C++ language feature benefits and **debuggable build binaries**
19
19
- Optimized rebuilds through serialization. See [target.fbs schema](buildcc/schema/target.fbs)
20
20
- Can optimize for rebuilds by comparing the previous stored build with current build.
21
-
-See also [FAQ](#faq)
22
-
- Customizable for community plugins. More details provided in the `Community Plugin` section.
21
+
-Also see the [FAQ](#faq) for more details on Serialization
22
+
- Customizable for community plugins. More details provided in the [Community Plugin](#community-plugin) section.
23
23
24
24
## Pre-requisites
25
25
@@ -44,11 +44,11 @@ Build C, C++ and ASM files in C++
44
44
- Multiple inputs creates multiple outputs
45
45
- A two stage `compile` and `link` procedure is called a **Target**
46
46
- This means that Executables, StaticLibraries and DynamicLibraries are all categorized as Targets
47
-
- In the future C++20 modules can also be its own target dependending on compiler implementations
47
+
- In the future C++20 modules can also be its own target depending on compiler implementations
48
48
- Every Target requires a complementary (and compatible) **Toolchain**
49
49
- This ensures that cross compiling is very easy and explicit in nature.
50
50
- Multiple toolchains can be _mixed_ in a single build file i.e we can generate targets using the GCC, Clang, MSVC and many other compilers **simultaneously**.
51
-
- The `compile_command` and `link_command` is fed to the `process/system` call to generate files.
51
+
- The `compile_command`(pch and object commands) and `link_command`(target command) is fed to the `process` call to invoke the `Toolchain`.
52
52
- Each **Target** can depend on other targets efficiently through Parallel Programming using **Taskflow**.
53
53
- Dependency between targets is explicitly mentioned through the Taskflow APIs
54
54
- This has been made easier for the user through the `buildcc::Register` module.
@@ -72,7 +72,7 @@ Build C, C++ and ASM files in C++
72
72
**Taskflow dependency for hybrid/dep_chaining example**
73
73

74
74
75
-
- Chain Generator with Targets for Dependency
75
+
- Chain **Generator** with **Targets** for Dependency
76
76
- 1 C and 1 CPP example for both toolchains
77
77
78
78
# Software Architecture
@@ -95,6 +95,12 @@ Build C, C++ and ASM files in C++
95
95
96
96
## Community Plugin
97
97
98
+
-`buildcc::base::Generator`, `buildcc::base::TargetInfo` and `buildcc::base::Target` contains public getters that can be used to construct unique community plugins.
99
+
- Common tools and plugins would have first-party support in buildcc.
100
+
- All other tools and plugins can be maintained by individual developers.
0 commit comments