1#
2# PostgreSQL top level makefile
3#
4# GNUmakefile.in
5#
6
7subdir =
8top_builddir = .
9include $(top_builddir)/src/Makefile.global
10
11$(call recurse,all install,src config)
12
13docs:
14	$(MAKE) -C doc all
15
16$(call recurse,world,doc src config contrib,all)
17
18# build src/ before contrib/
19world-contrib-recurse: world-src-recurse
20
21$(call recurse,world-bin,src config contrib,all)
22
23# build src/ before contrib/
24world-bin-contrib-recurse: world-bin-src-recurse
25
26html man:
27	$(MAKE) -C doc $@
28
29install-docs:
30	$(MAKE) -C doc install
31
32$(call recurse,install-world,doc src config contrib,install)
33
34# build src/ before contrib/
35install-world-contrib-recurse: install-world-src-recurse
36
37$(call recurse,install-world-bin,src config contrib,install)
38
39# build src/ before contrib/
40install-world-bin-contrib-recurse: install-world-bin-src-recurse
41
42$(call recurse,installdirs uninstall init-po update-po,doc src config)
43
44$(call recurse,distprep coverage,doc src config contrib)
45
46# clean, distclean, etc should apply to contrib too, even though
47# it's not built by default
48$(call recurse,clean,doc contrib src config)
49clean:
50	rm -rf tmp_install/
51# Garbage from autoconf:
52	@rm -rf autom4te.cache/
53
54# Important: distclean `src' last, otherwise Makefile.global
55# will be gone too soon.
56distclean maintainer-clean:
57	$(MAKE) -C doc $@
58	$(MAKE) -C contrib $@
59	$(MAKE) -C config $@
60	$(MAKE) -C src $@
61	rm -rf tmp_install/
62# Garbage from autoconf:
63	@rm -rf autom4te.cache/
64	rm -f config.cache config.log config.status GNUmakefile
65
66check-tests: | temp-install
67check check-tests installcheck installcheck-parallel installcheck-tests: CHECKPREP_TOP=src/test/regress
68check check-tests installcheck installcheck-parallel installcheck-tests: submake-generated-headers
69	$(MAKE) -C src/test/regress $@
70
71$(call recurse,check-world,src/test src/pl src/interfaces/ecpg contrib src/bin,check)
72$(call recurse,checkprep,  src/test src/pl src/interfaces/ecpg contrib src/bin)
73
74$(call recurse,installcheck-world,src/test src/pl src/interfaces/ecpg contrib src/bin,installcheck)
75$(call recurse,install-tests,src/test/regress,install-tests)
76
77GNUmakefile: GNUmakefile.in $(top_builddir)/config.status
78	./config.status $@
79
80update-unicode: | submake-generated-headers submake-libpgport
81	$(MAKE) -C src/common/unicode $@
82	$(MAKE) -C contrib/unaccent $@
83
84
85##########################################################################
86
87distdir	= postgresql-$(VERSION)
88dummy	= =install=
89
90dist: $(distdir).tar.gz $(distdir).tar.bz2
91	rm -rf $(distdir)
92
93$(distdir).tar: distdir
94	$(TAR) chf $@ $(distdir)
95
96.INTERMEDIATE: $(distdir).tar
97
98distdir-location:
99	@echo $(distdir)
100
101distdir:
102	rm -rf $(distdir)* $(dummy)
103	for x in `cd $(top_srcdir) && find . \( -name CVS -prune \) -o \( -name .git -prune \) -o -print`; do \
104	  file=`expr X$$x : 'X\./\(.*\)'`; \
105	  if test -d "$(top_srcdir)/$$file" ; then \
106	    mkdir "$(distdir)/$$file" && chmod 777 "$(distdir)/$$file";	\
107	  else \
108	    ln "$(top_srcdir)/$$file" "$(distdir)/$$file" >/dev/null 2>&1 \
109	      || cp "$(top_srcdir)/$$file" "$(distdir)/$$file"; \
110	  fi || exit; \
111	done
112	$(MAKE) -C $(distdir) distprep
113	$(MAKE) -C $(distdir)/doc/src/sgml/ INSTALL
114	cp $(distdir)/doc/src/sgml/INSTALL $(distdir)/
115	$(MAKE) -C $(distdir) distclean
116	rm -f $(distdir)/README.git
117
118distcheck: dist
119	rm -rf $(dummy)
120	mkdir $(dummy)
121	$(GZIP) -d -c $(distdir).tar.gz | $(TAR) xf -
122	install_prefix=`cd $(dummy) && pwd`; \
123	cd $(distdir) \
124	&& ./configure --prefix="$$install_prefix"
125	$(MAKE) -C $(distdir) -q distprep
126	$(MAKE) -C $(distdir)
127	$(MAKE) -C $(distdir) install
128	$(MAKE) -C $(distdir) uninstall
129	@echo "checking whether \`$(MAKE) uninstall' works"
130	test `find $(dummy) ! -type d | wc -l` -eq 0
131	$(MAKE) -C $(distdir) dist
132# Room for improvement: Check here whether this distribution tarball
133# is sufficiently similar to the original one.
134	rm -rf $(distdir) $(dummy)
135	@echo "Distribution integrity checks out."
136
137headerscheck: submake-generated-headers
138	$(top_srcdir)/src/tools/pginclude/headerscheck $(top_srcdir) $(abs_top_builddir)
139
140cpluspluscheck: submake-generated-headers
141	$(top_srcdir)/src/tools/pginclude/cpluspluscheck $(top_srcdir) $(abs_top_builddir)
142
143.PHONY: dist distdir distcheck docs install-docs world check-world install-world installcheck-world headerscheck cpluspluscheck
144