# Makefile.in generated by automake 1.9.5 from Makefile.am.
# @configure_input@

# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005  Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.

@SET_MAKE@

#
# Copyright 2006 The Apache Software Foundation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = include
DIST_COMMON = $(nobase_include_HEADERS) $(srcdir)/Makefile.am \
	$(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/acx_pthread.m4 \
	$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
	$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/src/framework/XSECConfig.hpp
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
    *) f=$$p;; \
  esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(includedir)"
nobase_includeHEADERS_INSTALL = $(install_sh_DATA)
HEADERS = $(nobase_include_HEADERS)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
INSTALL_COMMAND_1 = @INSTALL_COMMAND_1@
INSTALL_COMMAND_2 = @INSTALL_COMMAND_2@
INSTALL_COMMAND_3 = @INSTALL_COMMAND_3@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LINK_COMMAND_1 = @LINK_COMMAND_1@
LINK_COMMAND_2 = @LINK_COMMAND_2@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PTHREAD_CC = @PTHREAD_CC@
PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
XSEC_AM_HAVE_OPENSSL_FALSE = @XSEC_AM_HAVE_OPENSSL_FALSE@
XSEC_AM_HAVE_OPENSSL_TRUE = @XSEC_AM_HAVE_OPENSSL_TRUE@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
acx_pthread_config = @acx_pthread_config@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
bitstobuild = @bitstobuild@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
cc = @cc@
cc1 = @cc1@
cc4 = @cc4@
cflags = @cflags@
cppflags = @cppflags@
cxx = @cxx@
cxxflags = @cxxflags@
datadir = @datadir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
includedir = @includedir@
infodir = @infodir@
install = @install@
install_data = @install_data@
install_sh = @install_sh@
ldflags = @ldflags@
lib_major_name = @lib_major_name@
lib_name = @lib_name@
lib_short_name = @lib_short_name@
libdir = @libdir@
libexecdir = @libexecdir@
libs = @libs@
link = @link@
ln_s = @ln_s@
localstatedir = @localstatedir@
make_shared = @make_shared@
mandir = @mandir@
mkdir_p = @mkdir_p@
objsuffix = @objsuffix@
oldincludedir = @oldincludedir@
osver = @osver@
package_libtool_version = @package_libtool_version@
package_name = @package_name@
package_tarname = @package_tarname@
package_version = @package_version@
package_version_major = @package_version_major@
platform = @platform@
prefix = @prefix@
program_transform_name = @program_transform_name@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
shlibsuffix = @shlibsuffix@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
threads = @threads@
transcoder = @transcoder@
BUILT_SOURCES = xsec ${lib_includes}
nobase_include_HEADERS = ${lib_includes}

# The required include files

#       A line like the following will generate a list of headers
#       for a given directory: (must be issued from base directory)
#
# find src/framework -name '*.hpp' -exec echo {} \\ ";" | sed "s/src/  xsec/g"

# Canon

# enc

# dsig

# framework

# transformers

# utils

# XML Encryption

# XML Key Management
lib_includes = xsec/canon/XSECXMLNSStack.hpp xsec/canon/XSECCanon.hpp \
	xsec/canon/XSECC14n20010315.hpp xsec/enc/XSECCryptoKeyHMAC.hpp \
	xsec/enc/XSECCryptoX509.hpp xsec/enc/XSECCryptoKeyDSA.hpp \
	xsec/enc/XSECKeyInfoResolver.hpp xsec/enc/XSECCryptoHash.hpp \
	xsec/enc/XSECCryptoBase64.hpp \
	xsec/enc/XSECCryptoSymmetricKey.hpp xsec/enc/XSECCryptoKey.hpp \
	xsec/enc/XSECCryptoProvider.hpp \
	xsec/enc/XSECKeyInfoResolverDefault.hpp \
	xsec/enc/XSECCryptoKeyRSA.hpp xsec/enc/XSECCryptoException.hpp \
	xsec/enc/XSECCryptoUtils.hpp \
	xsec/enc/XSCrypt/XSCryptCryptoBase64.hpp \
	xsec/enc/OpenSSL/OpenSSLCryptoBase64.hpp \
	xsec/enc/OpenSSL/OpenSSLCryptoSymmetricKey.hpp \
	xsec/enc/OpenSSL/OpenSSLCryptoProvider.hpp \
	xsec/enc/OpenSSL/OpenSSLCryptoKeyRSA.hpp \
	xsec/enc/OpenSSL/OpenSSLCryptoX509.hpp \
	xsec/enc/OpenSSL/OpenSSLCryptoHashHMAC.hpp \
	xsec/enc/OpenSSL/OpenSSLCryptoKeyDSA.hpp \
	xsec/enc/OpenSSL/OpenSSLCryptoKeyHMAC.hpp \
	xsec/enc/OpenSSL/OpenSSLCryptoHash.hpp \
	xsec/enc/NSS/NSSCryptoX509.hpp \
	xsec/enc/NSS/NSSCryptoHashHMAC.hpp \
	xsec/enc/NSS/NSSCryptoKeyDSA.hpp \
	xsec/enc/NSS/NSSCryptoKeyHMAC.hpp \
	xsec/enc/NSS/NSSCryptoHash.hpp \
	xsec/enc/NSS/NSSCryptoSymmetricKey.hpp \
	xsec/enc/NSS/NSSCryptoProvider.hpp \
	xsec/enc/NSS/NSSCryptoKeyRSA.hpp \
	xsec/dsig/DSIGKeyInfoSPKIData.hpp xsec/dsig/DSIGXPathHere.hpp \
	xsec/dsig/DSIGAlgorithmHandlerDefault.hpp \
	xsec/dsig/DSIGXPathFilterExpr.hpp \
	xsec/dsig/DSIGKeyInfoX509.hpp xsec/dsig/DSIGKeyInfoList.hpp \
	xsec/dsig/DSIGKeyInfoValue.hpp xsec/dsig/DSIGTransformC14n.hpp \
	xsec/dsig/DSIGTransformXSL.hpp xsec/dsig/DSIGKeyInfo.hpp \
	xsec/dsig/DSIGKeyInfoPGPData.hpp xsec/dsig/DSIGObject.hpp \
	xsec/dsig/DSIGTransformList.hpp xsec/dsig/DSIGTransform.hpp \
	xsec/dsig/DSIGTransformBase64.hpp \
	xsec/dsig/DSIGTransformXPath.hpp \
	xsec/dsig/DSIGKeyInfoMgmtData.hpp xsec/dsig/DSIGSignedInfo.hpp \
	xsec/dsig/DSIGTransformXPathFilter.hpp \
	xsec/dsig/DSIGReferenceList.hpp xsec/dsig/DSIGReference.hpp \
	xsec/dsig/DSIGSignature.hpp xsec/dsig/DSIGKeyInfoName.hpp \
	xsec/dsig/DSIGTransformEnvelope.hpp \
	xsec/dsig/DSIGConstants.hpp \
	xsec/framework/XSECAlgorithmHandler.hpp \
	xsec/framework/XSECURIResolver.hpp xsec/framework/XSECDefs.hpp \
	xsec/framework/XSECEnv.hpp xsec/framework/XSECException.hpp \
	xsec/framework/XSECError.hpp xsec/framework/XSECProvider.hpp \
	xsec/framework/XSECConfig.hpp \
	xsec/framework/XSECURIResolverXerces.hpp \
	xsec/framework/XSECAlgorithmMapper.hpp \
	xsec/framework/XSECW32Config.hpp \
	xsec/transformers/TXFMXPathFilter.hpp \
	xsec/transformers/TXFMSHA1.hpp \
	xsec/transformers/TXFMParser.hpp \
	xsec/transformers/TXFMOutputFile.hpp \
	xsec/transformers/TXFMURL.hpp xsec/transformers/TXFMBase.hpp \
	xsec/transformers/TXFMCipher.hpp \
	xsec/transformers/TXFMEnvelope.hpp \
	xsec/transformers/TXFMChain.hpp xsec/transformers/TXFMMD5.hpp \
	xsec/transformers/TXFMDocObject.hpp \
	xsec/transformers/TXFMConcatChains.hpp \
	xsec/transformers/TXFMSB.hpp xsec/transformers/TXFMC14n.hpp \
	xsec/transformers/TXFMXSL.hpp xsec/transformers/TXFMXPath.hpp \
	xsec/transformers/TXFMBase64.hpp \
	xsec/utils/unixutils/XSECURIResolverGenericUnix.hpp \
	xsec/utils/unixutils/XSECBinHTTPURIInputStream.hpp \
	xsec/utils/XSECSafeBuffer.hpp xsec/utils/XSECSOAPRequestor.hpp \
	xsec/utils/XSECTXFMInputSource.hpp \
	xsec/utils/XSECNameSpaceExpander.hpp \
	xsec/utils/XSECSOAPRequestorSimple.hpp \
	xsec/utils/XSECXPathNodeList.hpp \
	xsec/utils/XSECSafeBufferFormatter.hpp \
	xsec/utils/XSECDOMUtils.hpp \
	xsec/utils/XSECBinTXFMInputStream.hpp \
	xsec/utils/XSECPlatformUtils.hpp \
	xsec/xenc/XENCEncryptionMethod.hpp \
	xsec/xenc/XENCEncryptedType.hpp xsec/xenc/XENCCipherData.hpp \
	xsec/xenc/XENCEncryptedKey.hpp xsec/xenc/XENCCipherValue.hpp \
	xsec/xenc/XENCEncryptedData.hpp \
	xsec/xenc/XENCCipherReference.hpp xsec/xenc/XENCCipher.hpp \
	xsec/xkms/XKMSNotBoundAuthentication.hpp \
	xsec/xkms/XKMSValidateResult.hpp \
	xsec/xkms/XKMSValidityInterval.hpp \
	xsec/xkms/XKMSStatusRequest.hpp \
	xsec/xkms/XKMSRegisterRequest.hpp \
	xsec/xkms/XKMSPendingRequest.hpp \
	xsec/xkms/XKMSCompoundRequest.hpp xsec/xkms/XKMSUseKeyWith.hpp \
	xsec/xkms/XKMSValidateRequest.hpp \
	xsec/xkms/XKMSUnverifiedKeyBinding.hpp \
	xsec/xkms/XKMSLocateResult.hpp xsec/xkms/XKMSRespondWith.hpp \
	xsec/xkms/XKMSQueryKeyBinding.hpp \
	xsec/xkms/XKMSPrototypeKeyBinding.hpp \
	xsec/xkms/XKMSKeyBindingAbstractType.hpp \
	xsec/xkms/XKMSMessageAbstractType.hpp \
	xsec/xkms/XKMSMessageFactory.hpp xsec/xkms/XKMSConstants.hpp \
	xsec/xkms/XKMSRequestAbstractType.hpp xsec/xkms/XKMSResult.hpp \
	xsec/xkms/XKMSAuthentication.hpp \
	xsec/xkms/XKMSLocateRequest.hpp xsec/xkms/XKMSResultType.hpp \
	xsec/xkms/XKMSStatusResult.hpp xsec/xkms/XKMSKeyBinding.hpp \
	xsec/xkms/XKMSCompoundResult.hpp \
	xsec/xkms/XKMSRegisterResult.hpp \
	xsec/xkms/XKMSResponseMechanism.hpp xsec/xkms/XKMSStatus.hpp \
	xsec/xkms/XKMSRevokeRequest.hpp xsec/xkms/XKMSRevokeResult.hpp \
	xsec/xkms/XKMSRecoverKeyBinding.hpp \
	xsec/xkms/XKMSRevokeKeyBinding.hpp \
	xsec/xkms/XKMSRSAKeyPair.hpp xsec/xkms/XKMSRecoverResult.hpp \
	xsec/xkms/XKMSReissueResult.hpp \
	xsec/xkms/XKMSRecoverRequest.hpp \
	xsec/xkms/XKMSReissueRequest.hpp \
	xsec/xkms/XKMSReissueKeyBinding.hpp

# Now the rules for copying the include files over
SUFFIXES = .hpp
all: $(BUILT_SOURCES)
	$(MAKE) $(AM_MAKEFLAGS) all-am

.SUFFIXES:
.SUFFIXES: .hpp
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
	@for dep in $?; do \
	  case '$(am__configure_deps)' in \
	    *$$dep*) \
	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
		&& exit 0; \
	      exit 1;; \
	  esac; \
	done; \
	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  include/Makefile'; \
	cd $(top_srcdir) && \
	  $(AUTOMAKE) --gnu  include/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
	@case '$?' in \
	  *config.status*) \
	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
	  *) \
	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
	esac;

$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh

$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh

mostlyclean-libtool:
	-rm -f *.lo

clean-libtool:
	-rm -rf .libs _libs

distclean-libtool:
	-rm -f libtool
uninstall-info-am:
install-nobase_includeHEADERS: $(nobase_include_HEADERS)
	@$(NORMAL_INSTALL)
	test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)"
	@$(am__vpath_adj_setup) \
	list='$(nobase_include_HEADERS)'; for p in $$list; do \
	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
	  $(am__vpath_adj) \
	  echo " $(nobase_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \
	  $(nobase_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \
	done

uninstall-nobase_includeHEADERS:
	@$(NORMAL_UNINSTALL)
	@$(am__vpath_adj_setup) \
	list='$(nobase_include_HEADERS)'; for p in $$list; do \
	  $(am__vpath_adj) \
	  echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \
	  rm -f "$(DESTDIR)$(includedir)/$$f"; \
	done

ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
	unique=`for i in $$list; do \
	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
	  done | \
	  $(AWK) '    { files[$$0] = 1; } \
	       END { for (i in files) print i; }'`; \
	mkid -fID $$unique
tags: TAGS

TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
		$(TAGS_FILES) $(LISP)
	tags=; \
	here=`pwd`; \
	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
	unique=`for i in $$list; do \
	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
	  done | \
	  $(AWK) '    { files[$$0] = 1; } \
	       END { for (i in files) print i; }'`; \
	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
	  test -n "$$unique" || unique=$$empty_fix; \
	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
	    $$tags $$unique; \
	fi
ctags: CTAGS
CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
		$(TAGS_FILES) $(LISP)
	tags=; \
	here=`pwd`; \
	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
	unique=`for i in $$list; do \
	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
	  done | \
	  $(AWK) '    { files[$$0] = 1; } \
	       END { for (i in files) print i; }'`; \
	test -z "$(CTAGS_ARGS)$$tags$$unique" \
	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
	     $$tags $$unique

GTAGS:
	here=`$(am__cd) $(top_builddir) && pwd` \
	  && cd $(top_srcdir) \
	  && gtags -i $(GTAGS_ARGS) $$here

distclean-tags:
	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags

distdir: $(DISTFILES)
	$(mkdir_p) $(distdir)/xsec/canon $(distdir)/xsec/dsig $(distdir)/xsec/enc $(distdir)/xsec/enc/NSS $(distdir)/xsec/enc/OpenSSL $(distdir)/xsec/enc/XSCrypt $(distdir)/xsec/framework $(distdir)/xsec/transformers $(distdir)/xsec/utils $(distdir)/xsec/utils/unixutils $(distdir)/xsec/xenc $(distdir)/xsec/xkms
	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
	list='$(DISTFILES)'; for file in $$list; do \
	  case $$file in \
	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
	  esac; \
	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
	    dir="/$$dir"; \
	    $(mkdir_p) "$(distdir)$$dir"; \
	  else \
	    dir=''; \
	  fi; \
	  if test -d $$d/$$file; then \
	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
	    fi; \
	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
	  else \
	    test -f $(distdir)/$$file \
	    || cp -p $$d/$$file $(distdir)/$$file \
	    || exit 1; \
	  fi; \
	done
check-am: all-am
check: $(BUILT_SOURCES)
	$(MAKE) $(AM_MAKEFLAGS) check-am
all-am: Makefile $(HEADERS)
installdirs:
	for dir in "$(DESTDIR)$(includedir)"; do \
	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
	done
install: $(BUILT_SOURCES)
	$(MAKE) $(AM_MAKEFLAGS) install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am

install-am: all-am
	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am

installcheck: installcheck-am
install-strip:
	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
	  `test -z '$(STRIP)' || \
	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:

clean-generic:

distclean-generic:
	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)

maintainer-clean-generic:
	@echo "This command is intended for maintainers to use"
	@echo "it deletes files that may require special tools to rebuild."
	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
clean: clean-am

clean-am: clean-generic clean-libtool clean-local mostlyclean-am

distclean: distclean-am
	-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-libtool \
	distclean-tags

dvi: dvi-am

dvi-am:

html: html-am

info: info-am

info-am:

install-data-am: install-nobase_includeHEADERS

install-exec-am:

install-info: install-info-am

install-man:

installcheck-am:

maintainer-clean: maintainer-clean-am
	-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic

mostlyclean: mostlyclean-am

mostlyclean-am: mostlyclean-generic mostlyclean-libtool

pdf: pdf-am

pdf-am:

ps: ps-am

ps-am:

uninstall-am: uninstall-info-am uninstall-nobase_includeHEADERS

.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
	clean-libtool clean-local ctags distclean distclean-generic \
	distclean-libtool distclean-tags distdir dvi dvi-am html \
	html-am info info-am install install-am install-data \
	install-data-am install-exec install-exec-am install-info \
	install-info-am install-man install-nobase_includeHEADERS \
	install-strip installcheck installcheck-am installdirs \
	maintainer-clean maintainer-clean-generic mostlyclean \
	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
	tags uninstall uninstall-am uninstall-info-am \
	uninstall-nobase_includeHEADERS


xsec/%.hpp: ../src/%.hpp
	cp ../src/$*.hpp $@

xsec:
	mkdir xsec
	mkdir xsec/canon
	mkdir xsec/dsig
	mkdir xsec/framework
	mkdir xsec/utils
	mkdir xsec/utils/unixutils
	mkdir xsec/enc
	mkdir xsec/enc/OpenSSL
	mkdir xsec/enc/NSS
	mkdir xsec/enc/XSCrypt
	mkdir xsec/transformers
	mkdir xsec/xenc
	mkdir xsec/xkms

# Cleaning

clean-local:
	$(RM) -r xsec
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
