Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
how [2022/02/25 18:33] – deva | how [2022/02/26 12:52] (current) – deva | ||
---|---|---|---|
Line 7: | Line 7: | ||
* '' | * '' | ||
* '' | * '' | ||
- | * trixy self-re-invoke (after re-compilation) when configuration files change. | ||
- | * tree of self-dependency weirdness | ||
* '' | * '' | ||
* cross-compilation and tool-chain control | * cross-compilation and tool-chain control | ||
+ | * trixy self-re-invoke (after re-compilation) when configuration files change. | ||
+ | * tree of self-dependency weirdness: | ||
+ | * < | ||
+ | 2 if configure arg call configure(args), | ||
+ | 4 if reconfigure arg call reconfigure(args), | ||
+ | 1,3 other rebuildCheck | ||
+ | 1 build dirty project sources... | ||
+ | |||
+ | configure(args) | ||
+ | collect (relevant) env vars in map: A | ||
+ | collect (relevant) cli args in map: B | ||
+ | call generateCache(A, | ||
+ | then call rebuildCheck to force rebuild and then exit | ||
+ | |||
+ | reconfigure(args) | ||
+ | read A and B from (current) config cache and call generateCache(A, | ||
+ | generate a new one | ||
+ | then call rebuildCheck to rebuild and then exit | ||
+ | |||
+ | rebuildCheck() | ||
+ | check if rebuild is needed (if any ctor.cc files or configuration.cc changed): | ||
+ | rebuild | ||
+ | if !"only configuration.cc changed" | ||
+ | |||
+ | generateCache(A, | ||
+ | resolv tool-chain (compiler, linker, etc) and store in map: C | ||
+ | run through externals and resolv them, store results in map: D | ||
+ | generate config cache .cc file with A, B, C and D | ||
+ | Scenarios: | ||
+ | |||
+ | 1. No ctor deps changed (normal run) | ||
+ | | ||
+ | OK | ||
+ | |||
+ | 2. a new configuration.cc has been generated (user called configure) | ||
+ | | ||
+ | * rebuild | ||
+ | OK | ||
+ | |||
+ | 3. one or more ctor.cc files changed (run with args) | ||
+ | * rebuild | ||
+ | | ||
+ | OK | ||
+ | |||
+ | 4. run with reconfigure (with other args) | ||
+ | " | ||
+ | | ||
+ | * rebuild | ||
+ | | ||
+ | OK | ||
+ | </ | ||
* independent target compilation (with dependency deduction) | * independent target compilation (with dependency deduction) | ||
* '' | * '' | ||
Line 16: | Line 65: | ||
* '' | * '' | ||
* compilation-database (json) for c-lion and others | * compilation-database (json) for c-lion and others | ||
+ | |||
+ | * currently working on: | ||
+ | * external dependency flags with '' | ||
+ | * manual dependency | ||
+ | * automatic dependency deduction through searches | ||
* future work: | * future work: | ||
- | * external dependency | + | * more external dependency |
+ | * pkg-config | ||
+ | * conan | ||
+ | * pre-/ | ||
+ | * globbing | ||
+ | * custom target generation through external application (generators) | ||
+ | * lambda functions as generators | ||
* custom compilation configuration control through '' | * custom compilation configuration control through '' | ||
* '' | * '' | ||
* documentation :-) | * documentation :-) | ||