Remake the way dynamic zlib is loaded

Instead of absolute hard coding of the libz library name, have it use
the macro LIBZ, which is set to defaults we know in case it's
undefined.

This allows our configuration to set something that's sane on current
or older platforms, and allows the user to override it by defining
LIBZ themselves.

Reviewed-by: Matt Caswell <matt@openssl.org>
This commit is contained in:
Richard Levitte 2016-04-12 16:12:53 +02:00
parent 0c9b153426
commit 5a5c0b953f
2 changed files with 20 additions and 5 deletions

View File

@ -1249,6 +1249,14 @@ sub vms_info {
template => 1,
cc => "cl",
cflags => "-W3 -wd4090 -Gs0 -GF -Gy -nologo -DOPENSSL_SYS_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE",
defines => add(sub { my @defs = ();
unless ($disabled{"zlib-dynamic"}) {
push @defs,
quotify("perl",
'LIBZ="' . $withargs{zlib_lib} . '"');
}
return [ @defs ];
}),
coutflag => "/Fo",
rc => "rc",
rcoutflag => "/fo",

View File

@ -256,12 +256,19 @@ COMP_METHOD *COMP_zlib(void)
COMP_METHOD *meth = &zlib_method_nozlib;
#ifdef ZLIB_SHARED
if (!zlib_loaded) {
# if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32)
zlib_dso = DSO_load(NULL, "ZLIB1", NULL, 0);
# else
zlib_dso = DSO_load(NULL, "z", NULL, 0);
/* LIBZ may be externally defined, and we should respect that value */
# ifndef LIBZ
# if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32)
# define LIBZ "ZLIB1"
# elif defined(OPENSSL_SYS_VMS)
# define LIBZ "LIBZ"
# else
# define LIBZ "z"
# endif
# endif
if (!zlib_loaded) {
zlib_dso = DSO_load(NULL, LIBZ, NULL, 0);
if (zlib_dso != NULL) {
p_compress = (compress_ft) DSO_bind_func(zlib_dso, "compress");
p_inflateEnd