openssl / openssl

TLS/SSL and crypto library
https://www.openssl.org
Apache License 2.0
25.27k stars 10.02k forks source link

win10 VS2022 build openssl fail #21014

Open injertao opened 1 year ago

injertao commented 1 year ago

perl Configure VC-WIN64A

Using os-specific seed configuration

Failure! build file wasn't produced. Please read INSTALL.md and associated NOTES-* files. You may also have to look over your available compiler tool chain or change your configuration.

NASM not found - make sure it's installed and available on %PATH%

i use strawberry-perl-5.32.1.1-64bit

The PATH is also correct

I have almost looked at all the problems and still haven't solved them

mattcaswell commented 1 year ago

So I assume you have actually installed NASM and put it on your %PATH% as per the NOTES-WINDOWS.md file?

What happens when you try and run NASM directly from the command line, e.g.

> nasm --version
injertao commented 1 year ago

So I assume you have actually installed NASM and put it on your %PATH% as per the NOTES-WINDOWS.md file?

What happens when you try and run NASM directly from the command line, e.g.

> nasm --version

C:\Work\Code\openssl-openssl-3.1.0>nasm --version NASM version 2.16.01 compiled on Dec 21 2022

mattcaswell commented 1 year ago

Hmmm. Curious. Let's confirm that you are picking up the expected version of perl. Please report the result of:

> perl --version
injertao commented 1 year ago

Hmmm. Curious. Let's confirm that you are picking up the expected version of perl. Please report the result of:

> perl --version

C:\Work\Code\openssl-openssl-3.1.0>perl --version

This is perl 5, version 32, subversion 1 (v5.32.1) built for MSWin32-x64-multi-thread

Copyright 1987-2021, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page.

mattcaswell commented 1 year ago

Hmm. I have no idea.

The error message comes from this piece of perl code in Configurations\10-main.conf:

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   => "-g",
                                asflags   => "-Ox -f win64 -DNEAR",
                                asoutflag => "-o " };
        } elsif ($disabled{asm}) {
            # assembler is still used to compile uplink shim
            $vc_win64a_info = { AS        => "ml64",
                                ASFLAGS   => "/nologo /Zi",
                                asflags   => "/c /Cp /Cx",
                                asoutflag => "/Fo" };
        } else {
            $die->("NASM not found - make sure it's installed and available on %PATH%\n");
            $vc_win64a_info = { AS        => "{unknown}",
                                ASFLAGS   => "",
                                asflags   => "",
                                asoutflag => "" };
        }
    }
    return $vc_win64a_info;
}

So, it's checking that it can run nasm, and if it can that the version is >= 2.0 - which it is for you since you seem to have 2.16.01.

Maybe @levitte has some suggestions.

dg0yt commented 1 year ago

What is the output of

perl -e "print `nasm -v 2>NUL`;"
dg0yt commented 1 year ago

(Basically I'm wondering if environment variable PERL5SHELL might be set to something which doesn't understand 2>NUL, such as powershell.)

nhorman commented 2 months ago

marking as inactive, will be closed at the completion of 3.4 dev without further input