Installation Instructions
=========================

This file contains instructions on building and installing the
libraries and utilities in the elftoolchain project's sources.

Supported Operating Systems
---------------------------

The source tree is currently built and tested on the following
operating systems.

  =================   ========   =======================
  Operating System    Version    Supported Architectures
  -----------------   --------   -----------------------
  `DragonFly BSD`_    2.10.1     i386
  FreeBSD_            10.2       amd64 & i386
  Minix_              3.0.2      i386
  NetBSD_             7.0        i386
  OpenBSD_            v5.0       i386
  Ubuntu_ GNU/Linux   14.04LTS   x86_64
  =================   ========   =======================

.. _DragonFly BSD: http://www.dragonflybsd.org/
.. _FreeBSD: http://www.freebsd.org/
.. _Minix:   http://www.minix3.org/
.. _NetBSD:  http://www.netbsd.org/
.. _OpenBSD: http://www.openbsd.org/
.. _Ubuntu:  http://www.ubuntu.com/

Building the Source Tree
========================

The core libraries and utilities that make up the software release are
always built by default.  Builds of the project's test suites (in the
``test/`` subdirectory), and of additional documentation (in the directory
``documentation/``) are optional, and will only be attempted if these
directories are present.

Prerequisites
-------------

:DragonFly BSD 2.10.1:
    - The core libraries and utilities should build out of the box on
      a stock install of DragonFly BSD.

    - To build and run the test suite:

      #. The current release of the `Test Execution Toolkit`_ needs to
         be downloaded and unpacked into the ``test/tet/`` directory.

      #. The ``py26-yaml`` package needs to be installed::

            % sudo pkgin install py26-yaml

    - Building additional documentation is not currently supported
      under DragonFly BSD.

:FreeBSD 10.2:
    - The core libraries and utilities should build out of the box on
      a stock install of FreeBSD.

    - To build and run the test suite:

      #. The current release of the `Test Execution Toolkit`_ needs to
         be downloaded and unpacked into the ``test/tet/`` directory::

            % cd <SRCDIR>/test/tet
            % tar -xf /PATH/TO/DOWNLOADED/TET-3.8-SOURCES

      #. The ``python`` and ``py27-yaml`` packages need to be installed::

            % sudo pkg install python py27-yaml

    - Building additional documentation is not currently supported under
      FreeBSD 10.2.

:Minix 3.2.0:
    - The following packages are pre-requisites for building the
      sources on Minix 3.2.0:

      ===================     =====================================
      **Package**             **Description**
      ===================     =====================================
      ``gcc44``               The GNU C compiler.
      ===================     =====================================

      The following command line may be used to install the necessary
      pre-requisites::

          # pkgin install gcc44

    - The test suites cannot currently be built under Minix.

    - Building additional documentation is not currently supported
      under Minix.

:OpenBSD 5.0:
    - The following packages are pre-requisites for building the
      sources on OpenBSD 5.0:

      ===================     =====================================
      **Package**             **Description**
      ===================     =====================================
      ``libarchive``          An archive access library.
      ===================     =====================================

      The following command line may be used to install the necessary
      pre-requisites::

          # pkg_add libarchive-2.8.4p0

    - The test suites cannot currently be built under OpenBSD.

    - Building additional documentation is not currently supported
      under OpenBSD.

:OpenBSD 5.4:
    - The following packages are pre-requisites for building the
      sources on OpenBSD 5.4:

      ===================     =====================================
      **Package**             **Description**
      ===================     =====================================
      ``libarchive``          An archive access library.
      ===================     =====================================

      The following command line may be used to install the necessary
      pre-requisites::

          # pkg_add libarchive

    - The test suites cannot currently be built under OpenBSD.

    - Building additional documentation is not currently supported
      under OpenBSD.

:NetBSD 7.0:
    - The following packages are pre-requisites for building the
      sources on NetBSD 7.0:

      ===================     =====================================
      **Package**             **Description**
      ===================     =====================================
      ``libarchive``          An archive access library.
      ===================     =====================================

      The following command line may be used to install the necessary
      pre-requisites::

          # pkg_add libarchive

    - To build and run the test suite:

      #. The current release of the `Test Execution Toolkit`_, needs
         to be downloaded and unpacked into the ``test/tet/``
         directory.

      #. The following additional package needs to be installed, as
         listed in the example command line below ::

            % sudo pkg_add py27-yaml

    - Building additional documentation is not currently supported
      under NetBSD.

:Ubuntu GNU/Linux 10.04:
    - The following packages are pre-requisites for building the
      sources on Ubuntu GNU/Linux 10.04:

      ===================     =====================================
      **Package**             **Description**
      ===================     =====================================
      ``binutils``            Needed for the build.
      ``bison``               Parser generator.
      ``flex``                Lexical analyser.
      ``gcc``                 C compiler.
      ``libarchive-dev``      Archive access library.
      ``libc6-dev``           Files for C language development.
      ``libexpat1-dev``       An XML processing library.
      ``m4``                  Macro processor.
      ``pmake``               A ``make`` that uses BSD-make syntax.
      ``python-yaml``         A YAML library for Python.
      ``sharutils``           For ``uudecode``.
      ``zlib1g-dev``          Compression library.
      ===================     =====================================

      The following command line may be used to install the necessary
      pre-requisites::

	  % sudo apt-get install binutils bison flex gcc libarchive-dev \
	    libc6-dev m4 pmake zlib1g-dev

    - To build and run the test suite:

      #. The current release of the `Test Execution Toolkit`_, needs
         to be downloaded and unpacked into the ``test/tet/``
         directory.

      #. The following additional packages need to be installed, as
         listed in the example command line below::

            % sudo apt-get install libexpat1-dev python-yaml sharutils

    - To build additional documentation, the ``pgf`` package is
      needed::

          % sudo apt-get install pgf

:Ubuntu GNU/Linux 14.04:
    - The following packages are pre-requisites for building the
      sources on Ubuntu GNU/Linux 14.04:

      ===================     =====================================
      **Package**             **Description**
      ===================     =====================================
      ``bison``               Parser generator.
      ``build-essential``     Basic build tools.
      ``flex``                Lexical analyser.
      ``libarchive-dev``      Archive access library.
      ``libexpat1-dev``       An XML processing library.
      ``m4``                  Macro processor.
      ``bmake``               NetBSD ``make``.
      ``python-yaml``         A YAML library for Python.
      ``sharutils``           For ``uudecode``.
      ``zlib1g-dev``          Compression library.
      ===================     =====================================

      The following command line may be used to install the necessary
      pre-requisites::

          % sudo apt-get install bison build-essential flex libarchive-dev \
            m4 bmake zlib1g-dev

    - To build and run the test suite:

      #. The current release of the `Test Execution Toolkit`_, needs
         to be downloaded and unpacked into the ``test/tet/``
         directory.

      #. The following additional packages need to be installed, as
         listed in the example command line below::

            % sudo apt-get install libexpat1-dev python-yaml sharutils

    - Builds of additional documentation are not currently supported
      under Ubuntu GNU/Linux 14.04.

.. _Test Execution Toolkit: http://tetworks.opengroup.org/
.. _OpenGroup: http://www.opengroup.org/


Building the software
---------------------

The software may be built by running **make**.

On `DragonFly BSD`_,  FreeBSD_, Minix_, NetBSD_ and OpenBSD_, use::

  % make

On Ubuntu GNU/Linux with the **pmake** package installed, use::

  % pmake


Testing the software
---------------------

The ``run-tests`` target in the top-level Makefile will build and
execute the test suites that are part of this software.

On `DragonFly BSD`_, FreeBSD_ and NetBSD_, use::

    % make run-tests

On Ubuntu GNU/Linux with the **pmake** package installed, use::

    % pmake run-tests

Installing the Software
=======================

The software may be installed using the ``install`` target.

On `DragonFly BSD`_, FreeBSD_, Minix_, NetBSD_ and OpenBSD_ use::

    % make install

On Ubuntu GNU/Linux with the **pmake** package installed, use::

    % pmake install


By default the ``install`` target will install utilities into
``/usr/bin/``, libraries into ``/usr/lib/`` and manual pages into
``/usr/share/man/man[0-9]/``.

The installation directory may be changed using the ``DESTDIR``
variable.  For example::

    % pmake DESTDIR=$HOME/local install


Additional Information
======================

Additional information about the project may be found on the `project
website`_.

.. _project website:  http://elftoolchain.sourceforge.net/

.. $Id: INSTALL 3353 2016-01-18 21:50:13Z jkoshy $

.. Local Variables:
.. mode: rst
.. End:
