#
# 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/libhdfs3 $@
	$(MAKE) -C depends/libyarn $@
	$(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 $@ 
	$(MAKE) -C depends/libhdfs3 $@
	$(MAKE) -C depends/libyarn $@
	$(MAKE) -C src $@
	$(MAKE) -C config $@
	$(MAKE) -C contrib $@
	$(MAKE) -C tools $@
	$(MAKE) -C ranger-plugin $@
	@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

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 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 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
