• R
    Introduce the possibility to access global variables through · 62dc5aad
    Richard Levitte 提交于
    functions on platform were that's the best way to handle exporting
    global variables in shared libraries.  To enable this functionality,
    one must configure with "EXPORT_VAR_AS_FN" or defined the C macro
    "OPENSSL_EXPORT_VAR_AS_FUNCTION" in crypto/opensslconf.h (the latter
    is normally done by Configure or something similar).
    
    To implement a global variable, use the macro OPENSSL_IMPLEMENT_GLOBAL
    in the source file (foo.c) like this:
    
    	OPENSSL_IMPLEMENT_GLOBAL(int,foo)=1;
    	OPENSSL_IMPLEMENT_GLOBAL(double,bar);
    
    To declare a global variable, use the macros OPENSSL_DECLARE_GLOBAL
    and OPENSSL_GLOBAL_REF in the header file (foo.h) like this:
    
    	OPENSSL_DECLARE_GLOBAL(int,foo);
    	#define foo OPENSSL_GLOBAL_REF(foo)
    	OPENSSL_DECLARE_GLOBAL(double,bar);
    	#define bar OPENSSL_GLOBAL_REF(bar)
    
    The #defines are very important, and therefore so is including the
    header file everywere where the defined globals are used.
    
    The macro OPENSSL_EXPORT_VAR_AS_FUNCTION also affects the definition
    of ASN.1 items, but that structure is a bt different.
    
    The largest change is in util/mkdef.pl which has been enhanced with
    better and easier to understand logic to choose which symbols should
    go into the Windows .def files as well as a number of fixes and code
    cleanup (among others, algorithm keywords are now sorted
    lexicographically to avoid constant rewrites).
    62dc5aad
mkdef.pl 38.4 KB