| # |
| # PostgreSQL top level makefile |
| # |
| # GNUmakefile.in |
| # |
| |
| subdir = |
| top_builddir = . |
| include $(top_builddir)/src/Makefile.global |
| |
| $(call recurse,all install,src config) |
| |
| all: |
| $(MAKE) -C contrib/auto_explain all |
| $(MAKE) -C contrib/citext all |
| $(MAKE) -C contrib/file_fdw all |
| $(MAKE) -C contrib/formatter all |
| $(MAKE) -C contrib/formatter_fixedwidth all |
| $(MAKE) -C contrib/fuzzystrmatch all |
| $(MAKE) -C contrib/extprotocol all |
| $(MAKE) -C contrib/dblink all |
| $(MAKE) -C contrib/indexscan all |
| $(MAKE) -C contrib/interconnect all |
| $(MAKE) -C contrib/pageinspect all # needed by src/test/isolation |
| $(MAKE) -C contrib/hstore all |
| $(MAKE) -C contrib/pgcrypto all |
| $(MAKE) -C contrib/btree_gin all |
| $(MAKE) -C contrib/pg_trgm all |
| $(MAKE) -C contrib/tablefunc all |
| $(MAKE) -C contrib/passwordcheck all |
| $(MAKE) -C contrib/pg_buffercache all |
| ifeq ($(with_openssl), yes) |
| $(MAKE) -C contrib/sslinfo all |
| endif |
| ifeq ($(enable_pax), yes) |
| $(MAKE) -C contrib/pax_storage all |
| endif |
| ifeq ($(enable_ic_udp2),yes) |
| $(MAKE) -C contrib/udp2 all |
| endif |
| $(MAKE) -C gpMgmt all |
| $(MAKE) -C gpcontrib all |
| +@echo "All of Apache Cloudberry successfully made. Ready to install." |
| |
| docs: |
| $(MAKE) -C doc all |
| |
| $(call recurse,world,doc src config contrib gpcontrib,all) |
| world: |
| +@echo "PostgreSQL, contrib, and documentation successfully made. Ready to install." |
| |
| # build src/ before contrib/ |
| world-contrib-recurse: world-src-recurse |
| |
| $(call recurse,world-bin,src config contrib,all) |
| |
| # build src/ before contrib/ |
| world-bin-contrib-recurse: world-bin-src-recurse |
| |
| html man: |
| $(MAKE) -C doc $@ |
| |
| install: |
| $(MAKE) -C contrib/auto_explain $@ |
| $(MAKE) -C contrib/citext $@ |
| $(MAKE) -C contrib/file_fdw $@ |
| $(MAKE) -C contrib/formatter $@ |
| $(MAKE) -C contrib/formatter_fixedwidth $@ |
| $(MAKE) -C contrib/fuzzystrmatch $@ |
| $(MAKE) -C contrib/extprotocol $@ |
| $(MAKE) -C contrib/dblink $@ |
| $(MAKE) -C contrib/indexscan $@ |
| $(MAKE) -C contrib/interconnect $@ |
| $(MAKE) -C contrib/pageinspect $@ # needed by src/test/isolation |
| $(MAKE) -C contrib/hstore $@ |
| $(MAKE) -C contrib/pgcrypto $@ |
| $(MAKE) -C contrib/btree_gin $@ |
| $(MAKE) -C contrib/pg_trgm $@ |
| $(MAKE) -C contrib/tablefunc $@ |
| $(MAKE) -C contrib/passwordcheck $@ |
| $(MAKE) -C contrib/pg_buffercache $@ |
| ifeq ($(enable_pax), yes) |
| $(MAKE) -C contrib/pax_storage $@ |
| endif |
| ifeq ($(with_openssl), yes) |
| $(MAKE) -C contrib/sslinfo $@ |
| endif |
| ifeq ($(enable_ic_udp2),yes) |
| $(MAKE) -C contrib/udp2 $@ |
| endif |
| $(MAKE) -C gpMgmt $@ |
| $(MAKE) -C gpcontrib $@ |
| +@echo "Apache Cloudberry installation complete." |
| |
| install-docs: |
| $(MAKE) -C doc install |
| |
| $(call recurse,install-world,doc src config contrib gpcontrib,install) |
| install-world: |
| +@echo "PostgreSQL, contrib, and documentation installation complete." |
| |
| # build src/ before contrib/ |
| install-world-contrib-recurse: install-world-src-recurse |
| |
| $(call recurse,install-world-bin,src config contrib gpcontrib,install) |
| |
| # build src/ before contrib/ |
| install-world-bin-contrib-recurse: install-world-bin-src-recurse |
| |
| $(call recurse,installdirs uninstall init-po update-po,doc src config contrib gpcontrib) |
| |
| $(call recurse,distprep coverage,doc src config contrib gpcontrib) |
| |
| # clean, distclean, etc should apply to contrib too, even though |
| # it's not built by default |
| $(call recurse,clean,doc contrib gpcontrib src config) |
| clean: |
| rm -rf tmp_install/ |
| # Garbage from autoconf: |
| @rm -rf autom4te.cache/ |
| # leap over gpAux/Makefile into subdirectories to avoid circular dependency. |
| # gpAux/Makefile is the entry point for the enterprise build, which ends up |
| # calling top-level configure and this Makefile |
| $(MAKE) -C gpMgmt $@ |
| |
| # Important: distclean `src' last, otherwise Makefile.global |
| # will be gone too soon. |
| distclean maintainer-clean: |
| # $(MAKE) -C doc $@ |
| $(MAKE) -C contrib $@ |
| $(MAKE) -C gpcontrib $@ |
| $(MAKE) -C config $@ |
| $(MAKE) -C gpMgmt $@ |
| $(MAKE) -C src $@ |
| rm -rf tmp_install/ |
| # Garbage from autoconf: |
| @rm -rf autom4te.cache/ |
| rm -f config.cache config.log config.status GNUmakefile |
| |
| installcheck-resgroup: |
| $(MAKE) -C src/test/isolation2 $@ |
| |
| # Create a demo singlenode deployment. |
| create-demo-singlenode: |
| $(MAKE) -C gpAux/gpdemo create-demo-cluster NUM_PRIMARY_MIRROR_PAIRS=0 |
| |
| installcheck-resgroup-v2: |
| $(MAKE) -C src/test/isolation2 $@ |
| |
| # Create or destroy a demo cluster. |
| create-demo-cluster: |
| $(MAKE) -C gpAux/gpdemo create-demo-cluster |
| |
| destroy-demo-cluster: |
| $(MAKE) -C gpAux/gpdemo destroy-demo-cluster |
| |
| #check-tests: | temp-install |
| check-tests installcheck installcheck-parallel installcheck-tests: CHECKPREP_TOP=src/test/regress |
| check-tests installcheck installcheck-parallel installcheck-tests: submake-generated-headers |
| $(MAKE) -C src/test/regress $@ |
| |
| check: |
| if [ ! -f $(prefix)/cloudberry-env.sh ]; then \ |
| $(MAKE) -C $(top_builddir) install; \ |
| fi |
| . $(prefix)/cloudberry-env.sh; \ |
| if pg_isready 1>/dev/null; then \ |
| $(MAKE) -C $(top_builddir) installcheck; \ |
| else \ |
| if [ ! -f $(top_builddir)/gpAux/gpdemo/gpdemo-env.sh ]; then \ |
| . $(prefix)/cloudberry-env.sh && $(MAKE) -C $(top_builddir) create-demo-cluster; \ |
| fi; \ |
| . $(prefix)/cloudberry-env.sh && . $(top_builddir)/gpAux/gpdemo/gpdemo-env.sh && $(MAKE) -C $(top_builddir) installcheck; \ |
| fi |
| |
| $(call recurse,check-world,src/test src/pl src/interfaces/ecpg contrib src/bin gpcontrib,check) |
| $(call recurse,checkprep, src/test src/pl src/interfaces/ecpg contrib src/bin gpcontrib) |
| |
| # This is a top-level target that runs "all" regression test suites against |
| # a running server. This is what the CI pipeline runs. |
| .PHONY: installcheck-world |
| |
| # Run all ICW targets in different directories under a recurse call, so |
| # that make -k works as expected. Order is significant here (for some reason, |
| # which probably indicates that we're relying on undefined behavior... we should |
| # probably pull anything order-dependent out of recurse() and back into the |
| # recipe body). |
| ICW_TARGETS = src/interfaces/gppc |
| ICW_TARGETS += contrib/auto_explain contrib/citext contrib/btree_gin |
| ICW_TARGETS += contrib/file_fdw contrib/formatter_fixedwidth |
| ICW_TARGETS += contrib/extprotocol contrib/dblink contrib/pg_trgm |
| ICW_TARGETS += contrib/indexscan contrib/hstore contrib/pgcrypto |
| ICW_TARGETS += contrib/tablefunc contrib/passwordcheck |
| ICW_TARGETS += contrib/pg_buffercache |
| ifeq ($(enable_pax), yes) |
| ICW_TARGETS += contrib/pax_storage |
| endif |
| # sslinfo depends on openssl |
| ifeq ($(with_openssl), yes) |
| ICW_TARGETS += contrib/sslinfo |
| endif |
| ICW_TARGETS += gpcontrib gpMgmt/bin |
| |
| $(call recurse,installcheck-world,src/test src/pl src/interfaces/ecpg $(ICW_TARGETS) src/bin,installcheck) |
| $(call recurse,install-tests,src/test/regress,install-tests) |
| |
| # GPDB: Postgres disables the SSL tests during ICW because of the TCP port that |
| # it opens to other users on the same machine during testing. GPDB makes no such |
| # security guarantees during tests: currently, it is unsafe to run |
| # installcheck-world on a machine with untrusted users. |
| $(call recurse,installcheck-world, \ |
| src/test/ssl,check) |
| |
| .PHONY: installcheck-gpcheckcat |
| installcheck-world: installcheck-gpcheckcat |
| installcheck-gpcheckcat: |
| gpcheckcat -A |
| $(call recurse,installcheck-world,gpcontrib/gp_replica_check,installcheck) |
| $(call recurse,installcheck-world,src/bin/pg_upgrade,check) |
| |
| .PHONY: installcheck-hot-standby |
| installcheck-hot-standby: submake-generated-headers |
| $(MAKE) -C src/test/regress installcheck-hot-standby |
| $(MAKE) -C src/test/isolation2 installcheck-hot-standby |
| |
| # Run mock tests, that don't require a running server. Arguably these should |
| # be part of [install]check-world, but we treat them more like part of |
| # compilation than regression testing, in the CI. But they are too heavy-weight |
| # to put into "make all", either. |
| .PHONY : unittest-check |
| unittest-check: |
| $(MAKE) CFLAGS=-DUNITTEST -C src/backend unittest-check |
| $(MAKE) CFLAGS=-DUNITTEST -C src/bin unittest-check |
| |
| GNUmakefile: GNUmakefile.in $(top_builddir)/config.status |
| ./config.status $@ |
| |
| update-unicode: | submake-generated-headers submake-libpgport |
| $(MAKE) -C src/common/unicode $@ |
| $(MAKE) -C contrib/unaccent $@ |
| |
| |
| ########################################################################## |
| |
| distdir = postgresql-$(VERSION) |
| dummy = =install= |
| |
| dist: $(distdir).tar.gz $(distdir).tar.bz2 |
| rm -rf $(distdir) |
| |
| $(distdir).tar: distdir |
| $(TAR) chf $@ $(distdir) |
| |
| .INTERMEDIATE: $(distdir).tar |
| |
| distdir-location: |
| @echo $(distdir) |
| |
| distdir: |
| rm -rf $(distdir)* $(dummy) |
| for x in `cd $(top_srcdir) && find . \( -name CVS -prune \) -o \( -name .git -prune \) -o -print`; do \ |
| file=`expr X$$x : 'X\./\(.*\)'`; \ |
| if test -d "$(top_srcdir)/$$file" ; then \ |
| mkdir "$(distdir)/$$file" && chmod 777 "$(distdir)/$$file"; \ |
| else \ |
| ln "$(top_srcdir)/$$file" "$(distdir)/$$file" >/dev/null 2>&1 \ |
| || cp "$(top_srcdir)/$$file" "$(distdir)/$$file"; \ |
| fi || exit; \ |
| done |
| $(MAKE) -C $(distdir) distprep |
| #$(MAKE) -C $(distdir)/doc/src/sgml/ INSTALL |
| #cp $(distdir)/doc/src/sgml/INSTALL $(distdir)/ |
| $(MAKE) -C $(distdir) distclean |
| #rm -f $(distdir)/README.git |
| |
| distcheck: dist |
| rm -rf $(dummy) |
| mkdir $(dummy) |
| $(GZIP) -d -c $(distdir).tar.gz | $(TAR) xf - |
| install_prefix=`cd $(dummy) && pwd`; \ |
| cd $(distdir) \ |
| && ./configure --prefix="$$install_prefix" |
| $(MAKE) -C $(distdir) -q distprep |
| $(MAKE) -C $(distdir) |
| $(MAKE) -C $(distdir) install |
| $(MAKE) -C $(distdir) uninstall |
| @echo "checking whether \`$(MAKE) uninstall' works" |
| test `find $(dummy) ! -type d | wc -l` -eq 0 |
| $(MAKE) -C $(distdir) dist |
| # Room for improvement: Check here whether this distribution tarball |
| # is sufficiently similar to the original one. |
| rm -rf $(distdir) $(dummy) |
| @echo "Distribution integrity checks out." |
| |
| headerscheck: submake-generated-headers |
| $(top_srcdir)/src/tools/pginclude/headerscheck $(top_srcdir) $(abs_top_builddir) |
| |
| cpluspluscheck: submake-generated-headers |
| $(top_srcdir)/src/tools/pginclude/cpluspluscheck $(top_srcdir) $(abs_top_builddir) |
| |
| .PHONY: dist distdir distcheck docs install-docs world check-world install-world installcheck-world headerscheck cpluspluscheck |