scconfig - Simple C Config

Ever got annoyed by a 3 MB long ./configure script that took more time to run than the actual compilation of the software later? Ever got bitten by a bug in this ./configure script then spent a week on trying to get autoconf/automake/m4 magic to work? Then this project may be a good alternative for your software (or read a more detailed analysis on alternatives).

The idea is that the ./configure script should be a single layer (not generated) and should be modular. Small modules should do separate simple things and they should be able to run alone for testing, without the whole slow and big infrastructure. Still there should be a framework that collects all data and knows what to run. After trying this idea in project libgpmi, I found that there was a big problem. There is no script language which is:

A more viable solution was to rewrite the whole set of scripts as an ANSI C (C89) program. ANSI C compiler is there on any system where scconfig would be run (to bootstrap another project that depends on C). The task itself, testing a bunch of different test programs with different paths and compiler settings, is not something that's much easier to code in a scripting language than in C.

Scconfig offers a framework to store test results, dependencies between tests and do test compiles/runs. The user may write simple functions in modules that test-compile and run various small test programs and store the result in a tree-like database; scconfig is shipped with a rich set of such modules. This tree can be used to generate makefiles or other text files using one of the two extremely simple built-in templating systems. Of course the user is not bound to use these templating system, any C program that generates output also work fine.

There are source releases available for download, but for the latest version supporting the most tests running on most systems, please use svn://repo.hu/scconfig/trunk

The documentation of current svn HEAD is accessible online.

Contact: email scconfig (at) igor2.repo.hu or look for igor2 on ircnet.