#######################################################################
#
#  Copyright (C) 2006 Novell, Inc.
#
#  This program is free software; you can redistribute it and/or
#  modify it under the terms of the GNU General Public
#  License as published by the Free Software Foundation; either
#  version 2 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 GNU
#  General Public License for more details.
#
#  You should have received a copy of the GNU General Public
#  License along with this program; if not, write to the Free
#  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
#  Author: Juan Carlos Luciani <jluciani@novell.com>
#
#######################################################################

SUBDIRS =

DIST_SUBDIRS =

CFILES =

EXTRA_DIST = CasaAuthtokenSvcD \
		envvars \
		envvars.zen \
		server_keystore_setup.sh \
		casa_crypto.properties \
		CasaBasicATSSetup.sh \
		CasaAuthPolicyEditor.sh \
		CasaAuthTokenSettingsEditor.sh \
		CasaIdenTokenSettingsEditor.sh \
		CasaSvcSettingsEditor.sh \
		CasaTomcatConnectorEditor.sh \
		log4j.properties

ROOT = ../..

LIBDIR = $(ROOT)/$(LIB)

IDENT_ABSTRACTION_DIR = /usr/share/java/identity-abstraction
XMLSEC_JARS_DIR = ../external/xmlsec/xml-security-1_4_0/libs
XMLSEC_LICENSE = ../external/xmlsec/xml-security-1_4_0/LICENSE

MANIFEST_DIR = ../manifest

JAVAC= javac

WEBAPP_NAME = CasaAuthTokenSvc
WEBAPP_EXT = war
MODULE_NAME = CasaAuthToken
MODULE_EXT = jar
AUTH_TOKEN_SETTINGS_EDITOR_MODULE_NAME = CasaAuthTokenSettingsEditor
IDEN_TOKEN_SETTINGS_EDITOR_MODULE_NAME = CasaIdenTokenSettingsEditor
SVC_SETTINGS_EDITOR_MODULE_NAME = CasaSvcSettingsEditor
AUTH_POLICY_EDITOR_MODULE_NAME = CasaAuthPolicyEditor
TOMCAT_CONNECTOR_EDITOR_MODULE_NAME = CasaTomcatConnectorEditor

JAVAFILES = ../src/com/novell/casa/authtoksvc/ProtoDefs.java \
	../src/com/novell/casa/authtoksvc/AuthMechConfig.java \
	../src/com/novell/casa/authtoksvc/SvcConfig.java \
	../src/com/novell/casa/authtoksvc/IdenTokenConfig.java \
	../src/com/novell/casa/authtoksvc/AuthTokenConfig.java \
	../src/com/novell/casa/authtoksvc/EnabledSvcsConfig.java \
	../src/com/novell/casa/authtoksvc/AuthMechanism.java \
	../src/com/novell/casa/authtoksvc/SessionToken.java \
	../src/com/novell/casa/authtoksvc/Authenticate.java \
	../src/com/novell/casa/authtoksvc/RpcMethod.java \
	../src/com/novell/casa/authtoksvc/Rpc.java \
	../src/com/novell/casa/authtoksvc/GetAuthPolicy.java \
	../src/com/novell/casa/authtoksvc/Base64Coder.java \
	../src/com/novell/casa/authtoksvc/AuthReqMsg.java \
	../src/com/novell/casa/authtoksvc/AuthRespMsg.java \
	../src/com/novell/casa/authtoksvc/IdentityToken.java \
	../src/com/novell/casa/authtoksvc/CasaIdentityToken.java \
	../src/com/novell/casa/authtoksvc/AuthToken.java \
	../src/com/novell/casa/authtoksvc/GetAuthPolicyReqMsg.java \
	../src/com/novell/casa/authtoksvc/GetAuthPolicyRespMsg.java \
	../src/com/novell/casa/authtoksvc/GetAuthToken.java \
	../src/com/novell/casa/authtoksvc/GetAuthTokReqMsg.java \
	../src/com/novell/casa/authtoksvc/GetAuthTokRespMsg.java \
	../src/com/novell/casa/authtoksvc/Krb5Authenticate.java \
	../src/com/novell/casa/authtoksvc/PwdAuthenticate.java \
	../src/com/novell/casa/authtoksvc/IVerifySetting.java \
	../src/com/novell/casa/authtoksvc/SettingsFileUtil.java \
	../src/com/novell/casa/authtoksvc/SettingsFileSAXHandler.java \
	../src/com/novell/casa/authtoksvc/AuthPolicyEditor.java \
	../src/com/novell/casa/authtoksvc/AuthTokenSettingsEditor.java \
	../src/com/novell/casa/authtoksvc/IdenTokenSettingsEditor.java \
	../src/com/novell/casa/authtoksvc/RealmsInfo.java \
	../src/com/novell/casa/authtoksvc/SecureTokenUtil.java \
	../src/com/novell/casa/authtoksvc/SvcSettingsEditor.java \
	../src/com/novell/casa/authtoksvc/TomcatConnectorEditor.java

BUILDDIR = ../build

AUTHTOKEN_FILES = -C $(BUILDDIR)/webapp/WEB-INF/classes com

AUTH_TOKEN_SETTINGS_EDITOR_FILES = -C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/IVerifySetting.class \
	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/SettingsFileUtil.class \
	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/AuthTokenSettingsEditor.class \
	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/AuthTokenConfig.class

IDEN_TOKEN_SETTINGS_EDITOR_FILES = -C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/IVerifySetting.class \
	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/SettingsFileUtil.class \
	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/IdenTokenSettingsEditor.class \
	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/IdenTokenConfig.class

SVC_SETTINGS_EDITOR_FILES = -C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/IVerifySetting.class \
	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/SettingsFileUtil.class \
	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/SvcSettingsEditor.class \
	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/SvcConfig.class

AUTH_POLICY_EDITOR_FILES = -C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/AuthPolicyEditor.class

TOMCAT_CONNECTOR_EDITOR_FILES = -C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/TomcatConnectorEditor.class

WEBAPP = $(WEBAPP_NAME).$(WEBAPP_EXT)

AUTH_TOKEN_SETTINGS_EDITOR = $(AUTH_TOKEN_SETTINGS_EDITOR_MODULE_NAME).$(MODULE_EXT)

IDEN_TOKEN_SETTINGS_EDITOR = $(IDEN_TOKEN_SETTINGS_EDITOR_MODULE_NAME).$(MODULE_EXT)

SVC_SETTINGS_EDITOR = $(SVC_SETTINGS_EDITOR_MODULE_NAME).$(MODULE_EXT)

AUTH_POLICY_EDITOR = $(AUTH_POLICY_EDITOR_MODULE_NAME).$(MODULE_EXT)

TOMCAT_CONNECTOR_EDITOR = $(TOMCAT_CONNECTOR_EDITOR_MODULE_NAME).$(MODULE_EXT)

CLASSES = $(addprefix $(BUILDDIR)/, $(JAVAFILES:%.java=%.class))

XMLSEC_LIBS = $(XMLSEC_JARS_DIR)/xmlsec-1.4.0.jar

LIBS = /usr/share/java/servletapi5.jar:/usr/share/java/xerces-j2.jar:/usr/share/java/log4j.jar
CLASSPATH = $(XMLSEC_LIBS):$(IDENT_ABSTRACTION_DIR)/identity-abstraction.jar:$(IDENT_ABSTRACTION_DIR)/bandit-util.jar:$(IDENT_ABSTRACTION_DIR)/castor-1.0.4.jar:$(LIBS)

CUR_DIR := $(shell pwd)

all: $(BUILDDIR)/$(WEBAPP) $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT) $(BUILDDIR)/$(AUTH_TOKEN_SETTINGS_EDITOR) $(BUILDDIR)/$(IDEN_TOKEN_SETTINGS_EDITOR) $(BUILDDIR)/$(SVC_SETTINGS_EDITOR) $(BUILDDIR)/$(AUTH_POLICY_EDITOR) $(BUILDDIR)/$(TOMCAT_CONNECTOR_EDITOR)

$(BUILDDIR)/%.class: %.java
	@echo [======== Compiling $@ ========]
	$(JAVAC) -g -sourcepath ../src -classpath $(CLASSPATH) -d $(BUILDDIR)/webapp/WEB-INF/classes $<

# The following two lines may need to be added below before we jar-up the war for builds where there is no identity-abstraction install
#	cp $(IDENT_ABSTRACTION_DIR)/*.jar $(BUILDDIR)/webapp/WEB-INF/lib/
#	rm $(BUILDDIR)/webapp/WEB-INF/lib/identity-abstraction.jar

$(BUILDDIR)/$(WEBAPP): $(BUILDDIR) $(CLASSES)
	@echo [======== Creating Webapp $@ ========]
	cp ../web.xml $(BUILDDIR)/webapp/WEB-INF/web.xml
	cp ../templates/svc.settings $(BUILDDIR)/webapp/WEB-INF/conf/svc.settings
	cp ../templates/authtoken.settings $(BUILDDIR)/webapp/WEB-INF/conf/authtoken.settings
	cp ../templates/identoken.settings $(BUILDDIR)/webapp/WEB-INF/conf/identoken.settings
	cp ../linux/casa_crypto.properties $(BUILDDIR)/webapp/WEB-INF/classes/casa_crypto.properties
	cp ../src/com/novell/casa/authtoksvc/Krb5_mechanism.settings $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms/Krb5Authenticate/mechanism.settings
	cp ../src/com/novell/casa/authtoksvc/Pwd_mechanism.settings $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms/PwdAuthenticate/mechanism.settings
	cp $(XMLSEC_JARS_DIR)/commons-logging.jar $(BUILDDIR)/webapp/WEB-INF/lib/
	cp $(XMLSEC_JARS_DIR)/xmlsec-1.4.0.jar $(BUILDDIR)/webapp/WEB-INF/lib/
	ls $(BUILDDIR)/webapp/WEB-INF/lib/
	jar cvf $(BUILDDIR)/$(WEBAPP) -C $(BUILDDIR)/webapp .
	cp $(BUILDDIR)/$(WEBAPP) $(LIBDIR)/java/

$(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT): $(BUILDDIR) $(CLASSES)
	@echo [======== Jarring $@ ========]
	jar cvf $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT) $(AUTHTOKEN_FILES)
	cp $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT) $(LIBDIR)/java/

$(BUILDDIR)/$(AUTH_TOKEN_SETTINGS_EDITOR): $(BUILDDIR) $(CLASSES)
	@echo [======== Jarring $@ ========]
	jar cvmf $(MANIFEST_DIR)/AuthTokenSettingsEditor.txt $(BUILDDIR)/$(AUTH_TOKEN_SETTINGS_EDITOR) $(AUTH_TOKEN_SETTINGS_EDITOR_FILES)
	cp $(BUILDDIR)/$(AUTH_TOKEN_SETTINGS_EDITOR) $(LIBDIR)/java/

$(BUILDDIR)/$(IDEN_TOKEN_SETTINGS_EDITOR): $(BUILDDIR) $(CLASSES)
	@echo [======== Jarring $@ ========]
	jar cvmf $(MANIFEST_DIR)/IdenTokenSettingsEditor.txt $(BUILDDIR)/$(IDEN_TOKEN_SETTINGS_EDITOR) $(IDEN_TOKEN_SETTINGS_EDITOR_FILES)
	cp $(BUILDDIR)/$(IDEN_TOKEN_SETTINGS_EDITOR) $(LIBDIR)/java/

$(BUILDDIR)/$(SVC_SETTINGS_EDITOR): $(BUILDDIR) $(CLASSES)
	@echo [======== Jarring $@ ========]
	jar cvmf $(MANIFEST_DIR)/SvcSettingsEditor.txt $(BUILDDIR)/$(SVC_SETTINGS_EDITOR) $(SVC_SETTINGS_EDITOR_FILES)
	cp $(BUILDDIR)/$(SVC_SETTINGS_EDITOR) $(LIBDIR)/java/

$(BUILDDIR)/$(AUTH_POLICY_EDITOR): $(BUILDDIR) $(CLASSES)
	@echo [======== Jarring $@ ========]
	jar cvmf $(MANIFEST_DIR)/AuthPolicyEditor.txt $(BUILDDIR)/$(AUTH_POLICY_EDITOR) $(AUTH_POLICY_EDITOR_FILES)
	cp $(BUILDDIR)/$(AUTH_POLICY_EDITOR) $(LIBDIR)/java/

$(BUILDDIR)/$(TOMCAT_CONNECTOR_EDITOR): $(BUILDDIR) $(CLASSES)
	@echo [======== Jarring $@ ========]
	jar cvmf $(MANIFEST_DIR)/TomcatConnectorEditor.txt $(BUILDDIR)/$(TOMCAT_CONNECTOR_EDITOR) $(TOMCAT_CONNECTOR_EDITOR_FILES)
	cp $(BUILDDIR)/$(TOMCAT_CONNECTOR_EDITOR) $(LIBDIR)/java/

$(BUILDDIR):
	[ -d $(BUILDDIR) ] || mkdir -p $(BUILDDIR)
	[ -d $(BUILDDIR)/webapp ] || mkdir -p $(BUILDDIR)/webapp
	[ -d $(BUILDDIR)/webapp/WEB-INF ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF
	[ -d $(BUILDDIR)/webapp/WEB-INF/classes ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/classes
	[ -d $(BUILDDIR)/webapp/WEB-INF/lib ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/lib
	[ -d $(BUILDDIR)/webapp/WEB-INF/conf ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/conf
	[ -d $(BUILDDIR)/webapp/WEB-INF/conf/enabled_services ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/conf/enabled_services
	[ -d $(BUILDDIR)/webapp/WEB-INF/conf/auth_mechanisms ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/conf/auth_mechanisms
	[ -d $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms
	[ -d $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms/Krb5Authenticate ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms/Krb5Authenticate
	[ -d $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms/PwdAuthenticate ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms/PwdAuthenticate
	[ -d $(LIBDIR) ] || mkdir -p $(LIBDIR)
	[ -d $(LIBDIR)/java ] || mkdir -p $(LIBDIR)/java

install-exec-local:

uninstall-local:

#installcheck-local: install

clean-local:
	if [ -d $(BUILDDIR) ]; then  rm -rf $(BUILDDIR); fi
	if [ -f $(LIBDIR)/java/$(MODULE_NAME).$(MODULE_EXT) ]; then  rm -f $(LIBDIR)/java/$(MODULE_NAME).$(MODULE_EXT); fi
	if [ -f $(LIBDIR)/java/$(WEBAPP) ]; then  rm -f $(LIBDIR)/java/$(WEBAPP); fi

distclean-local:

maintainer-clean-local:
	rm -f Makefile.in
	rm -f Makefile