Only allow Microsoft assembler with no-asm on Windows
authorRichard Levitte <levitte@openssl.org>
Mon, 18 Apr 2016 18:15:33 +0000 (20:15 +0200)
committerRichard Levitte <levitte@openssl.org>
Tue, 19 Apr 2016 18:57:08 +0000 (20:57 +0200)
This also restores the possibility to have ml used with VC-WIN32 with
no-asm, which was lost during the mk1mf -> unified transition.

Reviewed-by: Andy Polyakov <appro@openssl.org>
Configurations/10-main.conf

index de591c90e14dfc94c5bcbe77de77e5e31f8fba07..e3473c85ef63bd813e6339782c0a6bdead897384 100644 (file)
@@ -9,15 +9,39 @@ sub vc_win64a_info {
             $vc_win64a_info = { as        => "nasm",
                                 asflags   => "-f win64 -DNEAR -Ox -g",
                                 asoutflag => "-o" };
-        } else {
+        } elsif ($disabled{asm}) {
             $vc_win64a_info = { as        => "ml64",
                                 asflags   => "/c /Cp /Cx /Zi",
                                 asoutflag => "/Fo" };
+        } else {
+            die "NASM not found - please read INSTALL and NOTES.WIN for further details\n";
         }
     }
     return $vc_win64a_info;
 }
 
+my $vc_win32_info = {};
+sub vc_win32_info {
+    unless (%$vc_win32_info) {
+        my $ver=`nasm -v 2>NUL`;
+        my $vew=`nasmw -v 2>NUL`;
+        if ($ver ne "" || $vew ne "") {
+            $vc_win32_info = { as        => $ver ge $vew ? "nasm" : "nasmw",
+                               asflags   => "-f win32",
+                               asoutflag => "-o",
+                               perlasm_scheme => "win32n" };
+        } elsif ($disabled{asm}) {
+            $vc_win32_info = { as        => "ml",
+                               asflags   => "/nologo /Cp /coff /c /Cx /Zi",
+                               asoutflag => "/Fo",
+                               perlasm_scheme => "win32" };
+        } else {
+            die "NASM not found - please read INSTALL and NOTES.WIN for further details\n";
+        }
+    }
+    return $vc_win32_info;
+}
+
 my $vc_wince_info = {};
 sub vc_wince_info {
     unless (%$vc_wince_info) {
@@ -1344,11 +1368,9 @@ sub vms_info {
         # configure with 'perl Configure VC-WIN32 -DUNICODE -D_UNICODE'
         inherit_from     => [ "VC-noCE-common", asm("x86_asm"),
                               sub { $disabled{shared} ? () : "uplink_common" } ],
-        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",
+        as               => sub { vc_win32_info()->{as} },
+        asflags          => sub { vc_win32_info()->{asflags} },
+        asoutflag        => sub { vc_win32_info()->{asoutflag} },
         ex_libs          => add(sub {
             my @ex_libs = ();
             # WIN32 UNICODE build gets linked with unicows.lib for
@@ -1359,7 +1381,7 @@ sub vms_info {
         }),
         sys_id           => "WIN32",
         bn_ops           => "BN_LLONG EXPORT_VAR_AS_FN",
-        perlasm_scheme   => "win32n",
+        asoutflag        => sub { vc_win32_info()->{perlasm_scheme} },
         build_scheme     => add("VC-W32", { separator => undef }),
     },
     "VC-CE" => {