Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
how [2022/02/25 20:45] devahow [2022/02/26 12:51] deva
Line 7: Line 7:
   * ''std::thread::hardware_concurrency()'' for automatic ''-jn'' deduction   * ''std::thread::hardware_concurrency()'' for automatic ''-jn'' deduction
   * ''gcc -MMD'' for dependency tracking   * ''gcc -MMD'' for dependency tracking
 +  * ''configure'' target
 +    * cross-compilation and tool-chain control
   * trixy self-re-invoke (after re-compilation) when configuration files change.   * trixy self-re-invoke (after re-compilation) when configuration files change.
     * tree of self-dependency weirdness:     * tree of self-dependency weirdness:
Line 34: Line 36:
   resolv tool-chain (compiler, linker, etc) and store in map: C   resolv tool-chain (compiler, linker, etc) and store in map: C
   run through externals and resolv them, store results in map: D   run through externals and resolv them, store results in map: D
- generate config cache .cc file with A, B, C and D</code> + generate config cache .cc file with A, B, C and D 
-  * ''configure'' target +Scenarios: 
-    cross-compilation and tool-chain control+ 
 +1. No ctor deps changed (normal run) 
 +   rebuild dirty project sources. 
 + OK 
 + 
 +2. a new configuration.cc has been generated (user called configure) 
 +   regenerate cache 
 + rebuild 
 + OK 
 + 
 +3. one or more ctor.cc files changed (run with args) 
 + * rebuild 
 +   relaunch with 'reconfigurewith args (goto 4) 
 + OK 
 + 
 +4. run with reconfigure (with other args) 
 +   "ignore" args but keep them for later 
 +   regenerate cache 
 + rebuild 
 +   relauch with "other args" (goto 1) 
 + OK 
 +</code>
   * independent target compilation (with dependency deduction)   * independent target compilation (with dependency deduction)
   * ''clean'' target   * ''clean'' target
Line 42: Line 65:
   * ''check'' target, for unit test compilation and execution   * ''check'' target, for unit test compilation and execution
   * compilation-database (json) for c-lion and others   * compilation-database (json) for c-lion and others
 +
 +  * currently working on:
 +    * external dependency flags with ''std::variant''
 +        * manual dependency
 +        * automatic dependency deduction through searches
  
   * future work:   * future work:
-    * external dependency deduction+    * more external dependency variants: 
 +        * pkg-config 
 +        * conan 
 +    * custom target generation through external application (generators) 
 +    * lambda functions as generators
     * custom compilation configuration control through ''configure'' target (like ''--with-X''/''--enable-Y'' in autotools)     * custom compilation configuration control through ''configure'' target (like ''--with-X''/''--enable-Y'' in autotools)
     * ''install'' target with ''PREFIX'' and ''DESTDIR'' support     * ''install'' target with ''PREFIX'' and ''DESTDIR'' support
     * documentation :-)     * documentation :-)