Commit 5a5c0b95 authored by Richard Levitte's avatar Richard Levitte
Browse files

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: default avatarMatt Caswell <matt@openssl.org>
parent 0c9b1534
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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",
+12 −5
Original line number Diff line number Diff line
@@ -256,12 +256,19 @@ COMP_METHOD *COMP_zlib(void)
    COMP_METHOD *meth = &zlib_method_nozlib;

#ifdef ZLIB_SHARED
    if (!zlib_loaded) {
    /* LIBZ may be externally defined, and we should respect that value */
# ifndef LIBZ
#  if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32)
        zlib_dso = DSO_load(NULL, "ZLIB1", NULL, 0);
#   define LIBZ "ZLIB1"
#  elif defined(OPENSSL_SYS_VMS)
#   define LIBZ "LIBZ"
#  else
        zlib_dso = DSO_load(NULL, "z", NULL, 0);
#   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