ssh

Dependents:   OS

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers visibility.h Source File

visibility.h

00001 /* visibility.h
00002  *
00003  * Copyright (C) 2014-2016 wolfSSL Inc.
00004  *
00005  * This file is part of wolfSSH.
00006  *
00007  * wolfSSH is free software; you can redistribute it and/or modify
00008  * it under the terms of the GNU General Public License as published by
00009  * the Free Software Foundation; either version 3 of the License, or
00010  * (at your option) any later version.
00011  *
00012  * wolfSSH is distributed in the hope that it will be useful,
00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015  * GNU General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU General Public License
00018  * along with wolfSSH.  If not, see <http://www.gnu.org/licenses/>.
00019  */
00020 
00021 
00022 /*
00023  * The visibility header handles the visibility of function prototypes
00024  * between the local (used between modules in the library) and public
00025  * (exported for the library user) APIs.
00026  */
00027 
00028 
00029 #pragma once
00030 
00031 
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035 
00036 /* WOLFSSH_API is used for the public API symbols.
00037         It either imports or exports (or does nothing for static builds)
00038 
00039    WOLFSSH_LOCAL is used for non-API symbols (private).
00040 */
00041 
00042 #if defined(BUILDING_WOLFSSH)
00043     #if defined(HAVE_VISIBILITY) && HAVE_VISIBILITY
00044         #define WOLFSSH_API   __attribute__ ((visibility("default")))
00045         #define WOLFSSH_LOCAL __attribute__ ((visibility("hidden")))
00046     #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
00047         #define WOLFSSH_API   __global  
00048         #define WOLFSSH_LOCAL __hidden
00049     #elif defined(_MSC_VER)
00050         #ifdef WOLFSSH_DLL
00051             #define WOLFSSH_API extern __declspec(dllexport)
00052         #else
00053             #define WOLFSSH_API
00054         #endif
00055         #define WOLFSSH_LOCAL
00056     #else
00057         #define WOLFSSH_API
00058         #define WOLFSSH_LOCAL
00059     #endif /* HAVE_VISIBILITY */
00060 #else /* BUILDING_WOLFSSH */
00061     #if defined(_MSC_VER)
00062         #ifdef WOLFSSH_DLL
00063             #define WOLFSSH_API extern __declspec(dllimport)
00064         #else
00065             #define WOLFSSH_API
00066         #endif
00067         #define WOLFSSH_LOCAL
00068     #else
00069         #define WOLFSSH_API
00070         #define WOLFSSH_LOCAL
00071     #endif
00072 #endif /* BUILDING_WOLFSSH */
00073 
00074 
00075 
00076 #ifdef __cplusplus
00077 }
00078 #endif
00079