Fix build of MSVC with OpenSSL 3.0.0
authorMichael Paquier
Wed, 20 Oct 2021 07:49:00 +0000 (16:49 +0900)
committerMichael Paquier
Wed, 20 Oct 2021 07:49:00 +0000 (16:49 +0900)
The build scripts of Visual Studio would fail to detect properly a 3.0.0
build as the check on the second digit was failing.  This is adjusted
where needed, allowing the builds to complete.  Note that the MSIs of
OpenSSL mentioned in the documentation have not changed any library
names for Win32 and Win64, making this change straight-forward.

Reported-by: htalaco, via github
Reviewed-by: Daniel Gustafsson
Discussion: https://postgr.es/m/[email protected]
Backpatch-through: 9.6

src/tools/msvc/Solution.pm

index 5d9beff196c365504d7b5533cbb5f5d59343484c..cf8b24f069087db62de0ad0becf5a211a990c62e 100644 (file)
@@ -521,7 +521,8 @@ sub GenerateFiles
        my ($digit1, $digit2, $digit3) = $self->GetOpenSSLVersion();
 
        # More symbols are needed with OpenSSL 1.1.0 and above.
-       if ($digit1 >= '1' && $digit2 >= '1' && $digit3 >= '0')
+       if (   ($digit1 >= '3' && $digit2 >= '0' && $digit3 >= '0')
+           || ($digit1 >= '1' && $digit2 >= '1' && $digit3 >= '0'))
        {
            $define{HAVE_ASN1_STRING_GET0_DATA} = 1;
            $define{HAVE_BIO_GET_DATA}          = 1;
@@ -936,7 +937,8 @@ sub AddProject
        # changed their library names from:
        # - libeay to libcrypto
        # - ssleay to libssl
-       if ($digit1 >= '1' && $digit2 >= '1' && $digit3 >= '0')
+       if (   ($digit1 >= '3' && $digit2 >= '0' && $digit3 >= '0')
+           || ($digit1 >= '1' && $digit2 >= '1' && $digit3 >= '0'))
        {
            my $dbgsuffix;
            my $libsslpath;