#=================================================================================
# Makefile for PalMail 0.98:
#=================================================================================

VERSION      = 0.98

CC           = gcc
CFLAGS       = -O
BINDIR       = /usr/local/bin
MANDIR       = /usr/local/man
MANEXT       = 1

# Defines for Tcl7.4 / Tk4.0 / TclX7.4 :

#TCL_LIB_INCS = -I/usr/lib/tcl7.4 -I/usr/X11R6/lib/tk4.0 -I/usr/lib/tk4.0
#TCL_HDR_INCS = -I/usr/include/tcl -DTCL74
#LIB_DIRS     = -L/usr/X11R6/lib
#TCL_LIBS     = -ltclx -ltk4.0 -ltcl7.4
#MISC_LIBS    = -lX11 -lm
#ETLIB        = et40.c

# Defines for Tcl7.5 / Tk4.1 :

TCL_LIB_INCS = -I/usr/local/lib/tcl7.5 -I/usr/local/lib/tk4.1
TCL_HDR_INCS = -I/usr/local/include/tcl7.5 -I/usr/local/include/tk4.1
LIB_DIRS     = -L/usr/X11R6/lib -L/usr/local/lib
TCL_LIBS     = -ltk4.1 -ltcl7.5
MISC_LIBS    = -lX11 -lm -ldl
ETLIB        = et41.c

# Defines for Tcl7.6 / Tk4.2 :

#TCL_LIB_INCS = -I/usr/lib/tcl7.6 -I/usr/lib/tk4.2
##TCL_LIB_INCS = -I/usr/local/lib/tcl7.6 -I/usr/local/lib/tk4.2
#TCL_HDR_INCS = -I/usr/include/tcl
##TCL_HDR_INCS = -I/usr/local/include/tcl7.6 -I/usr/local/include/tk4.2
#LIB_DIRS     = -L/usr/X11R6/lib -L/usr/local/lib
#TCL_LIBS     = -ltk4.2 -ltcl7.6
#MISC_LIBS    = -lX11 -lm -ldl
#ETLIB        = et42.c

# If you don't use the full pathname here, you will get a big security-hole!!!
FAXRUNQ      = /usr/local/bin/faxrunq

# Use 0750 if you don't want SUID-binaries. The commands will then
# work only if you invoke PalMail as root.
ATA_MODE     = 4750
FAXRUNQ_MODE = 4750

GROUP        = phone
# GROUP      = modem
MODE         = 660

RINGLOGD     = /var/log
RINGLOGN     = ringlog

IN-HOSTD     = /usr/local/lib/PalMail
IN-HOSTN     = in-hosts

COVERPGD     = /usr/local/lib/PalMail/coverpgs

# choose your favorite coverpage programs
COVERPGS     = fancy.eng fancy.ger fancy.ita simple.eng simple.ger xfig.sample

#=================================================================================

# The global LIBDIR can only be changed directly in PalMail.tcl

LIBDIR := $(shell grep "^set palmail_dir"    PalMail.tcl | sed "s/	/ /g" | \
                  cut -d\  -f 3- | sed "s/ //g")

#=================================================================================

TCL_FILES    = PalFax.tcl PalMail.tcl load_config.tcl exec_cmd.tcl     \
               create_topwin.tcl main_window.tcl filesel_window.tcl    \
               fax_cmds.tcl voice_cmds.tcl dtmf_cmds.tcl ring_cmds.tcl \
               connect_cmds.tcl file_cmds.tcl update_cmds.tcl misc.tcl

all: PalMail do_ata do_faxrunq PalMail.cfg PalMail.man
	@echo
	@echo "  Please read the README-file in this directory and"
	@echo "  check the configuration in PalMail.cfg and this Makefile."
	@echo "  Then type 'make install' as 'root'."
	@echo

install: PalMail do_ata do_faxrunq PalMail.cfg PalMail.man
	@if [ ! -d $(LIBDIR) ] ; then \
	   echo "mkdir $(LIBDIR)"; \
	   mkdir $(LIBDIR); \
	 fi
	@if [ ! -d $(IN-HOSTD) ] ; then \
	   echo "mkdir $(IN-HOSTD)"; \
	   mkdir $(IN-HOSTD); \
	 fi
	@if [ ! -d $(RINGLOGD) ] ; then \
	   echo "mkdir $(RINGLOGD)"; \
	   mkdir $(RINGLOGD); \
	 fi
	@if [ ! -d $(COVERPGD) ] ; then \
	   echo "mkdir $(COVERPGD)"; \
	   mkdir $(COVERPGD); \
	 fi
	chown root:$(GROUP) $(LIBDIR)
	chmod 770 $(LIBDIR)
	install -c -o root -g $(GROUP) -m 0750 -s PalMail $(BINDIR)
	rm -f $(BINDIR)/PalFax
	( cd $(BINDIR) ; ln -s PalMail PalFax )
	install -c -o root -g $(GROUP) -m $(MODE) PalMail.cfg $(LIBDIR)
	rm -f $(LIBDIR)/do_ata
	install -c -o root -g $(GROUP) -m $(ATA_MODE) -s do_ata $(LIBDIR)
	rm -f $(LIBDIR)/do_faxrunq
	install -c -o root -g $(GROUP) -m $(FAXRUNQ_MODE) -s do_faxrunq $(LIBDIR)
	rm -f $(LIBDIR)/do_play
	install -c -o root -g $(GROUP) -m 0770 do_play $(LIBDIR)
	@if [ ! -f $(IN-HOSTD)/$(IN-HOSTN) ] ; then \
	  echo "touch $(IN-HOSTD)/$(IN-HOSTN)"; \
	  touch $(IN-HOSTD)/$(IN-HOSTN); \
	 fi
	@sh -c 'echo "chown root:$(GROUP) $(IN-HOSTD)/$(IN-HOSTN)"; \
	        chown root:$(GROUP) $(IN-HOSTD)/$(IN-HOSTN); \
	        echo "chmod $(MODE) $(IN-HOSTD)/$(IN-HOSTN)"; \
	        chmod $(MODE) $(IN-HOSTD)/$(IN-HOSTN)'
	@if [ ! -f $(RINGLOG) ] ; then \
	  echo "touch -t 01010000 $(RINGLOGD)/$(RINGLOGN)"; \
	  touch -t 01010000 $(RINGLOGD)/$(RINGLOGN); \
	 fi
	@sh -c 'echo "chown root:$(GROUP) $(RINGLOGD)/$(RINGLOGN)"; \
	        chown root:$(GROUP) $(RINGLOGD)/$(RINGLOGN); \
	        echo "chmod $(MODE) $(RINGLOGD)/$(RINGLOGN)"; \
	        chmod $(MODE) $(RINGLOGD)/$(RINGLOGN)'
	install -c -m 0444 PalMail.man $(MANDIR)/man$(MANEXT)/PalMail.$(MANEXT)
	install -c -m 0444 cover.fig $(LIBDIR)
	install -c -m 0444 fcp2fig/babygnu.ps $(LIBDIR)
	cd coverpgs ; install -c -m 0755 $(COVERPGS) $(COVERPGD)


PalMail: PalMail_.c et.o
	$(CC) -o PalMail PalMail_.c et.o $(CFLAGS) $(TCL_HDR_INCS) \
	         $(LIB_DIRS) $(TCL_LIBS) $(MISC_LIBS)

PalMail.static: PalMail_.c et.o
	$(CC) -o PalMail.static PalMail_.c et.o $(CFLAGS) $(TCL_HDR_INCS) \
	         $(LIB_DIRS) -Wl,-Bstatic $(TCL_LIBS) -Wl,-Bdynamic $(MISC_LIBS)
	strip PalMail.static

PalMail_.c: et2c PalMail.et $(TCL_FILES)
	./et2c PalMail.et > PalMail_.c

et2c: et2c.c
	$(CC) -o et2c et2c.c $(CFLAGS) $(TCL_HDR_INCS)

et.o: et_.c
	$(CC) -c -o et.o et_.c $(CFLAGS) $(TCL_HDR_INCS)

et_.c: et2c $(ETLIB)
	./et2c $(TCL_LIB_INCS) $(ETLIB) > et_.c


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

do_faxrunq:
	echo "int main() {return system(\"$(FAXRUNQ)\");}" > do_faxrunq.c
	$(CC) $(CFLAGS) -o do_faxrunq do_faxrunq.c

PalMail.cfg: PalMail.cfg.in
	cat PalMail.cfg.in | \
	sed -e "s?@VERSION@?$(VERSION)?g" \
	    -e "s?@MODE@?$(MODE)?g" \
	    -e "s?@GROUP@?$(GROUP)?g" \
	    -e "s?@RINGLOGD@?$(RINGLOGD)?g" \
	    -e "s?@RINGLOGN@?$(RINGLOGN)?g" \
	    -e "s?@IN-HOSTD@?$(IN-HOSTD)?g" \
	    -e "s?@IN-HOSTN@?$(IN-HOSTN)?g" \
	    -e "s?@COVERPGD@?$(COVERPGD)?g" \
	   > PalMail.cfg

PalMail.man: PalMail.man.in PalMail.tcl
	cat PalMail.man.in | \
	sed -e "s?@VERSION@?$(VERSION)?g" \
	    -e "s?@LIBDIR@?$(LIBDIR)?g" \
	    -e "s?@IN-HOSTS@?$(IN-HOSTD)/$(IN-HOSTN)?g" \
	    -e "s?@RINGLOG@?$(RINGLOGD)/$(RINGLOGN)?g" \
	    -e "s?@COVERPGD@?$(COVERPGD)?g" \
	   > PalMail.man


.PHONY: clean
clean:
	rm -f PalMail *.o do_ata do_faxrunq* et2c et_.c PalMail_.c PalMail.cfg \
	      PalMail.man PalMail.static *.bak *~ coverpgs/*.bak core
	rm -rf PalMail-$(VERSION)

dtmf:
	mkdir /var/spool/voice/DTMF
	touch /var/spool/voice/DTMF/Index
	mv /var/spool/voice/vg_dtmf /var/spool/voice/vg_dtmf.bak
	update vg_dtmf
	install -c -m 0755 vg_dtmf /var/spool/voice

distrib: clean
	tar -C.. -cvzf ../`basename $(shell pwd)`.tgz `basename $(shell pwd)`

bin-dist: PalMail.static
	rm -rf PalMail-$(VERSION)
	mkdir PalMail-$(VERSION)
	cp PalMail.static PalMail-$(VERSION)/PalMail
	cp Make.bin-dist PalMail-$(VERSION)/Makefile
	cp PalMail.cfg.in PalMail.man.in do_play do_ata.c tail_log vg_dtmf cover.fig \
	   README TODO COPYING ChangeLog  PalMail-$(VERSION)/.
	cp -R fcp2fig PalMail-$(VERSION)/.
	cp -R coverpgs PalMail-$(VERSION)/.
	tar cvfz ../PalMail-$(VERSION)-linux-static.tgz PalMail-$(VERSION)

uu: distrib
	uuencode ../`basename $(shell pwd)`.tgz `basename $(shell pwd)`.tgz \
	       > ../`basename $(shell pwd)`.tgz.uu	        
