Next: , Up: Invoking Autodist


3.1 Preparing source tree for configuration and compilation

Before distribution can be created from the source tree, the source tree must be prepared for configuration and compilation. If your project is not using Autodist, then you would do this by running perhaps 'aclocal', 'autoconf', 'autoheader' and 'automake' tools manually, or you would run an 'autogen.sh' script that prepares your raw source tree. With Autodist this process is performed by Autodist, and running these tools manually or using 'autogen.sh' script is not necessary.

By default the 'autodist.conf' (see autodist.conf) has defined the tools that will be run by the Autodist when preparing the source tree. These are 'aclocal', 'autoheader', 'autoconf', 'automake' and 'libtoolize'. If you do not wish that Autodist runs some or any of these tools automatically, do not set them in the 'autodist.conf'. You would then need to run them manually. However, this is not recommended. If you need to run additional preparation scripts you may set your scripts either in the 'pre-hook' and/or 'post-hook' where you can run what ever additional processing you may need to prepare your source tree.

By default the Autodist creates a 'default' distribution when you initialize your project by running 'autodist -i'. The 'default' distribution should be used when you are developing in your source tree. By default, the 'default' distribution cannot be packaged, however, if your project creates only one distribution you may find it more convenient to define your distribution inside the 'default' distribution and allow it to be packaged also. If your source tree will create multiple distributions, the 'default' should be used only as development distribution. You would use it when you, for example, checkout your source tree from CVS and prepare it for configuration and compilation. To prepare your source tree with the 'default' distribution run Autodist without any arguments.

       autodist

The Autodist will prepare your source tree. After that you may run './configure' and continue to compile with 'make'.

If you do not wish to use the 'default' distribution, or you wish to do the development in a tree specifically prepared for some specific distribution, or you are preparing to create a new distribution package, you will need to run the Autodist with the distribution you wish to prepare.

       autodist example-distribution 1.0.3

This prepares your source tree for 'example-distribution' of version '1.0.3'. After that you may run './configure' and continue to compile with 'make'. If the version is omitted the version will be '0.0'. The 'PACKAGE_VERSION' define delivered by Autoconf will contain this version.

Note that, running Autodist for preparation merely prepares your source tree for the distribution, it does not create an actual distribution package. When preparing source tree for configuration and compilation the Autodist will process any file that ends with '.ad' suffix. It will process all 'configure.ad' and 'Makefile.ad' files for that distribution. When you run './configure' your tree will be configured for that distribution, and when you compile with 'make' it will compile for that distribution.

However, the source files, or any other file (except files ending with '.ad' suffix) are not processed by the Autodist. When compiling your sources the preprocessor, however, will respect your distdef conditionals inside your source files if you '#include' the distdef header file. This way, even the compiled binaries will be compiled for that distribution, even though the source files have not yet been processed by the Autodist. Rest of the files in the distribution will be processed when you create the actual distribution package. It is guaranteed that the distribution you have prepared will behave in your source tree exactly the same way as if it was already packaged with Autodist (providing that you remember to include the distdef header file in your code).

When preparing the source tree Autodist will create a file 'autodist.dist' which will contain information on the prepared distribution. When Creating the distribution that file will be read by the Autodist automatically. That file should not be removed or the distribution cannot be packaged.

Autodist also created a log file, 'autodist.log', that will include messages created by Autodist during preparation.