#
# Makefile for top level of zsh distribution
#
# Copyright (c) 1995-1997 Richard Coleman
# All rights reserved.
#
# Permission is hereby granted, without written agreement and without
# license or royalty fees, to use, copy, modify, and distribute this
# software and to distribute modified versions of this software for any
# purpose, provided that the above copyright notice and the following
# two paragraphs appear in all copies of this software.
#
# In no event shall Richard Coleman or the Zsh Development Group be liable
# to any party for direct, indirect, special, incidental, or consequential
# damages arising out of the use of this software and its documentation,
# even if Richard Coleman and the Zsh Development Group have been advised of
# the possibility of such damage.
#
# Richard Coleman and the Zsh Development Group specifically disclaim any
# warranties, including, but not limited to, the implied warranties of
# merchantability and fitness for a particular purpose.  The software
# provided hereunder is on an "as is" basis, and Richard Coleman and the
# Zsh Development Group have no obligation to provide maintenance,
# support, updates, enhancements, or modifications.
#

subdir = .
dir_top = .
SUBDIRS = Doc Etc Src Test

@VERSION_MK@

# source/build directories
VPATH           = @srcdir@
sdir            = @srcdir@
sdir_top        = @top_srcdir@
INSTALL         = @INSTALL@

@DEFS_MK@

# ========== DEPENDENCIES FOR BUILDING ==========

# default target
all: config.h config.modules
	@for subdir in Src Doc; do \
	  (cd $$subdir && $(MAKE) $(MAKEDEFS) $@) || exit 1; \
	done

# prepare module configuration
prep:
	@cd Src && $(MAKE) $(MAKEDEFS) $@

META-FAQ: FORCE
	@cd Doc && $(MAKE) $(MAKEDEFS) ../META-FAQ

dvi ps html info pdf:
	@cd Doc && $(MAKE) $(MAKEDEFS) $@

# ========== DEPENDENCIES FOR INSTALLING ==========

# install stripped
install-strip:
	$(MAKE) install STRIPFLAGS="-s"

# install/uninstall most things
install: install.bin install.modules install.fns install.man install.runhelp
uninstall: uninstall.bin uninstall.modules uninstall.fns uninstall.man uninstall.runhelp

# install/uninstall just the binary
install.bin uninstall.bin:
	@cd Src && $(MAKE) $(MAKEDEFS) $@

# install/uninstall just the modules
install.modules uninstall.modules:
	@cd Src && $(MAKE) $(MAKEDEFS) $@

# install/uninstall just the man pages
install.man uninstall.man:
	@cd Doc && $(MAKE) $(MAKEDEFS) $@

# install/uninstall just the runhelp files
install.runhelp uninstall.runhelp:
	@cd Doc && $(MAKE) $(MAKEDEFS) $@

# install/uninstall just the shell functions
install.fns:
	if test x$(fndir) != x && test x$(fndir) != xno; then \
	  test x$(sitefndir) != xno && \
	    $(SHELL) $(sdir_top)/mkinstalldirs $(DESTDIR)$(sitefndir); \
	  sdir_top="$(sdir_top)" fndir="$(fndir)" dir_top="$(dir_top)" \
	  scriptdir="$(scriptdir)" runhelpdir="$(runhelpdir)" \
	  FUNCTIONS_SUBDIRS="$(FUNCTIONS_SUBDIRS)" \
	  INSTALL_DATA="$(INSTALL_DATA)" \
	  INSTALL_PROGRAM="$(INSTALL_PROGRAM)" \
	  DESTDIR="$(DESTDIR)" VERSION="$(VERSION)" \
	  $(SHELL) $(sdir_top)/Config/installfns.sh || exit 1; \
	fi; \
	exit 0

uninstall.fns:
	if test x$(fndir) != x && test x$(fndir) != xno; then \
	  fndir="$(fndir)" dir_top="$(dir_top)" \
	  scriptdir="$(scriptdir)" \
	  FUNCTIONS_SUBDIRS="$(FUNCTIONS_SUBDIRS)" \
	  DESTDIR="$(DESTDIR)" VERSION="$(VERSION)" \
	  $(SHELL) $(sdir_top)/Config/uninstallfns.sh || exit 1; \
	fi; \
	exit 0

# install/uninstall just the info pages
install.info uninstall.info:
	@cd Doc && $(MAKE) $(MAKEDEFS) $@

# install/uninstall just the HTML manual
install.html uninstall.html:
	@cd Doc && $(MAKE) $(MAKEDEFS) $@

# ========== DEPENDENCIES FOR TESTING ==========
check test:
	cd Test ; $(MAKE) check

# ========== DEPENDENCIES FOR CLEANUP ==========

@CLEAN_MK@

distclean-here:
	rm -f Makefile config.h config.status config.log config.cache config.modules config.modules.sh stamp-h Config/defs.mk
	rm -rf autom4te.cache

realclean-here:
	cd $(sdir) && rm -f config.h.in stamp-h.in configure

# ========== DEPENDENCIES FOR MAINTENANCE ==========

@CONFIG_MK@

config: config.h

config.status: $(sdir)/configure
	$(SHELL) ./config.status --recheck

$(sdir)/configure: $(sdir)/aclocal.m4 $(sdir)/aczsh.m4 $(sdir)/configure.ac
	cd $(sdir) && autoconf

config.h: stamp-h
stamp-h: $(sdir)/config.h.in config.status
	cd $(dir_top) && $(SHELL) ./config.status config.h $@

config.modules: $(sdir)/config.h.in config.status config.modules.sh
	cd $(dir_top) && $(SHELL) ./config.status $@ && \
	$(SHELL) ./config.modules.sh

$(sdir)/config.h.in: $(sdir)/stamp-h.in
$(sdir)/stamp-h.in: $(sdir)/configure
	cd $(sdir) && autoheader
	echo > $(sdir)/stamp-h.in

# ========== DEPENDENCIES FOR DISTRIBUTION ==========

DISTNAME = zsh-$(VERSION)

tarxz-src: $(DISTNAME).tar.xz
$(DISTNAME).tar.xz: FORCE
	@$(sdir_top)/Util/mkdisttree.sh $(DISTNAME) $(sdir_top) $(dir_top) SRC \
	    $(MAKE) $(MAKEDEFS)
	echo '#define ZSH_PATCHLEVEL "'`cd $(sdir_top) && git describe --tags --long --abbrev=7`'"' >$(DISTNAME)/Src/patchlevel.h.release
	tar cf - $(DISTNAME) | xz -9 > $@
	rm -rf $(DISTNAME)

tarxz-doc: $(DISTNAME)-doc.tar.xz
$(DISTNAME)-doc.tar.xz: FORCE
	@$(sdir_top)/Util/mkdisttree.sh $(DISTNAME) $(sdir_top) $(dir_top) DOC \
	    $(MAKE) $(MAKEDEFS)
	tar cf - $(DISTNAME) | xz -9 > $@
	rm -rf $(DISTNAME)

FORCE:
