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