This project shows how to add a configure step to a project using
dune.

In order to keep things composable, it offers several way to configure
the project:

1. with the classic =./configure <args...>=. When doing this, the configuration
   script are run immediately and the resulting configuration is frozen for the
   rest of the build

2. by copying =config.defaults= to =config= and editing it. The
   configuration scripts will be run as part of the build using what
   is written in =config=.  When =config= is edited, the configuration
   scripts will be automatically re-run

3. by doing nothing. The configuration scripts will be run as part of the build
   using the default values provided in =config.defaults=

Technically this is how it works:

=configure= is a simple OCaml script that:
- parses the command line
- generates a =config= file using what was given on the command line
- calls =ocaml real_configure.ml=
- =real_configure.ml= does some stuff and generates =config.full=

=config.full= is what is used by the rest of the build.

Now in order to support (2) and (3), we setup the following rules in
the toplevel =dune= file:
- a rule to produce =config= by copying =config.default=
- a rule to produce =config.full= by running =real_configure.ml=

The reason it all work as described is because if Dune knows how
to build a file and this file is already present in the source tree,
it will always prefer the file that's already there
