1 # $Header: /cvsroot/pgsql/contrib/contrib-global.mk,v 1.3 2002/09/05 18:28:45 petere Exp $
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.
7 # Use the following layout for your Makefile:
10 # top_builddir = ../..
11 # include $(top_builddir)/src/Makefile.global
13 # [variable assignments, see below]
14 # [custom rules, rarely necessary]
16 # include $(top_srcdir)/contrib/contrib-global.mk
18 # The following variables can be set:
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 # REGRESS -- list of regression test cases (without suffix)
29 # or at most one of these two:
31 # PROGRAM -- a binary program to build (list objects files in OBJS)
32 # MODULE_big -- a shared object to build (list object files in OBJS)
34 # The following can also be set:
36 # EXTRA_CLEAN -- extra files to remove in 'make clean'
37 # PG_CPPFLAGS -- will be added to CPPFLAGS
38 # PG_LIBS -- will be added to PROGRAM link line
39 # SHLIB_LINK -- will be added to MODULE_big link line
41 # Better look at some of the existing uses for examples...
44 override CPPFLAGS := -I$(srcdir) $(CPPFLAGS)
47 override CFLAGS += $(CFLAGS_SL)
48 SHLIB_LINK += $(BE_DLLLIBS)
52 override CPPFLAGS := $(PG_CPPFLAGS) $(CPPFLAGS)
55 all: $(PROGRAM) $(DATA_built) $(addsuffix $(DLSUFFIX), $(MODULES))
58 # shared library parameters
64 SHLIB_LINK += $(BE_DLLLIBS)
66 include $(top_srcdir)/src/Makefile.shlib
72 install: all installdirs
73 ifneq (,$(DATA)$(DATA_built))
74 @for file in $(addprefix $(srcdir)/, $(DATA)) $(DATA_built); do \
75 echo "$(INSTALL_DATA) $$file $(DESTDIR)$(datadir)/contrib"; \
76 $(INSTALL_DATA) $$file $(DESTDIR)$(datadir)/contrib; \
80 @for file in $(addsuffix $(DLSUFFIX), $(MODULES)); do \
81 echo "$(INSTALL_SHLIB) $$file $(DESTDIR)$(pkglibdir)"; \
82 $(INSTALL_SHLIB) $$file $(DESTDIR)$(pkglibdir); \
86 @for file in $(addprefix $(srcdir)/, $(DOCS)); do \
87 echo "$(INSTALL_DATA) $$file $(DESTDIR)$(docdir)/contrib"; \
88 $(INSTALL_DATA) $$file $(DESTDIR)$(docdir)/contrib; \
92 $(INSTALL_PROGRAM) $(PROGRAM)$(X) $(DESTDIR)$(bindir)
95 $(INSTALL_SHLIB) $(shlib) $(DESTDIR)$(pkglibdir)/$(MODULE_big)$(DLSUFFIX)
98 @for file in $(addprefix $(srcdir)/, $(SCRIPTS)); do \
99 echo "$(INSTALL_SCRIPT) $$file $(DESTDIR)$(bindir)"; \
100 $(INSTALL_SCRIPT) $$file $(DESTDIR)$(bindir); \
106 ifneq (,$(DATA)$(DATA_built))
107 $(mkinstalldirs) $(DESTDIR)$(datadir)/contrib
109 ifneq (,$(MODULES)$(MODULE_big))
110 $(mkinstalldirs) $(DESTDIR)$(pkglibdir)
113 $(mkinstalldirs) $(DESTDIR)$(docdir)/contrib
115 ifneq (,$(PROGRAM)$(SCRIPTS))
116 $(mkinstalldirs) $(DESTDIR)$(bindir)
121 ifneq (,$(DATA)$(DATA_built))
122 rm -f $(addprefix $(DESTDIR)$(datadir)/contrib/, $(DATA) $(DATA_built))
125 rm -f $(addprefix $(DESTDIR)$(pkglibdir)/, $(addsuffix $(DLSUFFIX), $(MODULES)))
128 rm -f $(addprefix $(DESTDIR)$(docdir)/contrib/, $(DOCS))
131 rm -f $(DESTDIR)$(bindir)/$(PROGRAM)$(X)
134 rm -f $(DESTDIR)$(pkglibdir)/$(MODULE_big)$(DLSUFFIX)
137 rm -f $(addprefix $(DESTDIR)$(bindir)/, $(SCRIPTS))
143 rm -f $(addsuffix $(DLSUFFIX), $(MODULES)) $(addsuffix .o, $(MODULES))
158 # things created by various check targets
159 rm -rf results tmp_check log
160 rm -f regression.diffs regression.out regress.out run_check.out
161 ifeq ($(PORTNAME), win)
170 distclean maintainer-clean: clean
176 $(MAKE) -C $(top_builddir)/src/test/regress pg_regress
178 # against installed postmaster
179 installcheck: submake
180 $(top_builddir)/src/test/regress/pg_regress $(REGRESS)
182 # in-tree test doesn't work yet (no way to install my shared library)
184 # $(top_builddir)/src/test/regress/pg_regress --temp-install \
185 # --top-builddir=$(top_builddir) $(REGRESS)
187 @echo "'make check' is not supported."
188 @echo "Do 'make install', then 'make installcheck' instead."
194 ifneq (,$(MODULES)$(MODULE_big))
196 sed 's,MODULE_PATHNAME,$$libdir/$*,g' $< >$@
201 $(CC) $(CFLAGS) $(OBJS) $(PG_LIBS) $(LDFLAGS) $(LIBS) -o $@