diff options
author | Anas Nashif <anas.nashif@intel.com> | 2012-11-13 12:30:55 -0800 |
---|---|---|
committer | Anas Nashif <anas.nashif@intel.com> | 2012-11-13 12:30:55 -0800 |
commit | f251dedaa31b48f7c05a4b53c112b40ebca890ef (patch) | |
tree | d6c78a1b273417506edb030c96772c8459f5831e /win32 | |
download | xmlsec1-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.msvc | 699 | ||||
-rw-r--r-- | win32/README.txt | 168 | ||||
-rw-r--r-- | win32/configure.js | 395 | ||||
-rw-r--r-- | win32/libxmlsec.def.src | 25 | ||||
-rw-r--r-- | win32/mycfg.bat | 21 |
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 |