diff --git a/e_os2.h b/e_os2.h index 5a25ac7cf6..be7f72f9a5 100644 --- a/e_os2.h +++ b/e_os2.h @@ -17,22 +17,41 @@ extern "C" { # define OPENSSL_DECLARE_EXIT /* declared in unistd.h */ #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. */ +/* 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 OPENSSL_EXTERN globalref +# 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 OPENSSL_EXTERN extern +# define OPENSSL_EXPORT extern +# define OPENSSL_IMPORT extern # define OPENSSL_GLOBAL #endif +#define OPENSSL_EXTERN OPENSSL_IMPORT #ifdef __cplusplus } #endif #endif -