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