|
38 | 38 | # SCRIPTS -- script files (not binaries) to install into $PREFIX/bin |
39 | 39 | # SCRIPTS_built -- script files (not binaries) to install into $PREFIX/bin, |
40 | 40 | # which need to be built first |
| 41 | +# HEADERS -- files to install into $(includedir_server)/$MODULEDIR/$MODULE_big |
| 42 | +# HEADERS_$(MODULE) -- files to install into |
| 43 | +# $(includedir_server)/$MODULEDIR/$MODULE; the value of $MODULE must be |
| 44 | +# listed in MODULES or MODULE_big |
41 | 45 | # REGRESS -- list of regression test cases (without suffix) |
42 | 46 | # REGRESS_OPTS -- additional switches to pass to pg_regress |
43 | 47 | # NO_INSTALLCHECK -- don't define an installcheck target, useful e.g. if |
@@ -94,20 +98,60 @@ endif |
94 | 98 | ifdefMODULEDIR |
95 | 99 | datamoduledir :=$(MODULEDIR) |
96 | 100 | docmoduledir :=$(MODULEDIR) |
| 101 | +incmoduledir :=$(MODULEDIR) |
97 | 102 | else |
98 | 103 | ifdefEXTENSION |
99 | 104 | datamoduledir := extension |
100 | 105 | docmoduledir := extension |
| 106 | +incmoduledir := extension |
101 | 107 | else |
102 | 108 | datamoduledir := contrib |
103 | 109 | docmoduledir := contrib |
| 110 | +incmoduledir := contrib |
104 | 111 | endif |
105 | 112 | endif |
106 | 113 |
|
107 | 114 | ifdefPG_CPPFLAGS |
108 | 115 | overrideCPPFLAGS :=$(PG_CPPFLAGS)$(CPPFLAGS) |
109 | 116 | endif |
110 | 117 |
|
| 118 | +HEADER_alldirs :=$(patsubst HEADERS_%,%,$(filter HEADERS_%,$(.VARIABLES))) |
| 119 | + |
| 120 | +# HEADERS is an error in the absence of MODULE_big to provide a dir name |
| 121 | +ifdefMODULE_big |
| 122 | +ifdefHEADERS |
| 123 | +HEADER_dirs :=$(MODULE_big) |
| 124 | +HEADERS_$(MODULE_big) =$(HEADERS) |
| 125 | +else |
| 126 | +HEADER_dirs :=$(filter$(MODULE_big),$(HEADER_alldirs)) |
| 127 | +endif |
| 128 | +else |
| 129 | +ifdefHEADERS |
| 130 | +$(error HEADERS requires MODULE_big to be set) |
| 131 | +endif |
| 132 | +HEADER_dirs :=$(filter$(MODULES),$(HEADER_alldirs)) |
| 133 | +endif |
| 134 | + |
| 135 | +# HEADERS_foo requires that "foo" is in MODULES as a sanity check |
| 136 | +ifneq ($(filter-out$(HEADER_dirs),$(HEADER_alldirs)),) |
| 137 | +$(error $(patsubst %,HEADERS_%,$(filter-out $(HEADER_dirs),$(HEADER_alldirs))) defined with no module) |
| 138 | +endif |
| 139 | + |
| 140 | +# Functions for generating install/uninstall commands; the blank lines |
| 141 | +# before the "endef" are required, don't lose them |
| 142 | +# $(call install_headers,dir,headers) |
| 143 | +defineinstall_headers |
| 144 | +$(MKDIR_P) '$(DESTDIR)$(includedir_server)/$(incmoduledir)/$(1)/' |
| 145 | +$(INSTALL_DATA)$(addprefix$(srcdir)/,$(2)) '$(DESTDIR)$(includedir_server)/$(incmoduledir)/$(1)/' |
| 146 | + |
| 147 | +endef |
| 148 | +# $(call uninstall_headers,dir,headers) |
| 149 | +defineuninstall_headers |
| 150 | +rm -f$(addprefix '$(DESTDIR)$(includedir_server)/$(incmoduledir)/$(1)'/,$(notdir$(2))) |
| 151 | + |
| 152 | +endef |
| 153 | + |
| 154 | + |
111 | 155 | all:$(PROGRAM)$(DATA_built)$(SCRIPTS_built)$(addsuffix$(DLSUFFIX),$(MODULES))$(addsuffix .control,$(EXTENSION)) |
112 | 156 |
|
113 | 157 | ifeq ($(with_llvm), yes) |
@@ -154,6 +198,9 @@ endif # SCRIPTS |
154 | 198 | ifdefSCRIPTS_built |
155 | 199 | $(INSTALL_SCRIPT) $(SCRIPTS_built) '$(DESTDIR)$(bindir)/' |
156 | 200 | endif# SCRIPTS_built |
| 201 | +ifneq ($(strip$(HEADER_dirs)),) |
| 202 | +$(foreach dir,$(HEADER_dirs),$(if $(HEADERS_$(dir)),$(call install_headers,$(dir),$(HEADERS_$(dir))))) |
| 203 | +endif# HEADERS |
157 | 204 | ifdefMODULE_big |
158 | 205 | ifeq ($(with_llvm), yes) |
159 | 206 | $(call install_llvm_module,$(MODULE_big),$(OBJS)) |
@@ -218,6 +265,9 @@ endif |
218 | 265 | ifdefSCRIPTS_built |
219 | 266 | rm -f $(addprefix '$(DESTDIR)$(bindir)'/, $(SCRIPTS_built)) |
220 | 267 | endif |
| 268 | +ifneq ($(strip$(HEADER_dirs)),) |
| 269 | +$(foreach dir,$(HEADER_dirs),$(if $(HEADERS_$(dir)),$(call uninstall_headers,$(dir),$(HEADERS_$(dir))))) |
| 270 | +endif# HEADERS |
221 | 271 |
|
222 | 272 | ifdefMODULE_big |
223 | 273 | ifeq ($(with_llvm), yes) |
|