## Compiling adcli from Source

This describes how to compiling the adcli package from source code. This is normally only necessary for those wishing to contribute to the project or package adcli.

You can download tarballs of the releases of adcli or check out the source code from git. This documentation will not go into all the details of how to get your development environment set up and instead focus on the what's unique to compiling adcli.

### Dependencies

Besides the default autotools, binutils and GCC, adcli requires the following development dependencies to build:

- OpenLDAP client libraries

- MIT Kerberos libraries

On Debian or Ubuntu you can use the following command to install the dependencies:

    $ sudo apt-get install build-essential autoconf automake xmlto xsltproc \
             libkrb5-dev libldap2-dev libsasl2-dev

On Fedora you can use the following command to install the dependencies:

    $ sudo yum groupinstall "Development Tools"
    $ sudo yum install automake autoconf xmlto xsltproc krb5-devel openldap-devel \
        cyrus-sasl-devel

### Building on UNIX

adcli uses the standard GNU build system, using autoconf for package configuration and resolving portability issues, automake for building makefiles that comply with the GNU Coding Standards, and libtool for building shared libraries on multiple platforms. The normal sequence for compiling and installing adcli is thus:

    $ ./configure --prefix=/usr --sysconfdir=/etc...
    $ make
    $ make install

If you've checked out the source code from git, then the configure script does not yet exist. So use the following instead:

    $ ./autogen.sh --prefix=/usr --sysconfdir=/etc ...
    $ make
    $ make install

The standard options provided by GNU autoconf may be passed to the configure script. Please see the autoconf documentation or run `./configure --help` for information about the standard options. In particular you probably want to adjust the `--prefix=/xxx` argument depending on your system and development environment.

Make sure that the `--sysconfdir=/etc` matches the directory where the the MIT Kerberos library stores its `krb5.conf`. This is usually `/etc`

### Extra Configuration Options

In addition to the normal options, the configure script in the adcli supports these additional arguments:

`--disable-debug`, `--enable-debug`

By default adcli is built with debug symbols assertions and and precondition checks. Enabling the debug option configures even more detailed debug build, including disabling optimization. Disabling the debug option is not recommended, as it disables all assertions, preconditions and internal consistency checks, although it may result it a slightly faster library.

`--disable-doc` | Disables building of the documentation and command line manual. The documentation is built in the `doc/html/` directory of the build.
`--enable-strict` | Enables strict checks during building of adcli. All compiler warnings become errors.