add: New config file definition

Signed-off-by: Bart Kuivenhoven <bemkuivenhoven@gmail.com>
Config: Add stub for fetching flags

Signed-off-by: Bart Kuivenhoven <bemkuivenhoven@gmail.com>
Config: Add modular configuration possibilities

Signed-off-by: Bart Kuivenhoven <bemkuivenhoven@gmail.com>
build: Start committing to the new build files

Signed-off-by: Bart Kuivenhoven <bemkuivenhoven@gmail.com>
config: Remove the replacement of the singleton

Signed-off-by: Bart Kuivenhoven <bemkuivenhoven@gmail.com>
Module: Add submodule parsing

Signed-off-by: Bart Kuivenhoven <bemkuivenhoven@gmail.com>
build: Move closer to running commands again

Signed-off-by: Bart Kuivenhoven <bemkuivenhoven@gmail.com>
Build: Module: Fix notation

Signed-off-by: Bart Kuivenhoven <bemkuivenhoven@gmail.com>
Build: Command: Add some command parsing code

Signed-off-by: Bart Kuivenhoven <bemkuivenhoven@gmail.com>
Build: Commands: Put the commands to work

Signed-off-by: Bart Kuivenhoven <bemkuivenhoven@gmail.com>
build: threads: Add worker thread specification

Signed-off-by: Bart Kuivenhoven <bemkuivenhoven@gmail.com>
build: module: Add dynamic option compiling

Signed-off-by: Bart Kuivenhoven <bemkuivenhoven@gmail.com>
build: command: Improve on parallel design

Signed-off-by: Bart Kuivenhoven <bemkuivenhoven@gmail.com>
build: commands: Make linker wait for compiler

Signed-off-by: Bart Kuivenhoven <bemkuivenhoven@gmail.com>
build: module: Add windows compatibility

Signed-off-by: Bart Kuivenhoven <bemkuivenhoven@gmail.com>
build: Add cleaning

Signed-off-by: Bart Kuivenhoven <bemkuivenhoven@gmail.com>
build: Add linking and archiving support

Signed-off-by: Bart Kuivenhoven <bemkuivenhoven@gmail.com>
build: module: Add archive and link sequence

What we did in this commit was build a little state machine which keeps
track of how far into the build process the module is.

Because all the lists and stuff which can be referenced by multiple
threads are threadsafe, no locks are needed.

In order to get to the linking phase all of the dependencies need to
have finished their build phases.

Because of the way this works, the system is actually capable of
compiling more than one module at once. This can result in a compiler
working on a file of module A, while another thread is finishing up the
work for module B.

Not having to wait on other modules, before moving on to the next one
should be a speed up over the previous design of waiting for the module
to compile and link, then move on to the next one.

Signed-off-by: Bart Kuivenhoven <bemkuivenhoven@gmail.com>
build: module: Add comments and output name query

The comments speak for them selves, the query is just a quick lookup in
the constructor to set the output file for the linker and the archiver.

Signed-off-by: Bart Kuivenhoven <bemkuivenhoven@gmail.com>
build: module: Add archiving support

Signed-off-by: Bart Kuivenhoven <bemkuivenhoven@gmail.com>