#	
#	Linux-Makefile for 
#		"to-otalk" and "to-otalkd",
#		"to-ntalk" and "to-ntalkd",
#	V1.4 Thomas Omerzu <omerzu@quantum.de>, 26.5.97
#	

# --- select installation directory ---

SBINDIR=/usr/local/sbin
#SBINDIR=/usr/sbin
BINDIR=	/usr/local/bin
#BINDIR=/usr/bin


# --- below this point, no changes should be necessary ---

VERS=1.4
SHELL=/bin/sh

NSERVER= to-ntalkd
OSERVER= to-otalkd
NCLIENT= to-ntalk
OCLIENT= to-otalk

CFLAGS= $(XDEFS) -I. -Dosockaddr=sockaddr -DMSG_EOR
LDFLAGS= -s -static

SSRC=	talkd.c announce.c process.c table.c print.c
SOBJ=   $(SSRC:.c=.o)
SHDR=	talk.h talkd.h

CADD=	-lncurses 
CSRC=	ctl.c ctl_transact.c display.c get_addrs.c get_names.c \
	init_disp.c invite.c io.c look_up.c msgs.c talk.c
CHDR=	talk.h talk_ctl.h

COBJ=   $(CSRC:.c=.o)


all: $(NCLIENT) $(NSERVER) $(OCLIENT) $(OSERVER) clean


$(NCLIENT): $(CSRC) $(CHDR)
	make clean
	make talk
	mv talk $@

$(NSERVER): $(SSRC) $(SHRD)
	make clean
	make talkd
	mv talkd $@

$(OCLIENT): $(CSRC) $(CHDR)
	make clean
	make XDEFS=-DOTALK talk
	mv talk $@

$(OSERVER): $(SSRC) $(SHRD)
	make clean
	make XDEFS=-DOTALK talkd
	mv talkd $@

talkd:	$(SOBJ)
	$(CC) $(LDFLAGS) -o $@ $(SOBJ) $(SADD)

talk:	$(COBJ)
	$(CC) $(LDFLAGS) -o $@ $(COBJ) $(CADD)

clean:
	rm -f $(COBJ) $(SOBJ)

clear clobber: clean
	rm -f talk talkd $(NSERVER) $(NCLIENT) $(OSERVER) $(OCLIENT)


install: 
	@if [ ! -f $(NSERVER) -o ! -f $(NCLIENT) -o ! -f $(OSERVER) -o ! -f $(OCLIENT) ]; \
	then \
		make all;\
	fi
	@case `id` in \
	*root*) exit 0;;\
	*) echo "root permission required for 'make install'!"; exit 1;;\
	esac
	@#
	@echo "---- ntalk installation"
	@#
	@if [ ! -d $(SBINDIR) ];\
	then \
		mkdir $(SBINDIR);\
	fi
	cp $(NSERVER) $(SBINDIR)
	chmod 755 $(SBINDIR)/$(NSERVER)
	@if [ ! -d $(BINDIR) ];\
	then \
		mkdir $(BINDIR);\
	fi
	-mv $(BINDIR)/to-ntalk $(BINDIR)/to-ntalk.old
	-mv $(BINDIR)/ntalk $(BINDIR)/ntalk.old
	-mv $(BINDIR)/talk $(BINDIR)/talk.old
	cp $(NCLIENT) $(BINDIR)
	chmod 755 $(BINDIR)/$(NCLIENT)
	-ln $(BINDIR)/$(NCLIENT) $(BINDIR)/ntalk
	-ln $(BINDIR)/$(NCLIENT) $(BINDIR)/talk
	@#
	@echo "---- otalk installation"
	@#
	@if [ ! -d $(SBINDIR) ];\
	then \
		mkdir $(SBINDIR);\
	fi
	cp $(OSERVER) $(SBINDIR)
	chmod 755 $(SBINDIR)/$(OSERVER)
	@if [ ! -d $(BINDIR) ];\
	then \
		mkdir $(BINDIR);\
	fi
	-mv $(BINDIR)/to-otalk $(BINDIR)/to-otalk.old
	-mv $(BINDIR)/to-talk $(BINDIR)/to-talk.old
	-mv $(BINDIR)/otalk $(BINDIR)/otalk.old
	cp $(OCLIENT) $(BINDIR)
	chmod 755 $(BINDIR)/$(OCLIENT)
	-ln $(BINDIR)/$(OCLIENT) $(BINDIR)/to-talk
	-ln $(BINDIR)/$(OCLIENT) $(BINDIR)/otalk
	@#
	@echo "---- inetd.conf modification"
	@#
	@cp /etc/inetd.conf /etc/inetd.conf.save
	@awk '/^talk/ { if ($$0!~/to-/) print "#"$$0; print "talk	dgram	udp	wait	root	'$(SBINDIR)/$(OSERVER)' '$(OSERVER)' -d"; next }\
	/^ntalk/ { if ($$0!~/to-/) print "#"$$0; print "ntalk	dgram	udp	wait	root	'$(SBINDIR)/$(NSERVER)' '$(NSERVER)' -d"; next }\
	{ print }'  /etc/inetd.conf.save > /etc/inetd.conf
	@if [ -f "/var/run/inetd.pid" ]; then\
		kill -1 `cat /var/run/inetd.pid`;\
		echo "inetd restarted ...";\
	else\
		echo "Please restart inetd!";\
	fi
	@echo "---- installation finished"
	@echo "---- Users who want X Windows support should"
	@echo '---- copy sample.talkd.sh to $$HOME/.talkd.sh'

xxx:
	-mv $(SBINDIR)/$(SERVER) $(SBINDIR)/$(SERVER).old

BINTAR=to-talk-$(VERS).bin.tar
SRCTAR=to-talk-$(VERS).src.tar
DIR=to-talk-$(VERS)
XXXFILES=$(DIR)/README $(DIR)/Makefile $(DIR)/sample.talkd.sh
BINFILES=$(DIR)/$(OCLIENT) $(DIR)/$(OSERVER) $(DIR)/$(NCLIENT) $(DIR)/$(NSERVER)
SRCFILES=$(DIR)/*.c $(DIR)/*.h $(DIR)/protocols

tar: $(SERVER) $(CLIENT)
	@echo "creating tar files"
	@cd .. ; tar cf $(BINTAR) $(XXXFILES) $(BINFILES) ; gzip -f -9 $(BINTAR)
	@cd .. ; tar cf $(SRCTAR) $(XXXFILES) $(SRCFILES) ; gzip -f -9 $(SRCTAR)
	@cp README ../$(DIR).README


# ---------- talk ----------------------

ctl.o: ctl.c talk.h talk_ctl.h

ctl_transact.o: ctl_transact.c talk.h talk_ctl.h

display.o: display.c talk.h

get_addrs.o: get_addrs.c talk.h talk_ctl.h

get_names.o: get_names.c talk.h

init_disp.o: init_disp.c talk.h

invite.o: invite.c talk.h talk_ctl.h

io.o: io.c talk.h

look_up.o: look_up.c talk.h talk_ctl.h

msgs.o: msgs.c talk.h

talk.o: talk.c talk.h


# ---------- talkd ----------------------

announce.o: announce.c talk.h

print.o: print.c talk.h

process.o: process.c talk.h

table.o: table.c talk.h

talkd.o: talkd.c talk.h

