# Copyright (C) 1998-2018 by the Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

# NOTE: Makefile.in is converted into Makefile by the configure script
# in the parent directory.  Once configure has run, you can recreate
# the Makefile by running just config.status.

# Variables set by configure

SHELL=		/bin/sh

VPATH=		@srcdir@
srcdir=		@srcdir@
bindir=		@bindir@
prefix=		@prefix@
exec_prefix=	@exec_prefix@
var_prefix=	@VAR_PREFIX@
DESTDIR=

CC=		@CC@
INSTALL=	@INSTALL@
PYTHON= 	@PYTHON@

DEFS=		@DEFS@

# Customizable but not set by configure

OPT=		@OPT@
CFLAGS=		@CFLAGS@ $(OPT) $(DEFS)

VAR_DIRS= \
	logs archives lists locks data spam qfiles \
	archives/private archives/public

ARCH_INDEP_DIRS= \
	bin templates scripts cron pythonlib \
	Mailman Mailman/Cgi Mailman/Logging Mailman/Archiver \
	Mailman/Handlers Mailman/Queue Mailman/Bouncers	 \
	Mailman/MTA Mailman/Gui Mailman/Commands messages icons \
	tests tests/bounces tests/msgs

ARCH_DEP_DIRS=	cgi-bin mail

# Directories make should decend into
SUBDIRS=	bin cron misc Mailman scripts src templates messages tests


# Modes for directories and executables created by the install
# process.  Default to group-writable directories but
# user-only-writable for executables.
DIRMODE=	775
EXEMODE=	755
FILEMODE=	644
INSTALL_PROGRAM=$(INSTALL) -m $(EXEMODE)
DIRSETGID=	chmod g+s

DATE = $(shell python -c 'import time; print time.strftime("%d-%b-%Y"),')
LANGPACK = README-I18N.en templates messages
EXCLUDES = --exclude=CVS --exclude=.cvsignore --exclude=Makefile* --exclude=*.files --exclude=*.old

# Rules

all: subdirs

subdirs: $(SUBDIRS)
	for d in $(SUBDIRS); \
	do \
	    (cd $$d; $(MAKE)); \
	done

install: doinstall update

doinstall: $(SUBDIRS)
	@echo "Creating architecture independent directories..."
	@for d in $(VAR_DIRS); \
	do \
	    dir=$(DESTDIR)$(var_prefix)/$$d; \
	    if test ! -d $$dir; then \
		echo "Creating directory hierarchy $$dir"; \
		$(srcdir)/mkinstalldirs $$dir; \
		chmod $(DIRMODE) $$dir; \
		$(DIRSETGID) $$dir; \
	    else true; \
	    fi; \
	done
	chmod o-r $(DESTDIR)$(var_prefix)/archives/private
	@for d in $(ARCH_INDEP_DIRS); \
	do \
	    dir=$(DESTDIR)$(prefix)/$$d; \
	    if test ! -d $$dir; then \
		echo "Creating directory hierarchy $$dir"; \
		$(srcdir)/mkinstalldirs $$dir; \
		chmod $(DIRMODE) $$dir; \
		$(DIRSETGID) $$dir; \
	    else true; \
	    fi; \
	done
	@echo "Creating architecture dependent directories..."
	@for d in $(ARCH_DEP_DIRS); \
	do \
	    dir=$(DESTDIR)$(exec_prefix)/$$d; \
	    if test ! -d $$dir; then \
		echo "Creating directory hierarchy $$dir"; \
		$(srcdir)/mkinstalldirs $$dir; \
		chmod $(DIRMODE) $$dir; \
		$(DIRSETGID) $$dir; \
	    else true; \
	    fi; \
	done
	@for d in $(SUBDIRS); \
	do \
	    (cd $$d; $(MAKE) DESTDIR=$(DESTDIR) install); \
	done
	$(PYTHON) -c 'from compileall import *; compile_dir("$(DESTDIR)$(prefix)/Mailman", ddir="$(prefix)/Mailman")'

# Only run bin/update if we aren't installing in DESTDIR, as this
# means there are probably no lists to deal with, and it wouldn't
# work anyway (because of import paths.)
update:
	@(cd $(DESTDIR)$(prefix) ; test -n "$(DESTDIR)" || bin/update)

clean: $(SUBDIRS)
	@for d in $(SUBDIRS); \
	do \
	    (cd $$d; $(MAKE) clean); \
	done
	-rm -f update.log

distclean: $(SUBDIRS)
	@for d in $(SUBDIRS); \
	do \
	    (cd $$d; $(MAKE) distclean); \
	done
	-rm -f config.cache config.log config.status Makefile
	-rm -rf build

langpack:
	tar zcvf langpack-$(DATE).tgz $(EXCLUDES) $(LANGPACK)
