#
# PostgreSQL top level makefile
#
# $PostgreSQL: pgsql/GNUmakefile.in,v 1.45 2006/08/18 19:58:05 adunstan Exp $
#

subdir =
top_builddir = .
include $(top_builddir)/src/Makefile.global

all:
#	$(MAKE) -C doc $@
	$(MAKE) -C depends/thirdparty/googletest $@
	$(MAKE) -C depends/thirdparty/googletest install
	$(MAKE) -C depends/libhdfs3 $@
	$(MAKE) -C depends/libhdfs3 install
	$(MAKE) -C depends/libyarn $@
	$(MAKE) -C depends/libyarn install
	$(MAKE) -C depends/dbcommon $@
	$(MAKE) -C depends/dbcommon install
	$(MAKE) -C depends/univplan $@
	$(MAKE) -C depends/univplan install
	$(MAKE) -C depends/storage $@
	$(MAKE) -C depends/storage install
	$(MAKE) -C src $@
	$(MAKE) -C config $@
	$(MAKE) -C contrib $@
	$(MAKE) -C tools $@
	$(MAKE) -C ranger-plugin $@
	@echo "All of HAWQ successfully made. Ready to install."

install:
#	$(MAKE) -C doc $@
	$(MAKE) -C depends/thirdparty/googletest install
	$(MAKE) -C depends/libhdfs3 install
	$(MAKE) -C depends/libyarn install
	$(MAKE) -C depends/dbcommon install
	$(MAKE) -C depends/univplan install
	$(MAKE) -C depends/storage install
	$(MAKE) -C src $@
	$(MAKE) -C config $@
	$(MAKE) -C contrib $@
	$(MAKE) -C tools $@
	$(MAKE) -C ranger-plugin $@
	$(MAKE) -C dist $@
	@echo "HAWQ installation complete."

installdirs uninstall:
#	$(MAKE) -C doc $@
	$(MAKE) -C src $@
	$(MAKE) -C config $@
	$(MAKE) -C contrib $@
	$(MAKE) -C ranger-plugin $@

distprep:
#	$(MAKE) -C doc $@
	$(MAKE) -C src $@
	$(MAKE) -C config $@
	$(MAKE) -C contrib $@

rpm:
	$(MAKE) -C contrib/hawq-package $@
	$(MAKE) -C pxf $@
	$(MAKE) -C ranger-plugin $@
	$(MAKE) -C contrib/hawq-package rpm-tarball

unittest:
	$(MAKE) -C depends/dbcommon $@
	$(MAKE) -C depends/univplan $@
	$(MAKE) -C depends/storage $@

feature-test:
	$(MAKE) -C src feature-test

feature-test-clean:
	$(MAKE) -C src feature-test-clean

# clean, distclean, etc should apply to contrib too, even though
# it's not built by default
clean:
#	$(MAKE) -C doc $@
	$(MAKE) -C contrib $@
	-$(MAKE) -C depends/thirdparty/googletest $@ 
	-$(MAKE) -C depends/libhdfs3 $@
	-$(MAKE) -C depends/libyarn $@
	-$(MAKE) -C depends/dbcommon $@
	-$(MAKE) -C depends/univplan $@
	-$(MAKE) -C depends/storage $@
	$(MAKE) -C src $@
	$(MAKE) -C config $@
	$(MAKE) -C contrib $@
	$(MAKE) -C tools $@
	$(MAKE) -C contrib/hawq-package $@
	$(MAKE) -C pxf $@
	$(MAKE) -C ranger-plugin $@
	-$(MAKE) -C src feature-test-clean
# Garbage from autoconf:
	@rm -rf autom4te.cache/

# Important: distclean `src' last, otherwise Makefile.global
# will be gone too soon.
distclean maintainer-clean:
#	-$(MAKE) -C doc $@
	-$(MAKE) -C contrib $@
	-$(MAKE) -C depends/thirdparty/googletest $@ 
	-$(MAKE) -C depends/libhdfs3 $@
	-$(MAKE) -C depends/libyarn $@
	-$(MAKE) -C depends/dbcommon $@
	-$(MAKE) -C depends/univplan $@
	-$(MAKE) -C depends/storage $@
	-$(MAKE) -C config $@
	-$(MAKE) -C tools $@
	-$(MAKE) -C src feature-test-clean
	-$(MAKE) -C src $@
	-$(MAKE) -C pxf $@
	-$(MAKE) -C ranger-plugin $@
	-rm -f config.cache config.log config.status GNUmakefile
# Garbage from autoconf:
	@rm -rf autom4te.cache/

installcheck installcheck-parallel installcheck-good:
	$(MAKE) -C src/test $@

GNUmakefile: GNUmakefile.in $(top_builddir)/config.status
	./config.status $@


##########################################################################

distdir	= postgresql-$(VERSION)
dummy	= =install=
garbage = =*  "#"*  ."#"*  *~*  *.orig  *.rej  core  postgresql-*

dist: $(distdir).tar.gz 
ifeq ($(split-dist), yes)
dist: postgresql-base-$(VERSION).tar.gz postgresql-docs-$(VERSION).tar.gz postgresql-opt-$(VERSION).tar.gz postgresql-test-$(VERSION).tar.gz 
endif
dist:
	-rm -rf $(distdir)

$(distdir).tar: distdir
	$(TAR) chf $@ $(distdir)

opt_files = \
	src/tools src/tutorial \
	$(addprefix src/pl/, plpython tcl)

#docs_files = doc/postgres.tar.gz doc/src doc/TODO.detail
docs_files :=

postgresql-base-$(VERSION).tar: distdir
	$(TAR) -c $(addprefix --exclude $(distdir)/, $(docs_files) $(opt_files) src/test) \
	  -f $@ $(distdir)

postgresql-docs-$(VERSION).tar: distdir
	$(TAR) cf $@ $(addprefix $(distdir)/, $(docs_files))

postgresql-opt-$(VERSION).tar: distdir
	$(TAR) cf $@ $(addprefix $(distdir)/, $(opt_files))

postgresql-test-$(VERSION).tar: distdir
	$(TAR) cf $@ $(distdir)/src/test

distdir:
	-rm -rf $(distdir)* $(dummy)
	IFS=$$(echo -en "\n\b"); for x in `cd $(top_srcdir) && find . -name CVS -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/ HISTORY INSTALL regress_README
	#cp $(distdir)/doc/src/sgml/HISTORY $(distdir)/
	#cp $(distdir)/doc/src/sgml/INSTALL $(distdir)/
	#cp $(distdir)/doc/src/sgml/regress_README $(distdir)/src/test/regress/README
	$(MAKE) -C $(distdir) distclean
	-rm -f $(distdir)/README.CVS

distcheck: $(distdir).tar.gz
	-rm -rf $(dummy)
	mkdir $(dummy)
	$(GZIP) -d -c $< | $(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."

ifeq ($(origin filter), undefined)
filter = .
endif

coverage-show:
	lcov --directory $(filter) --capture --output-file CodeCoverage.info
	lcov --remove CodeCoverage.info 'test/*' 'mock/*' '/usr/*' '/opt/*' '*ext/rhel5_x86_64*' '*ext/osx*' --output-file CodeCoverage.info.cleaned
	genhtml -o CodeCoverageReport CodeCoverage.info.cleaned

coverage-reset:
	lcov --directory . --zerocounters


.PHONY: dist distdir distcheck
#unexport split-dist
