]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Fix MSVC scripts when building with GSSAPI/Kerberos
authorMichael Paquier <michael@paquier.xyz>
Thu, 27 May 2021 11:11:00 +0000 (20:11 +0900)
committerMichael Paquier <michael@paquier.xyz>
Thu, 27 May 2021 11:11:00 +0000 (20:11 +0900)
The deliverables of upstream Kerberos on Windows are installed with
paths that do not match our MSVC scripts.  First, the include folder was
named "inc/" in our scripts, but the upstream MSIs use "include/".
Second, the build would fail with 64-bit environments as the libraries
are named differently.

This commit adjusts the MSVC scripts to be compatible with the latest
installations of upstream, and I have checked that the compilation was
able to work with the 32-bit and 64-bit installations.

Special thanks to Kondo Yuta for the help in investigating the situation
in hamerkop, which had an incorrect configuration for the GSS
compilation.

Reported-by: Brian Ye
Discussion: https://postgr.es/m/162128202219.27274.12616756784952017465@wrigleys.postgresql.org
Backpatch-through: 9.6

src/tools/msvc/Solution.pm

index 3c5fe5dddcbd23723e9c044a9ec14548b93d4a45..97f012bbb5e4bc5572267f319349b8f424038ec8 100644 (file)
@@ -1023,10 +1023,26 @@ sub AddProject
        }
        if ($self->{options}->{gss})
        {
-               $proj->AddIncludeDir($self->{options}->{gss} . '\inc\krb5');
-               $proj->AddLibrary($self->{options}->{gss} . '\lib\i386\krb5_32.lib');
-               $proj->AddLibrary($self->{options}->{gss} . '\lib\i386\comerr32.lib');
-               $proj->AddLibrary($self->{options}->{gss} . '\lib\i386\gssapi32.lib');
+               $proj->AddIncludeDir($self->{options}->{gss} . '\include');
+               $proj->AddIncludeDir($self->{options}->{gss} . '\include\krb5');
+               if ($self->{platform} eq 'Win32')
+               {
+                       $proj->AddLibrary(
+                               $self->{options}->{gss} . '\lib\i386\krb5_32.lib');
+                       $proj->AddLibrary(
+                               $self->{options}->{gss} . '\lib\i386\comerr32.lib');
+                       $proj->AddLibrary(
+                               $self->{options}->{gss} . '\lib\i386\gssapi32.lib');
+               }
+               else
+               {
+                       $proj->AddLibrary(
+                               $self->{options}->{gss} . '\lib\amd64\krb5_64.lib');
+                       $proj->AddLibrary(
+                               $self->{options}->{gss} . '\lib\amd64\comerr64.lib');
+                       $proj->AddLibrary(
+                               $self->{options}->{gss} . '\lib\amd64\gssapi64.lib');
+               }
        }
        if ($self->{options}->{iconv})
        {