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
  • bootstrapping (yes - libctor compiles itself)
  • unit tests
  • compilation-database (json)
  • future:
    • external dependency deduction
    • compilation configuration control through configure target (ala –with-foo/–enable-bar from autotools)
    • install target
    • DESTDIR support
    • documentation :-)