#
# The Initial Developer of the Original Code is International
# Business Machines Corporation. Portions created by IBM
# Corporation are Copyright (C) 2007 International Business
# Machines Corporation. All Rights Reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the Common Public License as published by
# IBM Corporation; either version 1 of the License, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# Common Public License for more details.
#
# You should have received a copy of the Common Public License
# along with this program; if not, a copy can be viewed at
# http://www.opensource.org/licenses/cpl1.0.php.
#

PNAME=openpts-tcdemo

NAME=OpenPlatformTrustServices
VERSION=0.1.1

INSTDIR=/opt/$(NAME)

RPMDIR=/usr/src/redhat

TMP=/home/$(USER)/sandbox

JARS = lib/openpts-tcdemo.jar

ANT=ant
#ANT=/opt/apache-ant-1.7.0/bin/ant
JAVA=java
#JAVA=/opt/jdk1.6.0_03/bin/java

# export JAVA_HOME=/opt/jdk1.6.0_03
# export PATH=/opt/jdk1.6.0_03/bin:$PATH

#PROPDIR=../sampledata/knoppix/
#PROPDIR=/opt/OpenPlatformTrustServices/tcdemo/
PROPDIR=../openpts-testsuite/sampledata/tcdemo/


usage:
	@echo "-------------------------- Normal built"
	@echo " sudo make setup-jars"
	@echo " make all"
	@echo " make install"
	@echo " make clean"
	@echo "---------------------------- for RedHat"
	@echo " sudo make rpmbuild-ba "
	@echo "--------------------------- for Knoppix"
	@echo " make tgz "
	@echo "---------------------------- PTS on JRE"
	@echo " make all "
	@echo " make run-jre-CU                -- TEST"
	@echo "--------------------- Native PTS w/ GCJ"
	@echo " make so "
	@echo " sudo make install-jpp "	
	@echo " make jpp "
	@echo " make run-jpp-CU                -- TEST"
	@echo " make run-jpp-CU-swing          -- TEST"
	@echo " make run-jpp-CA-swing          -- TEST"
	@echo " make run-jpp-VT-swing          -- TEST"
	@echo "------------- Server Side (Tomcat/Axis)"
	@echo " make servlet          -- Servlet build"
	@echo " sudo make install-servlet  -- local install"
	@echo " sudo make install-axis     -- local install"	
	@echo " make tgz-webapp            -- tar ball"	
	@echo "----------------- for Server Management"
	@echo " make start-tomcat "
	@echo " make stop-tomcat "
	@echo " make debug-tomcat "
	@echo " make debug-rails "
	@echo "---------------------------------------"

############################
# Build
############################

all: setup-jars
	make -C lib setup
	@echo "Build Java"
	$(ANT) jar

so:
	make -C lib so DESTDIR=$(DESTDIR)
jpp:
	make -C lib jpp DESTDIR=$(DESTDIR)

	
install-bin: $(JARS)
	@echo "Install TCDEMO to $(DESTDIR)$(INSTDIR)"
	mkdir -p $(DESTDIR)$(INSTDIR)/bin
	mkdir -p $(DESTDIR)$(INSTDIR)/lib
	#install lib/*.jar $(DESTDIR)$(INSTDIR)/lib
	install tools/ptsclientuser $(DESTDIR)$(INSTDIR)/bin
	install tools/ptsclientadmin $(DESTDIR)$(INSTDIR)/bin
	#install -m 4755 tools/restarttcsd $(DESTDIR)$(INSTDIR)/bin
	install tools/restarttcsd $(DESTDIR)$(INSTDIR)/bin

install-jars:
	install lib/axis-ant.jar  $(DESTDIR)$(INSTDIR)/lib
	install lib/commons-discovery.jar  $(DESTDIR)$(INSTDIR)/lib
	install lib/jaxrpc.jar    $(DESTDIR)$(INSTDIR)/lib
	install lib/log4j.jar     $(DESTDIR)$(INSTDIR)/lib
	#install lib/openpts.jar     $(DESTDIR)$(INSTDIR)/lib    
	install lib/saaj.jar $(DESTDIR)$(INSTDIR)/lib
	install lib/axis.jar      $(DESTDIR)$(INSTDIR)/lib
	install lib/commons-logging.jar   $(DESTDIR)$(INSTDIR)/lib 
	install lib/commons-codec.jar   $(DESTDIR)$(INSTDIR)/lib 
	install lib/jtreemap.jar  $(DESTDIR)$(INSTDIR)/lib
	install lib/openpts-tcdemo.jar  $(DESTDIR)$(INSTDIR)/lib
	install lib/wsdl4j.jar $(DESTDIR)$(INSTDIR)/lib

install-so:
	@echo "install so"
	mkdir -p $(DESTDIR)//usr/lib/gcj/OpenPlatformTrustServices/
	install lib/*so  $(DESTDIR)//usr/lib/gcj/OpenPlatformTrustServices/
	install lib/*db  $(DESTDIR)//usr/lib/gcj/OpenPlatformTrustServices/
	
install-jpp: install-so
	@echo "install binalies"
	install lib/pts-cu $(DESTDIR)$(INSTDIR)/bin
	install lib/pts-cu-swing $(DESTDIR)$(INSTDIR)/bin
	install lib/pts-ca-swing $(DESTDIR)$(INSTDIR)/bin
	install lib/pts-vt-swing $(DESTDIR)$(INSTDIR)/bin
	#/usr/bin/rebuild-gcj-db

install: install-bin install-jars install-jpp

clean:
	rm -rf classes
	rm -f *.tgz
	rm -f *.tar.gz
	#rm -f  lib/openpts-tcdemo.jar
	make -C lib clean
	make -C sampledata/redhat clean

clean-jpp:
	make -C lib clean-jpp

setup-jars:
	make -C lib setup-jars

##################################
# RPM
##################################

rpmbuild-ba:
	rm -f  $(RPMDIR)/SOURCES/$(NAME)-tcdemo-$(VERSION).tar.gz 
	#cd ..; rm -fr $(NAME)-tcdemo-$(VERSION)
	#cd ..; cp -r $(PNAME) $(NAME)-tcdemo-$(VERSION)
	#cd ../$(NAME)-tcdemo-$(VERSION); 
	make clean
	cd ..; tar --exclude=.svn --exclude=bin -zcvf $(RPMDIR)/SOURCES/$(NAME)-tcdemo-$(VERSION).tar.gz $(NAME)-tcdemo-$(VERSION)
	cd ..; rpmbuild -ba $(NAME)-tcdemo-$(VERSION)/dist/$(NAME)-tcdemo.spec
	#rpm -ql --package $(RPMDIR)/RPMS/noarch/$(NAME)-tcdemo-$(VERSION)-1.noarch.rpm
	#@echo "RPM file : $(RPMDIR)/RPMS/noarch/$(NAME)-tcdemo-$(VERSION)-1.noarch.rpm "
	@echo "RPM file : $(RPMDIR)/RPMS/i386/$(NAME)-tcdemo-$(VERSION)-1.i386.rpm "
	@echo "SRPM file: $(RPMDIR)/SRPMS/$(NAME)-tcdemo-$(VERSION)-1.src.rpm "
	@echo "tgz file : $(RPMDIR)/SOURCES/$(NAME)-tcdemo-$(VERSION).tar.gz "
	
rpmbuild-ba2:
	rm -f  $(RPMDIR)/SOURCES/$(NAME)-tcdemo-$(VERSION).tar.gz 
	cd ..; rm -fr $(NAME)-tcdemo-$(VERSION)
	cd ..; cp -r $(PNAME) $(NAME)-tcdemo-$(VERSION)
	cd ../$(NAME)-tcdemo-$(VERSION); make clean
	cd ..; tar --exclude=.svn --exclude=bin -zcvf $(RPMDIR)/SOURCES/$(NAME)-tcdemo-$(VERSION).tar.gz $(NAME)-tcdemo-$(VERSION)
	cd ..; rpmbuild -ba $(NAME)-tcdemo-$(VERSION)/dist/$(NAME)-tcdemo.spec
	#rpm -ql --package $(RPMDIR)/RPMS/noarch/$(NAME)-tcdemo-$(VERSION)-1.noarch.rpm
	#@echo "RPM file : $(RPMDIR)/RPMS/noarch/$(NAME)-tcdemo-$(VERSION)-1.noarch.rpm "
	@echo "RPM file : $(RPMDIR)/RPMS/i386/$(NAME)-tcdemo-$(VERSION)-1.i386.rpm "
	@echo "SRPM file: $(RPMDIR)/SRPMS/$(NAME)-tcdemo-$(VERSION)-1.src.rpm "
	@echo "tgz file : $(RPMDIR)/SOURCES/$(NAME)-tcdemo-$(VERSION).tar.gz "

rpmbuild-ba2-rh:
	rm -f  $(RPMDIR)/SOURCES/$(NAME)-tcdemo-$(VERSION).tar.gz 
	cd ..; rm -fr $(NAME)-tcdemo-$(VERSION)
	cd ..; cp -r $(PNAME) $(NAME)-tcdemo-$(VERSION)
	cd ../$(NAME)-tcdemo-$(VERSION); make clean
	cd ..; tar --exclude=.svn --exclude=bin -zcvf $(RPMDIR)/SOURCES/$(NAME)-tcdemo-$(VERSION).tar.gz $(NAME)-tcdemo-$(VERSION)
	cd ..; rpmbuild -ba $(NAME)-tcdemo-$(VERSION)/dist/redhat/$(NAME)-tcdemo.spec
	@echo "RPM file : $(RPMDIR)/RPMS/i386/$(NAME)-tcdemo-$(VERSION)-1.el5.i386.rpm "
	@echo "SRPM file: $(RPMDIR)/SRPMS/$(NAME)-tcdemo-$(VERSION)-1.el5.src.rpm "
	@echo "tgz file : $(RPMDIR)/SOURCES/$(NAME)-tcdemo-$(VERSION).tar.gz "
	
############################
# KNOPPIX Demo
############################

#install-rh-config:
#	@echo "Install Config for Redhat to $(DESTDIR)$(INSTDIR)/tcdemo"
#	mkdir -p $(DESTDIR)$(INSTDIR)/tcdemo
#	install $(SAMPLE_TM3)   $(DESTDIR)$(INSTDIR)/tcdemo/sample.tm3
#	install sampledata/redhat/*.properties   $(DESTDIR)$(INSTDIR)/tcdemo/
#	install sampledata/redhat/*.xml   $(DESTDIR)$(INSTDIR)/tcdemo/
#	install sampledata/redhat/Makefile   $(DESTDIR)$(INSTDIR)/tcdemo/

install-tcdemo:
	@echo "Install Config for Knoppix to $(DESTDIR)$(INSTDIR)/tcdemo"
	mkdir -p $(DESTDIR)$(INSTDIR)/tcdemo
	chmod 777 $(DESTDIR)$(INSTDIR)/tcdemo
	#install $(SAMPLE_TM3)   $(DESTDIR)$(INSTDIR)/tcdemo/sample.tm3
	install sampledata/knoppix/knoppix.tm3 $(DESTDIR)$(INSTDIR)/tcdemo/
	install sampledata/knoppix/client.keystore $(DESTDIR)$(INSTDIR)/tcdemo/
	install sampledata/knoppix/client.gkeystore $(DESTDIR)$(INSTDIR)/tcdemo/
	install sampledata/knoppix/platform_model.properties $(DESTDIR)$(INSTDIR)/tcdemo/
	install sampledata/knoppix/knoppix_model.properties $(DESTDIR)$(INSTDIR)/tcdemo/
	#install sampledata/redhat/runtime_model.properties $(DESTDIR)$(INSTDIR)/tcdemo/
	install -m 666 sampledata/knoppix/*.xml   $(DESTDIR)$(INSTDIR)/tcdemo/
	install -m 666 sampledata/knoppix/tcdemo.properties   $(DESTDIR)$(INSTDIR)/tcdemo/tcdemo.properties
	install -m 666 sampledata/knoppix/tcdemo.properties   $(DESTDIR)$(INSTDIR)/tcdemo/tcdemo.properties.sample
	install -m 666 sampledata/knoppix/*.conf   $(DESTDIR)$(INSTDIR)/tcdemo/
	install sampledata/knoppix/Makefile   $(DESTDIR)$(INSTDIR)/tcdemo/
	install -m 666 sampledata/knoppix/*desktop   $(DESTDIR)$(INSTDIR)/tcdemo/
	install -m 666 sampledata/knoppix/dummy_system.data $(DESTDIR)$(INSTDIR)/tcdemo/

install-tcdemo-rh:
	@echo "Install Config for RedHat to $(DESTDIR)$(INSTDIR)/tcdemo"
	mkdir -p $(DESTDIR)$(INSTDIR)/tcdemo
	chmod 777 $(DESTDIR)$(INSTDIR)/tcdemo
	#install sampledata/knoppix/knoppix.tm3 $(DESTDIR)$(INSTDIR)/tcdemo/
	install sampledata/redhat/client.keystore $(DESTDIR)$(INSTDIR)/tcdemo/
	install sampledata/redhat/client.gkeystore $(DESTDIR)$(INSTDIR)/tcdemo/
	install sampledata/redhat/platform_model.properties $(DESTDIR)$(INSTDIR)/tcdemo/
	install sampledata/redhat/runtime_model.properties $(DESTDIR)$(INSTDIR)/tcdemo/
	install -m 666 sampledata/redhat/*.xml   $(DESTDIR)$(INSTDIR)/tcdemo/
	install -m 666 sampledata/redhat/tcdemo.properties   $(DESTDIR)$(INSTDIR)/tcdemo/tcdemo.properties
	install -m 666 sampledata/redhat/tcdemo.properties   $(DESTDIR)$(INSTDIR)/tcdemo/tcdemo.properties.sample
	#install -m 666 sampledata/redhat/*.conf   $(DESTDIR)$(INSTDIR)/tcdemo/
	install sampledata/redhat/Makefile   $(DESTDIR)$(INSTDIR)/tcdemo/

# Create TGZ	
TGZ_DESTDIR=/tmp/openpts-tcdemo
WWW_DIR=/var/www/html/openpts
tgz:
	@echo "Client "
	mkdir -p $(TGZ_DESTDIR)
	make -f Makefile install-bin DESTDIR=$(TGZ_DESTDIR)
	make -f Makefile install-jars DESTDIR=$(TGZ_DESTDIR)
	make -f Makefile install-jpp DESTDIR=$(TGZ_DESTDIR)
	make -f Makefile install-tcdemo DESTDIR=$(TGZ_DESTDIR)
	@echo "Server "
	cp src/Server.java $(TGZ_DESTDIR)/$(INSTDIR)/tcdemo/
	cd $(TGZ_DESTDIR); tar cvfz $(PWD)/tcdemo-$(VERSION).tgz ./*
	tar tvfz tcdemo-$(VERSION).tgz
	rm -r $(TGZ_DESTDIR)
	/bin/cp -f tcdemo-$(VERSION).tgz $(WWW_DIR)

############################
# Tomcat servlet
############################
# http://localhost:8080/pva/servlet/Validate010
#
servlet:
	make -C lib setup-servlet
	ant servlet

LIB_DIR=../openpts/lib
CATALINA_HOME=/opt/apache-tomcat-5.5.25/

install-servlet:
	#rm -rf $(CATALINA_HOME)/webapps/pva
	cp -r $(PWD)/webapps/pva $(CATALINA_HOME)/webapps/
	# JARs
	cp $(LIB_DIR)/openpts5.jar $(CATALINA_HOME)/webapps/pva/WEB-INF/lib/
	cp $(LIB_DIR)/commons-codec.jar $(CATALINA_HOME)/webapps/pva/WEB-INF/lib/
	cp $(LIB_DIR)/commons-logging.jar $(CATALINA_HOME)/webapps/pva/WEB-INF/lib/
	cp $(LIB_DIR)/log4j.jar $(CATALINA_HOME)/webapps/pva/WEB-INF/lib/	
	cp $(LIB_DIR)/ibatis.jar $(CATALINA_HOME)/webapps/pva/WEB-INF/lib/
	cp $(LIB_DIR)/postgresql-jdbc.jar $(CATALINA_HOME)/webapps/pva/WEB-INF/lib/
	# properties
	cp ../openpts/database/ibatis/sqlMapsConfig.properties.sample  $(CATALINA_HOME)/webapps/pva/WEB-INF/classes/
	#cp lib/commons-logging.jar $(CATALINA_HOME)/webapps/pva/WEB-INF/lib
	#cp lib/commons-discovery.jar $(CATALINA_HOME)/webapps/pva/WEB-INF/lib
	@echo "Edit $(CATALINA_HOME)/conf/server.xml"
	@echo "Edit $(CATALINA_HOME)/webapps/pva/WEB-INF/classes/sqlMapsConfig.properties"

tgz-servlet:
	cd $(CATALINA_HOME)/webapps/; tar cvfz $(PWD)/pva.tgz ./pva/*
# Deploy
# cd /opt/apache-tomcat-5.5.25/webapps
# tar xvfz /tmp/pva.tgz
# chown -R tomcat5.tomcat5 pva
# /sbin/service tomcat restart
#

####################################
# Tomcat/AXIS
####################################
# TODO clean up below
TOMCAT_TGZ=http://ftp.kddilabs.jp/infosystems/apache/tomcat/tomcat-5/v5.5.25/bin/apache-tomcat-5.5.25.tar.gz
TOMCAT_HOME=/opt/apache-tomcat-5.5.25/

JDK_TOOLS_JAR=/usr/java/jdk1.6.0_01/lib/tools.jar
AXIS_DIR=/usr/share/tomcat5/webapps/axis/

$(AXIS_DIR)/WEB-INF/lib/tools.jar : $(JDK_TOOLS_JAR)
	cp $(JDK_TOOLS_JAR) $@

IBATIS_PROP=../openpts/database/ibatis/sqlMapsConfig.properties.sample 

install-axis-prop: $(AXIS_DIR)/Server.jws   

install-axis-jars: $(AXIS_DIR)/WEB-INF/lib/tools.jar
	@echo "copy jars into $(AXIS_DIR)/WEB-INF/lib/"
	cp src/Server.java $(AXIS_DIR)/Server.jws
	install $(LIB_DIR)/openpts5.jar   $(AXIS_DIR)/WEB-INF/lib/
	install $(LIB_DIR)/commons-logging.jar   $(AXIS_DIR)/WEB-INF/lib/
	install $(LIB_DIR)/ibatis.jar   $(AXIS_DIR)/WEB-INF/lib/
	install $(LIB_DIR)/log4j.jar $(AXIS_DIR)/WEB-INF/lib/
	install $(LIB_DIR)/postgresql-jdbc.jar $(AXIS_DIR)/WEB-INF/lib/
	@echo "copy serverside properties into $(AXIS_DIR)/WEB-INF/classes/"
	cp $(IBATIS_PROP) $(AXIS_DIR)/WEB-INF/classes/sqlMapsConfig.properties.sample
	install sampledata/server/account.properties $(AXIS_DIR)/WEB-INF/classes/
	install sampledata/server/services.properties $(AXIS_DIR)/WEB-INF/classes/

install-axis: install-axis-jars install-axis-prop


tgz-webapp:
	@echo "servlet"
	cd $(CATALINA_HOME)/webapps/; tar --exclude=.svn -cvf $(PWD)/pva.tar ./pva/* ./axis/*
	tar -f $(PWD)/pva.tar --delete ./pva/WEB-INF/classes/log4j.properties 
	tar -f $(PWD)/pva.tar --delete ./pva/WEB-INF/classes/sqlMapsConfig.properties
	tar -f $(PWD)/pva.tar --delete ./axis/WEB-INF/classes/log4j.properties
	tar -f $(PWD)/pva.tar --delete ./axis/WEB-INF/classes/sqlMapsConfig.properties
	gzip $(PWD)/pva.tar
	@echo "pva.tar.gz"

##############################
# Tomcat Management
##############################
start-tomcat:
	@echo "Kill TOMCAT5(GCJ) on RedHat"
	service tomcat5 stop	
	@echo "Start TOMCAT5(on JRE)"
	cd $(TOMCAT_HOME)/bin ; ./startup.sh

stop-tomcat:
	cd $(TOMCAT_HOME)/bin ; ./shutdown.sh

debug-tomcat:
	@echo "cd $(TOMCAT_HOME)/bin"
	@echo "./catalina.sh run"

server-status:
	@ifconfig eth1 | grep "inet addr"
	service tcsd status
	service postgresql status
	service tomcat5 status




############################
# Debug Tomcat
############################

tcpmon:
	java -cp /opt/axis-1_4/lib/axis.jar org.apache.axis.utils.tcpmon

############################
# Service (PTS Server w/ Rails) (RedHat/CentOS5)
############################
RAILS_DIR=/opt/OpenPlatformTrustServices/rails/openpts_iidb
debug-rails:
	@echo "cd $(RAILS_DIR)"
	@echo "ruby script/server"

############################
# JRE TEST
############################

JRE_AXIS_CP=lib/axis-ant.jar:lib/commons-codec.jar:lib/commons-discovery.jar:lib/jaxrpc.jar:lib/log4j.jar:lib/wsdl4j.jar:lib/axis.jar:lib/commons-logging.jar:lib/saaj.jar
JRE_CP=$(JRE_AXIS_CP):lib/openpts-tcdemo.jar:lib/openpts5.jar:lib/jtreemap.jar

run-jre-CU:
	$(JAVA) -cp $(JRE_CP) tcdemo.cmd.ClientUser --propdir $(PROPDIR)
run-jre-CU-swing:
	$(JAVA) -cp $(JRE_CP) tcdemo.swing.ClientUser --propdir $(PROPDIR)
run-jre-CA-swing:
	$(JAVA) -cp $(JRE_CP) tcdemo.swing.ClientAdmin --propdir $(PROPDIR)
run-jre-VT-swing:
	$(JAVA) -cp $(JRE_CP) tcdemo.swing.VendorTool --propdir $(PROPDIR)

############################
# GCJ TEST
############################
# 2007-12-11 Munetoh update, use servlet, soap not work w/ GCJ

run-jpp-CU:
	lib/pts-cu --propdir $(PROPDIR)
run-jpp-CU-swing:
	lib/pts-cu-swing --propdir $(PROPDIR)
run-jpp-CA-swing:
	lib/pts-ca-swing --propdir $(PROPDIR)
run-jpp-VT-swing:
	lib/pts-vt-swing --propdir $(PROPDIR)

# EOF