Re: Should contrib modules install .h files?

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Andrew Gierth <andrew@tao11.riddles.org.uk>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Peter Eisentraut <peter.eisentraut@2ndquadrant.com>, pgsql-hackers@postgresql.org
Date: 2018-08-01T03:55:15Z
Lists: pgsql-hackers
On 2018-08-01 04:52:28 +0100, Andrew Gierth wrote:
> >>>>> "Tom" == Tom Lane <tgl@sss.pgh.pa.us> writes:
> 
>  >> If your extension is relying on pg11+, or you have checked the pg
>  >> version when constructing the makefile, you can just do:
>  >> PG_CPPFLAGS += -I$(includedir_server)/extension/hstore
>  >> and #include "hstore.h" will work.
> 
>  Tom> I remain of the opinion that it'd be smarter to do
> 
>  Tom> PG_CPPFLAGS += -I$(includedir_server)/extension
> 
>  Tom> then
> 
>  Tom> #include "hstore/hstore.h"
> 
>  Tom> This way requires fewer -I options and is far more robust against
>  Tom> header name conflicts.
> 
> Sure, it works for the simple cases like hstore, but how does it handle
> the case of a pgxs extension that installs more than one include file,
> one of which includes another?

I might be momentarily daft (just was on a conference call for a while
;)), but why'd that be problematic? The header files can just specify
the full path, and they'll find each other because of the aforementioned
-I?

Greetings,

Andres Freund


Commits

  1. Fix out-of-tree build for transform modules.

  2. Provide for contrib and pgxs modules to install include files.