Main Page | Related Pages

# Installation

## Requirements

The `acgmake` tools has rather mild system requirements. All you need is:

- a reasonable up-to-date version of GNU `make`,
- a `bash` shell.

On all current Linux systems these requirements are automatically fulfilled. On some other Unixes (like e.g. IRIX) you may have to install GNU `make` since by default another `make` is installed.

## Installation

Just unpack the archive, and include the directory ``./acgmake/bin to your `PATH` variable, or place a link to ``./acgmake/bin/acgmake in a directory listed in the `PATH` variable. `acgmake` sets it's necessary parameters (it's location, location of configuration files) on it's own. It will set the variable `ACGMAKE`, which points to the directory where acgmake has been installed, e.g. `$ACGMAKE/bin/` holds the script `acgmake`.

`acgmake` will look for configuration files in the default configuration directory `/ACG/acgdev/acgmake/configs`, and for user defined configurations in `~/`.acgmake/.

## Configuration

Whenever you invoke `acgmake` it determines operating system (`OS`), host name (`HOST`), domain name (`DOMAIN`), and compiler (`COMP`) and reads the following configuration files (in this order):

- `/ACG/acgdev/acgmake/configs/config`.Linux
- `/ACG/acgdev/acgmake/configs/config`.informatik.rwth-aachen.de
- `/ACG/acgdev/acgmake/configs/config`.gasperi
- `~/`.acgmake/config.Linux
- `~/`.acgmake/config.informatik.rwth-aachen.de
- `~/`.acgmake/config.gasperi
- `/ACG/acgdev/acgmake/configs/config`.
- `~/`.acgmake//config.
- `/ACG/acgdev/acgmake/configs/config`.packages
- `~/`.acgmake//config.packages

Here only the files `config`.Linux and `config`. must exists, the other files are optional. If they are provided the domain configuration overrides the `OS` settings, the `HOST` settings in turn override the `DOMAIN` settings and so on. In which of these files you provide what kind of settings is up to you, but there are useful default settings that you can base your configuration files on.

You can see a list of configuration files that acgmake tries to read by typing `acgmake sysinfo` . The `+` and `-` signs indicate whether a configuration file has been found or not.

There are two prinicipal components of configuration: module and package configuration. The configuration of the different modules will be described in the section on modules (see section List of Modules). The package configuration will be explained in the rest of this section.

Packages are nothing more than 3rd party libraries that are to be used for your compilation. When using such a lib you have to

- add the directory containing its header files to the include path,
- add the directory containing its libraries to the lib path,
- use the libraries at linking time.

In order to enable `acgmake` to automatically add these options to the compiler and linker calls, you have to specify these three options for each package you want to use. The syntax is quite simple: to configure a package that the users will refer to by the name `MyPckg` you have to specify the following variables (note the "uppercasified" package name).

    # config for package MyPckg

    MYPCKG_CFLAGS := -Dsomething
    MYPCKG_INCDIR := /opt/my_pckg/include
    MYPCKG_LIBDIR := /opt/my_pckg/lib
    MYPCKG_LIBS   := mypckg mypckg_util

When using `MyPckg` for compilation `acgmake` will add

- `-Dsomething`
- `-I/opt/my_pckg/include`
- `-L/opt/my_pckg/lib`
- `-lmypckg -lmypckg_util`

to the compiler or linker calls, respectively.