There are 2 main files - cbuild.h and cbuild.split.h. First one is autogenerated and contains amalgamated version of this library as STB-style single-header library. Second file contains just bunch of included as is used by this repo as replacement for a full cbuild.h. It relies on files in src and just mimics amalgamation by including necessary files.
There are n modules in CBuild, most of them contain both header part and implementation part, but some are header-only.
- Common.h - Common and miscellaneous code and all includes for this project.
- Version.h - Just project version defines.
- Term.h - Some macro to simplify usage of ANSI codes.
- Log.h - Logger for CBuild.
- Arena.h - Bump allocator.
- Temp.h - Global temporary allocator used by CBuild. Users of this library can use it if some scratchpad allocations are needed. Technically this also can be used for long-lived allocations, but for that custom arena is preferable (but API does not really forbid using temp allocator for this).
- DynArray.h - Dynamic array implementation/
- StringBuilder.h - String builder implementation. It uses dynamic array underneath and just provides few wrapper macro and some function that make sense only on strings.
- StringView.h - String view implementation. Have basic support for UTF8 characters.
- Stack.h - Simple stack datatype implementation.
- Map.h - Map datatype implementation/
- Proc.h - Few utility functions for process control.
- Command.h - Command runner. Support process-pool with configurable maximum process count.
- FS.h - Filesystem and file APIs.
- Compile.h - Some compilation helpers and utilities useful for buildscripts.
- DLLoad.h - Small wrappers for functions used to dynamically load shared libraries.
- FlagParse.h - Library to parse GNU-style command line flags.
- RGlob.h - Glob over list of entries. Uses POSIX ERE as base and just compiles globs to regexes.