#
# 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 $@
	$(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

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
