# The Apache Software License, Version 1.1
#
#
# Copyright (c) 1999 The Apache Software Foundation.  All rights 
# reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer. 
#
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in
#    the documentation and/or other materials provided with the
#    distribution.
#
# 3. The end-user documentation included with the redistribution,
#    if any, must include the following acknowledgment:  
#       "This product includes software developed by the
#        Apache Software Foundation (http://www.apache.org/)."
#    Alternately, this acknowledgment may appear in the software itself,
#    if and wherever such third-party acknowledgments normally appear.
#
# 4. The names "<WebSig>" and "Apache Software Foundation" must
#    not be used to endorse or promote products derived from this
#    software without prior written permission. For written 
#    permission, please contact apache@apache.org.
#
# 5. Products derived from this software may not be called "Apache",
#    nor may "Apache" appear in their name, without prior written
#    permission of the Apache Software Foundation.
#
# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
# ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
# ====================================================================
#
# This software consists of voluntary contributions made by many
# individuals on behalf of the Apache Software Foundation and was
# originally based on software copyright (c) 2001, Institute for
# Data Communications Systems, <http://www.nue.et-inf.uni-siegen.de/>.
# The development of this software was partly funded by the European 
# Commission in the <WebSig> project in the ISIS Programme. 
# For more information on the Apache Software Foundation, please see
# <http://www.apache.org/>.

# All these setting come from the configure script
# We use configure to do most of the hard work as it is more
# designed to handle different system complexity than make
#

######################## CONFIGURE DEFINITIONS ##########################


PLATFORM = SOLARIS

CC  = gcc
CXX = g++
CXXFLAGS = -I/usr/athena/include -O2 -DNDEBUG
CPPFLAGS = -I/usr/athena/include -I/mit/shibboleth/build/@sys/xerces-c-src2_2_0/src

PREFIX = /mit/shibboleth/arch/sun4x_59
LDFLAGS = -L/usr/athena/lib
LIBS=-lm  -L/mit/shibboleth/build/@sys/xerces-c-src2_2_0/lib -lxerces-c -lcrypto
OBJSUFFIX = .o
SHLIBSUFFIX = .so

CC1 = g++ -I/usr/athena/include -O2 -DNDEBUG -Wall -fPIC -DSOLARIS
CC4 = gcc -I/usr/athena/include -O2 -DNDEBUG -Wall -fPIC -DSOLARIS
MAKE_SHARED = g++ -I/usr/athena/include -O2 -DNDEBUG -DSOLARIS -shared -fPIC
LINK = g++ -I/usr/athena/include -O2 -DNDEBUG -DSOLARIS -fPIC

LN_S = ln -s
INSTALL = /usr/athena/bin/install -c
INSTALL_DATA = ${INSTALL} -m 644

# Packaging

PACKAGE_NAME = XML-Security-C
PACKAGE_TARNAME = xml-security-c
PACKAGE_VERSION = 0.2.0
PACKAGE_VERSION_MAJOR = 0

# Library Files
LIB_OBJ_FILES =  ../lib/obj/XSECC14n20010315.o ../lib/obj/XSECCannon.o ../lib/obj/TXFMBase.o ../lib/obj/TXFMBase64.o ../lib/obj/TXFMC14n.o ../lib/obj/TXFMChain.o ../lib/obj/TXFMDocObject.o ../lib/obj/TXFMEnvelope.o ../lib/obj/TXFMMD5.o ../lib/obj/TXFMOutputFile.o ../lib/obj/TXFMParser.o ../lib/obj/TXFMSB.o ../lib/obj/TXFMSHA1.o ../lib/obj/TXFMURL.o ../lib/obj/TXFMXPath.o ../lib/obj/TXFMXPathFilter.o ../lib/obj/TXFMXSL.o ../lib/obj/DSIGConstants.o ../lib/obj/DSIGKeyInfoList.o ../lib/obj/DSIGKeyInfoName.o ../lib/obj/DSIGKeyInfoValue.o ../lib/obj/DSIGKeyInfoX509.o ../lib/obj/DSIGReference.o ../lib/obj/DSIGReferenceList.o ../lib/obj/DSIGSignature.o ../lib/obj/DSIGSignedInfo.o ../lib/obj/DSIGTransform.o ../lib/obj/DSIGTransformBase64.o ../lib/obj/DSIGTransformC14n.o ../lib/obj/DSIGTransformEnvelope.o ../lib/obj/DSIGTransformList.o ../lib/obj/DSIGTransformXPath.o ../lib/obj/DSIGTransformXPathFilter.o ../lib/obj/DSIGTransformXSL.o ../lib/obj/DSIGXPathFilterExpr.o ../lib/obj/DSIGXPathHere.o ../lib/obj/XSECCryptoException.o ../lib/obj/XSECKeyInfoResolverDefault.o ../lib/obj/XSECError.o ../lib/obj/XSECException.o ../lib/obj/XSECProvider.o ../lib/obj/XSECURIResolverXerces.o ../lib/obj/XSECBinTXFMInputStream.o ../lib/obj/XSECDOMUtils.o ../lib/obj/XSECNameSpaceExpander.o ../lib/obj/XSECPlatformUtils.o ../lib/obj/XSECSafeBuffer.o ../lib/obj/XSECSafeBufferFormatter.o ../lib/obj/XSECTXFMInputSource.o ../lib/obj/XSECXPathNodeList.o ../lib/obj/OpenSSLCryptoBase64.o ../lib/obj/OpenSSLCryptoHash.o ../lib/obj/OpenSSLCryptoHashHMAC.o ../lib/obj/OpenSSLCryptoKeyDSA.o ../lib/obj/OpenSSLCryptoKeyHMAC.o ../lib/obj/OpenSSLCryptoKeyRSA.o ../lib/obj/OpenSSLCryptoProvider.o ../lib/obj/OpenSSLCryptoX509.o ../lib/obj/XSECBinHTTPURIInputStream.o ../lib/obj/XSECURIResolverGenericUnix.o

# MACROS defining commands
MKDIR=mkdir -p

######################## Build Directories ##########################

# SRC Directories

CANON_DIR = canon
TRANSFORMERS_DIR = transformers
UTILS_DIR = utils
UNIXUTILS_DIR = utils/unixutils
ENC_DIR = enc
FRAMEWORK_DIR = framework
DSIG_DIR = dsig
OPENSSL_DIR = enc/OpenSSL

# Utility SRC directories

TOOLS_DIR = tools
SAMPLES_DIR = samples

######################## Install Directories ##########################

prefix = /mit/shibboleth/arch/sun4x_59
exec_prefix = ${prefix}
includedir = ${prefix}/include
libdir = ${exec_prefix}/lib
bindir = ${exec_prefix}/bin
infodir = ${prefix}/info
mandir = ${prefix}/man

######################## Library Definition ##########################


# Define the Library

LIB_DIR = ../lib
LIB_OBJECTS_DIR = $(LIB_DIR)/obj

# Actual names are defined by configure

LIBNAME = libxml-security-c.so.0.2.0
LIBSHORTNAME = libxml-security-c.so
LIBMAJORNAME = libxml-security-c.so.0

# Our build target

THISLIB = ${LIB_DIR}/${LIBNAME}

BINTARGETDIR = ../bin

######################## RULES ##########################


# Now the actual compilation

all: lib alltools allsamples

lib: prepare ${THISLIB}

${THISLIB}: $(LIB_OBJ_FILES)
	$(MAKE_SHARED) $(LDFLAGS) $(LIB_OBJ_FILES) $(LIBS) -o $@
	(cd $(LIB_DIR) ; rm -f $(LIBMAJORNAME) ; $(LN_S) $(LIBNAME) $(LIBMAJORNAME))
	(cd $(LIB_DIR) ; rm -f $(LIBSHORTNAME) ; $(LN_S) $(LIBNAME) $(LIBSHORTNAME))

$(LIB_OBJ_FILES): compile

compile:
	$(MAKE) -C ${CANON_DIR} compile
	$(MAKE) -C ${TRANSFORMERS_DIR} compile
	$(MAKE) -C ${DSIG_DIR} compile
	$(MAKE) -C ${ENC_DIR} compile
	$(MAKE) -C ${OPENSSL_DIR} compile
	$(MAKE) -C ${FRAMEWORK_DIR} compile
	$(MAKE) -C ${UTILS_DIR} compile
	$(MAKE) -C ${UNIXUTILS_DIR} compile

depends:
	$(MAKE) -C ${CANON_DIR} -s depends
	$(MAKE) -C ${TRANSFORMERS_DIR} -s depends
	$(MAKE) -C ${DSIG_DIR} -s depends
	$(MAKE) -C ${ENC_DIR} -s depends
	$(MAKE) -C ${OPENSSL_DIR} -s depends
	$(MAKE) -C ${FRAMEWORK_DIR} -s depends
	$(MAKE) -C ${UTILS_DIR} -s depends
	$(MAKE) -C ${UNIXUTILS_DIR} -s depends

prepare:
	$(MKDIR) ../lib
	$(MKDIR) ../lib/obj
	$(MKDIR) ../bin
	$(MKDIR) ../bin/obj
	$(MAKE) -C ${CANON_DIR} includes
	$(MAKE) -C ${TRANSFORMERS_DIR} includes
	$(MAKE) -C ${DSIG_DIR} includes
	$(MAKE) -C ${ENC_DIR} includes
	$(MAKE) -C ${OPENSSL_DIR} includes
	$(MAKE) -C ${FRAMEWORK_DIR} includes
	$(MAKE) -C ${UTILS_DIR} includes
	$(MAKE) -C ${UNIXUTILS_DIR} includes

alltools:
	$(MAKE) -C ${TOOLS_DIR} alltools

allsamples:
	$(MAKE) -C ${SAMPLES_DIR} allsamples


####################### INSTALL ##########################

install: lib
	$(INSTALL) ${THISLIB} ${libdir}
	$(RM) ${libdir}/${LIBMAJORNAME} && $(LN_S) ${LIBNAME} ${libdir}/${LIBMAJORNAME}
	$(RM) ${libdir}/${LIBSHORTNAME} && $(LN_S) ${LIBNAME} ${libdir}/${LIBSHORTNAME}
	$(MAKE) -C ${CANON_DIR} install
	$(MAKE) -C ${TRANSFORMERS_DIR} install
	$(MAKE) -C ${DSIG_DIR} install
	$(MAKE) -C ${ENC_DIR} install
	$(MAKE) -C ${OPENSSL_DIR} install
	$(MAKE) -C ${FRAMEWORK_DIR} install
	$(MAKE) -C ${UTILS_DIR} install
	$(MAKE) -C ${UNIXUTILS_DIR} install

######################## CLEAN  ##########################


clean:
	rm -rf ../lib/*
	rm -rf ../bin/*
	rm -rf ../include/*

distclean: clean
	$(MAKE) -C ${CANON_DIR} distclean
	$(MAKE) -C ${TRANSFORMERS_DIR} distclean
	$(MAKE) -C ${DSIG_DIR} distclean
	$(MAKE) -C ${ENC_DIR} distclean
	$(MAKE) -C ${OPENSSL_DIR} distclean
	$(MAKE) -C ${FRAMEWORK_DIR} distclean
	$(MAKE) -C ${UTILS_DIR} distclean
	$(MAKE) -C ${UNIXUTILS_DIR} distclean
	$(MAKE) -C ${TOOLS_DIR} distclean
	$(MAKE) -C ${SAMPLES_DIR} distclean
	rm -f config.cache
	rm -f config.status
	rm -f config.log
	rm -rf autom4te.cache
	rm -f framework/XSECConfig.hpp
	rm -f Makefile
	rm -f Makefile.bak

