1 /* visibility.h 2 * 3 * Copyright (C) 2006-2021 wolfSSL Inc. 4 * 5 * This file is part of wolfSSL. 6 * 7 * wolfSSL is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2 of the License, or 10 * (at your option) any later version. 11 * 12 * wolfSSL is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA 20 */ 21 22 23 /* Visibility control macros */ 24 25 #ifndef CTAO_CRYPT_VISIBILITY_H 26 #define CTAO_CRYPT_VISIBILITY_H 27 28 /* fips compatibility @wc_fips */ 29 #ifndef HAVE_FIPS 30 #include <wolfssl/wolfcrypt/visibility.h> 31 #define CYASSL_API WOLFSSL_API 32 #define CYASSL_LOCAL WOLFSSL_LOCAL 33 #else 34 /* CYASSL_API is used for the public API symbols. 35 It either imports or exports (or does nothing for static builds) 36 37 CYASSL_LOCAL is used for non-API symbols (private). 38 */ 39 40 #if defined(BUILDING_WOLFSSL) 41 #if defined(HAVE_VISIBILITY) && HAVE_VISIBILITY 42 #define CYASSL_API __attribute__ ((visibility("default"))) 43 #define CYASSL_LOCAL __attribute__ ((visibility("hidden"))) 44 #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) 45 #define CYASSL_API __global 46 #define CYASSL_LOCAL __hidden 47 #elif defined(_MSC_VER) 48 #ifdef CYASSL_DLL 49 #define CYASSL_API extern __declspec(dllexport) 50 #else 51 #define CYASSL_API 52 #endif 53 #define CYASSL_LOCAL 54 #else 55 #define CYASSL_API 56 #define CYASSL_LOCAL 57 #endif /* HAVE_VISIBILITY */ 58 #else /* BUILDING_WOLFSSL */ 59 #if defined(_MSC_VER) 60 #ifdef CYASSL_DLL 61 #define CYASSL_API extern __declspec(dllimport) 62 #else 63 #define CYASSL_API 64 #endif 65 #define CYASSL_LOCAL 66 #else 67 #define CYASSL_API 68 #define CYASSL_LOCAL 69 #endif 70 #endif /* BUILDING_WOLFSSL */ 71 #endif /* HAVE_FIPS */ 72 #endif /* CTAO_CRYPT_VISIBILITY_H */ 73 74