blob: b5db3296dbf1753519c39b1caa712acf2ad10899 [file] [log] [blame]
Vadim Bendebury56797522015-05-20 10:32:25 -07001// This file was extracted from the TCG Published
2// Trusted Platform Module Library
3// Part 4: Supporting Routines
4// Family "2.0"
5// Level 00 Revision 01.16
6// October 30, 2014
7
8#ifndef _TPM_BUILD_SWITCHES_H
9#define _TPM_BUILD_SWITCHES_H
10#define SIMULATION
11#define FIPS_COMPLIANT
12//
13// Define the alignment macro appropriate for the build environment For MS C compiler
14//
Vadim Bendeburyc4b77e02015-05-27 15:29:50 -070015#ifdef __GNUC__
16#define ALIGN_TO(boundary) __attribute__ ((aligned(boundary)))
17#define __declspec(x)
18#else
Vadim Bendebury56797522015-05-20 10:32:25 -070019#define ALIGN_TO(boundary) __declspec(align(boundary))
Vadim Bendeburyc4b77e02015-05-27 15:29:50 -070020#endif
Vadim Bendebury56797522015-05-20 10:32:25 -070021//
22// For ISO 9899:2011
23//
24// #define ALIGN_TO(boundary) _Alignas(boundary)
25//
26// This switch enables the RNG state save and restore
27//
28#undef _DRBG_STATE_SAVE
29#define _DRBG_STATE_SAVE // Comment this out if no state save is wanted
30//
31// Set the alignment size for the crypto. It would be nice to set this according to macros automatically
32// defined by the build environment, but that doesn't seem possible because there isn't any simple set for
33// that. So, this is just a plugged value. Your compiler should complain if this alignment isn't possible.
34//
35// NOTE: this value can be set at the command line or just plugged in here.
36//
37#ifdef CRYPTO_ALIGN_16
38# define CRYPTO_ALIGNMENT 16
39#elif defined CRYPTO_ALIGN_8
40# define CRYPTO_ALIGNMENT 8
41#eliF defined CRYPTO_ALIGN_2
42# define CRYPTO_ALIGNMENT 2
43#elif defined CRTYPO_ALIGN_1
44# define CRYPTO_ALIGNMENT 1
45#else
46# define CRYPTO_ALIGNMENT 4 // For 32-bit builds
47#endif
48#define CRYPTO_ALIGNED ALIGN_TO(CRYPTO_ALIGNMENT)
49//
50// This macro is used to handle LIB_EXPORT of function and variable names in lieu of a .def file
51//
52#define LIB_EXPORT __declspec(dllexport)
53// #define LIB_EXPORT
54//
55//
56//
57// For import of a variable
58//
59#define LIB_IMPORT __declspec(dllimport)
60//#define LIB_IMPORT
61//
62// This is defined to indicate a function that does not return. This is used in static code anlaysis.
63//
64#define _No_Return_ __declspec(noreturn)
65//#define _No_Return_
66#ifdef SELF_TEST
67#pragma comment(lib, "algorithmtests.lib")
68#endif
69//
70// The switches in this group can only be enabled when running a simulation
71//
72#ifdef SIMULATION
73# define RSA_KEY_CACHE
74# define TPM_RNG_FOR_DEBUG
75#else
76# undef RSA_KEY_CACHE
77# undef TPM_RNG_FOR_DEBUG
78#endif // SIMULATION
79#define INLINE __inline
80#endif // _TPM_BUILD_SWITCHES_H