Re: window build doesn't apply PG_CPPFLAGS correctly

From: Andrew Dunstan <andrew(at)dunslane(dot)net>
To: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: window build doesn't apply PG_CPPFLAGS correctly
Date: 2021-07-22 13:38:40
Message-ID: e2b72b9a-b628-a83e-7fe8-481ca5741765@dunslane.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


On 7/22/21 8:11 AM, Pavel Stehule wrote:
>
>
> čt 22. 7. 2021 v 14:04 odesílatel Andrew Dunstan <andrew(at)dunslane(dot)net
> <mailto:andrew(at)dunslane(dot)net>> napsal:
>
>
> On 7/22/21 12:06 AM, Pavel Stehule wrote:
> > Hi
> >
> > I tried to write test for plpgsql debug API, where I need to
> access to
> > plpgsql.h
> >
> > I have line
> >
> > PG_CPPFLAGS = -I$(top_srcdir)/src/pl/plpgsql/src
> >
> > that is working well on unix, but it do nothing on windows
> >
> > [00:05:14] Project "C:\projects\postgresql\pgsql.sln" (1) is
> building
> > "C:\projects\postgresql\test_dbgapi.vcxproj" (87) on node 1 (default
> > targets).
> > [00:05:14] PrepareForBuild:
> > [00:05:14]   Creating directory ".\Release\test_dbgapi\".
> > [00:05:14]   Creating directory
> ".\Release\test_dbgapi\test_dbgapi.tlog\".
> > [00:05:14] InitializeBuildStatus:
> > [00:05:14]   Creating
> > ".\Release\test_dbgapi\test_dbgapi.tlog\unsuccessfulbuild" because
> > "AlwaysCreate" was specified.
> > [00:05:14] ClCompile:
> > [00:05:14]   C:\Program Files (x86)\Microsoft Visual Studio
> > 12.0\VC\bin\x86_amd64\CL.exe /c /Isrc/include
> /Isrc/include/port/win32
> > /Isrc/include/port/win32_msvc /Zi /nologo /W3 /WX- /Ox /D WIN32 /D
> > _WINDOWS /D __WINDOWS__ /D __WIN32__ /D
> WIN32_STACK_RLIMIT=4194304 /D
> > _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _WINDLL /D
> > _MBCS /GF /Gm- /EHsc /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope
> > /Fo".\Release\test_dbgapi\\"
> /Fd".\Release\test_dbgapi\vc120.pdb" /Gd
> > /TC /wd4018 /wd4244 /wd4273 /wd4102 /wd4090 /wd4267
> /errorReport:queue
> > /MP src/test/modules/test_dbgapi/test_dbgapi.c
> > [00:05:14]   test_dbgapi.c
> > [00:05:16] src/test/modules/test_dbgapi/test_dbgapi.c(17): fatal
> error
> > C1083: Cannot open include file: 'plpgsql.h': No such file or
> > directory [C:\projects\postgresql\test_dbgapi.vcxproj]
> > [00:05:16] Done Building Project
> > "C:\projects\postgresql\test_dbgapi.vcxproj" (default targets)
> -- FAILED.
> > [00:05:16] Project "C:\projects\postgresql\pgsql.sln" (1) is
> building
> > "C:\projects\postgresql\test_ddl_deparse.vcxproj" (88) on node 1
> > (default targets).
> >
> > looks so PG_CPPFLAGS is not propagated to CPPFLAGS there.
> >
> >
>
> Almost everything in the Makefiles is not used by the MSVC buid
> system.
> Using this one seems likely to be quite difficult, since the
> syntax for
> the MSVC compiler command line is very different, and furthermore the
> MSVC build system doesn't know anything about how to use this setting.
>
> AFAICT PG_CPPFLAGS is only used by pgxs.
>
> You would need to tell us more about how your build process is
> working.
>
>
> I need access to plpgsql.h in build time. This is only one dependency.
> When I build an extension, then plpgsql.h is in a shared directory.
> But when I build a module for a test, the header files are not
> installed yet. For build it requires an include dir
> -I$(top_srcdir)/src/pl/plpgsql/src
>
>

If I understand correctly what you're doing, you probably need to add an
entry for your module to $contrib_extraincludes in
src/tools/msvc/Mkvcbuild.pm, e.g.

my $contrib_extraincludes = { 'dblink'         => ['src/backend'] ,

                              'test_dbgapi'    => [ 'src/pl/plpgsql/src'
] };

cheers

andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Simon Riggs 2021-07-22 13:40:01 Re: Detecting File Damage & Inconsistencies
Previous Message Ajin Cherian 2021-07-22 13:36:39 Re: logical replication empty transactions