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