#
# Makefile
#
# This is the Makefile for the whole vgetty stuff.
#
# $Id: Makefile,v 1.105 1995/04/12 17:50:22 marc Exp $
#

MAIN=vgetty pvfmain zplay

VGETTYOBJS=vgetty.o vanswer.o voclib.o vmodem.o vconfig.o \
	util.o ../do_stat.o \
	../logfile.o ../do_chat.o ../utmp.o ../logname.o ../login.o \
	../faxrec.o ../faxsend.o ../locks.o ../faxlib.o ../faxhng.o \
	../io.o ../gettydefs.o ../tio.o ../config.o ../cnd.o ../getdisk.o \
	../mg_m_init.o ../goodies.o ../conf_mg.o

PVFOBJS=pvfmain.o pvfsine.o pvfutil.o pvfadpcm.o pvfau.o pvflin.o \
	pvfvoc.o pvffft.o pvflib.o vconfig.o util.o ../logfile.o

PVFLINKS=pvfcut pvfecho pvfreverse pvfspeed pvfamp pvfmix \
	adpcmtopvf pvftoadpcm2 pvftoadpcm3 pvftoadpcm4 pvftoau autopvf \
	pvftolin lintopvf basictopvf pvftobasic pvftovoc voctopvf \
	pvfsine pvffft

ZPLAYOBJS=zplay.o voclib.o vmodem.o vconfig.o util.o \
	../logfile.o ../locks.o ../io.o ../tio.o ../getdisk.o

SHELLSCRIPTS=play_messages vg_dtmf vg_message vg_button vg_nmp \
	vg_say vg_call vg_fft

.c.o:
	$(CC) $(CFLAGS) -I. -I.. -c $*.c -o $*.o

all: ../policy.h
	cd ..; $(MAKE) vgetty

install:
	cd ..; $(MAKE) vgetty-install

pvfmain.o: pvfmain.c
	$(CC) -c -DMAIN $(CFLAGS) -I. -I.. pvfmain.c -o pvfmain.o

pvfmain: $(PVFOBJS)
	$(CC) -o pvfmain $(PVFOBJS) $(LDFLAGS) -lm
	for i in $(PVFLINKS); do $(RM) -f $$i; $(LN) pvfmain $$i; done

vgetty.c:
	@echo Making vgetty.c from ../mgetty.c
	$(LN) ../mgetty.c vgetty.c

vgetty.o: vgetty.c 
	$(CC) -c -I. -I.. -DMAIN -DVOICE -DFAX_SPOOL_IN=\"$(FAX_SPOOL_IN)\"\
	  $(CFLAGS) vgetty.c -o vgetty.o

vgetty: $(VGETTYOBJS)
	$(CC) -o vgetty $(VGETTYOBJS) $(LDFLAGS)

zplay.o: zplay.c
	$(CC) -c -DMAIN $(CFLAGS) -I. -I.. zplay.c -o zplay.o

zplay: $(ZPLAYOBJS)
	$(CC) -o zplay $(ZPLAYOBJS) $(LDFLAGS)

shell_scripts: ../sedscript
	for i in $(SHELLSCRIPTS); do ../sedscript <$$i.in >$$i; chmod 750 $$i;\
	done

../policy.h:
	@echo
	@echo "You didn't build mgetty first. Please read the documentation."
	@echo
	@exit 1

../sedscript: ../policy.h ../Makefile ../mksed.c
	@cd .. ; $(MAKE) sedscript

vgetty-all: $(MAIN) shell_scripts

vgetty-install: vgetty-all
	$(INSTALL) -s -m 755 zplay $(BINDIR)
	$(INSTALL) -s -m 755 pvfmain $(BINDIR)
	-$(MV) -f $(SBINDIR)/vgetty $(SBINDIR)/vgetty.old
	$(INSTALL) -s -m 700 vgetty $(SBINDIR)
	cd $(BINDIR); for i in $(PVFLINKS); do $(RM) -f $$i; \
		$(LN) pvfmain $$i; done
	$(INSTALL) -m 644 zplay.1 $(MAN1DIR)
	$(INSTALL) -m 644 pvf.1 $(MAN1DIR)
	cd $(MAN1DIR); for i in $(PVFLINKS); \
		do $(RM) -f $$i.1; $(LN) pvf.1 $$i.1; done
	[ -d $(VOICE_DIR) ] || mkdir $(VOICE_DIR)
	[ -d $(VOICE_DIR)/incoming ] || mkdir $(VOICE_DIR)/incoming
	chown 0 $(VOICE_DIR)/incoming
	chgrp $(PHONE_GROUP) $(VOICE_DIR)/incoming
	chmod $(PHONE_PERMS) $(VOICE_DIR)/incoming
	[ -d $(VOICE_DIR)/messages ] || mkdir $(VOICE_DIR)/messages
	for i in $(SHELLSCRIPTS); do \
		$(INSTALL) -m 755 $$i $(VOICE_DIR) ;\
		done
	[ -f $(VOICE_DIR)/.code ] || echo '12345' >$(VOICE_DIR)/.code
	chgrp $(PHONE_GROUP) $(VOICE_DIR)/.code
	chmod $(PHONE_PERMS) $(VOICE_DIR)/.code
	chmod 660 $(VOICE_DIR)/.code
	[ -f $(VOICE_DIR)/messages/Index ] || \
		echo 'put_filename_here' >$(VOICE_DIR)/messages/Index
	[ -f $(VOICE_DIR)/messages/beep ] || \
		./pvfsine 1.0 880 | ./pvftoadpcm3 >$(VOICE_DIR)/messages/beep

clean:
	$(RM) -f vgetty.c *.o $(MAIN) $(PVFLINKS) $(SHELLSCRIPTS)

fullclean: clean

check:
	@ls -1 >/tmp/Files.real
	@echo -n "diff /tmp/Files.real Files | grep \"^<\" | " >> check
	@echo "grep -v \"+++ Files\" > /tmp/Files.more" >> check
	@echo -n "diff /tmp/Files.real Files | grep \"^>\" | " >> check
	@echo "grep -v \"+++ Files\" > /tmp/Files.miss" >> check
	@echo "exit 0" >> check
	@chmod 700 check
	@./check
	@if [ -s /tmp/Files.miss ] ; then \
		echo ""; \
		echo "* * * * * * * * * * * * *"; \
		echo "* Hey Gert, watch out ! *"; \
		echo "* * * * * * * * * * * * *"; \
		echo ""; \
		echo "Missing files:"; \
		cat /tmp/Files.miss; \
		echo ""; \
		rm -f check /tmp/Files.real /tmp/Files.miss /tmp/Files.more; \
		exit 1; \
	fi
	@if [ -s /tmp/Files.more -a -f .warning ] ; then \
		echo "Warning: Additional files:"; \
		cat /tmp/Files.more; \
	fi
	@$(RM) -f check /tmp/Files.real /tmp/Files.miss /tmp/Files.more

include depend
