From c32cbe97873bf919dc4d1bc332e4758ee6caea78 Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Wed, 6 Apr 2016 17:33:03 +0200 Subject: [PATCH 1/1] Configurations/10-main.conf: omit now redundant -D_WINDLL. ... and refine /MT vs. /MD flag handling. Reviewed-by: Richard Levitte --- Configurations/10-main.conf | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf index 1b32b10f3c..a36109c799 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 = (); -- 2.34.1