#
# Columbia University Center for Computing Activities, 1987, 1988.
# Copyright (C) 1987, 1988, Trustees of Columbia University in the City
# of New York.  Permission is granted to any individual or institution
# to use, copy, or redistribute this software so long as it is not sold
# for profit, provided this copyright notice is retained.
#

# $Header: Makefile,v 1.83 88/08/12 06:48:50 chris Exp $

.SUFFIXES: .H .h
.c.o: ; $(CC) $(CFLAGS) -c $*.c

CPP=/lib/cpp
RM=/bin/rm

# if you don't have a preprocessor predefine, then define your machine
# type here:
#MACHINE=-DBSD

CCMD = ../ccmd
INCLUDE = -I$(CCMD)
#DEBUG = -g -DDEBUG -DDEVELOPEMENT
DEBUG = -g -DDEBUG
#DEBUG = -g -DDEBUG -DEXCESS=0 -DMDEBUG
# define USAGE if you want MM to log usage statistics
# USAGE=-DUSAGE
PATCHFILES=patch.*

CFLAGS = $(DEBUG) $(INCLUDE) $(MACHINE) $(USAGE)
LINTFLAGS = -DDEBUG -DMDEBUG $(INCLUDE) $(MACHINE)
LDFLAGS = $(DEBUG)
#LIBS =	$(CCMD)/ccmd.a -lcurses
LIBS =	$(CCMD)/ccmd.a -ltermcap
BIN=$(DESTDIR)/usr/local/bin

# Please keep these in alphabetical order for neatness

SYSH =	s-bsd43.h s-hpux.h s-sun40.h s-ultrix20.h s-mtxinu43.h

H = 	address.h babyl.h chartype.h cmds.h compat.h config.h extern.h \
	help.h message.h mm.h osfiles.h pathnames.h parse.h rd.h seq.h \
	set.h token.h

SRCS =	action.c address.c alias.c babyl.c browse.c cmds.c compat.c \
	dates.c debug.c display.c doinit.c dt.c edit.c \
	exit.c file.c formattab.c headers.c \
	help.c init.c keywords.c mailrc.c mbox.c mh.c misc.c mm.c \
	more.c move.c mtxt.c newmail.c parse.c parsemsg.c pop2.c pop3.c \
	print.c rd.c read.c send.c sendcmds.c sendmail.c seq.c set.c \
	signals.c token.c usage.c whoami.c bboard.c

OBJS =	action.o address.o alias.o babyl.o browse.o cmds.o compat.o \
	dates.o debug.o display.o doinit.o dt.o edit.o exit.o \
	file.o formattab.o headers.o \
	help.o init.o keywords.o mailrc.o mbox.o mh.o misc.o mm.o \
	more.o move.o mtxt.o newmail.o parse.o parsemsg.o pop2.o pop3.o \
	print.o rd.o read.o send.o sendcmds.o sendmail.o seq.o set.o \
	signals.o token.o usage.o whoami.o bboard.o

all:	mm mm.help movemail sys-prof imapsavebb

imapsavebb: imapsavebb.o imaputil.o imapdate.o
	$(CC) -g -o imapsavebb imapsavebb.o imaputil.o imapdate.o

mm:	prepatch argsort patches $(OBJS) version.o $(CCMD)/ccmd.a
	$(RM) -f $@
	$(CC) $(LDFLAGS) -o $@ $(OBJS) version.o $(LIBS)

install: mm mm.help movemail sys-prof
	./mm-install

$(OBJS): $(H)

$(PATCHFILES): 

patches:  $(PATCHFILES)
	./prepatch `./argsort $?`
	touch patches

prepatch: prepatch.c
	$(CC) $(CFLAGS) -o prepatch prepatch.c

argsort: argsort.c
	$(CC) $(CFLAGS) -o argsort argsort.c

babyl.o: babyl.h

tags:	$(H) $(SRCS)
	etags *.[ch]

lint:
	lint $(INCLUDE) $(SRCS)

mm.dist: 
	-$(RM) -rf mm.dist
	-mkdir mm.dist
	(cd mm.dist; co -q ../RCS/*)

tar: 	mm.dist
	tar cf mm.tar mm.dist

nobackup:
	$(RM) -f *~ \#*

set.h:	set.H mkdefines
	awk -f mkdefines < set.H > set.h

cmds.h: cmds.H mkdefines
	awk -f mkdefines < cmds.H > cmds.h

token.h: token.H mkdefines
	awk -f mkdefines < token.H > token.h

tokentest: token.c
	cc -g -o token -DTEST token.c

file.o rd.o: rd.h

clean:
	$(RM) -f *.o mm core a.out

#whobuilt.o: $(SRCS) $(H)
#	$(CC) $(CFLAGS) "`./whobuiltme`" -c whobuilt.c

version.o: $(SRCS) $(H) version.c version.h mkversion
	./mkversion +e
	$(CC) $(CFLAGS) -c version.c

config.h: $(SYSH)
	touch config.h

#config.h:;
#	@echo See the README file for instructions on creating config.h
#	@exit 1

mkversion: mkversion.c whoami.o compat.o dates.o
	$(RM) -f mkversion
	$(CC) $(CFLAGS) -o mkversion mkversion.c whoami.o compat.o dates.o

buildhelp: buildhelp.c help.h
	$(RM) -f buildhelp
	$(CC) $(CFLAGS) -o buildhelp buildhelp.c

mm.help: help.src buildhelp cmds.h
	$(RM) -f mm.help help.cpp
	$(CPP) help.src > help.cpp
	./buildhelp help.cpp mm.help

transform: transform.c
	$(CC) $(CFLAGS) -o transform transform.c

sys-prof.o: sys-prof.c config.h set.h

sys-prof: sys-prof.o formattab.o 
	$(RM) -f sys-prof
	$(CC) $(CFLAGS) -o sys-prof sys-prof.o formattab.o $(LIBS)

mm.conf: sys-prof
	./sys-prof

lll:	
	lint $(LINTFLAGS) $(SRCS)

movemail:  movemail.c
	$(RM) -f movemail
	$(CC) -o movemail movemail.c
