# 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
AGIASTERISKDIR=$(DESTDIR)/var/lib/asterisk/agi-bin
SPOOLDIR=$(DESTDIR)/var/spool/asterisk/phonepatch
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}')
DEBHEADER=$(PACKAGE)_$(DEBIANVERSION)
DEBPACKAGE=$(DEBHEADER)_$(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) $(SPOOLDIR)
MANCONF=man/phonepatch.conf.8

all: man/phonepatch.conf.8 

$(MANCONF): template2man.py $(MANCONF)-1 $(MANCONF)-2 conf/phonepatch.conf.template
	cat $(MANCONF)-1 > $(MANCONF)
	python src/templateparser.py conf/phonepatch.conf.template | ./template2man.py >> $(MANCONF)
	cat $(MANCONF)-2 >> $(MANCONF)
	
install: all
	# Create dirs
	install -d -o asterisk -g asterisk $(CREATE_DIRS)

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

	# AGI script
	install -m 755 src/agi.py $(AGIASTERISKDIR)/phonepatch.agi

	# Manpage
	install -m 644 man/asterisk-phonepatch.8 $(MAN8DIR)
	install -m 644 man/phonepatch.conf.8 $(MAN8DIR)
	install -m 644 man/radiocontrol.8 $(MAN8DIR)
	
	# Template and configuration
	install -m 644 conf/phonepatch.conf.template $(SHAREDIR)
	install -m 644 conf/phonepatch.conf.example $(DOCDIR)
	install -m 644 conf/phonepatch.conf.example $(ETCPHPDIR)/phonepatch.conf	
	
	# 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/ctcss.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)
	install -m 755 src/unixsocket.py $(LIBDIR)
	
	# Misc scripts
	install -m 755 misc/daily_use.sh $(LIBDIR)

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

	# Phonepatch audio files
	
	# English audio to root audio directory
	cp sounds/en/* $(SOUNDSDIR) || true
	
	# Other languages installed on its own directory
	for DIR in $(LANGS); do \
		mkdir -p $(SOUNDSDIR)/$$DIR ;\
		cp sounds/$$DIR/* $(SOUNDSDIR)/$$DIR || true;\
	done
	
conf/phonepatch.conf.example: conf/phonepatch.conf.template
	src/templateparser.py -g conf/phonepatch.conf.template > conf/phonepatch.conf.example	

clean:
	rm -f *.pyc man/phonepatch.conf.8

dist: distclean dist dist-deb

dist: ../$(TARBALL)

dist-deb:  ../$(DEBPACKAGE)
ChangeLog: debian/changelog
	cat $(DEBIANDIR)/changelog | sed "s/^\(xhotkeys (.*)\).*$$/\1/" | sed "s/[[:space:]]*//" > ChangeLog

../$(TARBALL): clean $(FILES) ChangeLog
	(cd ..; tar --exclude=CVS --exclude=misc --exclude=webpage -czf $(TARBALL) $(PACKAGE))

../$(DEBPACKAGE): ../$(TARBALL)
	CURRENT=$$PWD && \
	TEMP=`mktemp -d` && \
	cp ../$(TARBALL) $$TEMP && \
	tar -C $$TEMP -xvzf ../$(TARBALL) && \
	(cd $$TEMP/$(PACKAGE); fakeroot dpkg-buildpackage || true) && \
	cp $$TEMP/$(DEBHEADER)* $$CURRENT/.. && \
	rm -rf $$TEMP

upload: dist-upload

dist-upload: dist dist-deb
	rm -f ../$(DEBHEADER)*.sig
	for FILE in `ls ../$(DEBHEADER)*`; do \
		gpg -b --use-agent $$FILE || true; \
	done
	(cd ..; wput $(DEBHEADER)* $(FTPSERVER))
	
distclean: clean
	fakeroot $(DEBIANDIR)/rules clean
	rm -f ChangeLog
