To build and install the tpm2.0-tss software the following dependencies are
required:
GNU Autoconf
GNU Autoconf archive
GNU Automake
GNU Libtool
C compiler
C++ compiler
C Library Development Libraries and Header Files (for pthreads headers)
cmocka unit test framework
pkg-config

Currently the tpm2.0-tss is only distributed via GitHub as we have not yet
produced an official source release. To obtain the tpm2.0-tss sources you
must clone them from the 01.org GitHub organization TPM2.0-TSS git repository:
git clone https://github.com/01org/TPM2.0-TSS

To configure the tpm2.0-tss source code first define the environment for your
build using a config.site file. The default for the project is kept at
./lib/default_config.site. Pass this environment to the build through the
CONFIG_SITE variable:
$ ./bootstrap
$ CONFIG_SITE=$(pwd)/lib/default_config.site ./configure

You may also customize the config.site to your needs (please read the GNU
documentation for config.site files) or use your platform / distro default
by leaving the CONFIG_SITE environment variable undefined.

Then compile the code:
$ make

Once you've built the tpm2.0-tss software it can be installed with:
$ sudo make install

This will install the libraries and the resource manager to locations
determined at configure time. See the output of ./configure --help for the
available options. Typically you won't need to do much more than provide an
alternative --prefix option at configure time, and maybe DESTDIR at install
time if you're packaging for a distro.

We now have basic VPATH support which allows us to separate the source
directory from the build directory. This allows for a developer to do a debug
build and a regular build from the same sources. Any changes to the source
will be buildable from both build directories. Before you attempt this be sure
that the source directory is clean.

Our example requires 3 directories:
TPM2.0-TSS where the sources reside,
tpm2tss-default to hold the build with default configuration
tpm2tss-debug to hold a build with debug configuration

In the TPM2.0-TSS directory bootstrap the build:
$ ./bootstrap

From the tpm2tss-default directory build the TPM2.0-TSS source code with the
project's default configuration:
$ CONFIG_SITE=$(pwd)/../TPM2.0-TSS/lib/default_config.site \
  ../TPM2.0-TSS/configure
$ make

From the tpm2tss-debug directory build the TPM2.0-TSS source code with
optimization disabled and debug symbols:
$ CONFIG_SITE=$(pwd)/../TPM2.0-TSS/lib/debug_config.site \
  ../TPM2.0-TSS/configure
$ make
