Configurations/10-main.conf: omit now redundant -D_WINDLL.
authorAndy Polyakov <appro@openssl.org>
Wed, 6 Apr 2016 15:33:03 +0000 (17:33 +0200)
committerAndy Polyakov <appro@openssl.org>
Thu, 7 Apr 2016 19:13:02 +0000 (21:13 +0200)
... and refine /MT vs. /MD flag handling.

Reviewed-by: Richard Levitte <levitte@openssl.org>
Configurations/10-main.conf

index 1b32b10..a36109c 100644 (file)
@@ -1238,13 +1238,10 @@ sub vms_info {
         coutflag         => "/Fo",
         rc               => "rc",
         rcoutflag        => "/fo",
-        lib_cflags       => sub { join(" ",
-                                       ($disabled{shared} ? "/Zl" : ()),
-                                       "/Zi /Fdlib") },
+        lib_cflags       => add("/Zi /Fdlib"),
         dso_cflags       => "/Zi",
         bin_cflags       => "/Zi /Fdapp",
         lflags           => add("/debug"),
-        shared_cflag     => "-D_WINDLL",
         shared_ldflag    => "/dll",
         shared_target    => "win-shared", # meaningless except it gives Configure a hint
         thread_scheme    => "winthreads",
@@ -1255,14 +1252,29 @@ sub vms_info {
         cflags           => add(picker(default => "-DUNICODE -D_UNICODE",
                                        debug   =>
                                        sub {
-                                           ($disabled{shared} ? "/MT" : "/MD")
-                                               ."d /Od -DDEBUG -D_DEBUG";
+                                           ($disabled{shared} ? "" : "/MDd")
+                                               ." /Od -DDEBUG -D_DEBUG";
                                        },
                                        release =>
                                        sub {
-                                           ($disabled{shared} ? "/MT" : "/MD")
+                                           ($disabled{shared} ? "" : "/MD")
                                                ." /Ox /O2 /Ob2";
                                        })),
+        lib_cflags       => add(sub { $disabled{shared} ? "/MT /Zl" : () }),
+        # Following might/should appears controversial, i.e. defining
+        # /MDd without evaluating $disabled{shared}. It works in
+        # non-shared build because static library is compiled with /Zl
+        # and bares no reference to specific RTL. And it works in
+        # shared build because multiple /MDd options are not prohibited.
+        # But why /MDd in static build? Well, basically this is just a
+        # reference point, which allows to catch eventual errors that
+        # would prevent those who want to wrap OpenSSL into own .DLL.
+        # Why not /MD in release build then? Well, some are likely to
+        # prefer [non-debug] openssl.exe to be free from Micorosoft RTL
+        # redistributable.
+        bin_cflags       => add(picker(debug   => "/MDd",
+                                       release => sub { $disabled{shared} ? "/MT" : () },
+                                      )),
         bin_lflags       => add("/subsystem:console /opt:ref"),
         ex_libs          => sub {
             my @ex_libs = ();