# 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 = @platform@

CC  = @cc@
CXX = @cxx@
CXXFLAGS = @cxxflags@
CPPFLAGS = @cppflags@

PREFIX = @prefix@
LDFLAGS = @ldflags@
LIBS=@libs@
OBJSUFFIX = @objsuffix@
SHLIBSUFFIX = @shlibsuffix@

CC1 = @cc1@
CC4 = @cc4@
MAKE_SHARED = @make_shared@
LINK = @link@

LN_S = @ln_s@
INSTALL = @install@
INSTALL_DATA = @install_data@

# Packaging

PACKAGE_NAME = @package_name@
PACKAGE_TARNAME = @package_tarname@
PACKAGE_VERSION = @package_version@
PACKAGE_VERSION_MAJOR = @package_version_major@

# Library Files
LIB_OBJ_FILES = @lib_obj_files@

# 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 = @prefix@
exec_prefix = @exec_prefix@
includedir = @includedir@
libdir = @libdir@
bindir = @bindir@
infodir = @infodir@
mandir = @mandir@

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


# Define the Library

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

# Actual names are defined by configure

LIBNAME = @lib_name@
LIBSHORTNAME = @lib_short_name@
LIBMAJORNAME = @lib_major_name@

# 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

