# Makefile - makefile for asterisk-phonepatch
PACKAGE=asterisk-phonepatch
SAVANNAH_PACKAGE=asterisk-phpatch

# Destination directoy
DESTDIR= 

# Define destination directories

BINDIR=$(DESTDIR)/usr/bin
SBINDIR=$(DESTDIR)/usr/sbin
MAN8DIR=$(DESTDIR)/usr/share/man/man8
DOCDIR=$(DESTDIR)/usr/share/doc/$(PACKAGE)
SHAREDIR=$(DESTDIR)/usr/share/$(PACKAGE)
ETCDIR=$(DESTDIR)/etc
ETCPHPDIR=$(DESTDIR)/etc/asterisk-phonepatch
AGIASTERISKDIR=$(DESTDIR)/usr/share/asterisk/agi-bin
LIBDIR=$(DESTDIR)/usr/lib/$(PACKAGE)
SOUNDSDIR=$(DESTDIR)/usr/share/asterisk-phonepatch/sounds

# ------------- don't edit anything below this line --------------

DEBIANDIR=debian
DEBIANVERSION=$(shell cat $(DEBIANDIR)/changelog | head -n1 | awk '{print $$2}' | tr -d '()')
VERSION=$(shell echo $(DEBIANVERSION) | sed "s/-//")
TARBALL=$(PACKAGE)-$(VERSION).tar.gz
ARCH=$(shell cat $(DEBIANDIR)/control | grep ^Architecture | head -n1 | awk '{print $$2}')
DEBPACKAGE=$(PACKAGE)_$(DEBIANVERSION)_$(ARCH).deb
LANGS=es
FTPSERVER=ftp://savannah.gnu.org/incoming/savannah/$(SAVANNAH_PACKAGE)/

# Some directories that will not exist on first installation
CREATE_DIRS=$(LIBDIR) $(SHAREDIR) $(SOUNDSDIR) $(DOCDIR) $(ETCPHPDIR)
MANCONF=man/phonepatch.conf.8

all: conf/phonepatch.conf.example man/phonepatch.conf.8 docs

docs: doc/asterisk-phonepatch.xml
	$(MAKE) -C doc >/dev/null
	
$(MANCONF): template2man.py $(MANCONF)-1 $(MANCONF)-2 conf/phonepatch.template
	cat $(MANCONF)-1 > $(MANCONF)
	python src/templateparser.py conf/phonepatch.template | ./template2man.py >> $(MANCONF)
	cat $(MANCONF)-2 >> $(MANCONF)
	
conf/phonepatch.conf.example: conf/phonepatch.template src/templateparser.py
	python src/templateparser.py --generate conf/phonepatch.template > conf/phonepatch.conf.example

install: all
	# Create dirs
	mkdir -p $(CREATE_DIRS)

	# Main executable
	install -m 755 src/phonepatch.py $(SBINDIR)/asterisk-phonepatch

	# AGI script: link to $(SBINDIR)/phonepatch
	ln -sf ../../../sbin/asterisk-phonepatch $(AGIASTERISKDIR)/phonepatch.agi

	# Manpage
	install -m 644 man/asterisk-phonepatch.8 $(MAN8DIR)
	install -m 644 man/phonepatch.conf.8 $(MAN8DIR)
	
	# Template and configuration
	install -m 644 conf/phonepatch.template $(SHAREDIR)
	install -m 644 conf/phonepatch.conf.example $(DOCDIR)
	install -m 644 conf/phonepatch.conf.example $(ETCPHPDIR)/phonepatch.conf	
	install -m 644 conf/asterisk-phonepatch.conf $(ETCDIR)
	
	# Python modules
	install -m 755 src/radio.py $(LIBDIR)
	install -m 755 src/radiocontrol.py $(LIBDIR)
	install -m 755 src/dtmf.py $(LIBDIR)
	install -m 755 src/soundcard.py $(LIBDIR)
	install -m 755 src/daemonize.py $(LIBDIR)
	install -m 755 src/templateparser.py $(LIBDIR)
	install -m 755 src/processcomm.py $(LIBDIR)

	# Radio control utility
	ln -sf ../lib/asterisk-phonepatch/radiocontrol.py $(BINDIR)/radiocontrol

	# Phonepatch audio files
	
	# English audio to root audio directory
	find sounds/en -name "*.ogg" -exec install -m 644 {} $(SOUNDSDIR)/ \; ;\
	
	# Other languages installed on its own directory
	for DIR in $(LANGS); do \
		mkdir -p $(SOUNDSDIR)/$$DIR ;\
		find sounds/$$DIR -name "*.ogg" -exec install -m 644 {} $(SOUNDSDIR)/$$DIR \; ;\
	done
	
	# Install documentation
	install -m 644 doc/asterisk-phonepatch.pdf $(DOCDIR)
	cp -a doc/asterisk-phonepatch.html $(DOCDIR)/html
		
clean:
	rm -f *.pyc conf/phonepatch.conf.example man/phonepatch.conf.8
	$(MAKE) -C doc clean >/dev/null

dist: distclean dist-tarball dist-deb

dist-tarball: ../$(TARBALL)

dist-deb:  ../$(DEBPACKAGE)

../$(TARBALL): clean $(FILES)
	cat $(DEBIANDIR)/changelog | sed "s/^\($(PACKAGE) (.*)\).*$$/\1/" > ChangeLog
	(cd ..; tar --exclude=CVS -czf $(TARBALL) $(PACKAGE))
	rm -f ../$(TARBALL).sig
	gpg -b --use-agent ../$(TARBALL) || true

../$(DEBPACKAGE): ../$(TARBALL)
	(cp ../$(TARBALL) /tmp; cd /tmp; tar xvzf $(TARBALL); cd $(PACKAGE); fakeroot dpkg-buildpackage)
	cp /tmp/$(DEBPACKAGE) ..
	rm -f ../$(DEBPACKAGE).sig
	gpg -b --use-agent ../$(DEBPACKAGE) || true
	
upload: dist-upload

dist-upload: dist
	(cd ..; wput $(TARBALL)* $(FTPSERVER))
	(cd ..; wput $(DEBPACKAGE)* $(FTPSERVER))
	
distclean: clean
	fakeroot $(DEBIANDIR)/rules clean
	rm -f ChangeLog
