xref: /optee_os/lib/libmbedtls/mbedtls/library/common.h (revision 7901324d9530594155991c8b283023d567741cc7)
1*7901324dSJerome Forissier /**
2*7901324dSJerome Forissier  * \file common.h
3*7901324dSJerome Forissier  *
4*7901324dSJerome Forissier  * \brief Utility macros for internal use in the library
5*7901324dSJerome Forissier  */
6*7901324dSJerome Forissier /*
7*7901324dSJerome Forissier  *  Copyright The Mbed TLS Contributors
8*7901324dSJerome Forissier  *  SPDX-License-Identifier: Apache-2.0
9*7901324dSJerome Forissier  *
10*7901324dSJerome Forissier  *  Licensed under the Apache License, Version 2.0 (the "License"); you may
11*7901324dSJerome Forissier  *  not use this file except in compliance with the License.
12*7901324dSJerome Forissier  *  You may obtain a copy of the License at
13*7901324dSJerome Forissier  *
14*7901324dSJerome Forissier  *  http://www.apache.org/licenses/LICENSE-2.0
15*7901324dSJerome Forissier  *
16*7901324dSJerome Forissier  *  Unless required by applicable law or agreed to in writing, software
17*7901324dSJerome Forissier  *  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
18*7901324dSJerome Forissier  *  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19*7901324dSJerome Forissier  *  See the License for the specific language governing permissions and
20*7901324dSJerome Forissier  *  limitations under the License.
21*7901324dSJerome Forissier  */
22*7901324dSJerome Forissier 
23*7901324dSJerome Forissier #ifndef MBEDTLS_LIBRARY_COMMON_H
24*7901324dSJerome Forissier #define MBEDTLS_LIBRARY_COMMON_H
25*7901324dSJerome Forissier 
26*7901324dSJerome Forissier #if defined(MBEDTLS_CONFIG_FILE)
27*7901324dSJerome Forissier #include MBEDTLS_CONFIG_FILE
28*7901324dSJerome Forissier #else
29*7901324dSJerome Forissier #include "mbedtls/config.h"
30*7901324dSJerome Forissier #endif
31*7901324dSJerome Forissier 
32*7901324dSJerome Forissier /** Helper to define a function as static except when building invasive tests.
33*7901324dSJerome Forissier  *
34*7901324dSJerome Forissier  * If a function is only used inside its own source file and should be
35*7901324dSJerome Forissier  * declared `static` to allow the compiler to optimize for code size,
36*7901324dSJerome Forissier  * but that function has unit tests, define it with
37*7901324dSJerome Forissier  * ```
38*7901324dSJerome Forissier  * MBEDTLS_STATIC_TESTABLE int mbedtls_foo(...) { ... }
39*7901324dSJerome Forissier  * ```
40*7901324dSJerome Forissier  * and declare it in a header in the `library/` directory with
41*7901324dSJerome Forissier  * ```
42*7901324dSJerome Forissier  * #if defined(MBEDTLS_TEST_HOOKS)
43*7901324dSJerome Forissier  * int mbedtls_foo(...);
44*7901324dSJerome Forissier  * #endif
45*7901324dSJerome Forissier  * ```
46*7901324dSJerome Forissier  */
47*7901324dSJerome Forissier #if defined(MBEDTLS_TEST_HOOKS)
48*7901324dSJerome Forissier #define MBEDTLS_STATIC_TESTABLE
49*7901324dSJerome Forissier #else
50*7901324dSJerome Forissier #define MBEDTLS_STATIC_TESTABLE static
51*7901324dSJerome Forissier #endif
52*7901324dSJerome Forissier 
53*7901324dSJerome Forissier #endif /* MBEDTLS_LIBRARY_COMMON_H */
54