#
# Copyright (c) 1980 Regents of the University of California.
# All rights reserved.
#
# Redistribution and use in source and binary forms are permitted
# provided that this notice is preserved and that due credit is given
# to the University of California at Berkeley. The name of the University
# may not be used to endorse or promote products derived from this
# software without specific prior written permission. This software
# is provided ``as is'' without express or implied warranty.
#
#	@(#)Makefile.11	5.2 (Berkeley) 2/18/88
#
# Unix version 7.
#
# If you are compiling this for a nonseparate I/D machine,
# you must:
#	change the definitions of LDFLAGS, CFLAGS, LIBES,
#	SIGRETROSRC, and SIGRETROOBJ
#	make Mail40 rather than Mail
#
# Mail is too large to fit on a nonseparate I/D machine without
# text overlays.
#
# If you do not have a vfork system call or do not support
# job control, you must change the definition of OPTIONS.
#

#TRUNCC=		trunc.c		# undefine these lines if you need
#TRUNCO=		trunc.o		# the trunc procedure

#LDFLAGS=	-i -lx	${STACK}		# for separate I/D machines

#CFLAGS=${MODEL} -O ${OPTIONS} ${INCLUDES}	# for separate I/D machines
#CFLAGS=-O2 -D__USE_BSD_SIGNAL -DTRUNC -static
CFLAGS=	-O2 -D__USE_BSD_SIGNAL -DTRUNC

#LIBES=		-lc				# for separate I/D machines

#SIGRETROSRC=	sigretro.c			# for those without job control
#SIGRETROOBJ=	sigretro.o			# for those without job control

#XSTR=		/usr/bin/xstr
DESTDIR=	/
#CTAGS=		/usr/bin/ctags -w
ED=		-ed
AS=		-as
RM=		-rm
CC=		gcc
OBJS=aux.o cmd1.o cmd2.o cmd3.o cmdtab.o collect.o config.o edit.o fio.o \
	getname.o head.o v7.local.o lex.o list.o main.o \
	names.o optim.o quit.o send.o strings.o temp.o tty.o vars.o \
	version.o ${SIGRETROOBJ} \
	${TRUNCO} lock.o

SRCS=aux.c cmd1.c cmd2.c cmd3.c cmdtab.c collect.c config.c edit.c fio.c \
	getname.c head.c v7.local.c lex.c list.c main.c \
	names.c optim.c quit.c send.c strings.c temp.c tty.c vars.c \
	version.c ${SIGRETROSRC} \
	${TRUNCC} lock.c

HDRS=rcv.h configdefs.h def.h glob.h v7.local.h local.h

S = $(SRCS) $(HDRS)

#
# Special massaging of C files for sharing of strings
#
.c.o:
	${CC} -c ${CFLAGS} $*.c
#	${CC} -c -E ${CFLAGS} $*.c | ${XSTR} -
#	${CC} -c ${CFLAGS} x.c 
#	mv x.o $*.o
#	@$(RM) -f x.c

none:	Mail

# none:	;
#	@echo "Option must be specified, either 86, 286, or 386"

86:	;
	make all 'MODEL=-Mes0'  'STACK=-F 4000 '

286:	;
	make all 'MODEL=-Mes2'  'STACK=-F 4000 '

386:	;
	make all 

all:	Mail

Mail:	$S $(OBJS)
	$(RM) -f Mail
	@echo Loading ...
	${CC} ${CFLAGS} ${LDFLAGS} -o Mail ${OBJS} ${LIBES}
	@size Mail

shar:	$S
	shar README $S Makefile mail.1 fmt.1 mail.options >mail.sh

diffs:	$S
	cdiff old/patchlevel.h	patchlevel.h	>diffs
	cdiff old/Makefile	Makefile	>>diffs
	cdiff old/Makefile.11	Makefile.11	>>diffs
	cdiff old/aux.c		aux.c		>>diffs
	cdiff old/cmd1.c	cmd1.c		>>diffs
	cdiff old/cmd2.c	cmd2.c		>>diffs
	cdiff old/cmd3.c	cmd3.c		>>diffs
	cdiff old/cmdtab.c	cmdtab.c	>>diffs
	cdiff old/collect.c	collect.c	>>diffs
	cdiff old/config.c	config.c	>>diffs
	cdiff old/configdefs.h	configdefs.h	>>diffs
	cdiff old/def.h		def.h		>>diffs
	cdiff old/edit.c	edit.c		>>diffs
	cdiff old/fio.c		fio.c		>>diffs
	cdiff old/fmt.c		fmt.c		>>diffs
	cdiff old/getname.c	getname.c	>>diffs
	cdiff old/glob.h	glob.h		>>diffs
	cdiff old/head.c	head.c		>>diffs
	cdiff old/lex.c		lex.c		>>diffs
	cdiff old/list.c	list.c		>>diffs
	cdiff old/local.h	local.h		>>diffs
	cdiff old/main.c	main.c		>>diffs
	cdiff old/names.c	names.c		>>diffs
	cdiff old/optim.c	optim.c		>>diffs
	cdiff old/quit.c	quit.c		>>diffs
	cdiff old/rcv.h		rcv.h		>>diffs
	cdiff old/send.c	send.c		>>diffs
	cdiff old/sigretro.c	sigretro.c	>>diffs
	cdiff old/sigretro.h	sigretro.h	>>diffs
	cdiff old/strings.c	strings.c	>>diffs
	cdiff old/temp.c	temp.c		>>diffs
	cdiff old/tty.c		tty.c		>>diffs
	cdiff old/v7.local.c	v7.local.c	>>diffs
	cdiff old/v7.local.h	v7.local.h	>>diffs
	cdiff old/vars.c	vars.c		>>diffs
	cdiff old/version.c	version.c	>>diffs
	cdiff old/trunc.c	trunc.c		>>diffs
	cdiff old/lock.c	lock.c		>>diffs

Mail40:	$S $(OBJS)
	$(RM) -f Mail
	@echo Loading ...
	@ld -X /lib/crt0.o ${LDFLAGS} -o Mail \
	-Z	getname.o names.o optim.o send.o strings.o temp.o \
		v7.local.o vars.o \
	-Z	edit.o head.o lex.o list.o lock.o main.o quit.o tty.o \
	-Z	cmd1.o cmd2.o cmd3.o collect.o ${SIGRETROOBJ} \
	-L	aux.o cmdtab.o config.o errlst.o fio.o \
		str.o version.o ${LIBES}
	@size Mail

install:
	cp Mail /bin/Mail
	strip /bin/Mail
	chgrp mail /bin/Mail
	chmod 2555 /bin/Mail
	cp Mail.* /usr/lib
	cp mail.1 /usr/man/man1
	mv /bin/mail /bin/mail.old
	cd /bin; ln Mail mail
#	cp fmt /bin/fmt

$S:
	sccs get $@;

srcs:	$S

tags:	$(SRCS)
#	${CTAGS} $(SRCS);

clean:
	$(RM) -f *.o
	rm -f Mail a.out fmt x.c xs.c core diffs mail.L
#	cp /dev/null strings

lint:
	lint $(CFLAGS) $(SRCS) > mail.L

fmt:	fmt.c head.c
	$(CC) $(CFLAGS) fmt.c head.c -O -o fmt
	$(RM) -f fmt.o head.o
	size fmt

#str.o: strings
#	$(XSTR)
#	$(CC) -c $(CFLAGS) xs.c
#	$(CC) -c $(CFLAGS) str.c
#	mv xs.o str.o
#	$(RM) xs.c

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

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

errlst.o: errlst.c
	${CC} -c ${CFLAGS} errlst.c
#	${CC} -c -E ${CFLAGS} errlst.c | ${XSTR} -
#	${CC} -c ${CFLAGS} x.c
#	mv x.o errlst.o

wc:
	@wc rcv.h def.h glob.h local.h v7.local.h $(SRCS)

sc:
	@grep -c \; rcv.h def.h glob.h local.h v7.local.h $(SRCS)
