[openssl-commits] [openssl] master update

Richard Levitte levitte at openssl.org
Wed Mar 9 10:22:12 UTC 2016


The branch master has been updated
       via  b32b896166199b497bf98da6a5c5b50d8811851f (commit)
       via  0c1167fd61cb2a5816955739a20fce095e95992e (commit)
       via  9a1394c54e9e5d21476ee6fb5d15d1d14dd4fdf5 (commit)
       via  2d32d3be154f2f658a5884d1e46b0ba56d1e6c59 (commit)
       via  08479bbb03c20efffe99ad467243169c8eeb5079 (commit)
       via  2fe730362812e3c7d364197449a9439e3cb5915b (commit)
       via  7c0e1aa6e2b24d76169573703b1455ef178667d9 (commit)
      from  1a66190888c730f466d9d7ba0c3b044a78a80ded (commit)


- Log -----------------------------------------------------------------
commit b32b896166199b497bf98da6a5c5b50d8811851f
Author: Richard Levitte <levitte at openssl.org>
Date:   Tue Mar 8 14:44:46 2016 +0100

    Adapt INSTALL and related notes for Windows
    
    Reviewed-by: Rich Salz <rsalz at openssl.org>

commit 0c1167fd61cb2a5816955739a20fce095e95992e
Author: Richard Levitte <levitte at openssl.org>
Date:   Mon Mar 7 19:18:42 2016 +0100

    Adapt appveyor.yml for the new unified build
    
    Reviewed-by: Rich Salz <rsalz at openssl.org>

commit 9a1394c54e9e5d21476ee6fb5d15d1d14dd4fdf5
Author: Richard Levitte <levitte at openssl.org>
Date:   Mon Mar 7 14:12:45 2016 +0100

    Adapt the Windows makefile template to source generation
    
    Reviewed-by: Rich Salz <rsalz at openssl.org>

commit 2d32d3be154f2f658a5884d1e46b0ba56d1e6c59
Author: Richard Levitte <levitte at openssl.org>
Date:   Sat Mar 5 19:59:30 2016 +0100

    Don't run the TLSProxy based tests in native Windows
    
    There are issues binding listening ports.  This may be analyzed more
    thoroughly later on.
    
    Reviewed-by: Rich Salz <rsalz at openssl.org>

commit 08479bbb03c20efffe99ad467243169c8eeb5079
Author: Richard Levitte <levitte at openssl.org>
Date:   Sat Mar 5 20:02:05 2016 +0100

    Unified - name native Windows shared libraries like MingW builds do
    
    Reviewed-by: Rich Salz <rsalz at openssl.org>

commit 2fe730362812e3c7d364197449a9439e3cb5915b
Author: Richard Levitte <levitte at openssl.org>
Date:   Wed Mar 2 16:12:22 2016 +0100

    Unified - extract settings from util/pl/VC-32.pl and make the config settings
    
    This introduces the settings loutflag and aroutflag, because different
    Windows tools that do the same thing have different ways to specify
    the output file.
    
    The Borland C++ config is commented away for the monent, perhaps
    permanently.
    
    Reviewed-by: Rich Salz <rsalz at openssl.org>

commit 7c0e1aa6e2b24d76169573703b1455ef178667d9
Author: Richard Levitte <levitte at openssl.org>
Date:   Wed Mar 2 12:29:56 2016 +0100

    Unified - a native Windows makefile template
    
    Reviewed-by: Rich Salz <rsalz at openssl.org>

-----------------------------------------------------------------------

Summary of changes:
 Configurations/00-base-templates.conf |  10 +-
 Configurations/10-main.conf           | 212 ++++++++++++++++++---
 Configurations/windows-makefile.tmpl  | 342 ++++++++++++++++++++++++++++++++++
 INSTALL                               |  28 ++-
 INSTALL.WIN => NOTES.WIN              | 226 ++++++++++------------
 appveyor.yml                          |  13 +-
 build.info                            |   3 +
 test/recipes/70-test_sslcertstatus.t  |   2 +-
 test/recipes/70-test_sslextension.t   |   2 +-
 test/recipes/70-test_sslsessiontick.t |   2 +-
 test/recipes/70-test_sslskewith0p.t   |   2 +-
 test/recipes/70-test_sslvertol.t      |   2 +-
 test/recipes/70-test_tlsextms.t       |   2 +-
 test/recipes/90-test_networking.t     |   2 +-
 14 files changed, 679 insertions(+), 169 deletions(-)
 create mode 100644 Configurations/windows-makefile.tmpl
 rename INSTALL.WIN => NOTES.WIN (56%)

diff --git a/Configurations/00-base-templates.conf b/Configurations/00-base-templates.conf
index 4308c5c..cbb5675 100644
--- a/Configurations/00-base-templates.conf
+++ b/Configurations/00-base-templates.conf
@@ -89,7 +89,15 @@
                 }
                 return (); },
 
-        build_scheme    => [ "mk1mf" ],
+        ld              => "link",
+        lflags          => "/nologo",
+        loutflag        => "/out:",
+        ar              => "lib",
+        arflags         => "/nologo",
+        aroutflag       => "/out:",
+
+        build_file      => "makefile",
+        build_scheme    => [ "unified", "windows" ],
     },
 
     BASE_VMS => {
diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf
index 576ac45..fa9af88 100644
--- a/Configurations/10-main.conf
+++ b/Configurations/10-main.conf
@@ -17,6 +17,79 @@ sub combine {
     return sub { add(@stuff)->(); }
 }
 
+# Helper functions for the Windows configs
+my $vc_win64a_info = {};
+sub vc_win64a_info {
+    unless (%$vc_win64a_info) {
+        if (`nasm -v 2>NUL` =~ /NASM version ([0-9]+\.[0-9]+)/ && $1 >= 2.0) {
+            $vc_win64a_info = { as        => "nasm",
+                                asflags   => "-f win64 -DNEAR -Ox -g",
+                                asoutflag => "-o" };
+        } else {
+            $vc_win64a_info = { as        => "ml64",
+                                asflags   => "/c /Cp /Cx /Zi",
+                                asoutflag => "/Fo" };
+        }
+    }
+    return $vc_win64a_info;
+}
+
+my $vc_wince_info = {};
+sub vc_wince_info {
+    unless (%$vc_wince_info) {
+        # sanity check
+        die '%OSVERSION% is not defined' if (!defined($ENV{'OSVERSION'}));
+        die '%PLATFORM% is not defined'  if (!defined($ENV{'PLATFORM'}));
+        die '%TARGETCPU% is not defined' if (!defined($ENV{'TARGETCPU'}));
+
+        #
+        # Idea behind this is to mimic flags set by eVC++ IDE...
+        #
+        my $wcevers = $ENV{'OSVERSION'};                    # WCENNN
+        die '%OSVERSION% value is insane'
+            if ($wcevers !~ /^WCE([1-9])([0-9]{2})$/);
+        my $wcecdefs = "-D_WIN32_WCE=$1$2 -DUNDER_CE=$1$2"; # -D_WIN32_WCE=NNN
+        my $wcelflag = "/subsystem:windowsce,$1.$2";        # ...,N.NN
+
+        my $wceplatf =  $ENV{'PLATFORM'};
+        my $wceplatf =~ tr/a-z0-9 /A-Z0-9_/d;
+        my $wcecdefs .= " -DWCE_PLATFORM_$wceplatf";
+
+        my $wcetgt = $ENV{'TARGETCPU'};                     # just shorter name...
+      SWITCH: for($wcetgt) {
+          /^X86/        && do { $wcecdefs.=" -Dx86 -D_X86_ -D_i386_ -Di_386_";
+                                $wcelflag.=" /machine:X86";     last; };
+          /^ARMV4[IT]/  && do { $wcecdefs.=" -DARM -D_ARM_ -D$wcetgt";
+                                $wcecdefs.=" -DTHUMB -D_THUMB_" if($wcetgt=~/T$/);
+                                $wcecdefs.=" -QRarch4T -QRinterwork-return";
+                                $wcelflag.=" /machine:THUMB";   last; };
+          /^ARM/        && do { $wcecdefs.=" -DARM -D_ARM_ -D$wcetgt";
+                                $wcelflag.=" /machine:ARM";     last; };
+          /^MIPSIV/     && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt";
+                                $wcecdefs.=" -D_MIPS64 -QMmips4 -QMn32";
+                                $wcelflag.=" /machine:MIPSFPU"; last; };
+          /^MIPS16/     && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt";
+                                $wcecdefs.=" -DMIPSII -QMmips16";
+                                $wcelflag.=" /machine:MIPS16";  last; };
+          /^MIPSII/     && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt";
+                                $wcecdefs.=" -QMmips2";
+                                $wcelflag.=" /machine:MIPS";    last; };
+          /^R4[0-9]{3}/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000";
+                                $wcelflag.=" /machine:MIPS";    last; };
+          /^SH[0-9]/    && do { $wcecdefs.=" -D$wcetgt -D_${wcetgt}_ -DSHx";
+                                $wcecdefs.=" -Qsh4" if ($wcetgt =~ /^SH4/);
+                                $wcelflag.=" /machine:$wcetgt"; last; };
+          { $wcecdefs.=" -D$wcetgt -D_${wcetgt}_";
+            $wcelflag.=" /machine:$wcetgt";                     last; };
+      }
+
+        $vc_wince_info = { cflags => $wcecdefs,
+                           lflags => $wcelflag };
+    }
+    return $vc_wince_info;
+}
+
+
 %targets = (
 
 #### Basic configs that should work on any 32-bit box
@@ -1155,60 +1228,153 @@ sub combine {
 # positives in some situations. Disabling it altogether masks both
 # legitimate and false cases, but as we compile on multiple platforms,
 # we rely on other compilers to catch legitimate cases.
+#
+# Also note that we force threads no matter what.  Configuring "no-threads"
+# is ignored.
     "VC-common" => {
         inherit_from     => [ "BASE_Windows" ],
         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",
+        coutflag         => "/Fo",
+        lib_cflags       => "/Zl /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",
         dso_scheme       => "win32",
     },
+    "VC-noCE-common" => {
+        inherit_from     => [ "VC-common", "uplink_common" ],
+        cflags           => add(picker(default => "-DUNICODE -D_UNICODE",
+                                       debug   =>
+                                       sub {
+                                           ($disabled{shared} ? "/MT" : "/MD")
+                                               ."d /Od -DDEBUG -D_DEBUG";
+                                       },
+                                       release =>
+                                       sub {
+                                           ($disabled{shared} ? "/MT" : "/MD")
+                                               ." /Ox /O2 /Ob2";
+                                       })),
+        bin_lflags       => add("/subsystem:console /opt:ref"),
+        ex_libs          => sub {
+            my @ex_libs = ();
+            push @ex_libs, 'ws2_32.lib' unless $disabled{sock};
+            push @ex_libs, 'gdi32.lib advapi32.lib crypt32.lib user32.lib';
+            return join(" ", @ex_libs);
+        },
+    },
+    "VC-WIN64-common" => {
+        inherit_from     => [ "VC-noCE-common" ],
+        ex_libs          => sub {
+            my @ex_libs = ();
+            push @ex_libs, 'bufferoverflowu.lib' if (`cl 2>&1` =~ /14\.00\.4[0-9]{4}\./);
+            return join(" ", @_, @ex_libs);
+        },
+        bn_ops           => "SIXTY_FOUR_BIT EXPORT_VAR_AS_FN",
+        build_scheme     => add("VC-W64", { separator => undef }),
+    },
     "VC-WIN64I" => {
-        inherit_from     => [ "VC-common", asm("ia64_asm") ],
-        cflags           => add("-DUNICODE -D_UNICODE"),
+        inherit_from     => [ "VC-WIN64-common", asm("ia64_asm") ],
+        as               => "ias",
+        asflags          => "-d debug",
+        asoutflag        => "-o",
         sys_id           => "WIN64I",
-        bn_ops           => "SIXTY_FOUR_BIT EXPORT_VAR_AS_FN",
-        bn_obj           => sub { my $r=join(" ", at _); $r=~s/bn\-//; $r; },
-        rc4_obj          => "",
+        rc4_asm_src      => "",
         perlasm_scheme   => "ias",
-        build_scheme     => add("VC-W64", { separator => undef }),
     },
     "VC-WIN64A" => {
-        inherit_from     => [ "VC-common", asm("x86_64_asm") ],
-        cflags           => add("-DUNICODE -D_UNICODE"),
+        inherit_from     => [ "VC-WIN64-common", asm("x86_64_asm") ],
+        as               => sub { vc_win64a_info()->{as} },
+        asflags          => sub { vc_win64a_info()->{asflags} },
+        asoutflag        => sub { vc_win64a_info()->{asoutflag} },
         sys_id           => "WIN64A",
-        bn_ops           => "SIXTY_FOUR_BIT EXPORT_VAR_AS_FN",
-        bn_obj           => sub { my $r=join(" ", at _); $r=~s/x86_64\-gcc/bn_asm/; $r; },
+        bn_asm_src       => sub { return undef unless @_;
+                                  my $r=join(" ", at _); $r=~s|asm/x86_64-gcc|bn_asm|; $r; },
         perlasm_scheme   => "auto",
-        build_scheme     => add("VC-W64", { separator => undef }),
     },
     "VC-WIN32" => {
         # x86 Win32 target defaults to ANSI API, if you want UNICODE,
         # configure with 'perl Configure VC-WIN32 -DUNICODE -D_UNICODE'
-        inherit_from     => [ "VC-common", asm("x86_asm") ],
+        inherit_from     => [ "VC-noCE-common", asm("x86_asm") ],
+        as               => sub { my $ver=`nasm -v 2>NUL`;
+                                  my $vew=`nasmw -v 2>NUL`;
+                                  return $ver ge $vew ? "nasm" : "nasmw" },
+        asflags          => "-f win32",
+        asoutflag        => "-o",
+        ex_libs          => sub {
+            my @ex_libs = ();
+            # WIN32 UNICODE build gets linked with unicows.lib for
+            # backward compatibility with Win9x.
+            push @ex_libs, 'unicows.lib'
+                if (grep { $_ eq "UNICODE" } @user_defines);
+            return join(" ", @ex_libs, @_);
+        },
         sys_id           => "WIN32",
         bn_ops           => "BN_LLONG EXPORT_VAR_AS_FN",
         perlasm_scheme   => "win32n",
         build_scheme     => add("VC-W32", { separator => undef }),
     },
     "VC-CE" => {
-        inherit_from     => [ "BASE_Windows" ],
+        inherit_from     => [ "VC-common" ],
+        as               => "ml",
+        asflags          => "/nologo /Cp /coff /c /Cx /Zi",
+        asoutflag        => "/Fo",
         cc               => "cl",
+        cflags           =>
+            picker(default =>
+                   combine('/W3 /WX /GF /Gy /nologo -DUNICODE -D_UNICODE -DOPENSSL_SYS_WINCE -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -DNO_CHMOD -DOPENSSL_SMALL_FOOTPRINT',
+                           sub { vc_wince_info()->{cflags}; },
+                           sub { defined($ENV{'WCECOMPAT'})
+                                     ? '-I$(WCECOMPAT)/include' : (); },
+                           sub { defined($ENV{'PORTSDK_LIBPATH'})
+                                     ? '-I$(PORTSDK_LIBPATH)/../../include' : (); },
+                           sub { `cl 2>&1` =~ /Version ([0-9]+)\./ && $1>=14
+                                     ? ($disabled{shared} ? " /MT" : " /MD")
+                                     : " /MC"; }),
+                   debug   => "/Od -DDEBUG -D_DEBUG",
+                   release => "/O1i"),
+        lflags           => combine("/nologo /opt:ref",
+                                    sub { vc_wince_info()->{lflags}; },
+                                    sub { defined($ENV{PORTSDK_LIBPATH})
+                                              ? "/entry:mainCRTstartup" : (); }),
         sys_id           => "WINCE",
         bn_ops           => "BN_LLONG EXPORT_VAR_AS_FN",
-        dso_scheme       => "win32",
+        ex_libs          => sub {
+            my @ex_libs = ();
+            push @ex_libs, 'ws2.lib' unless $disabled{sock};
+            push @ex_libs, 'crypt32.lib';
+            if (defined($ENV{WCECOMPAT})) {
+                my $x = '$(WCECOMPAT)/lib';
+                if (-f "$x/$ENV{TARGETCPU}/wcecompatex.lib") {
+                    $x .= '/$(TARGETCPU)/wcecompatex.lib';
+                } else {
+                    $x .= '/wcecompatex.lib';
+                }
+                push @ex_libs, $x;
+            }
+            push @ex_libs, '$(PORTSDK_LIBPATH)/portlib.lib'
+                if (defined($ENV{'PORTSDK_LIBPATH'}));
+            push @ex_libs, ' /nodefaultlib coredll.lib corelibc.lib'
+                if ($ENV{'TARGETCPU'} eq "X86");
+            return @ex_libs;
+        },
         build_scheme     => add("VC-WCE", { separator => undef }),
     },
 
-#### Borland C++ 4.5
-    "BC-32" => {
-        inherit_from     => [ "BASE_Windows" ],
-        cc               => "bcc32",
-        sys_id           => "WIN32",
-        bn_ops           => "BN_LLONG EXPORT_VAR_AS_FN",
-        dso_scheme       => "win32",
-        build_scheme     => add("BC", { separator => undef }),
-    },
+###### Borland C++ 4.5
+##    "BC-32" => {
+##        inherit_from     => [ "BASE_Windows" ],
+##        cc               => "bcc32",
+##        sys_id           => "WIN32",
+##        bn_ops           => "BN_LLONG EXPORT_VAR_AS_FN",
+##        dso_scheme       => "win32",
+##        build_scheme     => add("BC", { separator => undef }),
+##    },
 
 #### MinGW
     "mingw" => {
diff --git a/Configurations/windows-makefile.tmpl b/Configurations/windows-makefile.tmpl
new file mode 100644
index 0000000..77cc377
--- /dev/null
+++ b/Configurations/windows-makefile.tmpl
@@ -0,0 +1,342 @@
+##
+## Makefile for OpenSSL
+##
+## {- join("\n## ", @autowarntext) -}
+{-
+ our $objext = $target{obj_extension} || ".obj";
+ our $depext = $target{dep_extension} || ".d";
+ our $exeext = $target{exe_extension} || ".exe";
+ our $libext = $target{lib_extension} || ".lib";
+ our $shlibext = $target{shared_extension} || ".dll";
+ our $shlibextimport = $target{shared_import_extension} || ".lib";
+ our $dsoext = $target{dso_extension} || ".dll";
+
+ sub shlib {
+     return () if $disabled{shared};
+     my $lib = shift;
+     return $unified_info{sharednames}->{$lib} . $shlibext;
+ }
+
+ sub shlib_import {
+     return () if $disabled{shared};
+     my $lib = shift;
+     return $lib . $shlibextimport;
+ }
+
+ sub dso {
+     my $dso = shift;
+
+     return $dso . $dsoext;
+ }
+ '';
+-}
+
+PLATFORM={- $config{target} -}
+SRCDIR={- $config{sourcedir} -}
+BLDDIR={- $config{builddir} -}
+
+VERSION={- $config{version} -}
+MAJOR={- $config{major} -}
+MINOR={- $config{minor} -}
+
+SHLIB_VERSION_NUMBER={- $config{shlib_version_number} -}
+
+LIBS={- join(" ", map { $_.$libext } @{$unified_info{libraries}}) -}
+SHLIBS={- join(" ", map { shlib($_) } @{$unified_info{libraries}}) -}
+ENGINES={- join(" ", map { dso($_) } @{$unified_info{engines}}) -}
+PROGRAMS={- join(" ", map { $_.$exeext } grep { !m|^test\\| } @{$unified_info{programs}}) -}
+TESTPROGS={- join(" ", map { $_.$exeext } grep { m|^test\\| } @{$unified_info{programs}}) -}
+SCRIPTS={- join(" ", @{$unified_info{scripts}}) -}
+
+DEPS={- join(" ", map { (my $x = $_) =~ s|\.o$|$depext|; $x; }
+                  grep { $unified_info{sources}->{$_}->[0] =~ /\.c$/ }
+                  keys %{$unified_info{sources}}); -}
+
+# Do not edit these manually. Use Configure with --prefix or --openssldir
+# to change this!  Short explanation in the top comment in Configure
+INSTALLTOP={- # $prefix is used in the OPENSSLDIR perl snippet
+	      #
+	      our $prefix = $config{prefix} || "/usr/local";
+              $prefix -}
+OPENSSLDIR={- #
+	      # The logic here is that if no --openssldir was given,
+	      # OPENSSLDIR will get the value from $prefix plus "/ssl".
+	      # If --openssldir was given and the value is an absolute
+	      # path, OPENSSLDIR will get its value without change.
+	      # If the value from --openssldir is a relative path,
+	      # OPENSSLDIR will get $prefix with the --openssldir
+	      # value appended as a subdirectory.
+	      #
+              use File::Spec::Functions;
+              our $openssldir =
+                  $config{openssldir} ?
+                      (file_name_is_absolute($config{openssldir}) ?
+                           $config{openssldir}
+                           : catdir($prefix, $config{openssldir}))
+                      : catdir($prefix, "ssl");
+              $openssldir -}
+LIBDIR={- #
+          # if $prefix/lib$target{multilib} is not an existing
+          # directory, then assume that it's not searched by linker
+          # automatically, in which case adding $target{multilib} suffix
+          # causes more grief than we're ready to tolerate, so don't...
+          our $multilib =
+              -d "$prefix/lib$target{multilib}" ? $target{multilib} : "";
+          our $libdir = $config{libdir} || "lib$multilib";
+          $libdir -}
+ENGINESDIR={- use File::Spec::Functions;
+              our $enginesdir = catdir($prefix,$libdir,"engines");
+	      $enginesdir -}
+
+CC={- $target{cc} -}
+CFLAGS={- join(" ",(map { "-D".$_} @{$target{defines}}, @{$config{defines}})) -} {- join(" ", quotify_l("-DENGINESDIR=\"$enginesdir\"", "-DOPENSSLDIR=\"$openssldir\"")) -} {- $target{cflags} -} {- $config{cflags} -}
+COUTFLAG={- $target{coutflag} || "/Fo" -}
+LD={- $target{ld} || "link" -}
+LDFLAGS={- $target{lflags} -}
+LDOUTFLAG={- $target{loutflag} || "/out:" -}
+EX_LIBS={- $target{ex_libs} -}
+LIB_CFLAGS={- join(" ", $target{lib_cflags}, $target{shared_cflag}) || "" -}
+SHARED_LDFLAGS={- $target{shared_ldflag} || "" -}
+DSO_CFLAGS={- join(" ", $target{dso_cflags}, $target{shared_cflag}) || "" -}
+DSO_LDFLAGS={- join(" ", $target{dso_lflags}, $target{shared_ldflag}) || "" -}
+BIN_CFLAGS={- $target{bin_cflags} -}
+BIN_LDFLAGS={- $target{bin_lflags} -}
+
+PERL={- $config{perl} -}
+
+AR={- $target{ar} -}
+ARFLAGS= {- $target{arflags} -}
+AROUTFLAG={- $target{aroutflag} || "/out:" -}
+
+AS={- $target{as} -}
+ASFLAGS={- $target{asflags} -}
+ASOUTFLAG={- $target{asoutflag} -}
+PERLASM_SCHEME= {- $target{perlasm_scheme} -}
+
+PROCESSOR= {- $config{processor} -}
+
+# The main targets ###################################################
+
+all: configdata.pm build_libs_nodep build_engines_nodep build_apps_nodep depend
+
+build_libs: configdata.pm build_libs_nodep depend
+build_libs_nodep: $(LIBS)
+build_engines: configdata.pm build_engines_nodep depend
+build_engines_nodep: $(ENGINES)
+build_apps: configdata.pm build_apps_nodep depend
+build_apps_nodep: $(PROGRAMS) $(SCRIPTS)
+build_tests: configdata.pm build_tests_nodep depend
+build_tests_nodep: $(TESTPROGS)
+
+test tests: build_tests_nodep build_apps_nodep build_engines_nodep depend
+	set SRCTOP=$(SRCDIR)
+	set BLDTOP=$(BLDDIR)
+	set PERL=$(PERL)
+	$(PERL) $(SRCDIR)\test\run_tests.pl $(TESTS)
+
+list-tests:
+	@set TOP=$(SRCDIR)
+	@set PERL=$(PERL)
+	@$(PERL) $(SRCDIR)\test\run_tests.pl list
+
+depend:
+
+# Building targets ###################################################
+
+configdata.pm: {- $config{build_file_template} -} $(SRCDIR)\Configure
+	@echo "Detected changed: $?"
+	@echo "Reconfiguring..."
+	$(PERL) $(SRCDIR)\Configure reconf
+	@echo "**************************************************"
+	@echo "***                                            ***"
+	@echo "***   Please run the same make command again   ***"
+	@echo "***                                            ***"
+	@echo "**************************************************"
+	@( exit 1 )
+
+{-
+ use File::Basename;
+ use File::Spec::Functions qw/:DEFAULT abs2rel rel2abs/;
+
+ # Helper function to figure out dependencies on libraries
+ # It takes a list of library names and outputs a list of dependencies
+ sub compute_lib_depends {
+     if ($disabled{shared}) {
+	 return map { $_.$libext } @_;
+     }
+     return map { shlib_import($_) } @_;
+ }
+
+  sub generatesrc {
+      my %args = @_;
+      (my $target = $args{src}) =~ s/\.[sS]$/.asm/;
+      my $generator = join(" ", @{$args{generator}});
+
+      if ($target !~ /\.asm$/) {
+          return <<"EOF";
+$target: $args{generator}->[0]
+	\$(PERL) $generator > \$@
+EOF
+      } else {
+          if ($args{generator}->[0] =~ /\.pl$/) {
+              $generator = '$(PERL) '.$generator;
+          } elsif ($args{generator}->[0] =~ /\.S$/) {
+              $generator = undef;
+          } else {
+              die "Generator type for $src unknown: $generator\n";
+          }
+
+          if (defined($generator)) {
+              # If the target is named foo.S in build.info, we want to
+              # end up generating foo.s in two steps.
+              if ($args{src} =~ /\.S$/) {
+                   return <<"EOF";
+$target: $args{generator}->[0]
+	set ASM=\$(AS)
+	set CC=\$(CC)
+	$generator \$@.S
+	\$(CC) \$(CFLAGS) /EP /C \$@.S > \$@
+        del /Q \$@.S
+EOF
+              }
+              # Otherwise....
+              return <<"EOF";
+$target: $args{generator}->[0]
+	set ASM=\$(AS)
+	set CC=\$(CC)
+	$generator \$@
+EOF
+          }
+          return <<"EOF";
+$target: $args{generator}->[0]
+	\$(CC) \$(CFLAGS) /EP /C \$< > \$@
+EOF
+      }
+  }
+
+ sub src2obj {
+     my %args = @_;
+     my $obj = $args{obj};
+     my @srcs = map { (my $x = $_) =~ s/\.[sS]$/.asm/; $x } ( @{$args{srcs}} );
+     my $srcs = join(" ",  @srcs);
+     my $deps = join(" ", @srcs, @{$args{deps}});
+     my $incs = join("", map { " /I ".$_ } @{$args{incs}});
+     my $ecflags = { lib => '$(LIB_CFLAGS)',
+		     dso => '$(DSO_CFLAGS)',
+		     bin => '$(BIN_CFLAGS)' } -> {$args{intent}};
+     my $makedepprog = $config{makedepprog};
+     if ($srcs[0] =~ /\.asm$/) {
+         return <<"EOF";
+$obj$objext: $deps
+	\$(AS) \$(ASFLAGS) \$(ASOUTFLAG)\$\@ $srcs
+EOF
+     }
+     return <<"EOF";
+$obj$depext: $deps
+	\$(CC) \$(CFLAGS) $ecflags$inc /Zs /showIncludes $srcs 2>&1 | \\
+	    \$(PERL) -n << > $obj$depext
+chomp;
+s/^Note: including file: *//;
+\$\$collect{\$\$_} = 1;
+END { print '$obj$objext: ',join(" ", sort keys \%collect),"\\n" }
+<<KEEP
+$obj$objext: $obj$depext
+	\$(CC) \$(CFLAGS) $ecflags$incs -c \$(COUTFLAG)\$\@ @<<
+$srcs
+<<KEEP
+EOF
+ }
+
+ # On Unix, we build shlibs from static libs, so we're ignoring the
+ # object file array.  We *know* this routine is only called when we've
+ # configure 'shared'.
+ sub libobj2shlib {
+     my %args = @_;
+     my $lib = $args{lib};
+     my $shlib = $args{shlib};
+     (my $mkdef_key = $lib) =~ s/^lib//i;
+     my $objs = join("\n", map { $_.$objext } @{$args{objs}});
+     my $linklibs = join("",
+			 map { "\n$_" } compute_lib_depends(@{$args{deps}}));
+     my $deps = join(" ",
+		     (map { $_.$objext } @{$args{objs}}),
+		     compute_lib_depends(@{$args{deps}}));
+     my $ordinalsfile = defined($args{ordinals}) ? $args{ordinals}->[1] : "";
+     my $mkdef_pl = abs2rel(rel2abs(catfile($config{sourcedir},
+					    "util", "mkdef.pl")),
+			    rel2abs($config{builddir}));
+     my $target = shlib_import($lib);
+     return <<"EOF"
+$target: $deps $ordinalsfile
+	\$(PERL) $mkdef_pl "$mkdef_key" 32 > $shlib.def
+	\$(LD) \$(LDFLAGS) \$(SHARED_LDFLAGS) \\
+		/implib:$target \$(LDOUTFLAG)$shlib$shlibext /def:$shlib.def @<<
+$objs$linklibs \$(EX_LIBS)
+<<
+EOF
+ }
+ sub obj2dso {
+     my %args = @_;
+     my $dso = $args{lib};
+     my $dso_n = basename($dso);
+     my $objs = join("\n", map { $_.$objext } @{$args{objs}});
+     my $linklibs = join("",
+			 map { "\n$_" } compute_lib_depends(@{$args{deps}}));
+     my $deps = join(" ",
+		     (map { $_.$objext } @{$args{objs}}),
+		     compute_lib_depends(@{$args{deps}}));
+     return <<"EOF";
+$dso$dsoext: $deps
+	\$(LD) \$(LDFLAGS) \$(DSO_LDFLAGS) \$(LDOUTFLAG)$dso$dsoext /def:<< @<<
+LIBRARY         $dso_n
+EXPORTS
+    bind_engine		@1
+    v_check		@2
+<<
+$objs$linklibs \$(EX_LIBS)
+<<
+EOF
+ }
+ sub obj2lib {
+     my %args = @_;
+     my $lib = $args{lib};
+     my $objs = join("\n", map { $_.$objext } @{$args{objs}});
+     my $deps = join(" ", map { $_.$objext } @{$args{objs}});
+     return <<"EOF";
+$lib$libext: $deps
+	\$(AR) \$(ARFLAGS) \$(AROUTFLAG)$lib$libext @<<
+$objs
+<<
+EOF
+ }
+ sub obj2bin {
+     my %args = @_;
+     my $bin = $args{bin};
+     my $objs = join("\n", map { $_.$objext } @{$args{objs}});
+     my $linklibs = join("",
+			 map { "\n$_" } compute_lib_depends(@{$args{deps}}));
+     my $deps = join(" ",
+		     (map { $_.$objext } @{$args{objs}}),
+		     compute_lib_depends(@{$args{deps}}));
+     return <<"EOF";
+$bin$exeext: $deps
+	\$(LD) \$(LDFLAGS) \$(BIN_LDFLAGS) \$(LDOUTFLAG)$bin$exeext @<<
+$objs setargv.obj$linklibs \$(EX_LIBS)
+<<
+EOF
+  }
+  sub in2script {
+      my %args = @_;
+      my $script = $args{script};
+      my $sources = join(" ", @{$args{sources}});
+      my $dofile = abs2rel(rel2abs(catfile($config{sourcedir},
+                                           "util", "dofile.pl")),
+                           rel2abs($config{builddir}));
+      return <<"EOF";
+$script: $sources
+	\$(PERL) "-I\$(BLDDIR)" -Mconfigdata "$dofile" \\
+	    "-o$target{build_file}" $sources > "$script"
+EOF
+  }
+  ""    # Important!  This becomes part of the template result.
+-}
diff --git a/INSTALL b/INSTALL
index a96eb8f..4799d62 100644
--- a/INSTALL
+++ b/INSTALL
@@ -3,7 +3,7 @@
  ---------------------------------
 
  [Installation on DOS (with djgpp), Windows, MacOS (before MacOS X)
-  and NetWare is described in INSTALL.DJGPP, INSTALL.WIN, INSTALL.MacOS
+  and NetWare is described in INSTALL.DJGPP, INSTALL.MacOS
   and INSTALL.NW.
   
   This document describes installation on the main supported operating
@@ -22,7 +22,8 @@
  For more details regarding specific platforms, there are these notes
  available:
 
-  * NOTES.VMS
+  * NOTES.VMS (OpenVMS)
+  * NOTES.WIN (any Windows except for Windows CE)
 
  Quick Start
  -----------
@@ -43,6 +44,12 @@
     $ mms test
     $ mms install
 
+  on Windows (only pick one of the targets for configuration):
+
+    $ perl Configure { VC-WIN32 | VC-WIN64A | VC-WIN64I | VC-CE }
+    $ nmake
+    $ nmake test
+
  [If any of these steps fails, see section Installation in Detail below.]
 
  This will build and install OpenSSL in the default location, which is:
@@ -50,6 +57,7 @@
   Unix:    normal installation directories under /usr/local
   OpenVMS: SYS$COMMON:[OPENSSL-'version'...], where 'version' is the
            OpenSSL version number ('major'_'minor').
+  Windows: currently don't have an install function     <TBA>
 
  If you want to install it anywhere else, run config like this:
 
@@ -152,6 +160,8 @@
 
  1a. Configure OpenSSL for your operation system automatically:
 
+     NOTE: This is not available on Windows.
+
        $ ./config [options]                             # Unix
 
        or
@@ -235,6 +245,13 @@
 
        $ @[PATH.TO.OPENSSL.SOURCE]Configure {target} {options}
 
+     Windows example:
+
+       $ C:
+       $ mkdir \temp-openssl
+       $ cd \temp-openssl
+       $ perl d:\PATH\TO\OPENSSL\SOURCE\Configure {target} {options}
+
      Paths can be relative just as well as absolute.  Configure will
      do its best to translate them to relative paths whenever possible.
 
@@ -242,6 +259,7 @@
 
        $ make                                           # Unix
        $ mms                                            ! (or mmk) OpenVMS
+       $ nmake                                          # Windows
 
      This will build the OpenSSL libraries (libcrypto.a and libssl.a on
      Unix, corresponding on other platforms) and the OpenSSL binary
@@ -268,6 +286,7 @@
 
        $ make test                                      # Unix
        $ mms test                                       ! OpenVMS
+       $ nmake test                                     # Windows
 
      If some tests fail, look at the output.  There may be reasons for
      the failure that isn't a problem in OpenSSL itself (like a
@@ -279,11 +298,15 @@
        $ DEFINE HARNESS_VERBOSE YES
        $ mms test                                       ! OpenVMS
 
+       $ set HARNESS_VERBOSE=yes
+       $ nmake test                                     # Windows
+
      If you want to run just one or a few specific tests, you can use
      the make variable TESTS to specify them, like this:
 
        $ make TESTS='test_rsa test_dsa' test            # Unix
        $ mms/macro="TESTS=test_rsa test_dsa" test       ! OpenVMS
+       $ nmake TESTS='test_rsa test_dsa' test           # Windows
 
      And of course, you can combine (Unix example shown):
        
@@ -293,6 +316,7 @@
 
        $ make list-tests                                # Unix
        $ mms list-tests                                 ! OpenVMS
+       $ nmake list-tests                               # Windows
 
      Have a look at the manual for the perl module Test::Harness to
      see what other HARNESS_* variables there are.
diff --git a/INSTALL.WIN b/NOTES.WIN
similarity index 56%
rename from INSTALL.WIN
rename to NOTES.WIN
index 084388e..c204278 100644
--- a/INSTALL.WIN
+++ b/NOTES.WIN
@@ -1,29 +1,111 @@
 
- INSTALLATION ON WINDOWS PLATFORMS
- ---------------------------------
+ NOTES FOR THE WINDOWS PLATFORMS
+ ===============================
 
- [Instructions for building for Windows CE can be found in INSTALL.WCE]
+ [Notes for Windows CE can be found in INSTALL.WCE]
 
- Here are a few comments about building OpenSSL for Windows environments.
+ Requirement details for native (Visual C++) builds
+ --------------------------------------------------
 
- - you need Perl.  Unless you will build on Cygwin, you will need
-   ActiveState Perl, available from http://www.activestate.com/ActivePerl.  
+ - You need Perl.  We recommend ActiveState Perl, available from
+   http://www.activestate.com/ActivePerl.
    You also need the perl module Text::Template, available on CPAN.
    Please read README.PERL for more information.
 
- - one of the following C compilers:
+ - You need a C compiler.  OpenSSL has been tested to build with these:
 
-  * Visual C++
-  * GNU C (Cygwin or MinGW)
+   * Visual C++
 
-- Netwide Assembler, a.k.a. NASM, available from http://www.nasm.us,
-  is required if you intend to utilize assembler modules. Note that NASM
-  is now the only supported assembler. Without this the "Configure" step below
-  must be done with the "no-asm" option. The Microsoft provided assembler is NOT
-  supported.
+ - Netwide Assembler, a.k.a. NASM, available from http://www.nasm.us,
+   is required if you intend to utilize assembler modules. Note that NASM
+   is the only supported assembler. The Microsoft provided assembler is NOT
+   supported.
 
- Visual C++
- ----------
+
+ GNU C (Cygwin)
+ --------------
+
+ Cygwin implements a Posix/Unix runtime system (cygwin1.dll) on top of the
+ Windows subsystem and provides a bash shell and GNU tools environment.
+ Consequently, a make of OpenSSL with Cygwin is virtually identical to the
+ Unix procedure. It is also possible to create Windows binaries that only
+ use the Microsoft C runtime system (msvcrt.dll or crtdll.dll) using
+ MinGW. MinGW can be used in the Cygwin development environment or in a
+ standalone setup as described in the following section.
+
+ To build OpenSSL using Cygwin, you need to:
+
+ * Install Cygwin (see http://cygwin.com/)
+
+ * Install Perl and ensure it is in the path. Both Cygwin perl
+   (5.6.1-2 or newer) and ActivePerl work.
+
+ * Run the Cygwin bash shell
+
+ Apart from that, follow the Unix instructions in INSTALL.
+
+ NOTE: "make test" and normal file operations may fail in directories
+ mounted as text (i.e. mount -t c:\somewhere /home) due to Cygwin
+ stripping of carriage returns. To avoid this ensure that a binary
+ mount is used, e.g. mount -b c:\somewhere /home.
+
+
+ GNU C (MinGW/MSYS)
+ -------------
+
+ * Compiler and shell environment installation:
+
+   MinGW and MSYS are available from http://www.mingw.org/, both are
+   required. Run the installers and do whatever magic they say it takes
+   to start MSYS bash shell with GNU tools on its PATH.
+
+   Alternativelly, one can use MSYS2 from http://msys2.github.io/,
+   which includes MingW (32-bit and 64-bit).
+
+ * It is also possible to cross-compile it on Linux by configuring
+   with './Configure --cross-compile-prefix=i386-mingw32- mingw ...'.
+   Other possible cross compile prefixes include x86_64-w64-mingw32-
+   and i686-w64-mingw32-.
+
+
+ Linking your application
+ ------------------------
+
+ If you link with static OpenSSL libraries then you're expected to
+ additionally link your application with WS2_32.LIB, ADVAPI32.LIB,
+ GDI32.LIB and USER32.LIB. Those developing non-interactive service
+ applications might feel concerned about linking with the latter two,
+ as they are justly associated with interactive desktop, which is not
+ available to service processes. The toolkit is designed to detect in
+ which context it's currently executed, GUI, console app or service,
+ and act accordingly, namely whether or not to actually make GUI calls.
+ Additionally those who wish to /DELAYLOAD:GDI32.DLL and /DELAYLOAD:USER32.DLL
+ and actually keep them off service process should consider
+ implementing and exporting from .exe image in question own
+ _OPENSSL_isservice not relying on USER32.DLL.
+ E.g., on Windows Vista and later you could:
+
+	__declspec(dllexport) __cdecl BOOL _OPENSSL_isservice(void)
+	{   DWORD sess;
+	    if (ProcessIdToSessionId(GetCurrentProcessId(),&sess))
+	        return sess==0;
+	    return FALSE;
+	}
+
+ If you link with OpenSSL .DLLs, then you're expected to include into
+ your application code small "shim" snippet, which provides glue between
+ OpenSSL BIO layer and your compiler run-time. See the OPENSSL_Applink
+ manual page for further details.
+
+
+ "Classic" builds (Visual C++)
+ ----------------
+
+ [OpenSSL was classically built using a script called mk1mf.  This is
+  still available by configuring with --classic.  The notes below are
+  using this flag, and are tentative.  Use with care.
+
+  NOTE: this won't be available for long.]
 
  If you want to compile in the assembly language routines with Visual
  C++, then you will need the Netwide Assembler binary, nasmw.exe or nasm.exe, to
@@ -35,7 +117,7 @@
 
  For Win32:
 
- > perl Configure VC-WIN32 --prefix=c:\some\openssl\dir
+ > perl Configure VC-WIN32 --classic --prefix=c:\some\openssl\dir
  > ms\do_nasm
 
  Note: replace the last line above with the following if not using the assembly
@@ -45,12 +127,12 @@
 
  For Win64/x64:
 
- > perl Configure VC-WIN64A --prefix=c:\some\openssl\dir
+ > perl Configure VC-WIN64A --classic --prefix=c:\some\openssl\dir
  > ms\do_win64a
 
  For Win64/IA64:
 
- > perl Configure VC-WIN64I --prefix=c:\some\openssl\dir
+ > perl Configure VC-WIN64I --classic --prefix=c:\some\openssl\dir
  > ms\do_win64i
 
  Where the prefix argument specifies where OpenSSL will be installed to.
@@ -84,109 +166,3 @@
 
  You can also build a static version of the library using the Makefile
  ms\nt.mak
-
- GNU C (Cygwin)
- --------------
-
- Cygwin implements a Posix/Unix runtime system (cygwin1.dll) on top of the
- Windows subsystem and provides a bash shell and GNU tools environment.
- Consequently, a make of OpenSSL with Cygwin is virtually identical to the
- Unix procedure. It is also possible to create Windows binaries that only
- use the Microsoft C runtime system (msvcrt.dll or crtdll.dll) using
- MinGW. MinGW can be used in the Cygwin development environment or in a
- standalone setup as described in the following section.
-
- To build OpenSSL using Cygwin:
-
- * Install Cygwin (see http://cygwin.com/)
-
- * Install Perl and ensure it is in the path. Both Cygwin perl
-   (5.6.1-2 or newer) and ActivePerl work.
-
- * Run the Cygwin bash shell
-
- * $ tar zxvf openssl-x.x.x.tar.gz
-   $ cd openssl-x.x.x
-
-   To build the Cygwin version of OpenSSL:
-
-   $ ./config
-   [...]
-   $ make
-   [...]
-   $ make test
-   $ make install
-
-   This will create a default install in /usr/local/ssl.
-
-   To build the MinGW version (native Windows) in Cygwin:
-
-   $ ./Configure mingw
-   [...]
-   $ make
-   [...]
-   $ make test
-   $ make install
-
- Cygwin Notes:
-
- "make test" and normal file operations may fail in directories
- mounted as text (i.e. mount -t c:\somewhere /home) due to Cygwin
- stripping of carriage returns. To avoid this ensure that a binary
- mount is used, e.g. mount -b c:\somewhere /home.
-
- GNU C (MinGW/MSYS)
- -------------
-
- * Compiler and shell environment installation:
-
-   MinGW and MSYS are available from http://www.mingw.org/, both are
-   required. Run the installers and do whatever magic they say it takes
-   to start MSYS bash shell with GNU tools on its PATH.
-
- * Compile OpenSSL:
-
-   $ ./config
-   [...]
-   $ make
-   [...]
-   $ make test
-
-   This will create the library and binaries in root source directory
-   and openssl.exe application in apps directory.
-
-   It is also possible to cross-compile it on Linux by configuring
-   with './Configure --cross-compile-prefix=i386-mingw32- mingw ...'. Other
-   possible targets include x86_64-w64-mingw32- and i686-w64-mingw32-.
-
-   libcrypto.a and libssl.a are the static libraries. To use the DLLs,
-   link with libcrypto32.a and libssl32.a instead.
-
- Linking your application
- ------------------------
-
- If you link with static OpenSSL libraries [those built with ms/nt.mak],
- then you're expected to additionally link your application with
- WS2_32.LIB, ADVAPI32.LIB, GDI32.LIB and USER32.LIB. Those developing
- non-interactive service applications might feel concerned about linking
- with the latter two, as they are justly associated with interactive
- desktop, which is not available to service processes. The toolkit is
- designed to detect in which context it's currently executed, GUI,
- console app or service, and act accordingly, namely whether or not to
- actually make GUI calls. Additionally those who wish to
- /DELAYLOAD:GDI32.DLL and /DELAYLOAD:USER32.DLL and actually keep them
- off service process should consider implementing and exporting from
- .exe image in question own _OPENSSL_isservice not relying on USER32.DLL.
- E.g., on Windows Vista and later you could:
-
-	__declspec(dllexport) __cdecl BOOL _OPENSSL_isservice(void)
-	{   DWORD sess;
-	    if (ProcessIdToSessionId(GetCurrentProcessId(),&sess))
-	        return sess==0;
-	    return FALSE;
-	}
-
- If you link with OpenSSL .DLLs, then you're expected to include into
- your application code small "shim" snippet, which provides glue between
- OpenSSL BIO layer and your compiler run-time. See the OPENSSL_Applink
- manual page for further details.
diff --git a/appveyor.yml b/appveyor.yml
index dda4dba..6367c3d 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -15,28 +15,19 @@ before_build:
         If ($env:Platform -Match "x86") {
             $env:VCVARS_PLATFORM="x86"
             $env:TARGET="VC-WIN32"
-            $env:DO="do_ms"
         } Else {
             $env:VCVARS_PLATFORM="amd64"
             $env:TARGET="VC-WIN64A"
-            $env:DO="do_win64a"
-        }
-    - ps: >-
-        If ($env:Configuration -Like "*shared*") {
-            $env:MAK="ntdll.mak"
-        } Else {
-            $env:MAK="nt.mak"
         }
     - ps: $env:VSCOMNTOOLS=(Get-Content ("env:VS" + "$env:VSVER" + "0COMNTOOLS"))
     - call "%VSCOMNTOOLS%\..\..\VC\vcvarsall.bat" %VCVARS_PLATFORM%
     - perl Configure %TARGET% no-asm
-    - call ms\%DO%
 
 build_script:
-    - nmake /f ms\%MAK%
+    - nmake
 
 test_script:
-    - nmake /f ms\%MAK% test
+    - nmake test
 
 notifications:
     - provider: Email
diff --git a/build.info b/build.info
index f56b531..1a201c3 100644
--- a/build.info
+++ b/build.info
@@ -12,6 +12,9 @@ IF[{- $config{target} =~ /^Cygwin/ -}]
 ELSIF[{- $config{target} =~ /^mingw/ -}]
  SHARED_NAME[libcrypto]=libcrypto-{- $config{shlib_major}."_".$config{shlib_minor} -}{- $config{target} eq "mingw64" ? "-x64" : "" -}
  SHARED_NAME[libssl]=libssl-{- $config{shlib_major}."_".$config{shlib_minor} -}{- $config{target} eq "mingw64" ? "-x64" : "" -}
+ELSIF[{- $config{target} =~ /^VC-/ -}]
+ SHARED_NAME[libcrypto]=libcrypto-{- $config{shlib_major}."_".$config{shlib_minor} -}{- $config{target} =~ /^VC-WIN64/ ? "-x64" : "" -}
+ SHARED_NAME[libssl]=libssl-{- $config{shlib_major}."_".$config{shlib_minor} -}{- $config{target} =~ /^VC-WIN64/ ? "-x64" : "" -}
 ENDIF
 
 # VMS has a cultural standard where all libraries are prefixed.
diff --git a/test/recipes/70-test_sslcertstatus.t b/test/recipes/70-test_sslcertstatus.t
index ffcb279..216804c 100755
--- a/test/recipes/70-test_sslcertstatus.t
+++ b/test/recipes/70-test_sslcertstatus.t
@@ -61,7 +61,7 @@ my $test_name = "test_sslcertstatus";
 setup($test_name);
 
 plan skip_all => "TLSProxy isn't usable on $^O"
-    if $^O =~ /^VMS$/;
+    if $^O =~ /^(VMS|MSWin32)$/;
 
 plan skip_all => "$test_name needs the dynamic engine feature enabled"
     if disabled("engine") || disabled("dynamic-engine");
diff --git a/test/recipes/70-test_sslextension.t b/test/recipes/70-test_sslextension.t
index 93bb6fe..f9a6573 100755
--- a/test/recipes/70-test_sslextension.t
+++ b/test/recipes/70-test_sslextension.t
@@ -61,7 +61,7 @@ my $test_name = "test_sslextension";
 setup($test_name);
 
 plan skip_all => "TLSProxy isn't usable on $^O"
-    if $^O =~ /^VMS$/;
+    if $^O =~ /^(VMS|MSWin32)$/;
 
 plan skip_all => "$test_name needs the dynamic engine feature enabled"
     if disabled("engine") || disabled("dynamic-engine");
diff --git a/test/recipes/70-test_sslsessiontick.t b/test/recipes/70-test_sslsessiontick.t
index 16ef4ea..f13c7ba 100755
--- a/test/recipes/70-test_sslsessiontick.t
+++ b/test/recipes/70-test_sslsessiontick.t
@@ -62,7 +62,7 @@ my $test_name = "test_sslsessiontick";
 setup($test_name);
 
 plan skip_all => "TLSProxy isn't usable on $^O"
-    if $^O =~ /^VMS$/;
+    if $^O =~ /^(VMS|MSWin32)$/;
 
 plan skip_all => "$test_name needs the dynamic engine feature enabled"
     if disabled("engine") || disabled("dynamic-engine");
diff --git a/test/recipes/70-test_sslskewith0p.t b/test/recipes/70-test_sslskewith0p.t
index 850820d..90fcf30 100755
--- a/test/recipes/70-test_sslskewith0p.t
+++ b/test/recipes/70-test_sslskewith0p.t
@@ -61,7 +61,7 @@ my $test_name = "test_sslskewith0p";
 setup($test_name);
 
 plan skip_all => "TLSProxy isn't usable on $^O"
-    if $^O =~ /^VMS$/;
+    if $^O =~ /^(VMS|MSWin32)$/;
 
 plan skip_all => "$test_name needs the dynamic engine feature enabled"
     if disabled("engine") || disabled("dynamic-engine");
diff --git a/test/recipes/70-test_sslvertol.t b/test/recipes/70-test_sslvertol.t
index 02c9a3b..a35eab9 100755
--- a/test/recipes/70-test_sslvertol.t
+++ b/test/recipes/70-test_sslvertol.t
@@ -61,7 +61,7 @@ my $test_name = "test_sslextension";
 setup($test_name);
 
 plan skip_all => "TLSProxy isn't usable on $^O"
-    if $^O =~ /^VMS$/;
+    if $^O =~ /^(VMS|MSWin32)$/;
 
 plan skip_all => "$test_name needs the dynamic engine feature enabled"
     if disabled("engine") || disabled("dynamic-engine");
diff --git a/test/recipes/70-test_tlsextms.t b/test/recipes/70-test_tlsextms.t
index 55e3d75..06b4d9e 100644
--- a/test/recipes/70-test_tlsextms.t
+++ b/test/recipes/70-test_tlsextms.t
@@ -62,7 +62,7 @@ my $test_name = "test_tlsextms";
 setup($test_name);
 
 plan skip_all => "TLSProxy isn't usable on $^O"
-    if $^O =~ /^VMS$/;
+    if $^O =~ /^(VMS|MSWin32)$/;
 
 plan skip_all => "$test_name needs the dynamic engine feature enabled"
     if disabled("engine") || disabled("dynamic-engine");
diff --git a/test/recipes/90-test_networking.t b/test/recipes/90-test_networking.t
index 84d616d..16ece75 100644
--- a/test/recipes/90-test_networking.t
+++ b/test/recipes/90-test_networking.t
@@ -61,7 +61,7 @@ my $test_name = "test_networking";
 setup($test_name);
 
 plan skip_all => "TLSProxy isn't usable on $^O"
-    if $^O =~ /^VMS$/;
+    if $^O =~ /^(VMS|MSWin32)$/;
 
 plan skip_all => "$test_name needs the dynamic engine feature enabled"
     if disabled("engine") || disabled("dynamic-engine");


More information about the openssl-commits mailing list