From a6200ded4c697408d00eb79cbc712acceb8aef83 Mon Sep 17 00:00:00 2001
From: Miklos Vajna <vmiklos@collabora.co.uk>
Date: Fri, 4 Mar 2016 16:06:19 +0100
Subject: [PATCH] xmlsec1-configure.patch

Conflicts:
	configure.in
---
 Makefile.am         |  5 +++--
 Makefile.in         |  5 +++--
 configure.in        | 52 ++++++++++++++++++++++++++++++++++++++++------------
 win32/Makefile.msvc |  2 +-
 4 files changed, 47 insertions(+), 17 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 669f996..0cf0798 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,8 +1,9 @@
 NULL =
 
 SAFE_VERSION	= @XMLSEC_VERSION_SAFE@
-SUBDIRS 	= include src apps man docs
-TEST_APP 	= apps/xmlsec1$(EXEEXT)
+#Do not build xmlsec1 app. It is not needed. Also the libtool includes 
+#a -L/path_to_lib_dir which may contain an incompatible lixbml2.
+SUBDIRS = include src man docs
 DEFAULT_CRYPTO	= @XMLSEC_CRYPTO@
 
 bin_SCRIPTS 	= xmlsec1-config
diff --git a/Makefile.in b/Makefile.in
index 9b252ff..c42b984 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -452,8 +452,9 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 NULL = 
 SAFE_VERSION = @XMLSEC_VERSION_SAFE@
-SUBDIRS = include src apps man docs
-TEST_APP = apps/xmlsec1$(EXEEXT)
+#Do not build xmlsec1 app. It is not needed. Also the libtool includes 
+#a -L/path_to_lib_dir which may contain an incompatible lixbml2.
+SUBDIRS = include src man docs
 DEFAULT_CRYPTO = @XMLSEC_CRYPTO@
 bin_SCRIPTS = xmlsec1-config
 pkgconfig_DATA = xmlsec1.pc @XMLSEC_CRYPTO_PC_FILES_LIST@
diff --git a/configure.in b/configure.in
index 7690e7a..f2c98e3 100644
--- a/configure.in
+++ b/configure.in
@@ -188,8 +188,8 @@ dnl find libxml
 dnl ==========================================================================
 LIBXML_MIN_VERSION="2.7.4"
 LIBXML_CONFIG="xml2-config"
-LIBXML_CFLAGS=""
-LIBXML_LIBS=""
+LIBXML_CFLAGS="$LIBXML_CFLAGS"
+LIBXML_LIBS="$LIBXML_LIBS"
 LIBXML_FOUND="no"
 AC_ARG_WITH(libxml, 
     [  --with-libxml=[PFX]       libxml2 location]
@@ -198,6 +198,8 @@ AC_ARG_WITH(libxml-src,
     [  --with-libxml-src=[PFX]   not installed yet libxml2 location]
 )
 
+if test "z$LIBXML_CFLAGS" = "z" -o "z$LIBXML_LIBS" = "z"; then
+
 if test "z$with_libxml" = "zno" -o "z$with_libxml_src" = "zno"; then 
     AC_MSG_CHECKING(for libxml2 libraries >= $LIBXML_MIN_VERSION) 
     AC_MSG_ERROR(libxml2 >= $LIBXML_MIN_VERSION is required for $XMLSEC_PACKAGE)
@@ -246,6 +248,8 @@ if test "z$LIBXML_FOUND" = "zno" ; then
     fi
 fi
 
+fi
+
 AC_SUBST(LIBXML_CFLAGS)
 AC_SUBST(LIBXML_LIBS)
 AC_SUBST(LIBXML_CONFIG)
@@ -570,12 +574,26 @@ dnl ==========================================================================
 XMLSEC_NO_NSS="1"
 SEAMONKEY_MIN_VERSION="1.0"
 MOZILLA_MIN_VERSION="1.4"
+if test "z$MOZ_FLAVOUR" = "zfirefox" ; then
+    MOZILLA_MIN_VERSION="1.0"
+fi
 NSS_MIN_VERSION="3.9"
 NSPR_MIN_VERSION="4.4.1"
 NSS_CFLAGS=""
 NSS_LIBS=""
-NSS_LIBS_LIST="-lnss3 -lsmime3"
-NSPR_LIBS_LIST="-lnspr4 -lplds4 -lplc4"
+
+case $host_os in
+cygwin* | mingw* | pw32*)
+    NSS_LIBS_LIST="-lnss3 -lsmime3"
+    NSPR_LIBS_LIST="-lnspr4"
+    ;;
+
+*)
+    NSS_LIBS_LIST="-lnss3 -lsmime3"
+    NSPR_LIBS_LIST="-lnspr4 -lplds4 -lplc4"
+    ;;
+esac
+
 NSS_CRYPTO_LIB="$XMLSEC_PACKAGE-nss"
 NSS_FOUND="no"
 NSPR_PACKAGE=mozilla-nspr
@@ -602,6 +620,16 @@ elif test "z$with_nss" = "z" -a "z$with_nspr" = "z" -a "z$with_mozilla_ver" = "z
     dnl We are going to try all options
     dnl
     if test "z$NSS_FOUND" = "zno" ; then
+        PKG_CHECK_MODULES(NSS, $MOZ_FLAVOUR-nspr >= $MOZILLA_MIN_VERSION $MOZ_FLAVOUR >= $MOZILLA_MIN_VERSION,
+            [NSS_FOUND=yes NSPR_PACKAGE=$MOZ_FLAVOUR-nspr NSS_PACKAGE=$MOZ_FLAVOUR-nss],
+            [NSS_FOUND=no])
+    fi
+    if test "z$NSS_FOUND" = "zno" ; then
+        PKG_CHECK_MODULES(NSS, nss >= 3.9.3 nspr >= 4.8,
+            [NSS_FOUND=yes NSPR_PACKAGE=nspr NSS_PACKAGE=nss],
+            [NSS_FOUND=no])
+    fi
+    if test "z$NSS_FOUND" = "zno" ; then
         PKG_CHECK_MODULES(NSS, seamonkey-nspr >= $NSPR_MIN_VERSION seamonkey-nss >= $SEAMONKEY_MIN_VERSION,
     	    [NSS_FOUND=yes NSPR_PACKAGE=seamonkey-nspr NSS_PACKAGE=seamonkey-nss],
 	    [NSS_FOUND=no])
@@ -633,8 +661,8 @@ if test "z$NSS_FOUND" = "zno" ; then
         ac_mozilla_name=mozilla-$MOZILLA_MIN_VERSION
     fi
 
-    ac_nss_lib_dir="/usr/lib /usr/lib64 /usr/local/lib /usr/lib/$ac_mozilla_name /usr/local/lib/$ac_mozilla_name"
-    ac_nss_inc_dir="/usr/include /usr/include/mozilla /usr/local/include /usr/local/include/mozilla /usr/include/$ac_mozilla_name /usr/local/include/$ac_mozilla_name"
+    ac_nss_lib_dir="${WORKDIR}/UnpackedTarball/nss/dist/out/lib"
+    ac_nss_inc_dir="${WORKDIR}/UnpackedTarball/nss/dist/out/include ${WORKDIR}/UnpackedTarball/nss/dist/public"
 
     AC_MSG_CHECKING(for nspr libraries >= $NSPR_MIN_VERSION)
     NSPR_INCLUDES_FOUND="no"
@@ -655,21 +683,21 @@ if test "z$NSS_FOUND" = "zno" ; then
 	NSPR_PRINIT_H="$with_nspr/include/prinit.h"
     else
 	for dir in $ac_nss_inc_dir ; do
-    	    if test -f $dir/nspr/prinit.h ; then
+            if test -f $dir/prinit.h ; then
     		dnl do not add -I/usr/include because compiler does it anyway
         	if test "z$dir" = "z/usr/include" ; then
     		    NSPR_CFLAGS=""
     		else
-    		    NSPR_CFLAGS="-I$dir/nspr"
+                    NSPR_CFLAGS="-I$dir"
     		fi
 		NSPR_INCLUDES_FOUND="yes"
-		NSPR_PRINIT_H="$dir/nspr/prinit.h"
+		NSPR_PRINIT_H="$dir/prinit.h"
     		break
     	    fi
 	done
 	
 	for dir in $ac_nss_lib_dir ; do
-    	    if test -f $dir/libnspr4$shrext ; then
+            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"
@@ -740,7 +768,7 @@ if test "z$NSS_FOUND" = "zno" ; then
         done
        
         for dir in $ac_nss_lib_dir ; do
-    	    if test -f $dir/libnss3$shrext ; then
+            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
         	    NSS_LIBS="$NSS_LIBS_LIST"
@@ -759,7 +787,7 @@ if test "z$NSS_FOUND" = "zno" ; then
 
     if test "z$NSS_INCLUDES_FOUND" = "zyes" -a "z$NSS_LIBS_FOUND" = "zyes" ; then
        OLD_CPPFLAGS=$CPPFLAGS
-       CPPFLAGS="$NSS_CFLAGS"
+       CPPFLAGS="$NSS_CFLAGS $NSPR_CFLAGS"
        AC_EGREP_CPP(yes,[
           #include <nss.h>
           #if NSS_VMAJOR >= 3 && NSS_VMINOR >= 2
diff --git a/win32/Makefile.msvc b/win32/Makefile.msvc
index 2712a0a..d833497 100644
--- a/win32/Makefile.msvc
+++ b/win32/Makefile.msvc
@@ -394,7 +394,7 @@ APP_LIBS  		= $(SOLIBS) $(XMLSEC_CRYPTO_SOLIBS)
 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_SOLIBS   	= smime3.lib nss3.lib nspr4.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
-- 
2.6.2

