Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit adf57cd

Browse files
committed
PostgreSQL extension makefile framework ("pgxs"), by Fabien Coelho, with
some massaging by Peter Eisentraut. This is basically a simple generalization of the existing contrib makefiles.
1 parent f82d99b commit adf57cd

File tree

11 files changed

+546
-242
lines changed

11 files changed

+546
-242
lines changed

GNUmakefile.in

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#
22
# PostgreSQL top level makefile
33
#
4-
# $PostgreSQL: pgsql/GNUmakefile.in,v 1.39 2004/06/13 21:51:36 petere Exp $
4+
# $PostgreSQL: pgsql/GNUmakefile.in,v 1.40 2004/07/30 12:26:39 petere Exp $
55
#
66

77
subdir =
@@ -11,16 +11,19 @@ include $(top_builddir)/src/Makefile.global
1111
all:
1212
$(MAKE) -C doc all
1313
$(MAKE) -C src all
14+
$(MAKE) -C config all
1415
@echo "All of PostgreSQL successfully made. Ready to install."
1516

1617
install:
1718
$(MAKE) -C doc install
1819
$(MAKE) -C src install
20+
$(MAKE) -C config install
1921
@echo "PostgreSQL installation complete."
2022

2123
installdirs uninstall distprep:
2224
$(MAKE) -C doc $@
2325
$(MAKE) -C src $@
26+
$(MAKE) -C config $@
2427

2528
install-all-headers:
2629
$(MAKE) -C src $@
@@ -31,6 +34,7 @@ clean:
3134
$(MAKE) -C doc $@
3235
$(MAKE) -C contrib $@
3336
$(MAKE) -C src $@
37+
$(MAKE) -C config $@
3438
# Garbage from autoconf:
3539
@rm -rf autom4te.cache/
3640

@@ -39,6 +43,7 @@ clean:
3943
distclean maintainer-clean:
4044
-$(MAKE) -C doc $@
4145
-$(MAKE) -C contrib $@
46+
-$(MAKE) -C config $@
4247
-$(MAKE) -C src $@
4348
-rm -f config.cache config.log config.status GNUmakefile
4449
# Garbage from autoconf:

config/Makefile

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# $PostgreSQL: pgsql/config/Makefile,v 1.1 2004/07/30 12:26:39 petere Exp $
2+
3+
subdir = config
4+
top_builddir = ..
5+
include $(top_builddir)/src/Makefile.global
6+
7+
8+
install: all installdirs
9+
$(INSTALL_SCRIPT) $(srcdir)/install-sh $(DESTDIR)$(pgxsdir)/config/install-sh
10+
$(INSTALL_SCRIPT) $(srcdir)/mkinstalldirs $(DESTDIR)$(pgxsdir)/config/mkinstalldirs
11+
12+
installdirs:
13+
$(mkinstalldirs) $(DESTDIR)$(pgxsdir)/config
14+
15+
uninstall:
16+
rm -f $(DESTDIR)$(pgxsdir)/config/install-sh $(DESTDIR)$(pgxsdir)/config/mkinstalldirs

contrib/contrib-global.mk

+3-233
Original file line numberDiff line numberDiff line change
@@ -1,234 +1,4 @@
1-
# $PostgreSQL: pgsql/contrib/contrib-global.mk,v 1.7 2003/11/29 19:51:18 pgsql Exp $
1+
# $PostgreSQL: pgsql/contrib/contrib-global.mk,v 1.8 2004/07/30 12:26:39 petere Exp $
22

3-
# This file contains generic rules to build many kinds of simple
4-
# contrib modules. You only need to set a few variables and include
5-
# this file, the rest will be done here.
6-
#
7-
# Use the following layout for your Makefile:
8-
#
9-
# subdir = contrib/xxx
10-
# top_builddir = ../..
11-
# include $(top_builddir)/src/Makefile.global
12-
#
13-
# [variable assignments, see below]
14-
# [custom rules, rarely necessary]
15-
#
16-
# include $(top_srcdir)/contrib/contrib-global.mk
17-
#
18-
# The following variables can be set:
19-
#
20-
# MODULES -- list of shared objects to be build from source file with
21-
# same stem (do not include suffix in this list)
22-
# DATA -- random files to install into $PREFIX/share/contrib
23-
# DATA_built -- random files to install into $PREFIX/share/contrib,
24-
# which need to be built first
25-
# DOCS -- random files to install under $PREFIX/doc/contrib
26-
# SCRIPTS -- script files (not binaries) to install into $PREFIX/bin
27-
# SCRIPTS_built -- script files (not binaries) to install into $PREFIX/bin,
28-
# which need to be built first
29-
# REGRESS -- list of regression test cases (without suffix)
30-
#
31-
# or at most one of these two:
32-
#
33-
# PROGRAM -- a binary program to build (list objects files in OBJS)
34-
# MODULE_big -- a shared object to build (list object files in OBJS)
35-
#
36-
# The following can also be set:
37-
#
38-
# EXTRA_CLEAN -- extra files to remove in 'make clean'
39-
# PG_CPPFLAGS -- will be added to CPPFLAGS
40-
# PG_LIBS -- will be added to PROGRAM link line
41-
# SHLIB_LINK -- will be added to MODULE_big link line
42-
#
43-
# Better look at some of the existing uses for examples...
44-
45-
46-
override CPPFLAGS := -I$(srcdir) $(CPPFLAGS)
47-
48-
ifdef MODULES
49-
override CFLAGS += $(CFLAGS_SL)
50-
SHLIB_LINK += $(BE_DLLLIBS)
51-
endif
52-
53-
ifdef PG_CPPFLAGS
54-
override CPPFLAGS := $(PG_CPPFLAGS) $(CPPFLAGS)
55-
endif
56-
57-
all: $(PROGRAM) $(DATA_built) $(SCRIPTS_built) $(addsuffix $(DLSUFFIX), $(MODULES))
58-
59-
ifdef MODULE_big
60-
# shared library parameters
61-
NAME = $(MODULE_big)
62-
SO_MAJOR_VERSION= 0
63-
SO_MINOR_VERSION= 0
64-
rpath =
65-
66-
SHLIB_LINK += $(BE_DLLLIBS)
67-
68-
include $(top_srcdir)/src/Makefile.shlib
69-
70-
all: all-lib
71-
endif # MODULE_big
72-
73-
74-
install: all installdirs
75-
ifneq (,$(DATA)$(DATA_built))
76-
@for file in $(addprefix $(srcdir)/, $(DATA)) $(DATA_built); do \
77-
echo "$(INSTALL_DATA) $$file $(DESTDIR)$(datadir)/contrib"; \
78-
$(INSTALL_DATA) $$file $(DESTDIR)$(datadir)/contrib; \
79-
done
80-
endif # DATA
81-
ifdef MODULES
82-
@for file in $(addsuffix $(DLSUFFIX), $(MODULES)); do \
83-
echo "$(INSTALL_SHLIB) $$file $(DESTDIR)$(pkglibdir)"; \
84-
$(INSTALL_SHLIB) $$file $(DESTDIR)$(pkglibdir); \
85-
done
86-
endif # MODULES
87-
ifdef DOCS
88-
@for file in $(addprefix $(srcdir)/, $(DOCS)); do \
89-
echo "$(INSTALL_DATA) $$file $(DESTDIR)$(docdir)/contrib"; \
90-
$(INSTALL_DATA) $$file $(DESTDIR)$(docdir)/contrib; \
91-
done
92-
endif # DOCS
93-
ifdef PROGRAM
94-
$(INSTALL_PROGRAM) $(PROGRAM)$(X) $(DESTDIR)$(bindir)
95-
endif # PROGRAM
96-
ifdef MODULE_big
97-
$(INSTALL_SHLIB) $(shlib) $(DESTDIR)$(pkglibdir)/$(MODULE_big)$(DLSUFFIX)
98-
endif # MODULE_big
99-
ifdef SCRIPTS
100-
@for file in $(addprefix $(srcdir)/, $(SCRIPTS)); do \
101-
echo "$(INSTALL_SCRIPT) $$file $(DESTDIR)$(bindir)"; \
102-
$(INSTALL_SCRIPT) $$file $(DESTDIR)$(bindir); \
103-
done
104-
endif # SCRIPTS
105-
ifdef SCRIPTS_built
106-
@for file in $(SCRIPTS_built); do \
107-
echo "$(INSTALL_SCRIPT) $$file $(DESTDIR)$(bindir)"; \
108-
$(INSTALL_SCRIPT) $$file $(DESTDIR)$(bindir); \
109-
done
110-
endif # SCRIPTS_built
111-
112-
113-
installdirs:
114-
ifneq (,$(DATA)$(DATA_built))
115-
$(mkinstalldirs) $(DESTDIR)$(datadir)/contrib
116-
endif
117-
ifneq (,$(MODULES)$(MODULE_big))
118-
$(mkinstalldirs) $(DESTDIR)$(pkglibdir)
119-
endif
120-
ifdef DOCS
121-
$(mkinstalldirs) $(DESTDIR)$(docdir)/contrib
122-
endif
123-
ifneq (,$(PROGRAM)$(SCRIPTS)$(SCRIPTS_built))
124-
$(mkinstalldirs) $(DESTDIR)$(bindir)
125-
endif
126-
127-
128-
uninstall:
129-
ifneq (,$(DATA)$(DATA_built))
130-
rm -f $(addprefix $(DESTDIR)$(datadir)/contrib/, $(notdir $(DATA) $(DATA_built)))
131-
endif
132-
ifdef MODULES
133-
rm -f $(addprefix $(DESTDIR)$(pkglibdir)/, $(addsuffix $(DLSUFFIX), $(MODULES)))
134-
endif
135-
ifdef DOCS
136-
rm -f $(addprefix $(DESTDIR)$(docdir)/contrib/, $(DOCS))
137-
endif
138-
ifdef PROGRAM
139-
rm -f $(DESTDIR)$(bindir)/$(PROGRAM)$(X)
140-
endif
141-
ifdef MODULE_big
142-
rm -f $(DESTDIR)$(pkglibdir)/$(MODULE_big)$(DLSUFFIX)
143-
endif
144-
ifdef SCRIPTS
145-
rm -f $(addprefix $(DESTDIR)$(bindir)/, $(SCRIPTS))
146-
endif
147-
ifdef SCRIPTS_built
148-
rm -f $(addprefix $(DESTDIR)$(bindir)/, $(SCRIPTS_built))
149-
endif
150-
151-
152-
clean:
153-
ifdef MODULES
154-
rm -f $(addsuffix $(DLSUFFIX), $(MODULES)) $(addsuffix .o, $(MODULES))
155-
endif
156-
ifdef DATA_built
157-
rm -f $(DATA_built)
158-
endif
159-
ifdef SCRIPTS_built
160-
rm -f $(SCRIPTS_built)
161-
endif
162-
ifdef PROGRAM
163-
rm -f $(PROGRAM)$(X)
164-
endif
165-
ifdef OBJS
166-
rm -f $(OBJS)
167-
endif
168-
ifdef EXTRA_CLEAN
169-
rm -f $(EXTRA_CLEAN)
170-
endif
171-
ifdef REGRESS
172-
# things created by various check targets
173-
rm -rf results tmp_check log
174-
rm -f regression.diffs regression.out regress.out run_check.out
175-
ifeq ($(PORTNAME), win)
176-
rm -f regress.def
177-
endif
178-
endif # REGRESS
179-
180-
ifdef MODULE_big
181-
clean: clean-lib
182-
endif
183-
184-
distclean maintainer-clean: clean
185-
186-
187-
ifdef REGRESS
188-
189-
# When doing a VPATH build, must copy over the test .sql and .out
190-
# files so that the driver script can find them. We have to use an
191-
# absolute path for the targets, because otherwise make will try to
192-
# locate the missing files using VPATH, and will find them in
193-
# $(srcdir), but the point here is that we want to copy them from
194-
# $(srcdir) to the build directory.
195-
196-
ifdef VPATH
197-
abs_builddir := $(shell pwd)
198-
test_files_src := $(wildcard $(srcdir)/sql/*.sql) $(wildcard $(srcdir)/expected/*.out) $(wildcard $(srcdir)/data/*.data)
199-
test_files_build := $(patsubst $(srcdir)/%, $(abs_builddir)/%, $(test_files_src))
200-
201-
all: $(test_files_build)
202-
$(test_files_build): $(abs_builddir)/%: $(srcdir)/%
203-
ln -s $< $@
204-
endif # VPATH
205-
206-
.PHONY: submake
207-
submake:
208-
$(MAKE) -C $(top_builddir)/src/test/regress pg_regress
209-
210-
# against installed postmaster
211-
installcheck: submake
212-
$(top_builddir)/src/test/regress/pg_regress $(REGRESS)
213-
214-
# in-tree test doesn't work yet (no way to install my shared library)
215-
#check: all submake
216-
# $(top_builddir)/src/test/regress/pg_regress --temp-install \
217-
# --top-builddir=$(top_builddir) $(REGRESS)
218-
check:
219-
@echo "'make check' is not supported."
220-
@echo "Do 'make install', then 'make installcheck' instead."
221-
endif # REGRESS
222-
223-
224-
# STANDARD RULES
225-
226-
ifneq (,$(MODULES)$(MODULE_big))
227-
%.sql: %.sql.in
228-
sed 's,MODULE_PATHNAME,$$libdir/$*,g' $< >$@
229-
endif
230-
231-
ifdef PROGRAM
232-
$(PROGRAM): $(OBJS)
233-
$(CC) $(CFLAGS) $(OBJS) $(PG_LIBS) $(LDFLAGS) $(LIBS) -o $@
234-
endif
3+
NO_PGXS = 1
4+
include $(top_srcdir)/src/makefiles/pgxs.mk

0 commit comments

Comments
 (0)