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
how [2022/02/25 20:45] devahow [2022/02/26 12:52] (current) 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 
 +    * pre-/postbuild actions with conditions 
 +    * globbing 
 +    * 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 :-)