Home | History | Annotate | Download | only in tpm2
      1 // 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 //
     15 #ifdef __GNUC__
     16 #define ALIGN_TO(boundary)            __attribute__ ((aligned(boundary)))
     17 #define __declspec(x)
     18 #else
     19 #define ALIGN_TO(boundary)            __declspec(align(boundary))
     20 #endif
     21 //
     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
     81