aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2016-04-06 17:33:03 +0200
committerAndy Polyakov <appro@openssl.org>2016-04-07 21:13:02 +0200
commitc32cbe97873bf919dc4d1bc332e4758ee6caea78 (patch)
tree7a6435f1d8f60a2627fb23d06f0a6b484d007c49
parentd237d6991461ae55b22df22b42d4771d8ea1b261 (diff)
downloadopenssl-c32cbe97873bf919dc4d1bc332e4758ee6caea78.zip
openssl-c32cbe97873bf919dc4d1bc332e4758ee6caea78.tar.gz
openssl-c32cbe97873bf919dc4d1bc332e4758ee6caea78.tar.bz2
Configurations/10-main.conf: omit now redundant -D_WINDLL.
... and refine /MT vs. /MD flag handling. Reviewed-by: Richard Levitte <levitte@openssl.org>
-rw-r--r--Configurations/10-main.conf26
1 files changed, 19 insertions, 7 deletions
diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf
index 1b32b10..a36109c 100644
--- a/Configurations/10-main.conf
+++ b/Configurations/10-main.conf
@@ -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 = ();