This document contains the following sections:
==============================================

- Quick start
- Building libtpms
- Installing libtpms, include files and man pages
- Uninstalling libtpms, include files and man pages
- More on man pages

Quick start:
------------

The libtpms library can be built using the steps (after installing
dependencies):

    # ./autogen.sh --with-tpm2 --with-openssl --prefix=/usr
    # make
    # make check
    # sudo make install

Building libtpms:
-----------------

The configure script needs to be run first, and can be done using:

./autogen.sh --with-tpm2 --with-openssl

By default, files will be installed in '/usr/local/lib', etc.  If you
would like to have these files installed in '/usr/lib', etc, then run
configure using the following command line. On some distributions it may
be necessary to also pass --libdir=/lib64 (for 64 bit systems).

./autogen.sh --prefix=/usr --with-tpm2 --with-openssl

For more details on configure options, run "./configure -h".

Building libtpms can be done using:

make all

The library is known to build on Linux and Cygwin systems and possible
other Operating Systems that use .so as library extensions.

On Linux systems, libtpms can be built with either one of the following
crypto backends:

- openssl
- freebl (TPM 1.2 support only)

On Cygwin only openssl is available and therefore can only be built with
openssl.

To build for openssl, the following development packages must have been
installed:

Fedora/RedHat:
- automake
- autoconf
- libtool
- make
- gcc
- glibc-headers
- openssl-devel

Ubuntu:
- automake
- autoconf
- libtool
- make
- gcc
- libc-dev
- libssl-dev

To build for freebl (TPM 1.2 support only), the following development
packages must have been installed prior to compilation:

Fedora/RedHat:
- glibc-headers
- nss-softokn-freebl-devel (preferably version 3.12.9-2 or newer)
- nss-softokn-devel (preferably version 3.12.9-2 or newer)
- gmp-devel

Ubuntu:
- libc6-dev
- libgmp-dev
- libnspr4-dev
- libnss3-dev (preferably version 3.17.2; needs to have blapi.h)

By default, libtpms is built with the openssl crypto library, which was
shown above. To build with the freebl crypto library the following command
line can be used (TPM 1.2 support only):

./autogen.sh --prefix=/usr
make all install

To verify that libtpms was built with freebl as the crypto backend, one
can run:

ldd /usr/lib/libtpms.so   or  ldd /usr/lib64/libtpms.so

	linux-vdso.so.1 =>  (0x00007fff8d5ff000)
	libgmp.so.3 => /usr/lib64/libgmp.so.3 (0x00007f5352a13000)
	libnspr4.so => /lib64/libnspr4.so (0x00007f53527d6000)
	libnssutil3.so => /usr/lib64/libnssutil3.so (0x00007f53525b6000)
	libnss3.so => /usr/lib64/libnss3.so (0x00007f535227c000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f5351ed8000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f5351cba000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f5351ab6000)
	libplc4.so => /lib64/libplc4.so (0x00007f53518b2000)
	libplds4.so => /lib64/libplds4.so (0x00007f53516ae000)
	/lib64/ld-linux-x86-64.so.2 (0x0000003a1c000000)

The fact that the libraries libgmp, libnspr4, libnssutil3, libnss3,
libpc4, and libplds4 are linked against is an indication that the freebl
library was used for linking.

In case of openssl's libcrypto the output would be the following:

	linux-vdso.so.1 =>  (0x00007fffcbdff000)
	libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007fdb1d00e000)
	libc.so.6 => /lib64/libc.so.6 (0x00007fdb1cc6a000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007fdb1ca65000)
	libz.so.1 => /lib64/libz.so.1 (0x00007fdb1c84e000)
	/lib64/ld-linux-x86-64.so.2 (0x0000003a1c000000)


Installing libtpms, include files and man pages:
------------------------------------------------

The installation of libtpms, the development include files (headers) and
man pages can be achieved through:

make install

This will copy libtpms into the standard library directory on your Linux
system such as /usr/lib or /usr/lib64, depending on whether you built for
a 32 bit or 64 bit machine.

The public include files of libtpms will be copied to /usr/include/libtpms.

The man pages explaining the libtpms API will be copied to /usr/share/man.


Uninstalling libtpms, include files and man pages:
--------------------------------------------------

The libtpms library, its development include files (headers) and man pages
can be uninstalled from their standard locations using

make uninstall


More on man pages
-----------------

All of the libtpms APIs have a man page.  The man pages contain explanations
on how to use the APIs as well as examples.  Once installed, they can be
viewed as a typical man page:

man TPMLIB_MainInit

Otherwise, if they are not installed, they can then be viewed from the
libtpms root directory using:

man -M ./man TPMLIB_MainInit
