summaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
authorAnas Nashif <anas.nashif@intel.com>2012-11-13 12:30:55 -0800
committerAnas Nashif <anas.nashif@intel.com>2012-11-13 12:30:55 -0800
commitf251dedaa31b48f7c05a4b53c112b40ebca890ef (patch)
treed6c78a1b273417506edb030c96772c8459f5831e /win32
downloadxmlsec1-f251dedaa31b48f7c05a4b53c112b40ebca890ef.tar.gz
xmlsec1-f251dedaa31b48f7c05a4b53c112b40ebca890ef.tar.bz2
xmlsec1-f251dedaa31b48f7c05a4b53c112b40ebca890ef.zip
Imported Upstream version 1.2.18upstream/1.2.18
Diffstat (limited to 'win32')
-rw-r--r--win32/Makefile.msvc699
-rw-r--r--win32/README.txt168
-rw-r--r--win32/configure.js395
-rw-r--r--win32/libxmlsec.def.src25
-rw-r--r--win32/mycfg.bat21
5 files changed, 1308 insertions, 0 deletions
diff --git a/win32/Makefile.msvc b/win32/Makefile.msvc
new file mode 100644
index 00000000..b1d8869e
--- /dev/null
+++ b/win32/Makefile.msvc
@@ -0,0 +1,699 @@
+# Makefile for xmlsec, specific for Windows, MSVC and NMAKE.
+#
+# Take a look at the beginning and modify the variables to suit your
+# environment. Having done that, you can do a
+#
+# nmake [all] to build the xmlsec and the accompanying utilities.
+# nmake clean to remove all compiler output files and return to a
+# clean state.
+# nmake rebuild to rebuild everything from scratch. This basically does
+# a 'nmake clean' and then a 'nmake all'.
+# nmake install to install the library and its header files.
+#
+# March 2002, Igor Zlatkovic <igor@stud.fh-frankfurt.de>
+# Created for LibXML and LibXSLT
+# April 2002, Aleksey Sanin <aleksey@aleksey.com>
+# Modified for XMLSec Libary
+#
+
+AUTOCONF = .\configure.txt
+
+# If you cannot run the configuration script, which would take the burden of
+# editing this file from your back, then remove the following line...
+!include $(AUTOCONF)
+# ...and enable the following lines and adapt them to your environment.
+#BASEDIR = ..
+#XMLSEC_SRCDIR = $(BASEDIR)\src
+#APPS_SRCDIR = $(BASEDIR)\apps
+#BINDIR = binaries
+#XMLSEC_MAJOR_VERSION = 0 # set this to the right value.
+#XMLSEC_MINOR_VERSION = 0 # set this to the right value.
+#XMLSEC_MICRO_VERSION = 0 # set this to the right value.
+#WITH_XMLSEC_DEBUG = 1
+#UNICODE = 1
+#DEBUG = 0
+#WITH_CRYPTO=openssl
+#WITH_CRYPTO=openssl
+#WITH_DEFAULT_CRYPTO=openssl
+#WITH_OPENSSL=1
+#WITH_OPENSSL_VERSION=
+#WITH_NSS=0
+#WITH_MSCRYPTO=0
+#WITH_LIBXSLT=1
+#STATIC = 0
+#WITH_DL = 1
+#PREFIX = . # set this to the right value.
+#BINPREFIX = $(PREFIX)\bin
+#INCPREFIX = $(PREFIX)\include
+#LIBPREFIX = $(PREFIX)\lib
+#SOPREFIX = $(PREFIX)\lib
+#INCLUDE = $(INCLUDE);$(INCPREFIX)
+#LIB = $(LIB);$(LIBPREFIX)
+
+# There should never be a need to modify anything below this line.
+# ----------------------------------------------------------------
+
+#
+# Names of various input and output components.
+#
+!if "$(STATIC)" == "1"
+APP_NAME = xmlseca.exe
+!else
+APP_NAME = xmlsec.exe
+!endif
+APP_NAME_MANIFEST = $(APP_NAME).manifest
+
+XMLSEC_NAME = xmlsec
+XMLSEC_BASENAME = lib$(XMLSEC_NAME)
+XMLSEC_SO = $(XMLSEC_BASENAME).dll
+XMLSEC_SO_MANIFEST = $(XMLSEC_BASENAME).dll.manifest
+XMLSEC_IMP = $(XMLSEC_BASENAME).lib
+XMLSEC_A = $(XMLSEC_BASENAME)_a.lib
+
+XMLSEC_OPENSSL_NAME = $(XMLSEC_NAME)-openssl
+XMLSEC_OPENSSL_BASENAME = lib$(XMLSEC_OPENSSL_NAME)
+XMLSEC_OPENSSL_SO = $(XMLSEC_OPENSSL_BASENAME).dll
+XMLSEC_OPENSSL_SO_MANIFEST = $(XMLSEC_OPENSSL_BASENAME).dll.manifest
+XMLSEC_OPENSSL_IMP = $(XMLSEC_OPENSSL_BASENAME).lib
+XMLSEC_OPENSSL_A = $(XMLSEC_OPENSSL_BASENAME)_a.lib
+
+XMLSEC_NSS_NAME = $(XMLSEC_NAME)-nss
+XMLSEC_NSS_BASENAME = lib$(XMLSEC_NSS_NAME)
+XMLSEC_NSS_SO = $(XMLSEC_NSS_BASENAME).dll
+XMLSEC_NSS_SO_MANIFEST = $(XMLSEC_NSS_BASENAME).dll.manifest
+XMLSEC_NSS_IMP = $(XMLSEC_NSS_BASENAME).lib
+XMLSEC_NSS_A = $(XMLSEC_NSS_BASENAME)_a.lib
+
+XMLSEC_MSCRYPTO_NAME = $(XMLSEC_NAME)-mscrypto
+XMLSEC_MSCRYPTO_BASENAME= lib$(XMLSEC_MSCRYPTO_NAME)
+XMLSEC_MSCRYPTO_SO = $(XMLSEC_MSCRYPTO_BASENAME).dll
+XMLSEC_MSCRYPTO_SO_MANIFEST = $(XMLSEC_MSCRYPTO_BASENAME).dll.manifest
+XMLSEC_MSCRYPTO_IMP = $(XMLSEC_MSCRYPTO_BASENAME).lib
+XMLSEC_MSCRYPTO_A = $(XMLSEC_MSCRYPTO_BASENAME)_a.lib
+
+#
+# Places where intermediate files produced by the compiler go
+#
+XMLSEC_APPS_INTDIR = apps.int
+XMLSEC_APPS_INTDIR_A = apps_a.int
+
+XMLSEC_INTDIR = $(XMLSEC_BASENAME).int
+XMLSEC_INTDIR_A = $(XMLSEC_BASENAME)_a.int
+
+XMLSEC_OPENSSL_INTDIR = $(XMLSEC_BASENAME)_openssl.int
+XMLSEC_OPENSSL_INTDIR_A = $(XMLSEC_BASENAME)_openssl_a.int
+
+XMLSEC_NSS_INTDIR = $(XMLSEC_BASENAME)_nss.int
+XMLSEC_NSS_INTDIR_A = $(XMLSEC_BASENAME)_nss_a.int
+
+XMLSEC_MSCRYPTO_INTDIR = $(XMLSEC_BASENAME)_mscrypto.int
+XMLSEC_MSCRYPTO_INTDIR_A= $(XMLSEC_BASENAME)_mscrypto_a.int
+
+#
+# Source folders
+#
+XMLSEC_OPENSSL_SRCDIR = $(XMLSEC_SRCDIR)\openssl
+XMLSEC_NSS_SRCDIR = $(XMLSEC_SRCDIR)\nss
+XMLSEC_MSCRYPTO_SRCDIR = $(XMLSEC_SRCDIR)\mscrypto
+
+
+#
+# Object files for libraries and apps.
+#
+XMLSEC_APPS_OBJS = \
+ $(XMLSEC_APPS_INTDIR)\crypto.obj\
+ $(XMLSEC_APPS_INTDIR)\cmdline.obj\
+ $(XMLSEC_APPS_INTDIR)\xmlsec.obj
+XMLSEC_APPS_OBJS_A = \
+ $(XMLSEC_APPS_INTDIR_A)\crypto.obj\
+ $(XMLSEC_APPS_INTDIR_A)\cmdline.obj\
+ $(XMLSEC_APPS_INTDIR_A)\xmlsec.obj
+
+XMLSEC_OBJS = \
+ $(XMLSEC_INTDIR)\app.obj\
+ $(XMLSEC_INTDIR)\base64.obj\
+ $(XMLSEC_INTDIR)\bn.obj\
+ $(XMLSEC_INTDIR)\buffer.obj \
+ $(XMLSEC_INTDIR)\c14n.obj \
+ $(XMLSEC_INTDIR)\dl.obj \
+ $(XMLSEC_INTDIR)\enveloped.obj \
+ $(XMLSEC_INTDIR)\errors.obj \
+ $(XMLSEC_INTDIR)\io.obj \
+ $(XMLSEC_INTDIR)\keyinfo.obj \
+ $(XMLSEC_INTDIR)\keys.obj \
+ $(XMLSEC_INTDIR)\keysdata.obj \
+ $(XMLSEC_INTDIR)\keysmngr.obj \
+ $(XMLSEC_INTDIR)\kw_aes_des.obj \
+ $(XMLSEC_INTDIR)\list.obj \
+ $(XMLSEC_INTDIR)\membuf.obj \
+ $(XMLSEC_INTDIR)\nodeset.obj \
+ $(XMLSEC_INTDIR)\parser.obj \
+ $(XMLSEC_INTDIR)\soap.obj \
+ $(XMLSEC_INTDIR)\strings.obj \
+ $(XMLSEC_INTDIR)\templates.obj \
+ $(XMLSEC_INTDIR)\transforms.obj \
+ $(XMLSEC_INTDIR)\x509.obj \
+ $(XMLSEC_INTDIR)\xkms.obj \
+ $(XMLSEC_INTDIR)\xmldsig.obj \
+ $(XMLSEC_INTDIR)\xmlenc.obj \
+ $(XMLSEC_INTDIR)\xmlsec.obj \
+ $(XMLSEC_INTDIR)\xmltree.obj \
+ $(XMLSEC_INTDIR)\xpath.obj \
+ $(XMLSEC_INTDIR)\xslt.obj
+XMLSEC_OBJS_A = \
+ $(XMLSEC_INTDIR_A)\app.obj\
+ $(XMLSEC_INTDIR_A)\base64.obj\
+ $(XMLSEC_INTDIR_A)\bn.obj\
+ $(XMLSEC_INTDIR_A)\buffer.obj \
+ $(XMLSEC_INTDIR_A)\c14n.obj \
+ $(XMLSEC_INTDIR_A)\dl.obj \
+ $(XMLSEC_INTDIR_A)\enveloped.obj \
+ $(XMLSEC_INTDIR_A)\errors.obj \
+ $(XMLSEC_INTDIR_A)\io.obj \
+ $(XMLSEC_INTDIR_A)\keyinfo.obj \
+ $(XMLSEC_INTDIR_A)\keys.obj \
+ $(XMLSEC_INTDIR_A)\keysdata.obj \
+ $(XMLSEC_INTDIR_A)\keysmngr.obj \
+ $(XMLSEC_INTDIR_A)\kw_aes_des.obj \
+ $(XMLSEC_INTDIR_A)\list.obj \
+ $(XMLSEC_INTDIR_A)\membuf.obj \
+ $(XMLSEC_INTDIR_A)\nodeset.obj \
+ $(XMLSEC_INTDIR_A)\parser.obj \
+ $(XMLSEC_INTDIR_A)\soap.obj \
+ $(XMLSEC_INTDIR_A)\strings.obj \
+ $(XMLSEC_INTDIR_A)\templates.obj \
+ $(XMLSEC_INTDIR_A)\transforms.obj \
+ $(XMLSEC_INTDIR_A)\x509.obj \
+ $(XMLSEC_INTDIR_A)\xkms.obj \
+ $(XMLSEC_INTDIR_A)\xmldsig.obj \
+ $(XMLSEC_INTDIR_A)\xmlenc.obj \
+ $(XMLSEC_INTDIR_A)\xmlsec.obj \
+ $(XMLSEC_INTDIR_A)\xmltree.obj \
+ $(XMLSEC_INTDIR_A)\xpath.obj \
+ $(XMLSEC_INTDIR_A)\xslt.obj
+
+XMLSEC_OPENSSL_OBJS = \
+ $(XMLSEC_OPENSSL_INTDIR)\app.obj\
+ $(XMLSEC_OPENSSL_INTDIR)\bn.obj \
+ $(XMLSEC_OPENSSL_INTDIR)\ciphers.obj \
+ $(XMLSEC_OPENSSL_INTDIR)\crypto.obj \
+ $(XMLSEC_OPENSSL_INTDIR)\digests.obj \
+ $(XMLSEC_OPENSSL_INTDIR)\evp.obj \
+ $(XMLSEC_OPENSSL_INTDIR)\hmac.obj \
+ $(XMLSEC_OPENSSL_INTDIR)\kt_rsa.obj \
+ $(XMLSEC_OPENSSL_INTDIR)\kw_aes.obj \
+ $(XMLSEC_OPENSSL_INTDIR)\kw_des.obj \
+ $(XMLSEC_OPENSSL_INTDIR)\signatures.obj \
+ $(XMLSEC_OPENSSL_INTDIR)\strings.obj \
+ $(XMLSEC_OPENSSL_INTDIR)\symkeys.obj \
+ $(XMLSEC_OPENSSL_INTDIR)\x509.obj \
+ $(XMLSEC_OPENSSL_INTDIR)\x509vfy.obj
+XMLSEC_OPENSSL_OBJS_A = \
+ $(XMLSEC_OPENSSL_INTDIR_A)\app.obj\
+ $(XMLSEC_OPENSSL_INTDIR_A)\bn.obj \
+ $(XMLSEC_OPENSSL_INTDIR_A)\ciphers.obj \
+ $(XMLSEC_OPENSSL_INTDIR_A)\crypto.obj \
+ $(XMLSEC_OPENSSL_INTDIR_A)\digests.obj \
+ $(XMLSEC_OPENSSL_INTDIR_A)\evp.obj \
+ $(XMLSEC_OPENSSL_INTDIR_A)\hmac.obj \
+ $(XMLSEC_OPENSSL_INTDIR_A)\kt_rsa.obj \
+ $(XMLSEC_OPENSSL_INTDIR_A)\kw_aes.obj \
+ $(XMLSEC_OPENSSL_INTDIR_A)\kw_des.obj \
+ $(XMLSEC_OPENSSL_INTDIR_A)\signatures.obj \
+ $(XMLSEC_OPENSSL_INTDIR_A)\strings.obj \
+ $(XMLSEC_OPENSSL_INTDIR_A)\symkeys.obj \
+ $(XMLSEC_OPENSSL_INTDIR_A)\x509.obj \
+ $(XMLSEC_OPENSSL_INTDIR_A)\x509vfy.obj
+
+XMLSEC_NSS_OBJS = \
+ $(XMLSEC_NSS_INTDIR)\app.obj\
+ $(XMLSEC_NSS_INTDIR)\bignum.obj\
+ $(XMLSEC_NSS_INTDIR)\ciphers.obj \
+ $(XMLSEC_NSS_INTDIR)\crypto.obj \
+ $(XMLSEC_NSS_INTDIR)\digests.obj \
+ $(XMLSEC_NSS_INTDIR)\hmac.obj \
+ $(XMLSEC_NSS_INTDIR)\pkikeys.obj\
+ $(XMLSEC_NSS_INTDIR)\signatures.obj\
+ $(XMLSEC_NSS_INTDIR)\symkeys.obj \
+ $(XMLSEC_NSS_INTDIR)\x509.obj\
+ $(XMLSEC_NSS_INTDIR)\x509vfy.obj\
+ $(XMLSEC_NSS_INTDIR)\keysstore.obj\
+ $(XMLSEC_NSS_INTDIR)\keytrans.obj\
+ $(XMLSEC_NSS_INTDIR)\kw_des.obj\
+ $(XMLSEC_NSS_INTDIR)\kw_aes.obj\
+ $(XMLSEC_NSS_INTDIR)\strings.obj
+XMLSEC_NSS_OBJS_A = \
+ $(XMLSEC_NSS_INTDIR_A)\app.obj\
+ $(XMLSEC_NSS_INTDIR_A)\bignum.obj\
+ $(XMLSEC_NSS_INTDIR_A)\ciphers.obj \
+ $(XMLSEC_NSS_INTDIR_A)\crypto.obj \
+ $(XMLSEC_NSS_INTDIR_A)\digests.obj \
+ $(XMLSEC_NSS_INTDIR_A)\hmac.obj \
+ $(XMLSEC_NSS_INTDIR_A)\pkikeys.obj\
+ $(XMLSEC_NSS_INTDIR_A)\signatures.obj\
+ $(XMLSEC_NSS_INTDIR_A)\symkeys.obj \
+ $(XMLSEC_NSS_INTDIR_A)\x509.obj\
+ $(XMLSEC_NSS_INTDIR_A)\x509vfy.obj\
+ $(XMLSEC_NSS_INTDIR_A)\keysstore.obj\
+ $(XMLSEC_NSS_INTDIR_A)\kt_rsa.obj\
+ $(XMLSEC_NSS_INTDIR_A)\kw_des.obj\
+ $(XMLSEC_NSS_INTDIR_A)\kw_aes.obj\
+ $(XMLSEC_NSS_INTDIR_A)\strings.obj
+
+XMLSEC_MSCRYPTO_OBJS = \
+ $(XMLSEC_MSCRYPTO_INTDIR)\app.obj\
+ $(XMLSEC_MSCRYPTO_INTDIR)\crypto.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR)\ciphers.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR)\digests.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR)\hmac.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR)\symkeys.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR)\kt_rsa.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR)\kw_aes.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR)\kw_des.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR)\strings.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR)\signatures.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR)\certkeys.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR)\keysstore.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR)\x509.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR)\x509vfy.obj
+XMLSEC_MSCRYPTO_OBJS_A = \
+ $(XMLSEC_MSCRYPTO_INTDIR_A)\app.obj\
+ $(XMLSEC_MSCRYPTO_INTDIR_A)\crypto.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR_A)\ciphers.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR_A)\digests.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR_A)\hmac.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR_A)\symkeys.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR_A)\kt_rsa.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR_A)\kw_aes.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR_A)\kw_des.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR_A)\strings.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR_A)\signatures.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR_A)\certkeys.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR_A)\keysstore.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR_A)\x509.obj \
+ $(XMLSEC_MSCRYPTO_INTDIR_A)\x509vfy.obj
+
+#
+# The preprocessor and its options.
+#
+CPP = cl.exe /EP
+CPPFLAGS = /nologo
+
+#
+# The compiler and its options.
+#
+CC = cl.exe
+CFLAGS = /nologo /D "WIN32" /D "_WINDOWS"
+CFLAGS = $(CFLAGS) /D "_MBCS" /D "_REENTRANT" /W1 /MD
+CFLAGS = $(CFLAGS) /I$(BASEDIR) /I$(BASEDIR)\include
+CFLAGS = $(CFLAGS) /I$(INCPREFIX)
+CFLAGS = $(CFLAGS) /D PACKAGE=\"$(XMLSEC_NAME)\"
+CFLAGS = $(CFLAGS) /D "HAVE_STDIO_H" /D "HAVE_STDLIB_H"
+CFLAGS = $(CFLAGS) /D "HAVE_STRING_H" /D "HAVE_CTYPE_H"
+CFLAGS = $(CFLAGS) /D "HAVE_MALLOC_H" /D "HAVE_MEMORY_H"
+
+!if "$(UNICODE)" == "1"
+CFLAGS = $(CFLAGS) /D "UNICODE" /D "_UNICODE"
+!endif
+
+# Optimisation and debug symbols.
+!if "$(DEBUG)" == "1"
+CFLAGS = $(CFLAGS) /D "_DEBUG" /Od /Z7
+!else
+CFLAGS = $(CFLAGS) /D "NDEBUG" /O2
+!endif
+
+# configurable options
+!if "$(WITH_LIBXSLT)" == "1"
+!else
+CFLAGS = $(CFLAGS) /DXMLSEC_NO_XSLT=1
+!endif
+
+!if "$(WITH_NT4)" == "1"
+CFLAGS = $(CFLAGS) /DXMLSEC_MSCRYPTO_NT4=1
+!else
+!endif
+
+APP_CFLAGS = /D "XMLSEC_CRYPTO=\"$(XMLSEC_CRYPTO)\""
+!if "$(WITH_DL)" == "1"
+CFLAGS = $(CFLAGS) /D "XMLSEC_DL_WIN32"
+APP_CFLAGS = $(APP_CFLAGS) /D "XMLSEC_CRYPTO_DYNAMIC_LOADING"
+!else
+CFLAGS = $(CFLAGS) /D "XMLSEC_NO_CRYPTO_DYNAMIC_LOADING"
+APP_CFLAGS = $(APP_CFLAGS) $(XMLSEC_CRYPTO_CFLAGS)
+# this disables TEMPLATE tests and helps with missing algorithms (hmac) in mscrypto
+APP_CFLAGS = $(APP_CFLAGS) /D "XMLSEC_NO_TMPL_TEST"
+!endif
+
+!if "$(WITH_OPENSSL_VERSION)" == ""
+XMLSEC_OPENSSL_CFLAGS = /D "XMLSEC_CRYPTO_OPENSSL" /D "XMLSEC_CRYPTO=\"openssl\""
+!else
+XMLSEC_OPENSSL_CFLAGS = /D "$(WITH_OPENSSL_VERSION)" /D "XMLSEC_CRYPTO_OPENSSL" /D "XMLSEC_CRYPTO=\"openssl\""
+!endif
+XMLSEC_NSS_CFLAGS = /D "XMLSEC_CRYPTO_NSS" /D "XMLSEC_CRYPTO=\"nss\""
+XMLSEC_MSCRYPTO_CFLAGS = /D "XMLSEC_CRYPTO_MSCRYPTO" /D "XMLSEC_CRYPTO=\"mscrypto\""
+
+#
+# The linker and its options.
+#
+LD = link.exe
+LDFLAGS = /nologo
+LDFLAGS = $(LDFLAGS) /LIBPATH:$(BINDIR) /LIBPATH:$(LIBPREFIX)
+LIBS =
+
+# Optimisation and debug symbols.
+!if "$(DEBUG)" == "1"
+LDFLAGS = $(LDFLAGS) /DEBUG
+!else
+LDFLAGS = $(LDFLAGS) /OPT:NOWIN98
+!endif
+
+SOLIBS = $(LIBS) libxml2.lib
+ALIBS = $(LIBS) libxml2_a.lib
+
+!if "$(WITH_ICONV)" == "1"
+SOLIBS = $(SOLIBS) iconv.lib
+ALIBS = $(ALIBS) iconv_a.lib
+!endif
+
+!if "$(WITH_LIBXSLT)" == "1"
+SOLIBS = $(SOLIBS) libxslt.lib
+ALIBS = $(ALIBS) libxslt_a.lib
+!endif
+
+!if "$(STATIC)" == "1"
+APP_LIBS = $(ALIBS) $(XMLSEC_CRYPTO_ALIBS)
+!else
+APP_LIBS = $(SOLIBS) $(XMLSEC_CRYPTO_SOLIBS)
+!endif
+
+!if "$(WITH_DL)" == "1"
+!else
+!endif
+
+XMLSEC_OPENSSL_SOLIBS = libeay32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib
+XMLSEC_OPENSSL_ALIBS = libeay32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib
+
+XMLSEC_NSS_SOLIBS = smime3.lib ssl3.lib nss3.lib libnspr4.lib libplds4.lib libplc4.lib kernel32.lib user32.lib gdi32.lib
+XMLSEC_NSS_ALIBS = smime3.lib ssl3.lib nss3.lib libnspr4_s.lib libplds4_s.lib libplc4_s.lib kernel32.lib user32.lib gdi32.lib
+
+XMLSEC_MSCRYPTO_SOLIBS = kernel32.lib user32.lib gdi32.lib Crypt32.lib Advapi32.lib
+XMLSEC_MSCRYPTO_ALIBS = kernel32.lib user32.lib gdi32.lib Crypt32.lib Advapi32.lib
+
+
+# The archiver and its options.
+AR = link.exe /lib
+ARFLAGS = /nologo
+
+
+#
+# xmlsec-<default-crypto> options
+#
+!if "$(WITH_DEFAULT_CRYPTO)" == "openssl"
+XMLSEC_CRYPTO = "openssl"
+XMLSEC_CRYPTO_CFLAGS = $(XMLSEC_OPENSSL_CFLAGS)
+XMLSEC_CRYPTO_SOLIBS = $(XMLSEC_OPENSSL_SOLIBS)
+XMLSEC_CRYPTO_ALIBS = $(XMLSEC_OPENSSL_ALIBS)
+XMLSEC_CRYPTO_SO = $(XMLSEC_OPENSSL_SO)
+XMLSEC_CRYPTO_IMP = $(XMLSEC_OPENSSL_IMP)
+XMLSEC_CRYPTO_A = $(XMLSEC_OPENSSL_A)
+!endif
+
+!if "$(WITH_DEFAULT_CRYPTO)" == "nss"
+XMLSEC_CRYPTO = "nss"
+XMLSEC_CRYPTO_CFLAGS = $(XMLSEC_NSS_CFLAGS)
+XMLSEC_CRYPTO_SOLIBS = $(XMLSEC_NSS_SOLIBS)
+XMLSEC_CRYPTO_ALIBS = $(XMLSEC_NSS_ALIBS)
+XMLSEC_CRYPTO_SO = $(XMLSEC_NSS_SO)
+XMLSEC_CRYPTO_IMP = $(XMLSEC_NSS_IMP)
+XMLSEC_CRYPTO_A = $(XMLSEC_NSS_A)
+!endif
+
+!if "$(WITH_DEFAULT_CRYPTO)" == "mscrypto"
+XMLSEC_CRYPTO = "mscrypto"
+XMLSEC_CRYPTO_CFLAGS = $(XMLSEC_MSCRYPTO_CFLAGS)
+XMLSEC_CRYPTO_SOLIBS = $(XMLSEC_MSCRYPTO_SOLIBS)
+XMLSEC_CRYPTO_ALIBS = $(XMLSEC_MSCRYPTO_ALIBS)
+XMLSEC_CRYPTO_SO = $(XMLSEC_MSCRYPTO_SO)
+XMLSEC_CRYPTO_IMP = $(XMLSEC_MSCRYPTO_IMP)
+XMLSEC_CRYPTO_A = $(XMLSEC_MSCRYPTO_A)
+!endif
+
+#
+# Build rules
+#
+
+all : xmlsec xmlseca $(WITH_CRYPTO) apps
+
+xmlsec : $(XMLSEC_APPS_INTDIR) $(BINDIR)\$(XMLSEC_SO) $(WITH_DEFAULT_CRYPTO)
+
+xmlseca : $(XMLSEC_APPS_INTDIR_A) $(BINDIR)\$(XMLSEC_A) $(WITH_DEFAULT_CRYPTO)
+
+openssl: $(BINDIR)\$(XMLSEC_OPENSSL_SO) $(BINDIR)\$(XMLSEC_OPENSSL_A)
+
+nss: $(BINDIR)\$(XMLSEC_NSS_SO) $(BINDIR)\$(XMLSEC_NSS_A)
+
+mscrypto: $(BINDIR)\$(XMLSEC_MSCRYPTO_SO) $(BINDIR)\$(XMLSEC_MSCRYPTO_A)
+
+apps : $(BINDIR)\$(APP_NAME)
+
+check : check-keys check-dsig check-enc
+
+check-keys : $(BINDIR)\$(APP_NAME)
+ cd ..
+ if not exist win32\tmp mkdir win32\tmp
+ set TMPFOLDER=win32/tmp
+ sh ./tests/testrun.sh ./tests/testKeys.sh default ./tests win32/$(BINDIR)/$(APP_NAME) der
+ cd win32
+
+check-dsig : $(BINDIR)\$(APP_NAME)
+ cd ..
+ if not exist win32\tmp mkdir win32\tmp
+ set TMPFOLDER=win32/tmp
+ sh ./tests/testrun.sh ./tests/testDSig.sh default ./tests win32/$(BINDIR)/$(APP_NAME) der
+ cd win32
+
+check-enc : $(BINDIR)\$(APP_NAME)
+ cd ..
+ if not exist win32\tmp mkdir win32\tmp
+ set TMPFOLDER=win32/tmp
+ sh ./tests/testrun.sh ./tests/testEnc.sh default ./tests win32/$(BINDIR)/$(APP_NAME) der
+ cd win32
+
+check-xkms : $(BINDIR)\$(APP_NAME)
+ cd ..
+ if not exist win32\tmp mkdir win32\tmp
+ set TMPFOLDER=win32\tmp
+ sh ./tests/testrun.sh ./tests/testXKMS.sh default ./tests win32/$(BINDIR)/$(APP_NAME) der
+ cd win32
+
+clean :
+ if exist $(XMLSEC_INTDIR) rmdir /S /Q $(XMLSEC_INTDIR)
+ if exist $(XMLSEC_INTDIR_A) rmdir /S /Q $(XMLSEC_INTDIR_A)
+ if exist $(XMLSEC_OPENSSL_INTDIR) rmdir /S /Q $(XMLSEC_OPENSSL_INTDIR)
+ if exist $(XMLSEC_OPENSSL_INTDIR_A) rmdir /S /Q $(XMLSEC_OPENSSL_INTDIR_A)
+ if exist $(XMLSEC_NSS_INTDIR) rmdir /S /Q $(XMLSEC_NSS_INTDIR)
+ if exist $(XMLSEC_NSS_INTDIR_A) rmdir /S /Q $(XMLSEC_NSS_INTDIR_A)
+ if exist $(XMLSEC_MSCRYPTO_INTDIR) rmdir /S /Q $(XMLSEC_MSCRYPTO_INTDIR)
+ if exist $(XMLSEC_MSCRYPTO_INTDIR_A) rmdir /S /Q $(XMLSEC_MSCRYPTO_INTDIR_A)
+ if exist $(XMLSEC_APPS_INTDIR) rmdir /S /Q $(XMLSEC_APPS_INTDIR)
+ if exist $(XMLSEC_APPS_INTDIR_A) rmdir /S /Q $(XMLSEC_APPS_INTDIR_A)
+ if exist $(BINDIR) rmdir /S /Q $(BINDIR)
+
+rebuild : clean all
+
+install : all
+ if not exist $(INCPREFIX)\$(XMLSEC_NAME) mkdir $(INCPREFIX)\$(XMLSEC_NAME)
+ if not exist $(BINPREFIX) mkdir $(BINPREFIX)
+ if not exist $(LIBPREFIX) mkdir $(LIBPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_OPENSSL_SO) if not exist $(INCPREFIX)\$(XMLSEC_NAME)\openssl mkdir $(INCPREFIX)\$(XMLSEC_NAME)\openssl
+ if exist $(BINDIR)\$(XMLSEC_NSS_SO) if not exist $(INCPREFIX)\$(XMLSEC_NAME)\nss mkdir $(INCPREFIX)\$(XMLSEC_NAME)\nss
+ if exist $(BINDIR)\$(XMLSEC_MSCRYPTO_SO) if not exist $(INCPREFIX)\$(XMLSEC_NAME)\mscrypto mkdir $(INCPREFIX)\$(XMLSEC_NAME)\mscrypto
+ if exist $(BASEDIR)\include\$(XMLSEC_NAME) copy $(BASEDIR)\include\$(XMLSEC_NAME)\*.h $(INCPREFIX)\$(XMLSEC_NAME)
+ if exist $(BINDIR)\$(XMLSEC_OPENSSL_SO) copy $(BASEDIR)\include\$(XMLSEC_NAME)\openssl\*.h $(INCPREFIX)\$(XMLSEC_NAME)\openssl
+ if exist $(BINDIR)\$(XMLSEC_NSS_SO) copy $(BASEDIR)\include\$(XMLSEC_NAME)\nss\*.h $(INCPREFIX)\$(XMLSEC_NAME)\nss
+ if exist $(BINDIR)\$(XMLSEC_MSCRYPTO_SO) copy $(BASEDIR)\include\$(XMLSEC_NAME)\mscrypto\*.h $(INCPREFIX)\$(XMLSEC_NAME)\mscrypto
+ if exist $(BINDIR)\$(XMLSEC_SO) copy $(BINDIR)\$(XMLSEC_SO) $(SOPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_SO_MANIFEST) copy $(BINDIR)\$(XMLSEC_SO_MANIFEST) $(SOPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_A) copy $(BINDIR)\$(XMLSEC_A) $(LIBPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_IMP) copy $(BINDIR)\$(XMLSEC_IMP) $(LIBPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_OPENSSL_SO) copy $(BINDIR)\$(XMLSEC_OPENSSL_SO) $(SOPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_OPENSSL_SO_MANIFEST) copy $(BINDIR)\$(XMLSEC_OPENSSL_SO_MANIFEST) $(SOPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_OPENSSL_A) copy $(BINDIR)\$(XMLSEC_OPENSSL_A) $(LIBPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_OPENSSL_IMP) copy $(BINDIR)\$(XMLSEC_OPENSSL_IMP) $(LIBPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_NSS_SO) copy $(BINDIR)\$(XMLSEC_NSS_SO) $(SOPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_NSS_SO_MANIFEST) copy $(BINDIR)\$(XMLSEC_NSS_SO_MANIFEST) $(SOPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_NSS_A) copy $(BINDIR)\$(XMLSEC_NSS_A) $(LIBPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_NSS_IMP) copy $(BINDIR)\$(XMLSEC_NSS_IMP) $(LIBPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_MSCRYPTO_SO) copy $(BINDIR)\$(XMLSEC_MSCRYPTO_SO) $(SOPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_MSCRYPTO_SO_MANIFEST) copy $(BINDIR)\$(XMLSEC_MSCRYPTO_SO_MANIFEST) $(SOPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_MSCRYPTO_A) copy $(BINDIR)\$(XMLSEC_MSCRYPTO_A) $(LIBPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_MSCRYPTO_IMP) copy $(BINDIR)\$(XMLSEC_MSCRYPTO_IMP) $(LIBPREFIX)
+ if exist $(BINDIR)\$(APP_NAME) copy $(BINDIR)\$(APP_NAME) $(BINPREFIX)
+ if exist $(BINDIR)\$(APP_NAME_MANIFEST) copy $(BINDIR)\$(APP_NAME_MANIFEST) $(BINPREFIX)
+
+uninstall :
+ if exist $(INCPREFIX)\$(XMLSEC_NAME) rmdir /S /Q $(INCPREFIX)\$(XMLSEC_NAME)
+ if exist $(SOPREFIX)\$(XMLSEC_SO) del /F /S /Q $(SOPREFIX)\$(XMLSEC_SO)
+ if exist $(SOPREFIX)\$(XMLSEC_SO_MANIFEST) del /F /S /Q $(SOPREFIX)\$(XMLSEC_SO)
+ if exist $(LIBPREFIX)\$(XMLSEC_A) del /F /S /Q $(LIBPREFIX)\$(XMLSEC_A)
+ if exist $(LIBPREFIX)\$(XMLSEC_IMP) del /F /S /Q $(LIBPREFIX)\$(XMLSEC_IMP)
+ if exist $(SOPREFIX)\$(XMLSEC_OPENSSL_SO) del /F /S /Q $(SOPREFIX)\$(XMLSEC_OPENSSL_SO)
+ if exist $(SOPREFIX)\$(XMLSEC_OPENSSL_SO_MANIFEST) del /F /S /Q $(SOPREFIX)\$(XMLSEC_OPENSSL_SO)
+ if exist $(LIBPREFIX)\$(XMLSEC_OPENSSL_A) del /F /S /Q $(LIBPREFIX)\$(XMLSEC_OPENSSL_A)
+ if exist $(LIBPREFIX)\$(XMLSEC_OPENSSL_IMP) del /F /S /Q $(LIBPREFIX)\$(XMLSEC_OPENSSL_IMP)
+ if exist $(SOPREFIX)\$(XMLSEC_NSS_SO) del /F /S /Q $(SOPREFIX)\$(XMLSEC_NSS_SO)
+ if exist $(SOPREFIX)\$(XMLSEC_NSS_SO_MANIFEST) del /F /S /Q $(SOPREFIX)\$(XMLSEC_NSS_SO)
+ if exist $(LIBPREFIX)\$(XMLSEC_NSS_A) del /F /S /Q $(LIBPREFIX)\$(XMLSEC_NSS_A)
+ if exist $(LIBPREFIX)\$(XMLSEC_NSS_IMP) del /F /S /Q $(LIBPREFIX)\$(XMLSEC_NSS_IMP)
+ if exist $(SOPREFIX)\$(XMLSEC_MSCRYPTO_SO) del /F /S /Q $(SOPREFIX)\$(XMLSEC_MSCRYPTO_SO)
+ if exist $(SOPREFIX)\$(XMLSEC_MSCRYPTO_SO_MANIFEST) del /F /S /Q $(SOPREFIX)\$(XMLSEC_MSCRYPTO_SO)
+ if exist $(LIBPREFIX)\$(XMLSEC_MSCRYPTO_A) del /F /S /Q $(LIBPREFIX)\$(XMLSEC_MSCRYPTO_A)
+ if exist $(LIBPREFIX)\$(XMLSEC_MSCRYPTO_IMP) del /F /S /Q $(LIBPREFIX)\$(XMLSEC_MSCRYPTO_IMP)
+ if exist $(BINPREFIX)\$(APP_NAME) del /F /S /Q $(BINPREFIX)\$(APP_NAME)
+ if exist $(BINPREFIX)\$(APP_NAME_MANIFEST) del /F /S /Q $(BINPREFIX)\$(APP_NAME_MANIFEST)
+
+# This is a target for me, to make a binary distribution. Not for the public use,
+# keep your hands off :-)
+BDVERSION = $(XMLSEC_VERSION_MAJOR).$(XMLSEC_VERSION_MINOR).$(XMLSEC_VERSION_SUBMINOR)
+BDPREFIX = $(XMLSEC_BASENAME)-$(BDVERSION).win32
+bindist : all
+ $(MAKE) /nologo PREFIX=$(BDPREFIX) SOPREFIX=$(BDPREFIX)\bin install
+ cscript //NoLogo configure.js genreadme $(XMLSEC_BASENAME) $(BDVERSION) $(BDPREFIX)\readme.txt
+
+# Makes the compiler output directory.
+$(BINDIR) :
+ if not exist $(BINDIR) mkdir $(BINDIR)
+
+# Makes intermediate directories.
+$(XMLSEC_APPS_INTDIR) :
+ if not exist $(XMLSEC_APPS_INTDIR) mkdir $(XMLSEC_APPS_INTDIR)
+$(XMLSEC_APPS_INTDIR_A) :
+ if not exist $(XMLSEC_APPS_INTDIR_A) mkdir $(XMLSEC_APPS_INTDIR_A)
+
+$(XMLSEC_INTDIR) :
+ if not exist $(XMLSEC_INTDIR) mkdir $(XMLSEC_INTDIR)
+$(XMLSEC_INTDIR_A) :
+ if not exist $(XMLSEC_INTDIR_A) mkdir $(XMLSEC_INTDIR_A)
+
+$(XMLSEC_OPENSSL_INTDIR) :
+ if not exist $(XMLSEC_OPENSSL_INTDIR) mkdir $(XMLSEC_OPENSSL_INTDIR)
+$(XMLSEC_OPENSSL_INTDIR_A) :
+ if not exist $(XMLSEC_OPENSSL_INTDIR_A) mkdir $(XMLSEC_OPENSSL_INTDIR_A)
+
+$(XMLSEC_NSS_INTDIR) :
+ if not exist $(XMLSEC_NSS_INTDIR) mkdir $(XMLSEC_NSS_INTDIR)
+$(XMLSEC_NSS_INTDIR_A) :
+ if not exist $(XMLSEC_NSS_INTDIR_A) mkdir $(XMLSEC_NSS_INTDIR_A)
+
+$(XMLSEC_MSCRYPTO_INTDIR) :
+ if not exist $(XMLSEC_MSCRYPTO_INTDIR) mkdir $(XMLSEC_MSCRYPTO_INTDIR)
+$(XMLSEC_MSCRYPTO_INTDIR_A) :
+ if not exist $(XMLSEC_MSCRYPTO_INTDIR_A) mkdir $(XMLSEC_MSCRYPTO_INTDIR_A)
+
+# An implicit rule for xmlsec compilation.
+{$(APPS_SRCDIR)}.c{$(XMLSEC_APPS_INTDIR)}.obj::
+ $(CC) $(CFLAGS) $(APP_CFLAGS) /Fo$(XMLSEC_APPS_INTDIR)\ /c $<
+
+{$(XMLSEC_SRCDIR)}.c{$(XMLSEC_INTDIR)}.obj::
+ $(CC) $(CFLAGS) /Fo$(XMLSEC_INTDIR)\ /c $<
+
+{$(XMLSEC_SRCDIR)}.c{$(XMLSEC_OPENSSL_INTDIR)}.obj::
+ $(CC) $(CFLAGS) $(XMLSEC_OPENSSL_CFLAGS) /Fo$(XMLSEC_OPENSSL_INTDIR)\ /c $<
+{$(XMLSEC_OPENSSL_SRCDIR)}.c{$(XMLSEC_OPENSSL_INTDIR)}.obj::
+ $(CC) $(CFLAGS) $(XMLSEC_OPENSSL_CFLAGS) /Fo$(XMLSEC_OPENSSL_INTDIR)\ /c $<
+
+{$(XMLSEC_SRCDIR)}.c{$(XMLSEC_NSS_INTDIR)}.obj::
+ $(CC) $(CFLAGS) $(XMLSEC_NSS_CFLAGS) /Fo$(XMLSEC_NSS_INTDIR)\ /c $<
+{$(XMLSEC_NSS_SRCDIR)}.c{$(XMLSEC_NSS_INTDIR)}.obj::
+ $(CC) $(CFLAGS) $(XMLSEC_NSS_CFLAGS) /Fo$(XMLSEC_NSS_INTDIR)\ /c $<
+
+{$(XMLSEC_SRCDIR)}.c{$(XMLSEC_MSCRYPTO_INTDIR)}.obj::
+ $(CC) $(CFLAGS) $(XMLSEC_MSCRYPTO_CFLAGS) /Fo$(XMLSEC_MSCRYPTO_INTDIR)\ /c $<
+{$(XMLSEC_MSCRYPTO_SRCDIR)}.c{$(XMLSEC_MSCRYPTO_INTDIR)}.obj::
+ $(CC) $(CFLAGS) $(XMLSEC_MSCRYPTO_CFLAGS) /Fo$(XMLSEC_MSCRYPTO_INTDIR)\ /c $<
+
+# An implicit rule for static xmlsec compilation.
+{$(APPS_SRCDIR)}.c{$(XMLSEC_APPS_INTDIR_A)}.obj::
+ $(CC) /D "LIBXML_STATIC" /D "LIBXSLT_STATIC" /D "XMLSEC_STATIC" \
+ $(CFLAGS) $(APP_CFLAGS) /Fo$(XMLSEC_APPS_INTDIR_A)\ /c $<
+
+{$(XMLSEC_SRCDIR)}.c{$(XMLSEC_INTDIR_A)}.obj::
+ $(CC) /D "LIBXML_STATIC" /D "LIBXSLT_STATIC" /D "XMLSEC_STATIC" \
+ $(CFLAGS) /Fo$(XMLSEC_INTDIR_A)\ /c $<
+
+{$(XMLSEC_SRCDIR)}.c{$(XMLSEC_OPENSSL_INTDIR_A)}.obj::
+ $(CC) /D "LIBXML_STATIC" /D "LIBXSLT_STATIC" /D "XMLSEC_STATIC" \
+ $(CFLAGS) $(XMLSEC_OPENSSL_CFLAGS) /Fo$(XMLSEC_OPENSSL_INTDIR_A)\ /c $<
+{$(XMLSEC_OPENSSL_SRCDIR)}.c{$(XMLSEC_OPENSSL_INTDIR_A)}.obj::
+ $(CC) /D "LIBXML_STATIC" /D "LIBXSLT_STATIC" /D "XMLSEC_STATIC" \
+ $(CFLAGS) $(XMLSEC_OPENSSL_CFLAGS) /Fo$(XMLSEC_OPENSSL_INTDIR_A)\ /c $<
+
+{$(XMLSEC_SRCDIR)}.c{$(XMLSEC_NSS_INTDIR_A)}.obj::
+ $(CC) /D "LIBXML_STATIC" /D "LIBXSLT_STATIC" /D "XMLSEC_STATIC" \
+ $(CFLAGS) $(XMLSEC_NSS_CFLAGS) /Fo$(XMLSEC_NSS_INTDIR_A)\ /c $<
+{$(XMLSEC_NSS_SRCDIR)}.c{$(XMLSEC_NSS_INTDIR_A)}.obj::
+ $(CC) /D "LIBXML_STATIC" /D "LIBXSLT_STATIC" /D "XMLSEC_STATIC" \
+ $(CFLAGS) $(XMLSEC_NSS_CFLAGS) /Fo$(XMLSEC_NSS_INTDIR_A)\ /c $<
+
+{$(XMLSEC_SRCDIR)}.c{$(XMLSEC_MSCRYPTO_INTDIR_A)}.obj::
+ $(CC) /D "LIBXML_STATIC" /D "LIBXSLT_STATIC" /D "XMLSEC_STATIC" \
+ $(CFLAGS) $(XMLSEC_MSCRYPTO_CFLAGS) /Fo$(XMLSEC_MSCRYPTO_INTDIR_A)\ /c $<
+{$(XMLSEC_MSCRYPTO_SRCDIR)}.c{$(XMLSEC_MSCRYPTO_INTDIR_A)}.obj::
+ $(CC) /D "LIBXML_STATIC" /D "LIBXSLT_STATIC" /D "XMLSEC_STATIC" \
+ $(CFLAGS) $(XMLSEC_MSCRYPTO_CFLAGS) /Fo$(XMLSEC_MSCRYPTO_INTDIR_A)\ /c $<
+
+# Compiles xmlsec source. Uses the implicit rule for commands.
+$(XMLSEC_OBJS) : $(XMLSEC_INTDIR)
+$(XMLSEC_OBJS_A) : $(XMLSEC_INTDIR_A)
+
+$(XMLSEC_OPENSSL_OBJS) : $(XMLSEC_OPENSSL_INTDIR)
+$(XMLSEC_OPENSSL_OBJS_A) : $(XMLSEC_OPENSSL_INTDIR_A)
+
+$(XMLSEC_NSS_OBJS) : $(XMLSEC_NSS_INTDIR)
+$(XMLSEC_NSS_OBJS_A) : $(XMLSEC_NSS_INTDIR_A)
+
+$(XMLSEC_MSCRYPTO_OBJS) : $(XMLSEC_MSCRYPTO_INTDIR)
+$(XMLSEC_MSCRYPTO_OBJS_A) : $(XMLSEC_MSCRYPTO_INTDIR_A)
+
+# Creates the shared objects and archives.
+$(BINDIR)\$(XMLSEC_SO) : $(BINDIR) $(XMLSEC_OBJS)
+ $(LD) $(LDFLAGS) /DLL /VERSION:$(XMLSEC_VERSION_MAJOR).$(XMLSEC_VERSION_MINOR) \
+ /IMPLIB:$(BINDIR)\$(XMLSEC_IMP) /OUT:$(BINDIR)\$(XMLSEC_SO) \
+ $(XMLSEC_OBJS) $(SOLIBS)
+$(BINDIR)\$(XMLSEC_A) : $(BINDIR) $(XMLSEC_OBJS_A)
+ $(AR) $(ARFLAGS) /OUT:$(BINDIR)\$(XMLSEC_A) $(XMLSEC_OBJS_A)
+
+$(BINDIR)\$(XMLSEC_OPENSSL_SO) : $(BINDIR) $(XMLSEC_OPENSSL_OBJS)
+ $(LD) $(LDFLAGS) /DLL /VERSION:$(XMLSEC_VERSION_MAJOR).$(XMLSEC_VERSION_MINOR) \
+ /IMPLIB:$(BINDIR)\$(XMLSEC_OPENSSL_IMP) /OUT:$(BINDIR)\$(XMLSEC_OPENSSL_SO) \
+ $(XMLSEC_OPENSSL_OBJS) $(XMLSEC_IMP) $(SOLIBS) $(XMLSEC_OPENSSL_SOLIBS)
+$(BINDIR)\$(XMLSEC_OPENSSL_A) : $(BINDIR) $(XMLSEC_OPENSSL_OBJS_A)
+ $(AR) $(ARFLAGS) /OUT:$(BINDIR)\$(XMLSEC_OPENSSL_A) $(XMLSEC_OPENSSL_OBJS_A)
+
+$(BINDIR)\$(XMLSEC_NSS_SO) : $(BINDIR) $(XMLSEC_NSS_OBJS)
+ $(LD) $(LDFLAGS) /DLL /VERSION:$(XMLSEC_VERSION_MAJOR).$(XMLSEC_VERSION_MINOR) \
+ /IMPLIB:$(BINDIR)\$(XMLSEC_NSS_IMP) /OUT:$(BINDIR)\$(XMLSEC_NSS_SO) \
+ $(XMLSEC_NSS_OBJS) $(XMLSEC_IMP) $(SOLIBS) $(XMLSEC_NSS_SOLIBS)
+$(BINDIR)\$(XMLSEC_NSS_A) : $(BINDIR) $(XMLSEC_NSS_OBJS_A)
+ $(AR) $(ARFLAGS) /OUT:$(BINDIR)\$(XMLSEC_NSS_A) $(XMLSEC_NSS_OBJS_A)
+
+$(BINDIR)\$(XMLSEC_MSCRYPTO_SO) : $(BINDIR) $(XMLSEC_MSCRYPTO_OBJS)
+ $(LD) $(LDFLAGS) /DLL /VERSION:$(XMLSEC_VERSION_MAJOR).$(XMLSEC_VERSION_MINOR) \
+ /IMPLIB:$(BINDIR)\$(XMLSEC_MSCRYPTO_IMP) /OUT:$(BINDIR)\$(XMLSEC_MSCRYPTO_SO) \
+ $(XMLSEC_MSCRYPTO_OBJS) $(XMLSEC_IMP) $(SOLIBS) $(XMLSEC_MSCRYPTO_SOLIBS)
+$(BINDIR)\$(XMLSEC_MSCRYPTO_A) : $(BINDIR) $(XMLSEC_MSCRYPTO_OBJS_A)
+ $(AR) $(ARFLAGS) /OUT:$(BINDIR)\$(XMLSEC_MSCRYPTO_A) $(XMLSEC_MSCRYPTO_OBJS_A)
+
+# An implicit rule for xmlsec command line tool
+$(BINDIR)\xmlseca.exe: $(BINDIR) $(XMLSEC_APPS_OBJS_A)
+ $(LD) $(LDFLAGS) /OUT:$@ $(XMLSEC_A) $(XMLSEC_CRYPTO_A) $(APP_LIBS) $(XMLSEC_APPS_OBJS_A)
+$(BINDIR)\xmlsec.exe: $(BINDIR) $(XMLSEC_APPS_OBJS)
+ $(LD) $(LDFLAGS) /OUT:$@ $(XMLSEC_IMP) $(XMLSEC_CRYPTO_IMP) $(APP_LIBS) $(XMLSEC_APPS_OBJS)
+
+# Builds xmlsec and friends. Uses the implicit rule for commands.
+$(BINDIR)\$(APP_NAME) : $(BINDIR) xmlsec xmlseca
+
+# Source dependences should be autogenerated somehow here, but how to
+# do it? I have no clue.
+
diff --git a/win32/README.txt b/win32/README.txt
new file mode 100644
index 00000000..511aa16b
--- /dev/null
+++ b/win32/README.txt
@@ -0,0 +1,168 @@
+
+ Windows port
+ ------------
+
+This directory contains the files required to build this software on the
+native Windows platform.
+
+As a rule of thumb, the root of this directory contains files needed
+to build the library using the command-line tools, while various
+subdirectories contain project files for various IDEs.
+
+
+ 1. Building the library
+ ================================= ============
+
+Building from command line is the easiest, preferred and the only
+currently supported method.
+
+In order to build from the command-line you need to make sure that
+your compiler works from the command line. This is not always the
+case, often the required environment variables are missing. If you are
+not sure, test if this works first. If it doesn't, you will first have
+to configure your compiler suite to run from the command-line - please
+refer to your compiler's documentation regarding that.
+
+The first thing you want to do is configure the source. You can have
+the configuration script do this automatically for you. The
+configuration script is written in JScript, a Microsoft's
+implementation of the ECMA scripting language. Almost every Windows
+machine can execute this through the Windows Scripting Host. If your
+system lacks the ability to execute JScript for some reason, you must
+perform the configuration manually.
+
+The second step is compiling the source and, optionally, installing it
+to the location of your choosing.
+
+
+ 1.1 Configuring the source automatically
+ ----------------------------------------
+
+The configuration script accepts numerous options. Some of these
+affect features which will be available in the compiled software,
+others affect the way the software is built and installed. To see a
+full list of options supported by the configuration script, run
+
+ cscript configure.js help
+
+from the win32 subdirectory. The configuration script will present you
+the options it accepts and give a biref explanation of these. In every
+case you will have two sets of options. The first set is specific to
+the software you are building and the second one is specific to the
+Windows port.
+
+Once you have decided which options suit you, run the script with that
+options. Here is an example:
+
+ cscript configure.js prefix=c:\opt include=c:\opt\include
+ lib=c:\opt\lib debug=yes
+
+The previous example will configure the process to install the library
+in c:\opt, use c:\opt\include and c:\opt\lib as additional search
+paths for the compiler and the linker and build executables with debug
+symbols.
+
+Note: Please do not use path names which contain spaces. This will
+fail. Allowing this would require me to put almost everything in the
+Makefile in quotas and that looks quite ugly with my
+syntax-highlighting engine. If you absolutely must use spaces in paths
+send me an email and tell me why. If there are enough of you out there
+who need this, or if a single one has a very good reason, I will
+modify the Makefile to allow spaces in paths.
+
+
+ 1.2 (Not) Configuring the source manually
+ -----------------------------------------
+
+The manual configuration is pretty straightforward, but I would
+suggest rather to get a JScript engine and let the configure script do
+it for you. This process involves editing the apropriate Makefile to
+suit your needs, as well as manually generating certain *.h files from
+their *.h.in sources.
+
+If you really have no idea what I am talking about and ask yourself
+what in Gods name do I mean with '*.h files and their *.h.in sources',
+then you really should do an automatic configuration. Which files must
+be generated and what needs to be done with their sources in order to
+generate them is something people who have built this software before
+allready know. You will not find any explanations for that
+here. Please configure the source manually only if you allready know
+what you must do. Otherwise, you have the choice of either getting a
+precompiled binary distribution, or performing the automatic
+configuration.
+
+ 1.3 Compiling
+ -------------
+
+After the configuration stage has been completed, you want to build
+the software. To do that, type
+
+ nmake
+
+in the win32 subdirectory.When the building completes, you will find
+the executable files in win32\binaries directory.
+
+You can install the software into the directory you specified to the
+configure script during the configure stage by typing
+
+ nmake install
+
+That would be it, enjoy.
+
+ 2. Building your appliation
+ ================================= ============
+
+On Windows there is no easy way to automatically configure compilation
+options or paths. You have to do everything manualy. Start up your
+favorite IDE or text editor and read on.
+
+ 2.1 Global Defines.
+ ------------- ------------- ------------- ------
+
+If you want to use automatic crypto library configuration (xmlsec/crypto.h file)
+you need to add one of the following global defines:
+
+ #define XMLSEC_CRYPTO_OPENSSL
+ #define XMLSEC_CRYPTO_GNUTLS
+ #define XMLSEC_CRYPTO_NSS
+
+Also you'll need to define all configuration parameters used during XML Security
+Library compilation (XMLSEC_OPENSSL_096, XMLSEC_NO_AES, XMLSEC_NO_X509,...).
+
+ 2.1 Additional Global Defines for static linking.
+ ------------- ------------- ------------- ------
+
+Also if you (*and only if*) are linking libraries staticaly, you'll need to add following
+global defines:
+
+ 2.2 Setting include and library paths.
+ ------------- ------------- ------------- ------
+
+As usual, you need to have correct include and library paths to xmlsec, libxml,
+libxslt, iconv, openssl or any other library used in your application.
+
+ 2.3 Selecting correct Windows runtime libraries.
+ ------------- ------------- ------------- ------
+
+Windows basically has 6 different C runtimes. The first one is called libc.lib
+and can only be linked to statically and used only in single-threaded mode.
+The second one is also can only be linked staticaly and used in multi-threaded
+mode. The third one is called msvcrt.dll and can only be linked to dynamically.
+These three then live in their debug and release incarnations, which results in
+six C runtimes. The rule is simple: exactly the same runtime must be used
+throughout the application. Client code *MUST* use the same runtime as XMLSec,
+LibXML, LibXSLT, OpenSSL or any other library used.
+
+If you downloaded XMLSec, LibXML, LibXSLT and OpenSSL binaries from Igor's
+page then all libraries are all linked to msvcrt.dll ("Multithreaded DLL"
+(NOT DEBUG!); /MD compiler switch). The click-next click-finish wizardry
+from Visual Studio chooses the single-threaded libc.lib as the default
+when you create a new project. And this causes great problems because
+you program crashes on first IO operation, first malloc/free from different
+runtimes or something even more trivial.
+
+Do not forget that if you need a different runtime for some reason, then
+you MUST recompile not only XMLSec, but LibXML, LibXSLT and OpenSSL as well.
+
+
+March 2002, Igor Zlatkovic <igor@stud.fh-frankfurt.de>
diff --git a/win32/configure.js b/win32/configure.js
new file mode 100644
index 00000000..c5551f17
--- /dev/null
+++ b/win32/configure.js
@@ -0,0 +1,395 @@
+/* Configure script for xmlsec, specific for Windows with Scripting Host.
+ *
+ * This script will configure the libxmlsec build process and create necessary files.
+ * Run it with an 'help', or an invalid option and it will tell you what options
+ * it accepts.
+ *
+ * March 2002, Igor Zlatkovic <igor@stud.fh-frankfurt.de>
+ * Created for LibXML and LibXSLT
+ * April 2002, Aleksey Sanin <aleksey@aleksey.com>
+ * Modified for XMLSec Libary
+ */
+
+/* The source directory, relative to the one where this file resides. */
+var baseDir = "..";
+var srcDir = baseDir + "\\src";
+var srcDirApps = baseDir + "\\apps";
+/* The directory where we put the binaries after compilation. */
+var binDir = "binaries";
+/* Base name of what we are building. */
+var baseName = "libxmlsec";
+
+/* Configure file which contains the version and the output file where
+ we can store our build configuration. */
+var configFile = baseDir + "\\configure.in";
+var versionFile = ".\\configure.txt";
+
+/* Input and output files regarding the lib(e)xml features. The second
+ output file is there for the compatibility reasons, otherwise it
+ is identical to the first. */
+var optsFileIn = baseDir + "\\config.h.in";
+var optsFile = baseDir + "\\config.h";
+
+/* Version strings for the binary distribution. Will be filled later
+ in the code. */
+var verMajorXmlSec;
+var verMinorXmlSec;
+var verMicroXmlSec;
+
+/* Libxmlsec features. */
+var withCrypto = "openssl";
+var withDefaultCrypto = "openssl";
+var withOpenSSL = 0;
+var withOpenSSLVersion = "";
+var withNss = 0;
+var withMSCrypto = 0;
+var withLibXSLT = 1;
+var withIconv = 1;
+var withNT4 = 1;
+
+/* Win32 build options. */
+var buildUnicode = 1;
+var buildDebug = 0;
+var buildStatic = 1;
+var buildWithDLSupport = 1;
+var buildPrefix = ".";
+var buildBinPrefix = "$(PREFIX)\\bin";
+var buildIncPrefix = "$(PREFIX)\\include";
+var buildLibPrefix = "$(PREFIX)\\lib";
+var buildSoPrefix = "$(PREFIX)\\lib";
+var buildInclude = ".";
+var buildLib = ".";
+/* Local stuff */
+var error = 0;
+
+/* Helper function, transforms the option variable into the 'Enabled'
+ or 'Disabled' string. */
+function boolToStr(opt)
+{
+ if (opt == false)
+ return "Disabled";
+ else if (opt == true)
+ return "Enabled";
+ error = 1;
+ return "Undefined";
+}
+
+/* Helper function, transforms the argument string into the boolean
+ value. */
+function strToBool(opt)
+{
+ if (opt == "0" || opt == "no")
+ return false;
+ else if (opt == "1" || opt == "yes")
+ return true;
+ error = 1;
+ return false;
+}
+
+/* Displays the details about how to use this script. */
+function usage()
+{
+ var txt;
+ txt = "Usage:\n";
+ txt += " cscript " + WScript.ScriptName + " <options>\n";
+ txt += " cscript " + WScript.ScriptName + " help\n\n";
+ txt += "Options can be specified in the form <option>=<value>, where the value is\n";
+ txt += "either 'yes' or 'no'.\n\n";
+ txt += "XmlSec Library options, default value given in parentheses:\n\n";
+ txt += " crypto: Crypto engines list, first is default: \"openssl\",\n";
+ txt += " \"openssl=096\", \"openssl=097\", \"openssl=098\", \n";
+ txt += " \"nss\", \"mscrypto\" (\"" + withCrypto + "\");\n"
+ txt += " xslt: LibXSLT is used (" + (withLibXSLT? "yes" : "no") + ")\n";
+ txt += " iconv: Use the iconv library (" + (withIconv? "yes" : "no") + ")\n";
+ txt += " nt4: Enable NT 4.0 support (" + (withNT4? "yes" : "no") + ")\n";
+ txt += "\nWin32 build options, default value given in parentheses:\n\n";
+ txt += " unicode: Build Unicode version (" + (buildUnicode? "yes" : "no") + ")\n";
+ txt += " debug: Build unoptimised debug executables (" + (buildDebug? "yes" : "no") + ")\n";
+ txt += " static: Link libxmlsec statically to xmlsec (" + (buildStatic? "yes" : "no") + ")\n";
+ txt += " with-dl: Enable dynamic loading of xmlsec-crypto libraries (" + (buildWithDLSupport? "yes" : "no") + ")\n";
+ txt += " prefix: Base directory for the installation (" + buildPrefix + ")\n";
+ txt += " bindir: Directory where xmlsec and friends should be installed\n";
+ txt += " (" + buildBinPrefix + ")\n";
+ txt += " incdir: Directory where headers should be installed\n";
+ txt += " (" + buildIncPrefix + ")\n";
+ txt += " libdir: Directory where static and import libraries should be\n";
+ txt += " installed (" + buildLibPrefix + ")\n";
+ txt += " sodir: Directory where shared libraries should be installed\n";
+ txt += " (" + buildSoPrefix + ")\n";
+ txt += " include: Additional search path for the compiler, particularily\n";
+ txt += " where libxml headers can be found (" + buildInclude + ")\n";
+ txt += " lib: Additional search path for the linker, particularily\n";
+ txt += " where libxml library can be found (" + buildLib + ")\n";
+ WScript.Echo(txt);
+}
+
+/* Discovers the version we are working with by reading the apropriate
+ configuration file. Despite its name, this also writes the configuration
+ file included by our makefile. */
+function discoverVersion()
+{
+ var fso, cf, vf, ln, s;
+
+ fso = new ActiveXObject("Scripting.FileSystemObject");
+ cf = fso.OpenTextFile(configFile, 1);
+ vf = fso.CreateTextFile(versionFile, true);
+ vf.WriteLine("# " + versionFile);
+ vf.WriteLine("# This file is generated automatically by " + WScript.ScriptName + ".");
+ vf.WriteBlankLines(1);
+ while (cf.AtEndOfStream != true) {
+ ln = cf.ReadLine();
+ s = new String(ln);
+ if (s.search(/^XMLSEC_VERSION_MAJOR/) != -1) {
+ WScript.Echo(verMajorXmlSec);
+ vf.WriteLine(s);
+ verMajorXmlSec = s.substring(s.indexOf("=") + 1, s.length)
+ } else if(s.search(/^XMLSEC_VERSION_MINOR/) != -1) {
+ vf.WriteLine(s);
+ verMinorXmlSec = s.substring(s.indexOf("=") + 1, s.length)
+ } else if(s.search(/^XMLSEC_VERSION_SUBMINOR/) != -1) {
+ vf.WriteLine(s);
+ verMicroXmlSec = s.substring(s.indexOf("=") + 1, s.length)
+ }
+ }
+ cf.Close();
+ vf.WriteLine("BASEDIR=" + baseDir);
+ vf.WriteLine("XMLSEC_SRCDIR=" + srcDir);
+ vf.WriteLine("APPS_SRCDIR=" + srcDirApps);
+ vf.WriteLine("BINDIR=" + binDir);
+ vf.WriteLine("WITH_CRYPTO=" + withCrypto);
+ vf.WriteLine("WITH_DEFAULT_CRYPTO=" + withDefaultCrypto);
+ vf.WriteLine("WITH_OPENSSL=" + withOpenSSL);
+ vf.WriteLine("WITH_OPENSSL_VERSION=XMLSEC_OPENSSL_" + withOpenSSLVersion);
+ vf.WriteLine("WITH_NSS=" + withNss);
+ vf.WriteLine("WITH_MSCRYPTO=" + withMSCrypto);
+ vf.WriteLine("WITH_LIBXSLT=" + (withLibXSLT ? "1" : "0"));
+ vf.WriteLine("WITH_ICONV=" + (withIconv ? "1" : "0"));
+ vf.WriteLine("WITH_NT4=" + (withNT4 ? "1" : "0"));
+ vf.WriteLine("UNICODE=" + (buildUnicode? "1" : "0"));
+ vf.WriteLine("DEBUG=" + (buildDebug? "1" : "0"));
+ vf.WriteLine("STATIC=" + (buildStatic? "1" : "0"));
+ vf.WriteLine("WITH_DL=" + (buildWithDLSupport ? "1" : "0"));
+ vf.WriteLine("PREFIX=" + buildPrefix);
+ vf.WriteLine("BINPREFIX=" + buildBinPrefix);
+ vf.WriteLine("INCPREFIX=" + buildIncPrefix);
+ vf.WriteLine("LIBPREFIX=" + buildLibPrefix);
+ vf.WriteLine("SOPREFIX=" + buildSoPrefix);
+ vf.WriteLine("INCLUDE=$(INCLUDE);" + buildInclude);
+ vf.WriteLine("LIB=$(LIB);" + buildLib);
+ vf.Close();
+}
+
+/* Configures xmlsec. This one will generate config.h from config.h.in
+ taking what the user passed on the command line into account. */
+function configureXmlSec()
+{
+ var fso, ofi, of, ln, s;
+ fso = new ActiveXObject("Scripting.FileSystemObject");
+ ofi = fso.OpenTextFile(optsFileIn, 1);
+ of = fso.CreateTextFile(optsFile, true);
+ while (ofi.AtEndOfStream != true) {
+ ln = ofi.ReadLine();
+ s = new String(ln);
+ if (s.search(/\@VERSION\@/) != -1) {
+ of.WriteLine(s.replace(/\@VERSION\@/,
+ verMajorXmlSec + "." + verMinorXmlSec + "." + verMicroXmlSec));
+ } else if (s.search(/\@XMLSECVERSION_NUMBER\@/) != -1) {
+ of.WriteLine(s.replace(/\@XMLSECVERSION_NUMBER\@/,
+ verMajorXmlSec*10000 + verMinorXmlSec*100 + verMicroXmlSec*1));
+ } else
+ of.WriteLine(ln);
+ }
+ ofi.Close();
+ of.Close();
+}
+
+/* Creates the readme file for the binary distribution of 'bname', for the
+ version 'ver' in the file 'file'. This one is called from the Makefile when
+ generating a binary distribution. The parameters are passed by make. */
+function genReadme(bname, ver, file)
+{
+ var fso, f;
+ fso = new ActiveXObject("Scripting.FileSystemObject");
+ f = fso.CreateTextFile(file, true);
+ f.WriteLine(" " + bname + " " + ver);
+ f.WriteLine(" --------------");
+ f.WriteBlankLines(1);
+ f.WriteLine(" This is " + bname + ", version " + ver + ", binary package for the native Win32/IA32");
+ f.WriteLine("platform.");
+ f.WriteBlankLines(1);
+ f.WriteLine(" The files in this package do not require any special installation");
+ f.WriteLine("steps. Extract the contents of the archive whereever you wish and");
+ f.WriteLine("make sure that your tools which use " + bname + " can find it.");
+ f.WriteBlankLines(1);
+ f.WriteLine(" For example, if you want to run the supplied utilities from the command");
+ f.WriteLine("line, you can, if you wish, add the 'bin' subdirectory to the PATH");
+ f.WriteLine("environment variable.");
+ f.WriteLine(" If you want to make programmes in C which use " + bname + ", you'll");
+ f.WriteLine("likely know how to use the contents of this package. If you don't, please");
+ f.WriteLine("refer to your compiler's documentation.");
+ f.WriteBlankLines(1);
+ f.WriteLine(" If there is something you cannot keep for yourself, such as a problem,");
+ f.WriteLine("a cheer of joy, a comment or a suggestion, feel free to contact me using");
+ f.WriteLine("the address below.");
+ f.WriteBlankLines(1);
+ f.WriteLine("Igor Zlatkovic (igor@zlatkovic.com)");
+ f.Close();
+}
+
+/*
+ * main(),
+ * Execution begins here.
+ */
+
+/* Parse the command-line arguments. */
+for (i = 0; (i < WScript.Arguments.length) && (error == 0); i++) {
+ var arg, opt;
+ arg = WScript.Arguments(i);
+ opt = arg.substring(0, arg.indexOf("="));
+ if (opt.length == 0)
+ opt = arg.substring(0, arg.indexOf(":"));
+ if (opt.length > 0) {
+ if (opt == "crypto")
+ withCrypto = arg.substring(opt.length + 1, arg.length);
+ else if (opt == "xslt")
+ withLibXSLT = strToBool(arg.substring(opt.length + 1, arg.length));
+ else if (opt == "iconv")
+ withIconv = strToBool(arg.substring(opt.length + 1, arg.length));
+ else if (opt == "nt4")
+ withNT4 = strToBool(arg.substring(opt.length + 1, arg.length));
+ else if (opt == "unicode")
+ buildUnicode = strToBool(arg.substring(opt.length + 1, arg.length));
+ else if (opt == "debug")
+ buildDebug = strToBool(arg.substring(opt.length + 1, arg.length));
+ else if (opt == "static")
+ buildStatic = strToBool(arg.substring(opt.length + 1, arg.length));
+ else if (opt == "with-dl")
+ buildWithDLSupport = strToBool(arg.substring(opt.length + 1, arg.length));
+ else if (opt == "prefix")
+ buildPrefix = arg.substring(opt.length + 1, arg.length);
+ else if (opt == "incdir")
+ buildIncPrefix = arg.substring(opt.length + 1, arg.length);
+ else if (opt == "bindir")
+ buildBinPrefix = arg.substring(opt.length + 1, arg.length);
+ else if (opt == "libdir")
+ buildLibPrefix = arg.substring(opt.length + 1, arg.length);
+ else if (opt == "sodir")
+ buildSoPrefix = arg.substring(opt.length + 1, arg.length);
+ else if (opt == "incdir")
+ buildIncPrefix = arg.substring(opt.length + 1, arg.length);
+ else if (opt == "include")
+ buildInclude = arg.substring(opt.length + 1, arg.length);
+ else if (opt == "lib")
+ buildLib = arg.substring(opt.length + 1, arg.length);
+ else
+ error = 1;
+ } else if (i == 0) {
+ if (arg == "genreadme") {
+ // This command comes from the Makefile and will not be checked
+ // for errors, because Makefile will always supply right parameters.
+ genReadme(WScript.Arguments(1), WScript.Arguments(2), WScript.Arguments(3));
+ WScript.Quit(0);
+ } else if (arg == "help") {
+ usage();
+ WScript.Quit(0);
+ }
+ } else
+ error = 1;
+}
+// If we have an error here, it is because the user supplied bad parameters.
+if (error != 0) {
+ usage();
+ WScript.Quit(error);
+}
+
+// Discover crypto support
+var crlist, j, curcrypto;
+crlist = withCrypto.split(",");
+withCrypto = "";
+withDefaultCrypto = "";
+for (j = 0; j < crlist.length; j++) {
+ if (crlist[j] == "openssl") {
+ curcrypto="openssl";
+ withOpenSSL = 1;
+ withOpenSSLVersion = "098"; /* default */
+ } else if (crlist[j] == "openssl=096") {
+ curcrypto="openssl";
+ withOpenSSL = 1;
+ withOpenSSLVersion = "096";
+ } else if (crlist[j] == "openssl=097") {
+ curcrypto="openssl";
+ withOpenSSL = 1;
+ withOpenSSLVersion = "097";
+ } else if (crlist[j] == "openssl=098") {
+ curcrypto="openssl";
+ withOpenSSL = 1;
+ withOpenSSLVersion = "098";
+ } else if (crlist[j] == "nss") {
+ curcrypto="nss";
+ withNss = 1;
+ } else if (crlist[j] == "mscrypto") {
+ curcrypto="mscrypto";
+ withMSCrypto = 1;
+ } else {
+ WScript.Echo("Unknown crypto engine \"" + crlist[j] + "\" is found. Aborting.");
+ WScript.Quit(error);
+ }
+ if (j == 0) {
+ withDefaultCrypto = curcrypto;
+ withCrypto = curcrypto;
+ } else {
+ withCrypto = withCrypto + " " + curcrypto;
+ }
+}
+
+// Discover the version.
+discoverVersion();
+if (error != 0) {
+ WScript.Echo("Version discovery failed, aborting.");
+ WScript.Quit(error);
+}
+WScript.Echo(baseName + " version: " + verMajorXmlSec + "." + verMinorXmlSec + "." + verMicroXmlSec);
+
+
+// Configure libxmlsec.
+configureXmlSec();
+if (error != 0) {
+ WScript.Echo("Configuration failed, aborting.");
+ WScript.Quit(error);
+}
+
+
+// Create the Makefile.
+var fso = new ActiveXObject("Scripting.FileSystemObject");
+fso.CopyFile(".\\Makefile.msvc", ".\\Makefile", true);
+WScript.Echo("Created Makefile.");
+
+// Display the final configuration.
+var txtOut = "\nXMLSEC configuration\n";
+txtOut += "----------------------------\n";
+txtOut += " Use Crypto: " + withCrypto + "\n";
+txtOut += " Use Default Crypto: " + withDefaultCrypto + "\n";
+txtOut += " Use OpenSSL: " + boolToStr(withOpenSSL) + "\n";
+txtOut += "Use OpenSSL Version: " + withOpenSSLVersion + "\n";
+txtOut += " Use NSS: " + boolToStr(withNss) + "\n";
+txtOut += " Use MSCrypto: " + boolToStr(withMSCrypto) + "\n";
+txtOut += " Use LibXSLT: " + boolToStr(withLibXSLT) + "\n";
+txtOut += " Use iconv: " + boolToStr(withIconv) + "\n";
+txtOut += " NT 4.0 support: " + boolToStr(withNT4) + "\n";
+txtOut += "\n";
+txtOut += "Win32 build configuration\n";
+txtOut += "-------------------------\n";
+txtOut += " Unicode: " + boolToStr(buildUnicode) + "\n";
+txtOut += " Debug symbols: " + boolToStr(buildDebug) + "\n";
+txtOut += " Static xmlsec: " + boolToStr(buildStatic) + "\n";
+txtOut += " Enable DL suport: " + boolToStr(buildWithDLSupport) + "\n";
+txtOut += " Install prefix: " + buildPrefix + "\n";
+txtOut += " Put tools in: " + buildBinPrefix + "\n";
+txtOut += " Put headers in: " + buildIncPrefix + "\n";
+txtOut += "Put static libs in: " + buildLibPrefix + "\n";
+txtOut += "Put shared libs in: " + buildSoPrefix + "\n";
+txtOut += " Include path: " + buildInclude + "\n";
+txtOut += " Lib path: " + buildLib + "\n";
+WScript.Echo(txtOut);
+
+// Done.
diff --git a/win32/libxmlsec.def.src b/win32/libxmlsec.def.src
new file mode 100644
index 00000000..ee500208
--- /dev/null
+++ b/win32/libxmlsec.def.src
@@ -0,0 +1,25 @@
+/* win32/libxmlsec.def.src
+ Pseudo-source used to create a .DEF file for proper dynamic linkage.
+
+ Assuming you use Microsoft's C compiler, you run a
+
+ cl /EP libxmlsec.def.src > libxmlsec.def
+
+ in order to get the right .DEF file. Basically, all you do is
+ preprocess this file using a C/C++ preprocessor and the right
+ .DEF file should come out.
+
+ Should you need a function which does not seem to be exported
+ from the libxmlsec.dll, its name is most certainly missing here.
+ Add the name of the offending function to this file and rebuild.
+
+ 21.03.2002, Igor Zlatkovic (igor@stud.fh-frankfurt.de)
+ Created
+ for LibXML and LibXSLT
+ April 2002, Aleksey Sanin <aleksey@aleksey.com>
+ Modified for XMLSec Libary
+*/
+
+LIBRARY libxmlsec
+EXPORTS
+
diff --git a/win32/mycfg.bat b/win32/mycfg.bat
new file mode 100644
index 00000000..9af468e3
--- /dev/null
+++ b/win32/mycfg.bat
@@ -0,0 +1,21 @@
+@echo on
+REM
+REM This is my personal configuration file.
+REM I am lazy to type all this crap again and again
+REM You are welcome to customize this file for your
+REM needs but do not check it into the CVS, please.
+REM
+REM Aleksey Sanin <aleksey@aleksey.com>
+REM
+
+SET PREFIX=C:\cygwin\home\local
+SET XMLSEC_INCLUDE=%PREFIX%\include;%PREFIX%\include\mozilla;%PREFIX%\include\mozilla\nspr;%PREFIX%\include\mozilla\nss;%MSSDK_INCLUDE%
+SET XMLSEC_LIB=%PREFIX%\lib;%MSSDK_LIB%
+SET XMLSEC_OPTIONS=static=no iconv=no debug=yes xslt=yes crypto=mscrypto,openssl unicode=yes
+
+del /F Makefile configure.txt
+cscript configure.js prefix=%PREFIX% %XMLSEC_OPTIONS% include=%XMLSEC_INCLUDE% lib=%XMLSEC_LIB%
+
+mkdir binaries
+copy %PREFIX%\bin\*.dll binaries
+copy %PREFIX%\lib\*.dll binaries