#
# makefile for speechd package
#
# Created:  Mon Aug  9 13:00:41 EDT 1999 mortis@voicenet.com
#

# generic, targets and other vars
SPEECHD=speechd
CATSPEECH=catspeech
BINDIR=bin
PERL_BINARY=/usr/bin/perl
MANDIR=man/man1
MKDIR=/bin/mkdir
INCVER=incver.pl

# try to set VRESION based on the $VERSION variable in 
# the speechd source code.
VERSION=$(shell perl incver.pl -s $(SPEECHD))

# bin install vars
INSTALL_BINDIR=/usr/local/bin
BIN_MODE=755
BIN_OWNER=root
BIN_GROUP=root
INSTALL=install
BIN_INSTALL_FLAGS= --mode=$(BIN_MODE) --owner=$(BIN_OWNER) --group=$(BIN_GROUP)

# man install vars
INSTALL_MANDIR=/usr/local/man/man1
MAN_MODE=644
MAN_OWNER=root
MAN_GROUP=root
MAN_INSTALL_FLAGS= --mode=$(MAN_MODE) --owner=$(MAN_OWNER) --group=$(MAN_GROUP)

SPEECHD_FIFO=/dev/speech
FIFO_MODE=0666

# rc scripts install vars
INSTALL_RCDIR=/etc
RC_MODE=644
RC_OWNER=root
RC_GROUP=root
RC_INSTALL_FLAGS= --mode=$(RC_MODE) --owner=$(RC_OWNER) --group=$(RC_GROUP)


# build targets (files/directories)
DIRS=$(MANDIR) $(BINDIR)
MANPAGES=$(MANDIR)/$(SPEECHD).1 $(MANDIR)/$(CATSPEECH).1
SCRIPTS=$(BINDIR)/$(CATSPEECH) $(BINDIR)/$(SPEECHD)

# all dependencies for building the software
ALL_DEPS= $(DIRS) $(MANPAGES) $(SCRIPTS)


#
# make targets
#
all:  $(ALL_DEPS)

# create the local directories 
$(DIRS):
	mkdir -p $@

# create the speechd manpage
$(MANDIR)/$(SPEECHD).1: $(MANDIR) $(SPEECHD)
	pod2man $(SPEECHD) > $(MANDIR)/$(SPEECHD).1

# create the catspeech manpage
$(MANDIR)/$(CATSPEECH).1: $(MANDIR) $(CATSPEECH)
	pod2man $(CATSPEECH) > $(MANDIR)/$(CATSPEECH).1

# create the speechd program, basicly this 
# makes it easier to identify where they have the
# perl binary installed, so we can set the #! line 
# at the top of the program...
$(BINDIR)/speechd: $(BINDIR) $(SPEECHD)
	echo '#!$(PERL_BINARY) -w' > $(BINDIR)/$(SPEECHD)
	cat $(SPEECHD) >> $(BINDIR)/$(SPEECHD)

# do the same for catspeech
$(BINDIR)/$(CATSPEECH): $(BINDIR) $(CATSPEECH)
	echo '#!$(PERL_BINARY) -w' > $(BINDIR)/$(CATSPEECH)
	cat $(CATSPEECH) >> $(BINDIR)/$(CATSPEECH)

install: $(ALL_DEPS) install-bin install-man install-rc $(SPEECHD_FIFO)

uninstall: uninstall-bin uninstall-man uninstall-rc uninstall-fifo

$(SPEECHD_FIFO):
	mkfifo --mode=$(FIFO_MODE) $(SPEECHD_FIFO)

uninstall-fifo:
	rm -f $(SPEECHD_FIFO)

install-bin: 
	$(INSTALL) $(BIN_INSTALL_FLAGS) $(BINDIR)/$(CATSPEECH) \
		$(INSTALL_BINDIR)/$(CATSPEECH)
	$(INSTALL) $(BIN_INSTALL_FLAGS) $(BINDIR)/$(SPEECHD) \
		$(INSTALL_BINDIR)/$(SPEECHD)

uninstall-bin:
	test -d $(INSTALL_BINDIR) || $(MKDIR) $(INSTALL_BINDIR)
	rm -f $(INSTALL_BINDIR)/$(CATSPEECH) $(INSTALL_BINDIR)/$(SPEECHD)

install-man:
	test -d $(INSTALL_MANDIR) || $(MKDIR) $(INSTALL_MANDIR)
	$(INSTALL) $(MAN_INSTALL_FLAGS) $(MANDIR)/$(SPEECHD).1 \
		$(INSTALL_MANDIR)/$(SPEECHD).1
	$(INSTALL) $(MAN_INSTALL_FLAGS) $(MANDIR)/$(CATSPEECH).1 \
		$(INSTALL_MANDIR)/$(CATSPEECH).1

uninstall-man:
	rm -f $(INSTALL_MANDIR)/$(CATSPEECH).1 $(INSTALL_MANDIR)/$(SPEECHD).1

install-rc:
	$(INSTALL) $(RC_INSTALL_FLAGS) speechdrc \
		$(INSTALL_RCDIR)/speechdrc
	$(INSTALL) $(RC_INSTALL_FLAGS) speechd.sub \
		$(INSTALL_RCDIR)/speechd.sub
	
uninstall-rc:
	rm -f $(INSTALL_RCDIR)/speechd.sub $(INSTALL_RCDIR)/speechdrc

# remove any output files...
clean:
	rm -rf man bin speechd-*.tar.gz

# increment the version number in the speechd source code
$(SPEECHD)-version:
	perl $(INCVER) $(SPEECHD)

# increment the version number in the catspeech source code
$(CATSPEECH)-version:
	perl $(INCVER) $(CATSPEECH)

# create a distribution, named based on version number
dist:
	tar czvf $(SPEECHD)-$(VERSION).tar.gz -C.. speechd/

showver:
	@echo Version: $(VERSION)
