#for Releases
MAJOR=2
MINOR=1

#for Candidates
CANDIDATE=0


#internal stuff regarding releases
MINOR_CANDIDATE=$(shell echo $$(($(MINOR)+1 )))
RELEASE_VERSION=0.$(MAJOR).$(MINOR)
CANDIDATE_VERSION=0.$(MAJOR).$(MINOR_CANDIDATE)-rc$(CANDIDATE)

#
# The following line tells the makefile where to install the module, 
# if necessary, please edit it 
#
INSTALL_MODPATH=/usr/lib/asterisk/modules

#
# mISDNuser PATHS
#
ifndef MISDNUSER
#MISDNUSER=/usr/src/echo-cancel/install-misdn/mISDNuser
MISDNUSER=/usr/src/install-misdn/mISDNuser
endif

MISDNUSERINC=$(MISDNUSER)/include
MISDNUSERLIB=$(MISDNUSER)/lib

#
# mISDNuser Version
#
# If you dont use the Jolly mISDNuser version above 2.7 then comment this
#
CFLAGS+=-DMISDNUSER_JOLLY



#
# The following should findout if we have Asterisk Stable or not
#
CFLAGS+=$(shell sh config.sh ast_stable_cflags)
# if this doesn't work uncomment the following line:
#CFLAGS+=-DASTERISK_STABLE




#
# The following line tells the makefile where to put in the configfile 
# of this module
#
AST_CONFIG_DIR=/etc/asterisk/


#
# Wether to use asterisk dsp for dtmf tone detection
#
#CFLAGS+=-DMISDN_CHECK_DTMFS 

#
# chan_misdn_version
#
CFLAGS+=-DCHAN_MISDN_VERSION=\"$(shell cat VERSION)\"
#CFLAGS+=-DCHAN_MISDN_VERSION=\"AsteriskVersion\"

CFLAGS+=-g -ggdb -Wall -D_GNU_SOURCE
CFLAGS+=-Wno-missing-prototypes -Wno-missing-declarations

CFLAGS+=-I$(MISDNUSERINC) -I$(MISDNUSER)/i4lnet/ 


CFLAGS+=-fPIC -I$(ASTERISKINC) -DAST_CONFIG_DIR=\"$(AST_CONFIG_DIR)\" -Imisdn/ -Wall


CFLAGS+=-fomit-frame-pointer -D_REENTRANT


MISDNOBJS=chan_misdn.o misdn/chan_misdn_lib.a chan_misdn_config.o
ADDOBJS+=$(MISDNUSER)/i4lnet/libisdnnet.a $(MISDNUSER)/lib/libmISDN.a

all: chan_misdn.so app_ptyfork.so app_waitfordigits.so app_v110.so

$(ADDOBJS):
	@if [ ! -f $(MISDNUSER)/i4lnet/libisdnnet.a -o ! -f $(MISDNUSER)/lib/libmISDN.a ] ; then echo -e "\nYou need mISDNuser to compile chan_misdn!\nPlease read the README\nOr just type: make misdn_install\n" ; exit 1;  fi 

chan_misdn.so: $(MISDNOBJS) $(ADDOBJS) 
	$(CC) -shared -Xlinker -x -o $@ $(MISDNOBJS) $(ADDOBJS) 

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

misdn/chan_misdn_lib.a: misdn/isdn_lib.c misdn/isdn_lib.h misdn/isdn_msg_parser.c
	make -C misdn MISDNUSER=$(MISDNUSER) EXTRA_CFLAGS=$(AST_CFLAGS)

testphone:  testphone.c
	$(CC) -I$(MISDNUSERINC) -I$(MISDNUSER)/i4lnet/   testphone.c $(MISDNUSERLIB)/libmISDN.a -o testphone

install: chan_misdn.so app_ptyfork.so app_waitfordigits.so app_v110.so 
	install -m 644 chan_misdn.so $(INSTALL_MODPATH)/
	install -m 644 app_ptyfork.so $(INSTALL_MODPATH)/
	install -m 644 app_v110.so $(INSTALL_MODPATH)/
	install -m 644 app_waitfordigits.so $(INSTALL_MODPATH)/
	if [ ! -f $(AST_CONFIG_DIR)/misdn.conf ] ; then cp misdn.conf $(AST_CONFIG_DIR)/; fi
	if [ ! -e /dev/mISDN ] ; then mknod /dev/mISDN c 46 0; fi
	@echo 
	@echo INSTALLATION SUCCEEDED
	if [ ! -f /etc/init.d/misdn-init ] ; then install -m 755 misdn-init /etc/init.d/ ; fi

	@if echo '$(CFLAGS)' | grep ASTERISK_STABLE >/dev/null  2>&1; then echo "**********************************************";\
	echo "****************** BE AWARE !*****************";\
	echo "**********************************************";\
	echo "* you have currently installed the Asterisk  *";\
	echo "* stable version installed !                 *";\
	echo "*                                            *";\
	echo "* this means:                                *";\
	echo "* read READM.asterisk_stable, to avoid a     *";\
	echo "* certain Segmentation fault, which results  *";\
	echo "* in crashing the asterisk during Phone      *";\
	echo "* call!                                      *";\
	echo "**********************************************";\
	fi

app_v110.so: app_v110.o
	$(CC) -shared -Xlinker -x -o $@ app_v110.o

app_ptyfork.so: app_ptyfork.o
	$(CC) -shared -Xlinker -x -o $@ app_ptyfork.o

app_waitfordigits.so: app_waitfordigits.o
	$(CC) -shared -Xlinker -x -o $@ app_waitfordigits.o


clean: 
	rm -rf *.o *.so *~ te_test core.* portinfo app_v110.so app_ptyfork.so app_waitfordigits.so 
	make -C misdn clean MISDNUSER=$(MISDNUSER) 

clean_tags:
	rm -rf TAGS


snapshot: clean
	DIR=chan_misdn-$$(date +"20%y_%m_%d") ; \
	echo $$(date +"20%y_%m_%d" | sed -e "s/\//_/g") > VERSION ; \
	mkdir -p /tmp/$$DIR ; \
	cp * /tmp/$$DIR ; \
	mkdir -p /tmp/$$DIR/misdn ; \
	cp misdn/* /tmp/$$DIR/misdn ; \
	cd /tmp/; \
	tar czf $$DIR.tar.gz $$DIR


candidate: clean
	cvs tag "V0_$(MAJOR)_$(MINOR_CANDIDATE)-rc$(CANDIDATE)"
	DIR=chan_misdn;\
	echo "$(CANDIDATE_VERSION)" > VERSION;\
	rm -rf /tmp/$$DIR ; \
	mkdir -p /tmp/$$DIR ; \
	cp * /tmp/$$DIR ; \
	mkdir -p /tmp/$$DIR/misdn ; \
	cp misdn/* /tmp/$$DIR/misdn ; \
	cd /tmp/; \
	tar czf chan_misdn-$(CANDIDATE_VERSION).tar.gz $$DIR

release: clean
	cvs tag "V0_$(MAJOR)_$(MINOR)"
	DIR=chan_misdn ;\
	echo "$(RELEASE_VERSION)" > VERSION;\
	rm -rf /tmp/$$DIR ; \
	mkdir -p /tmp/$$DIR ; \
	cp * /tmp/$$DIR ; \
	mkdir -p /tmp/$$DIR/misdn ; \
	cp misdn/* /tmp/$$DIR/misdn ; \
	cd /tmp/; \
	tar czf $$DIR-0.$(MAJOR).$(MINOR).tar.gz $$DIR


misdn_clean:
	rm -rf lib

tags:
	etags *.[ch] misdn/*.[ch]

.PHONY: clean snapshot misdn misdn_install misdn_clean tags
