blob: 4fa54fea81cb9a6f091a0096309dda1e761a899c [file] [log] [blame] [view]
This file contains instructions to build and install the TSS libraries.
# Dependencies
To build and install the tpm2-tss software the following software packages
are required. In many cases dependencies are platform specific and so the
following sections describe them for the supported platforms.
## GNU/Linux:
* GNU Autoconf
* GNU Autoconf archive
* GNU Automake
* GNU Libtool
* C compiler
* C library development libraries and header files
* pkg-config
* uriparser development libraries and header files
* libgcrypt development libraries and header files
The following are dependencies only required when building test suites.
* Integration test suite (see ./configure option --with-simulatorbin):
* OpenSSL development libraries and header files
* Unit test suite (see ./configure option --enable-unit):
* cmocka unit test framework, version >= 1.0
* Code coverage analysis:
* lcov
* autoconf-archives
Most users will not need to install these dependencies.
### Ubuntu
```
$ sudo apt -y update
$ sudo apt -y install \
autoconf-archive \
libcmocka0 \
libcmocka-dev \
build-essential \
git \
pkg-config \
gcc \
g++ \
m4 \
libtool \
automake \
liburiparser-dev \
libgcrypt20-dev \
libssl-dev \
autoconf
```
Note: In some Ubuntu versions, the lcov and autoconf-archive packages are incompatible with each other. Recommend downloading autoconf-archives directly from upstream and copy ax_code_coverage.m4.
### Fedora
There is a package already, so the package build dependencies information can be
used to make sure that the needed packages to compile from source are installed:
```
$ sudo dnf builddep tpm2-tss
```
## Windows
Windows dlls built using the Clang/LLVM "Platform Toolset" are currently
prototypes. We have only tested using Visual Studio 2017 with the Universal
C Runtime (UCRT) version 10.0.16299.0. Building the type marshalling library
(tss2-mu.dll) and the system API (tss2-sapi.dll) should be as simple as
loading the tpm2-tss solution (tpm2-tss.sln) with a compatible and properly
configured version of Visual Studio 2017 and pressing the 'build' button.
### References
Visual Studio 2017 with "Clang for Windows": https://blogs.msdn.microsoft.com/vcblog/2017/03/07/use-any-c-compiler-with-visual-studio/
Universal CRT overview & setup instructions: https://docs.microsoft.com/en-us/cpp/porting/upgrade-your-code-to-the-universal-crt
# Building From Source
## Bootstrapping the Build
To configure the tpm2-tss source code first run the bootstrap script, which
generates list of source files, and creates the configure script:
```
$ ./bootstrap
```
## Configuring the Build
Then run the configure script, which generates the makefiles:
```
$ ./configure
```
## Compiling the Libraries
Then compile the code using make:
```
$ make -j$(nproc)
```
## Installing the Libraries
Once you've built the tpm2-tss software it can be installed with:
```
$ sudo make install
```
This will install the libraries to a location 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.
**NOTE**: It may be necessary to run ldconfig (as root) to update the run-time
bindings before executing a program that links against libsapi or a TCTI
library:
```
$ sudo ldconfig
```
## Building In A Container
If you are having trouble installing the dependencies on your machine you can
build in a container.
```
$ docker build -t tpm2 .
$ docker run --name temp tpm2 /bin/true
$ docker cp temp:/tpm2-tss tpm2-tss
$ docker rm temp
```
tpm2-tss is now in your working directory and contains all the built files.