Re: Should contrib modules install .h files?
Andrew Gierth <andrew@tao11.riddles.org.uk>
From: Andrew Gierth <andrew@tao11.riddles.org.uk>
To: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Cc: pgsql-hackers@postgresql.org
Date: 2018-07-31T23:33:11Z
Lists: pgsql-hackers
>>>>> "Peter" == Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes: >> A review of contrib/ suggested that cube, hstore, isn, ltree and seg >> were the only modules that had useful headers to install, so do >> those. Peter> I'm missing some guidance what an extension using those headers Peter> is supposed to do. How does it get the right -I options? All of the below assumes PGXS. 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. If you need to workaround for old versions in one makefile, as I do, then you can do something along these lines (this goes before the include $(PGXS) line): # MAJORVERSION and includedir_server are not defined yet, but will be # defined before PG_CPPFLAGS is expanded. So we use conditional # expansions rather than 'ifeq' syntax. # for pg11+, hstore.h will be installed here HSTORE_INCDIR = $(includedir_server)/extension/hstore # for pg 9.5/9.6/10, we have a local copy of hstore.h since it happens # to be the same, barring non-semantic whitespace, between the three # versions HSTORE_INCDIR_OLD = old_inc PG_CPPFLAGS += -I$(HSTORE_INCDIR$(if $(filter 9.% 10,$(MAJORVERSION)),_OLD)) If you need to distinguish more versions for whatever reason you can do this: HSTORE_INCDIR = $(includedir_server)/extension/hstore HSTORE_INCDIR_10 = whatever HSTORE_INCDIR_9.6 = whatever HSTORE_INCDIR_9.5 = whatever HSTORE_INCDIR_9.4 = whatever HSTORE_INCDIR_9.3 = whatever PG_CPPFLAGS += -I$(HSTORE_INCDIR$(if $(filter 9.% 10,$(MAJORVERSION)),_$(MAJORVERSION))) -- Andrew (irc:RhodiumToad)
Commits
-
Fix out-of-tree build for transform modules.
- f1ca5a654d5d 11.0 landed
- 60f6756f9225 12.0 landed
-
Provide for contrib and pgxs modules to install include files.
- df163230b92b 12.0 landed
- d06eebce5fa4 11.0 landed