Mbed TLS v3.6.3
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
mbedtls/build_info.h
Go to the documentation of this file.
1 
9 /*
10  * Copyright The Mbed TLS Contributors
11  * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
12  */
13 
14 #ifndef MBEDTLS_BUILD_INFO_H
15 #define MBEDTLS_BUILD_INFO_H
16 
17 /*
18  * This set of compile-time defines can be used to determine the version number
19  * of the Mbed TLS library used. Run-time variables for the same can be found in
20  * version.h
21  */
22 
27 #define MBEDTLS_VERSION_MAJOR 3
28 #define MBEDTLS_VERSION_MINOR 6
29 #define MBEDTLS_VERSION_PATCH 3
30 
36 #define MBEDTLS_VERSION_NUMBER 0x03060300
37 #define MBEDTLS_VERSION_STRING "3.6.3"
38 #define MBEDTLS_VERSION_STRING_FULL "Mbed TLS 3.6.3"
39 
40 /* Macros for build-time platform detection */
41 
42 #if !defined(MBEDTLS_ARCH_IS_ARM64) && \
43  (defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC))
44 #define MBEDTLS_ARCH_IS_ARM64
45 #endif
46 
47 #if !defined(MBEDTLS_ARCH_IS_ARM32) && \
48  (defined(__arm__) || defined(_M_ARM) || \
49  defined(_M_ARMT) || defined(__thumb__) || defined(__thumb2__))
50 #define MBEDTLS_ARCH_IS_ARM32
51 #endif
52 
53 #if !defined(MBEDTLS_ARCH_IS_X64) && \
54  (defined(__amd64__) || defined(__x86_64__) || \
55  ((defined(_M_X64) || defined(_M_AMD64)) && !defined(_M_ARM64EC)))
56 #define MBEDTLS_ARCH_IS_X64
57 #endif
58 
59 #if !defined(MBEDTLS_ARCH_IS_X86) && \
60  (defined(__i386__) || defined(_X86_) || \
61  (defined(_M_IX86) && !defined(_M_I86)))
62 #define MBEDTLS_ARCH_IS_X86
63 #endif
64 
65 #if !defined(MBEDTLS_PLATFORM_IS_WINDOWS_ON_ARM64) && \
66  (defined(_M_ARM64) || defined(_M_ARM64EC))
67 #define MBEDTLS_PLATFORM_IS_WINDOWS_ON_ARM64
68 #endif
69 
70 /* This is defined if the architecture is Armv8-A, or higher */
71 #if !defined(MBEDTLS_ARCH_IS_ARMV8_A)
72 #if defined(__ARM_ARCH) && defined(__ARM_ARCH_PROFILE)
73 #if (__ARM_ARCH >= 8) && (__ARM_ARCH_PROFILE == 'A')
74 /* GCC, clang, armclang and IAR */
75 #define MBEDTLS_ARCH_IS_ARMV8_A
76 #endif
77 #elif defined(__ARM_ARCH_8A)
78 /* Alternative defined by clang */
79 #define MBEDTLS_ARCH_IS_ARMV8_A
80 #elif defined(_M_ARM64) || defined(_M_ARM64EC)
81 /* MSVC ARM64 is at least Armv8.0-A */
82 #define MBEDTLS_ARCH_IS_ARMV8_A
83 #endif
84 #endif
85 
86 #if defined(__GNUC__) && !defined(__ARMCC_VERSION) && !defined(__clang__) \
87  && !defined(__llvm__) && !defined(__INTEL_COMPILER)
88 /* Defined if the compiler really is gcc and not clang, etc */
89 #define MBEDTLS_COMPILER_IS_GCC
90 #define MBEDTLS_GCC_VERSION \
91  (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
92 #endif
93 
94 #if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
95 #define _CRT_SECURE_NO_DEPRECATE 1
96 #endif
97 
98 /* Define `inline` on some non-C99-compliant compilers. */
99 #if (defined(__ARMCC_VERSION) || defined(_MSC_VER)) && \
100  !defined(inline) && !defined(__cplusplus)
101 #define inline __inline
102 #endif
103 
104 #if defined(MBEDTLS_CONFIG_FILES_READ)
105 #error "Something went wrong: MBEDTLS_CONFIG_FILES_READ defined before reading the config files!"
106 #endif
107 #if defined(MBEDTLS_CONFIG_IS_FINALIZED)
108 #error "Something went wrong: MBEDTLS_CONFIG_IS_FINALIZED defined before reading the config files!"
109 #endif
110 
111 /* X.509, TLS and non-PSA crypto configuration */
112 #if !defined(MBEDTLS_CONFIG_FILE)
113 #ifdef _RTE_
114 #include "mbedTLS_config_wrapper.h"
115 #else
116 #include "mbedtls/mbedtls_config.h"
117 #endif
118 #else
119 #include MBEDTLS_CONFIG_FILE
120 #endif
121 
122 #if defined(MBEDTLS_CONFIG_VERSION) && ( \
123  MBEDTLS_CONFIG_VERSION < 0x03000000 || \
124  MBEDTLS_CONFIG_VERSION > MBEDTLS_VERSION_NUMBER)
125 #error "Invalid config version, defined value of MBEDTLS_CONFIG_VERSION is unsupported"
126 #endif
127 
128 /* Target and application specific configurations
129  *
130  * Allow user to override any previous default.
131  *
132  */
133 #if defined(MBEDTLS_USER_CONFIG_FILE)
134 #include MBEDTLS_USER_CONFIG_FILE
135 #endif
136 
137 /* PSA crypto configuration */
138 #if defined(MBEDTLS_PSA_CRYPTO_CONFIG)
139 #if defined(MBEDTLS_PSA_CRYPTO_CONFIG_FILE)
140 #include MBEDTLS_PSA_CRYPTO_CONFIG_FILE
141 #else
142 #ifdef _RTE_
143 #include "mbedTLS_crypto_config.h"
144 #else
146 #endif
147 #endif
148 #if defined(MBEDTLS_PSA_CRYPTO_USER_CONFIG_FILE)
149 #include MBEDTLS_PSA_CRYPTO_USER_CONFIG_FILE
150 #endif
151 #endif /* defined(MBEDTLS_PSA_CRYPTO_CONFIG) */
152 
153 /* Indicate that all configuration files have been read.
154  * It is now time to adjust the configuration (follow through on dependencies,
155  * make PSA and legacy crypto consistent, etc.).
156  */
157 #define MBEDTLS_CONFIG_FILES_READ
158 
159 /* Auto-enable MBEDTLS_CTR_DRBG_USE_128_BIT_KEY if
160  * MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH and MBEDTLS_CTR_DRBG_C defined
161  * to ensure a 128-bit key size in CTR_DRBG.
162  */
163 #if defined(MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH) && defined(MBEDTLS_CTR_DRBG_C)
164 #define MBEDTLS_CTR_DRBG_USE_128_BIT_KEY
165 #endif
166 
167 /* Auto-enable MBEDTLS_MD_C if needed by a module that didn't require it
168  * in a previous release, to ensure backwards compatibility.
169  */
170 #if defined(MBEDTLS_PKCS5_C)
171 #define MBEDTLS_MD_C
172 #endif
173 
174 /* PSA crypto specific configuration options
175  * - If config_psa.h reads a configuration option in preprocessor directive,
176  * this symbol should be set before its inclusion. (e.g. MBEDTLS_MD_C)
177  * - If config_psa.h writes a configuration option in conditional directive,
178  * this symbol should be consulted after its inclusion.
179  * (e.g. MBEDTLS_MD_LIGHT)
180  */
181 #if defined(MBEDTLS_PSA_CRYPTO_CONFIG) /* PSA_WANT_xxx influences MBEDTLS_xxx */ || \
182  defined(MBEDTLS_PSA_CRYPTO_C) /* MBEDTLS_xxx influences PSA_WANT_xxx */ || \
183  defined(MBEDTLS_PSA_CRYPTO_CLIENT) /* The same as the previous, but with separation only */
184 #include "mbedtls/config_psa.h"
185 #endif
186 
188 
190 
192 
193 /* Indicate that all configuration symbols are set,
194  * even the ones that are calculated programmatically.
195  * It is now safe to query the configuration (to check it, to size buffers,
196  * etc.).
197  */
198 #define MBEDTLS_CONFIG_IS_FINALIZED
199 
200 #include "mbedtls/check_config.h"
201 
202 #endif /* MBEDTLS_BUILD_INFO_H */
Adjust legacy configuration configuration.
Adjust TLS configuration.
PSA crypto configuration options (set of defines)
Consistency checks for configuration options.
Adjust X.509 configuration.
Configuration options (set of defines)
PSA crypto configuration options (set of defines)