Generic compiling and linking via build tools

Arjen Markus (5 march 2003) The idea behind the package buildtools, as used in Critclf, is that basically compilers, linkers and other tools for creating software products are command-line driven, take some input and produce some output. In other words,there is nothing special about a compiler on Windows or UNIX. Except of course that they all require a different set of options to consider, use different terminology and so on.

The buildtools package tries to abstract from that by allowing the user to say:

  • I want to compile this source file
  • I want to link it together with these libraries into that executable.
  • I want to use this compiler on my current platform

This is achieved by:

  • Creating a "tool" or "component" that knows that, for instance, on the current platform the C compiler is called "gcc" and if the user wants a debuggable version, it needs to add the option "-g" to the command-line.
  • The "tool" is driven by setting options:
   createComponent mycc Linux gcc   ;# C compiler of my choice on Linux
   mycc -source myfile.c -optimise fast
   mycc -defines "MYMACRO=1" -exec
  • The tools are specified in a small database that is fairly easy to extend (the difficult part is retrieving all necessary options!)

escargo 5 Mar 2003 - How does this compare to bras?

AM Simple: bras is meant to replace the make utility - the package I am talking about attempts to hide the details of the compiler and linker and other tools used. Hence it could be used by bras in the actual building process