# This is a make file that builds everything.
# this works with the gnu make tool. If you are working
# with windows, please install cygwin to get  gnumake (goto
# http://www.sourceware.cygnus.com).
#
# Major make targets:
#
#	all 		cleans, builds everything and auto tests.
#	clean		cleans everything
#       javadoc 	cleans and  builds javadoc.
#	classes		builds only classes and auto tests.
#	tarfile		builds a tarfile of all that is ship worthy.
#	jarfile		builds a nist-sip.jar file.	
#       dtddoc		builds the documentation for the responder dtd file.
#

ROOT=./

include  $(ROOT)/build-config


REV=revK
DOCDIR= $(ROOT)/docs/api
WINDOWTITLE="SIP Tools For the People!"
HDR= '<b> NIST SIP/SDP Parser and Stack (v1.1) REV API </b>'
DATE= $(shell date +%D)
CVST=REV-DATE
CVSTA=$(subst REV,$(REV),$(CVST))
CVSTAG=$(subst DATE,$(DATE),$(CVSTA))
HEADER=$(subst REV,$(CVSTAG),$(HDR))
TITL= 'NIST SIP/SDP Parser and Stack (v1.1) REV '
TITLE=$(subst REV,$(CVSTAG),$(TITL))
DOCTITLE=$(subst DATE,$(DATE),$(TITLE))
BOTTOM='<font size="-1"> \
<a href="http://w3.antd.nist.gov/"> A product of the NIST/ITL Advanced Networking Technologies Division. </a><br>  \
<a href="{@docRoot}/uncopyright.html"> See conditions of use. </a> <br> \
<a href="http://www.antd.nist.gov/proj/iptel/nist-sip-requestform/nist-sip-requestform.htm"> Get the latest distribution. </a><br>  \
<a href="mailto:nist-sip-dev@antd.nist.gov">Submit a bug report or feature request. </a><br> \
</font>'
GROUPCORE = '"Core Packages" "gov.nist.sip.msgparser.*" "gov.nist.sip.*" \
"gov.nist.sip.sipheaders.*" "gov.nist.sip.sdpfields.*" '

#note -- if you are using jdk1.3 then -breakiterator option should not be used.
javadoc: 
	cd $(ROOT)/gov/nist/sip/msgparser;$(MAKE) clean
	$(JAVADOC) -sourcepath $(ROOT) 			\
		-overview $(DOCDIR)/overview.html 	\
		-d  $(DOCDIR)				\
		-use					\
		-splitindex				\
		-windowtitle $(WINDOWTITLE) 		\
		-doctitle $(DOCTITLE)			\
		-header $(HEADER)			\
		-public					\
		-bottom $(BOTTOM)			\
		gov.nist.sip				\
		gov.nist.sip.net			\
		gov.nist.sip.sipheaders			\
		gov.nist.sip.sdpfields			\
		gov.nist.sip.stack			\
		gov.nist.sip.stack.security		\
		gov.nist.sip.stack.transaction		\
		gov.nist.jain.protocol.ip.sip		\
		gov.nist.jain.protocol.ip.sip.header	\
		gov.nist.jain.protocol.ip.sip.message	\
		gov.nist.jain.protocol.ip.sip.address	\
		gov.nist.jain.protocol.ip.sip.stack.stateless \
		gov.nist.jain.protocol.ip.sip.stack.statefull \
		gov.nist.javax.sdp			\
		javax.sdp				\
		jain.protocol.ip.sip		        \
		jain.protocol.ip.sip.header		\
		jain.protocol.ip.sip.message		\
		jain.protocol.ip.sip.address		\
		tools/responder/ServiceContainerInterface.java \
		tools/responder/ServiceContainer.java \
		gov/nist/sip/msgparser/*.java


		
		

dtddoc:
	cd docs/tools/responder/dtd;$(MAKE) all

DDATE=$(shell date +%D)
DATE=$(subst /,-,$(DDATE))
FILE_NAME = 'nist-sip-1.1.REV.DATE.tar.gz'
ZFILE_NAME = 'nist-sip-1.1.REV.DATE.zip'
TARFILE_NAME = $(subst REV,$(REV),$(subst DATE,$(DATE),$(FILE_NAME)))
#ZIPFILE_NAME = $(subst REV,$(REV),$(subst DATE,$(DATE),$(ZFILE_NAME)))
ZIPFILE_NAME=nist-sip.zip

all: 
	$(MAKE) clean
	$(MAKE) javadoc
	$(MAKE) classes


classes:
	cd jain/protocol/ip/sip;\rm *.class;$(MAKE) all
	cd jain/protocol/ip/sip/header;\rm *.class;$(MAKE) all
	cd jain/protocol/ip/sip/message;\rm *.class;$(MAKE) all
	cd jain/protocol/ip/sip/address;\rm *.class;$(MAKE) all
	cd gov/nist/sip/;\rm *.class;$(MAKE) all 
	cd gov/nist/sip/net;\rm *.class;$(MAKE) all
	cd gov/nist/sip/sipheaders;\rm *.class;$(MAKE) all
	cd gov/nist/sip/sdpfields;\rm *.class;$(MAKE) all
	cd gov/nist/sip/msgparser;\rm *.class;$(MAKE) all
	cd gov/nist/sip/stack;\rm *.class;$(MAKE) all
	cd gov/nist/sip/stack/security;\rm *.class;$(MAKE) all
	cd gov/nist/sip/msgparser;$(MAKE) grammardoc
	cd examples/torture;\rm *.class;$(MAKE) all
	cd examples/msgparser;\rm *.class;$(MAKE) all
	cd examples/jainsip/simple;\rm *.class;$(MAKE) all
	cd examples/jainsip/container;\rm *.class;$(MAKE) all
	cd examples/instantmessaging;\rm *.class;$(MAKE) all
	cd examples/jainsip/shootist;\rm *.class;$(MAKE) all
	cd gov/nist/jain/protocol/ip/sip;\rm *.class;$(MAKE) all
	cd gov/nist/jain/protocol/ip/sip/address;\rm *.class;$(MAKE) all
	cd gov/nist/jain/protocol/ip/sip/header;\rm *.class;$(MAKE) all
	cd gov/nist/jain/protocol/ip/sip/message;\rm *.class;$(MAKE) all
	cd gov/nist/jain/protocol/ip/sip/stack/stateless;\rm *.class;$(MAKE) all
	cd gov/nist/jain/protocol/ip/sip/stack/statefull;\rm *.class;$(MAKE) all
	cd gov/nist/log;\rm *.class;$(MAKE) all
	cd javax/sdp;\rm *.class;$(MAKE) all
	cd gov/nist/javax/sdp;\rm *.class;$(MAKE) all
	cd tools/;\rm *.class;$(MAKE) all
	cd examples/torture;\rm *.class;$(MAKE) tests
	make jarfile

# Bug reported by Venkat Goud
jarfile:
	\rm -f nist-sip.jar
	$(JAR) -cvf nist-sip.jar			 \
	./gov/nist/sip/net/*.class  			 \
	./gov/nist/sip/msgparser/*.class  		 \
	./gov/nist/sip/sipheaders/*.class 		 \
	./gov/nist/sip/*.class  			 \
	./gov/nist/sip/sdpfields/*.class  		 \
	./gov/nist/sip/stack/*.class  			 \
	./gov/nist/sip/stack/security/*.class  		 \
	./gov/nist/sip/stack/transaction/*.class  	 \
	./jain/protocol/ip/sip/*.class 	 		 \
	./jain/protocol/ip/sip/header/*.class   	 \
	./jain/protocol/ip/sip/message/*.class   	 \
	./jain/protocol/ip/sip/address/*.class  	 \
	./gov/nist/jain/protocol/ip/sip/message/*.class  \
	./gov/nist/jain/protocol/ip/sip/*.class 	 \
	./gov/nist/jain/protocol/ip/sip/header/*.class   \
	./gov/nist/jain/protocol/ip/sip/address/*.class  \
	./gov/nist/jain/protocol/ip/sip/message/*.class  \
	./gov/nist/jain/protocol/ip/sip/stack/stateless/*.class  \
	./gov/nist/jain/protocol/ip/sip/stack/statefull/*.class  \
	./gov/nist/javax/sdp/*.class			 \
	./javax/sdp/*.class				 \
	./gov/nist/log/*.class 



jainapi:
	$(JAR) -cvf JainApi1.0.jar ./jain
	


clean: emacsclean
	cd gov/nist/sip/;$(MAKE)  clean 
	cd gov/nist/sip/net;$(MAKE) clean
	cd gov/nist/sip/sipheaders;$(MAKE) clean
	cd gov/nist/sip/sdpfields;$(MAKE) clean
	cd gov/nist/sip/msgparser;$(MAKE) clean
	cd gov/nist/log;$(MAKE) clean
	cd examples/msgparser;$(MAKE) clean
	cd examples/torture;$(MAKE) clean
	cd examples/jainsip/simple;$(MAKE) clean
	cd examples/jainsip/container;$(MAKE) clean
	cd examples/jainsip/shootist;$(MAKE) clean
	cd gov/nist/sip/stack;$(MAKE) clean
	cd gov/nist/sip/stack/security;$(MAKE) clean
	cd docs/api;$(MAKE) clean
	cd jain/protocol/ip/sip/message;$(MAKE) clean
	cd jain/protocol/ip/sip/address;$(MAKE) clean
	cd jain/protocol/ip/sip/header;$(MAKE) clean
	cd jain/protocol/ip/sip;$(MAKE) clean
	cd gov/nist/jain/protocol/ip/sip/;$(MAKE) clean	
	cd gov/nist/jain/protocol/ip/sip/address;$(MAKE) clean
	cd gov/nist/jain/protocol/ip/sip/header;$(MAKE) clean
	cd gov/nist/jain/protocol/ip/sip/message;$(MAKE) clean
	cd gov/nist/jain/protocol/ip/sip/stack/stateless;$(MAKE) clean
	cd gov/nist/jain/protocol/ip/sip/stack/statefull;$(MAKE) clean
	cd javax/sdp;$(MAKE) clean
	cd gov/nist/javax/sdp;$(MAKE) clean
	cd tools/;$(MAKE) clean
	rm -f nist-sip.jar


cvstag:
	echo "Refer to this cvs Tag when reporting bugs" > cvstag
	echo $(CVSTAG) >>  cvstag

tarfile: cvstag
	cd ../;							\
	tar -cvzf $(TARFILE_NAME)  --exclude CVS		\
	--exclude filesystem.attributes				\
	--exclude callflows2xml					\
	--exclude jainlog.txt				        \
	--exclude *.mp3						\
	--exclude .cvsignore					\
	--exclude \#*						\
	--exclude \*~						\
	--exclude *.log						\
	--exclude debug.txt					\
	--exclude tools/launcher/localRootDirectory.property    \
	--exclude lib/servlet-lib				\
	--exclude lib/jython/cachedir				\
	--exclude examples/proxy				\
	--exclude CleanNistSip.java				\
	--exclude CleanNistSip.class				\
	./nist-sip/gov/nist/sip/net				\
	./nist-sip/gov/nist/sip/msgparser			\
	./nist-sip/gov/nist/sip/sipheaders			\
	./nist-sip/gov/nist/sip/sdpfields			\
	./nist-sip/gov/nist/sip/*.class				\
	./nist-sip/gov/nist/sip/*.java				\
	./nist-sip/gov/nist/sip/makefile			\
	./nist-sip/gov/nist/sip/stack				\
	./nist-sip/gov/nist/jain/				\
	./nist-sip/gov/nist/log/				\
	./nist-sip/tools/sniffer/				\
	./nist-sip/tools/responder/			        \
	./nist-sip/tools/jainproxy/			        \
	./nist-sip/tools/launcher/				\
	./nist-sip/tools/makefile		                \
	./nist-sip/tools/README			                \
	./nist-sip/javax/sdp/*.class				\
	./nist-sip/javax/sdp/*.class				\
	./nist-sip/jain						\
	./nist-sip/README					\
	./nist-sip/cvstag					\
	./nist-sip/build.xml					\
	./nist-sip/examples/torture				\
	./nist-sip/examples/instantmessaging			\
	./nist-sip/examples/msgparser				\
	./nist-sip/examples/jainsip				\
	./nist-sip/makefile					\
	./nist-sip/docs/api					\
	./nist-sip/docs/index.html				\
	./nist-sip/docs/nist-sip.gif				\
	./nist-sip/docs/back.gif				\
	./nist-sip/docs/tools				        \
	./nist-sip/docs/bugs/bugparade.html		        \
	./nist-sip/docs/papers-and-presentations/implementing-jain-sip.ppt \
	./nist-sip/lib						\
	./nist-sip/build-config					\
	./nist-sip/nist-sip.jar					

zipfile:
	\rm -f $(ZIPFILE_NAME)
	zip $(ZIPFILE_NAME)			        	\
	-r ./gov/nist/sip/net				\
	-r ./gov/nist/sip/msgparser			\
	-r ./gov/nist/sip/sipheaders			\
	-r ./gov/nist/sip/sdpfields			\
	-r ./gov/nist/sip/*.class			\
	-r ./gov/nist/sip/*.java			\
	-r ./gov/nist/sip/makefile			\
	-r ./gov/nist/sip/stack				\
	-r ./javax/sdp/					\
	-r ./gov/nist/javax/sdp/			\
	-r ./gov/nist/jain/				\
	-r ./gov/nist/log/				\
	-r ./docs/tools/responder/dtd/makefile		\
	-r ./docs/tools/responder/dtd/mungeit.py	\
	-r ./docs/tools/responder/dtd/callflows.dsc	\
	-r ./tools/jainproxy/			        \
	-r ./tools/launcher/			        \
	-r ./tools/responder/			        \
	-r ./tools/sniffer/				\
	-r ./tools/makefile		                \
	-r ./tools/README			        \
	-r ./jain					\
	-r ./README					\
	-r ./build.xml					\
	-r ./examples/torture				\
	-r ./examples/msgparser				\
	-r ./examples/jainsip				\
	-r ./examples/instantmessaging			\
	-r ./makefile					\
	-r ./docs/api					\
	-r ./docs/index.html				\
	-r ./docs/back.gif				\
	-r ./docs/tools		        		\
	-r ./docs/papers-and-presentations/implementing-jain-sip.ppt \
	-r ./docs/bugs/bugparade.html		        \
	-r ./docs/nist-sip.gif				\
	-r ./lib					\
	-r ./build-config				\
	-r ./nist-sip.jar				\
	-x  examples/proxy					\
	-x \*.nbattrs					\
	-x \*CVS\*					        \
	-x \*localRootDirectory.property			\
	-x \*filesystem.attributes				\
	-x \*callflows2xml				        \
	-x \*jainlog.txt				       	\
	-x \*.log				       		\
	-x \*.mp3						\
	-x \*debug.txt						\
	-x \*~							\
	-x \*log.txt					\
	-x \*.cvsignore						\
	-x lib/servlet-lib					
	
archives: tarfile zipfile
	
# build the ship tar.gz  and zip image.
ship: 
	$(MAKE) clean
	$(MAKE) all 
	$(MAKE) tarfile
	$(MAKE) zipfile




