Building Postgres with lz4 on Visual Studio - Mailing list pgsql-hackers

From Melih Mutlu
Subject Building Postgres with lz4 on Visual Studio
Date
Msg-id CAGPVpCS=WG22kUbDJnLU5R7pv9rT5XvfH0BcGc3Msr7aBaRjSg@mail.gmail.com
Whole thread Raw
Responses Re: Building Postgres with lz4 on Visual Studio  (Andres Freund <andres@anarazel.de>)
Re: Building Postgres with lz4 on Visual Studio  (Michael Paquier <michael@paquier.xyz>)
Re: Building Postgres with lz4 on Visual Studio  (Robert Haas <robertmhaas@gmail.com>)
List pgsql-hackers
Hi all,

I tried to build Postgres from source using Visual Studio 19. It worked all good. 
Then I wanted to build it with some dependencies, started with the ones listed here [1]. But I'm having some issues with lz4.

First I downloaded the latest release of lz4 from this link [2].
Modified the src\tools\msvc\config.pl file as follows:
use strict;
use warnings;
 
our $config;
$config->{"tap_tests"} = 1;
$config->{"asserts"} = 1;
 
$config->{"lz4"} = "c:/lz4/";
$config->{"openssl"} = "c:/openssl/1.1/";
$config->{"perl"} = "c:/strawberry/$ENV{DEFAULT_PERL_VERSION}/perl/";
$config->{"python"} = "c:/python/";
 
1;
based on /src/tools/ci/windows_build_config.pl

Then ran the following commands:
vcvarsall x64
perl src/tools/msvc/mkvcbuild.pl
msbuild  -m -verbosity:minimal /p:IncludePath="C:\lz4" pgsql.sln

msbuild command fails with the following error:
"LINK : fatal error LNK1181: cannot open input file 'c:\lz4\\lib\liblz4.lib' [C:\postgres\libpgtypes.vcxproj]"

What I realized is that c:\lz4\lib\liblz4.lib actually does not exist. 
The latest versions of lz4, downloaded from [2], do not contain \liblz4.lib anymore, as opposed to what's written here [3]. Also there isn't a lib folder too.

After those changes on lz4 side, AFAIU there seems like this line adds library from wrong path in Solution.pm file [4].
$proj->AddIncludeDir($self->{options}->{lz4} . '\include');
$proj->AddLibrary($self->{options}->{lz4} . '\lib\liblz4.lib');

Even if I spent some time on this problem and tried to fix some places, I'm not able to run a successful build yet.
This is also the case for zstd too. Enabling zstd gives the same error.

Has anyone had this issue before? Is this something that anyone is aware of and somehow made it work?
I would appreciate any comment/suggestion etc.

Thanks,
Melih


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Atomic rename feature for Windows.
Next
From: Robert Haas
Date:
Subject: Re: make MaxBackends available in _PG_init