This is an old revision of the document!


The How

  • no depencencies other than the c++-20 compiler
  • the REG macro - automatic int a = registerFunction() wrapper.
  • std::filesystem for reading timestamps
  • execv, posix_spawn and friends for executing the compiler, linker and other tools
  • std::async for parallel compilation
  • std::thread::hardware_concurrency() for automatic -jn deduction
  • gcc -MMD for dependency tracking
  • trixy self-re-invoke (after re-compilation) when configuration files change.
    • tree of self-dependency weirdness
  • configure target
    • cross-compilation and tool-chain control
  • independent target compilation (with dependency deduction)
  • clean target
  • bootstrapping (yes - libctor compiles itself)
  • check target, for unit test compilation and execution
  • compilation-database (json) for c-lion and others
  • future work:
    • external dependency deduction
    • custom compilation configuration control through configure target (like –with-X/–enable-Y in autotools)
    • install target with PREFIX and DESTDIR support
    • documentation :-)