X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=e_os2.h;h=be7f72f9a5bc2a612e93a485b695a915f1658463;hp=6f0c69396f8ea728495bb8e4d8cbf5cb97765ef1;hb=e306892994a0f189089916d2ea66b3bdc0b2d777;hpb=2a4a0a340d507d0c64c842d669c37fbe263f3f60 diff --git a/e_os2.h b/e_os2.h index 6f0c69396f..be7f72f9a5 100644 --- a/e_os2.h +++ b/e_os2.h @@ -3,38 +3,55 @@ #ifndef HEADER_E_OS2_H #define HEADER_E_OS2_H +#include /* OPENSSL_UNISTD */ + #ifdef __cplusplus extern "C" { #endif -/* Definitions of OPENSSL_GLOBAL and OPENSSL_EXTERN, - to define and declare certain global - symbols that, with some compilers under VMS, have to be defined and - declared explicitely with globaldef and globalref. On other OS:es, - these macros are defined with something sensible. */ - -#if defined(VMS) && !defined(__DECC) -# define OPENSSL_EXTERN globalref -# define OPENSSL_GLOBAL globaldef +#ifdef MSDOS +# define OPENSSL_UNISTD_IO +# define OPENSSL_DECLARE_EXIT extern void exit(int); #else -# define OPENSSL_EXTERN extern -# define OPENSSL_GLOBAL +# define OPENSSL_UNISTD_IO OPENSSL_UNISTD +# define OPENSSL_DECLARE_EXIT /* declared in unistd.h */ #endif -/* The above definitions should be used throughout the library, - * but as long as EXTERN and GLOBAL occur there, we keep the following - * definitions, too: */ +/* Definitions of OPENSSL_GLOBAL and OPENSSL_EXTERN, to define and declare + certain global symbols that, with some compilers under VMS, have to be + defined and declared explicitely with globaldef and globalref. + Definitions of OPENSSL_EXPORT and OPENSSL_IMPORT, to define and declare + DLL exports and imports for compilers under Win32. These are a little + more complicated to use. Basically, for any library that exports some + global variables, the following code must be present in the header file + that declares them, before OPENSSL_EXTERN is used: + + #ifdef SOME_BUILD_FLAG_MACRO + # undef OPENSSL_EXTERN + # define OPENSSL_EXTERN OPENSSL_EXPORT + #endif + + The default is to have OPENSSL_EXPORT, OPENSSL_IMPORT and OPENSSL_GLOBAL + have some generally sensible values, and for OPENSSL_EXTERN to have the + value OPENSSL_IMPORT. +*/ + #if defined(VMS) && !defined(__DECC) -# define EXTERN globalref -# define GLOBAL globaldef +# define OPENSSL_EXPORT globalref +# define OPENSSL_IMPORT globalref +# define OPENSSL_GLOBAL globaldef +#elif defined(WINDOWS) +# define OPENSSL_EXPORT extern _declspec(dllexport) +# define OPENSSL_IMPORT extern _declspec(dllimport) +# define OPENSSL_GLOBAL #else -# define EXTERN extern -# define GLOBAL +# define OPENSSL_EXPORT extern +# define OPENSSL_IMPORT extern +# define OPENSSL_GLOBAL #endif - +#define OPENSSL_EXTERN OPENSSL_IMPORT #ifdef __cplusplus } #endif #endif -