What can be configured
There are two different levels of configuring program based on the libucw libraries:
-
runtime configuration in configuration files (see [config])
-
compile-time configuration of the libraries: config switches set before compiling, selecting optional features.
Where to build
If you run configure in the source directory, it prepares for compilation inside
the source tree. In this case, an obj
subdirectory is created to hold all generated
files (object files, binaries, generated source files etc.) and all final files
are linked to the run
subdirectory. No other parts of the source tree are written into.
Alternatively, you can compile in a separate object tree (which is useful when you
want to build several different configurations from a single source tree). In order
to do that, switch to the destination directory and issue <source-dir>/configure ...
.
This way, configure will create the obj
and run
directories locally and set up
a Makefile which refers to the original source tree.
How to configure
To set up compilation, possibly overriding default compile-time options, just run:
./configure [<option> | -<option> | <option>=<value> ...]
The default values of feature options are taken from default.cfg
.
Compiler flags and options dependent on compiler, OS and CPU type
are set in ucw/perl/UCW/Configure/C.pm
. Everything can be overriden by
options specified on the configure’s command line, which have the highest
priority.
If you want to see the resulting set of options, take a look at
obj/config.mk
.
Options specifying compiler/linker/debugger options can be also overriden
during compilation by make <option>=<value>
. While it’s also possible
to specify the other options in this way, it probably won’t have the desired
effect, because configure also generates C include files containing the
options.
Installation options
By default, the package is compiled to be installed and it chooses a
place where it will install. If you want to place it somewhere else,
set the PREFIX
option:
./configure PREFIX=/where/to/install
You can create a local compilation, which does not need to be
installed. To compile it that way, turn on the CONFIG_LOCAL
option
(and do not set PREFIX
):
./configure CONFIG_LOCAL
Alternatively you can add the CONFIG_RELATIVE_PATHS
option.
All paths are then set relative to a run
directory and
programs expect to have current working directory set to it. However,
you can move the run
directory around your filesystem as you like:
./configure CONFIG_LOCAL CONFIG_RELATIVE_PATHS
Examples
-
./configure -CONFIG_SHARED
will build the libraries statically. -
./configure -CONFIG_XML
avoids building the XML library. -
./configure -CONFIG_UCW_UTILS
compiles only the libraries without its utility programs. -
./configure CONFIG_IMAGES PREFIX=$HOME/libucw
includes an image library and installs into your home directory.