Fix zlib configuration options.
authorRichard Levitte <levitte@openssl.org>
Tue, 12 Apr 2016 13:28:06 +0000 (15:28 +0200)
committerRichard Levitte <levitte@openssl.org>
Wed, 13 Apr 2016 09:36:46 +0000 (11:36 +0200)
The macros ZLIB and ZLIB_SHARED weren't appropriately defined,
deviating wrongly from how they worked in earlier OpenSSL versions.
So, restore it so that ZLIB is defined if configured "enable-zlib" and
so that ZLIB and ZLIB_SHARED are defined if configured
"enable-zlib-dynamic".

Additionally, correct the interpretation of the --with-zlib-lib value
on Windows and VMS, where it's used to indicate the actual zlib
zlib library file / logical name, as that can differ depending on zlib
version and packaging on those platforms.

Finally for Windows and VMS, we also define the macro LIBZ with that
file name / logical name when configured "zlib-dynamic", so the
compression unit can pick it up and use it.

Reviewed-by: Matt Caswell <matt@openssl.org>
Configurations/00-base-templates.conf
Configurations/10-main.conf

index 5fe038c..0211a8c 100644 (file)
     BASE_common => {
        template        => 1,
        defines         =>
-           [ sub {
-               unless ($disabled{zlib}) {
-                   if (defined($disabled{"zlib-dynamic"})) {
-                       return "ZLIB";
-                   } else {
-                       return "ZLIB_SHARED";
-                   }
-               }
-               return (); }
-           ],
+           sub {
+                my @defs = ();
+                push @defs, "ZLIB" unless $disabled{zlib};
+                push @defs, "ZLIB_SHARED" unless $disabled{"zlib-dynamic"};
+                return [ @defs ];
+            },
     },
 
     BASE_unix => {
@@ -84,7 +80,7 @@
             sub {
                 unless ($disabled{zlib}) {
                     if (defined($disabled{"zlib-dynamic"})) {
-                        return "zlib1.lib";
+                        return $withargs{zlib_lib} || "zlib1.lib";
                     }
                 }
                 return (); },
         inherit_from    => [ "BASE_common" ],
         template        => 1,
 
-        ex_libs          =>
-            sub {
-                unless ($disabled{zlib}) {
-                    if (defined($disabled{"zlib-dynamic"})) {
-                        if (defined($withargs{zlib_lib})) {
-                            return $withargs{zlib_lib}.'GNV$LIBZSHR.EXE/SHARED'
-                        } else {
-                            return 'GNV$LIBZSHR/SHARE';
-                        }
-                    }
-                }
-                return (); },
-
         build_file       => "descrip.mms",
         build_scheme     => [ "unified", "VMS" ],
     },
index 6b10d70..52953a7 100644 (file)
@@ -85,6 +85,18 @@ sub vms_info {
        if ($? == 0) {
            push @{$vms_info->{disable_warns_p64}}, "MAYLOSEDATA3";
        }
+
+        unless ($disabled{zlib}) {
+            if (defined($disabled{"zlib-dynamic"})) {
+                $vms_info->{zlib} = $withargs{zlib_lib} || 'GNV$LIBZSHR/SHARE';
+                $vms_info->{zlib_p32} = $withargs{zlib_lib} || 'GNV$LIBZSHR32/SHARE';
+                $vms_info->{zlib_p64} = $withargs{zlib_lib} || 'GNV$LIBZSHR64/SHARE';
+            } else {
+                $vms_info->{def_zlib} = $withargs{zlib_lib} || 'GNV$LIBZSHR';
+                $vms_info->{def_zlib_p32} = $withargs{zlib_lib} || 'GNV$LIBZSHR32';
+                $vms_info->{def_zlib_p64} = $withargs{zlib_lib} || 'GNV$LIBZSHR64';
+            }
+        }
     }
     return $vms_info;
 }
@@ -1755,6 +1767,12 @@ sub vms_info {
                                           @{vms_info()->{disable_warns}};
                                       @warnings
                                           ? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : (); }),
+        defines          =>
+                    add(sub {
+                            return vms_info()->{def_zlib}
+                                ? "LIBZ=\"\"\"".vms_info()->{def_zlib}."\"\"\"" : ();
+                            }),
+        ex_libs          => add(sub { return vms_info()->{zlib} || (); }),
         #as               => "???",
         #debug_aflags     => "/NOOPTIMIZE/DEBUG",
         #release_aflags   => "/OPTIMIZE/NODEBUG",
@@ -1769,7 +1787,12 @@ sub vms_info {
                       @warnings
                           ? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : ();
                 } ),
-        ex_libs          => sub { join(",", map { s|SHR([\./])|SHR32$1|g; $_ } @_) },
+        defines          =>
+                    add(sub {
+                            return vms_info()->{def_zlib_p32}
+                                ? "LIBZ=\"\"\"".vms_info()->{def_zlib_p32}."\"\"\"" : ();
+                            }),
+        ex_libs          => add(sub { return vms_info()->{zlib_p32} || (); }),
     },
     "vms-alpha-p64" => {
         inherit_from     => [ "vms-alpha" ],
@@ -1780,7 +1803,12 @@ sub vms_info {
                       @warnings
                           ? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : ();
                 } ),
-        ex_libs          => sub { join(",", map { s|SHR([\./])|SHR64$1|g; $_ } @_) },
+        defines          =>
+                    add(sub {
+                            return vms_info()->{def_zlib_p64}
+                                ? "LIBZ=\"\"\"".vms_info()->{def_zlib_p64}."\"\"\"" : ();
+                            }),
+        ex_libs          => add(sub { return vms_info()->{zlib_p64} || (); }),
     },
     "vms-ia64" => {
         inherit_from     => [ "vms-generic" ],
@@ -1788,6 +1816,12 @@ sub vms_info {
                                           @{vms_info()->{disable_warns}};
                                       @warnings
                                           ? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : (); }),
+        defines          =>
+                    add(sub {
+                            return vms_info()->{def_zlib}
+                                ? "LIBZ=\"\"\"".vms_info()->{def_zlib}."\"\"\"" : ();
+                            }),
+        ex_libs          => add(sub { return vms_info()->{zlib} || (); }),
         #as               => "I4S",
         #debug_aflags     => "/NOOPTIMIZE/DEBUG",
         #release_aflags   => "/OPTIMIZE/NODEBUG",
@@ -1802,7 +1836,12 @@ sub vms_info {
                       @warnings
                           ? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : ();
                 } ),
-        ex_libs          => sub { join(",", map { s|SHR([\./])|SHR32$1|g; $_ } @_) },
+        defines          =>
+                    add(sub {
+                            return vms_info()->{def_zlib_p32}
+                                ? "LIBZ=\"\"\"".vms_info()->{def_zlib_p32}."\"\"\"" : ();
+                            }),
+        ex_libs          => add(sub { return vms_info()->{zlib_p32} || (); }),
     },
     "vms-ia64-p64" => {
         inherit_from     => [ "vms-ia64" ],
@@ -1813,7 +1852,12 @@ sub vms_info {
                       @warnings
                           ? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : ();
                 } ),
-        ex_libs          => sub { join(",", map { s|SHR([\./])|SHR64$1|g; $_ } @_) },
+        defines          =>
+                    add(sub {
+                            return vms_info()->{def_zlib_p64}
+                                ? "LIBZ=\"\"\"".vms_info()->{def_zlib_p64}."\"\"\"" : ();
+                            }),
+        ex_libs          => add(sub { return vms_info()->{zlib_p64} || (); }),
     },
 
 );