Fix build of MSVC with OpenSSL 3.0.0
authorMichael Paquier <[email protected]>
Wed, 20 Oct 2021 07:49:14 +0000 (16:49 +0900)
committerMichael Paquier <[email protected]>
Wed, 20 Oct 2021 07:49:14 +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 002546fec9cdcfbc77c5b510ba5cfaa83abf4b66..1e2afa2fb2b1b2c47abf95e1c12f59c29e3ea000 100644 (file)
@@ -263,7 +263,8 @@ s{PG_VERSION_STR "[^"]+"}{__STRINGIFY(x) #x\n#define __STRINGIFY2(z) __STRINGIFY
            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'))
            {
                print O "#define HAVE_ASN1_STRING_GET0_DATA 1\n";
                print O "#define HAVE_BIO_GET_DATA 1\n";
@@ -575,7 +576,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;