|
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 | ifdef MODULEDIR |
95 | 99 | datamoduledir := $(MODULEDIR) |
96 | 100 | docmoduledir := $(MODULEDIR) |
| 101 | +incmoduledir := $(MODULEDIR) |
97 | 102 | else |
98 | 103 | ifdef EXTENSION |
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 | ifdef PG_CPPFLAGS |
108 | 115 | override CPPFLAGS := $(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 | +ifdef MODULE_big |
| 122 | +ifdef HEADERS |
| 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 | +ifdef HEADERS |
| 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 | +define install_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 | +define uninstall_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 | ifdef SCRIPTS_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 | ifdef MODULE_big |
158 | 205 | ifeq ($(with_llvm), yes) |
159 | 206 | $(call install_llvm_module,$(MODULE_big),$(OBJS)) |
@@ -218,6 +265,9 @@ endif |
218 | 265 | ifdef SCRIPTS_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 | ifdef MODULE_big |
223 | 273 | ifeq ($(with_llvm), yes) |
|
0 commit comments