--- misc/xmlsec1-1.2.14/configure	2009-09-29 15:55:33.269924586 +0200
+++ misc/build/xmlsec1-1.2.14/configure	2009-09-29 15:55:08.838176411 +0200
@@ -13184,7 +13184,9 @@
 	done
 
 	for dir in $ac_nss_lib_dir ; do
-	    if test -f $dir/libnspr4.so -o -f $dir/libnspr4.dylib ; then
+            case $host_os in
+            cygwin* | mingw* | pw32*)
+    	      if test -f $dir/libnspr4.$libext ; then
 		        	if test "z$dir" = "z/usr/lib" ; then
             	    NSPR_LIBS="$NSPR_LIBS_LIST"
     		else
@@ -13197,6 +13199,25 @@
 		NSPR_LIBS_FOUND="yes"
 		break
 	    fi
+              ;;
+
+            *)
+
+              if test -f $dir/libnspr4.so -o -f $dir/libnspr4.dylib ; then
+		        	if test "z$dir" = "z/usr/lib" ; then
+            	    NSPR_LIBS="$NSPR_LIBS_LIST"
+    		else
+    		    if test "z$with_gnu_ld" = "zyes" ; then
+    			NSPR_LIBS="-Wl,-rpath-link -Wl,$dir -L$dir $NSPR_LIBS_LIST"
+    		    else
+    			NSPR_LIBS="-L$dir $NSPR_LIBS_LIST"
+		    fi
+		fi
+		NSPR_LIBS_FOUND="yes"
+		break
+	    fi
+              ;;
+            esac
 	done
     fi
 
@@ -13266,6 +13287,24 @@
         done
 
         for dir in $ac_nss_lib_dir ; do
+            case $host_os in
+            cygwin* | mingw* | pw32*)
+    	      if test -f $dir/libnss3.$libext ; then
+        	    		if test "z$dir" = "z/usr/lib" ; then
+        	    NSS_LIBS="$NSS_LIBS_LIST"
+                else
+            	    if test "z$with_gnu_ld" = "zyes" ; then
+    			NSS_LIBS="-Wl,-rpath-link -Wl,$dir -L$dir $NSS_LIBS_LIST"
+            	    else
+        		NSS_LIBS="-L$dir $NSS_LIBS_LIST"
+		    fi
+		fi
+    		NSS_LIBS_FOUND="yes"
+    		break
+	    fi
+              ;;
+
+            *)
             if test -f $dir/libnss3.so -o -f $dir/libnss3.dylib ; then
         	    		if test "z$dir" = "z/usr/lib" ; then
         	    NSS_LIBS="$NSS_LIBS_LIST"
@@ -13279,6 +13318,8 @@
     		NSS_LIBS_FOUND="yes"
     		break
 	    fi
+              ;;
+            esac
 	done
     fi
 
@@ -13684,7 +13725,7 @@
 $as_echo "$MSCRYPTO_ENABLE" >&6; }
 else
     LIBS_SAVE="$LIBS"
-    LIBS="$LIBS -lcrypt32"
+    LIBS="$LIBS ${PSDK_HOME}/lib/crypt32.lib"
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mscrypto libraries" >&5
 $as_echo_n "checking for mscrypto libraries... " >&6; }
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -13711,13 +13752,7 @@
     XMLSEC_NO_MSCRYPTO="0"
 
     MSCRYPTO_CFLAGS="$MSCRYPTO_CFLAGS -DXMLSEC_CRYPTO_MSCRYPTO=1"
-    case $host in
-	*-*-mingw*)
-						MSCRYPTO_LIBS='-Wl,$(srcdir)/mingw-crypt32.def';;
-	*)
-		MSCRYPTO_LIBS="-lcrypt32";;
-    esac
-
+    MSCRYPTO_LIBS="${PSDK_HOME}/lib/crypt32.lib"
         if test "z$XMLSEC_CRYPTO" = "z" ; then
 	XMLSEC_CRYPTO="mscrypto"
     	XMLSEC_CRYPTO_LIB="$MSCRYPTO_CRYPTO_LIB"
--- misc/xmlsec1-1.2.14/configure.in	2009-09-29 15:55:33.282288142 +0200
+++ misc/build/xmlsec1-1.2.14/configure.in	2009-09-29 15:49:39.614223428 +0200
@@ -671,7 +671,9 @@
 	done
 	
 	for dir in $ac_nss_lib_dir ; do
-	    if test -f $dir/libnspr4.so -o -f $dir/libnspr4.dylib ; then
+            case $host_os in
+            cygwin* | mingw* | pw32*)
+    	      if test -f $dir/libnspr4.$libext ; then
 		dnl do not add -L/usr/lib because compiler does it anyway
         	if test "z$dir" = "z/usr/lib" ; then
             	    NSPR_LIBS="$NSPR_LIBS_LIST"
@@ -685,6 +687,26 @@
 		NSPR_LIBS_FOUND="yes"
 		break
 	    fi
+              ;;
+
+            *)
+
+              if test -f $dir/libnspr4.so -o -f $dir/libnspr4.dylib ; then
+		dnl do not add -L/usr/lib because compiler does it anyway
+        	if test "z$dir" = "z/usr/lib" ; then
+            	    NSPR_LIBS="$NSPR_LIBS_LIST"
+    		else
+    		    if test "z$with_gnu_ld" = "zyes" ; then
+    			NSPR_LIBS="-Wl,-rpath-link -Wl,$dir -L$dir $NSPR_LIBS_LIST"
+    		    else
+    			NSPR_LIBS="-L$dir $NSPR_LIBS_LIST"
+		    fi
+		fi
+		NSPR_LIBS_FOUND="yes"
+		break
+	    fi
+              ;;
+            esac
 	done
     fi
 
@@ -742,6 +764,25 @@
         done
        
         for dir in $ac_nss_lib_dir ; do
+            case $host_os in
+            cygwin* | mingw* | pw32*)
+    	      if test -f $dir/libnss3.$libext ; then
+        	dnl do not add -L/usr/lib because compiler does it anyway
+    		if test "z$dir" = "z/usr/lib" ; then
+        	    NSS_LIBS="$NSS_LIBS_LIST"
+                else
+            	    if test "z$with_gnu_ld" = "zyes" ; then
+    			NSS_LIBS="-Wl,-rpath-link -Wl,$dir -L$dir $NSS_LIBS_LIST"
+            	    else
+        		NSS_LIBS="-L$dir $NSS_LIBS_LIST"
+		    fi
+		fi
+    		NSS_LIBS_FOUND="yes"
+    		break
+	    fi
+              ;;
+
+            *)
             if test -f $dir/libnss3.so -o -f $dir/libnss3.dylib ; then
         	dnl do not add -L/usr/lib because compiler does it anyway
     		if test "z$dir" = "z/usr/lib" ; then
@@ -756,6 +797,8 @@
     		NSS_LIBS_FOUND="yes"
     		break
 	    fi
+              ;;
+            esac
 	done
     fi
 
@@ -926,7 +969,7 @@
 dnl cannot detect __stdcall functions
 dnl    AC_CHECK_LIB(crypt32, CertOpenStore, ....
     LIBS_SAVE="$LIBS"
-    LIBS="$LIBS -lcrypt32"
+    LIBS="$LIBS ${PSDK_HOME}/lib/crypt32.lib"
     AC_MSG_CHECKING(for mscrypto libraries)
     AC_LINK_IFELSE([
 	#include <windows.h>
@@ -943,15 +986,7 @@
     XMLSEC_NO_MSCRYPTO="0"
 
     MSCRYPTO_CFLAGS="$MSCRYPTO_CFLAGS -DXMLSEC_CRYPTO_MSCRYPTO=1"
-    case $host in
-	*-*-mingw*)
-		dnl since mingw crypt32 library is limited
-		dnl we use own def-file
-		MSCRYPTO_LIBS='-Wl,$(srcdir)/mingw-crypt32.def';;
-	*)
-		MSCRYPTO_LIBS="-lcrypt32";;
-    esac
-
+    MSCRYPTO_LIBS="${PSDK_HOME}/lib/crypt32.lib"
     dnl first crypto library is default one
     if test "z$XMLSEC_CRYPTO" = "z" ; then
 	XMLSEC_CRYPTO="mscrypto"
--- misc/xmlsec1-1.2.14/ltmain.sh	2009-06-25 22:53:19.000000000 +0200
+++ misc/build/xmlsec1-1.2.14/ltmain.sh	2009-09-29 15:49:39.628349554 +0200
@@ -4868,6 +4868,11 @@
 	fi
 	;;
 
+      *.lib)
+	deplibs="$deplibs $arg"
+	continue
+	;;
+
       *.$libext)
 	# An archive.
 	deplibs="$deplibs $arg"
@@ -5213,6 +5218,10 @@
 	  continue
 	  ;;
 	*.la) lib="$deplib" ;;
+	*.lib)
+	  deplibs="$deplib $deplibs"
+	  continue
+	  ;;
 	*.$libext)
 	  if test "$pass" = conv; then
 	    deplibs="$deplib $deplibs"
--- misc/xmlsec1-1.2.14/src/nss/keywrapers.c	2009-09-29 15:55:33.430875248 +0200
+++ misc/build/xmlsec1-1.2.14/src/nss/keywrapers.c	2009-09-29 15:49:39.749963247 +0200
@@ -1126,6 +1126,7 @@
     NULL,					/* void* reserved1; */
 };
 
+#ifndef __MINGW32__
 /** 
  * xmlSecNssTransformKWAes128GetKlass:
  *
@@ -1160,6 +1161,7 @@
 xmlSecNssTransformKWAes256GetKlass(void) {
     return(&xmlSecNssKWAes256Klass);
 }
+#endif /* __MINGW32__ */
 
 #endif /* XMLSEC_NO_AES */
 
@@ -1197,6 +1199,7 @@
     NULL,					/* void* reserved1; */
 };
 
+#ifndef __MINGW32__
 /** 
  * xmlSecNssTransformKWDes3GetKlass:
  * 
@@ -1208,6 +1211,7 @@
 xmlSecNssTransformKWDes3GetKlass(void) {
     return(&xmlSecNssKWDes3Klass);
 }
+#endif /* __MINGW32__ */
 
 #endif /* XMLSEC_NO_DES */
 
