configure does not work with OE pkg-config for the libxml2 option

Upstream-Status: OE specific

Signed-off-by: Armin Kuster <akuster808@gmail.com>

Index: opendnssec-2.1.6/m4/acx_libxml2.m4
===================================================================
--- opendnssec-2.1.6.orig/m4/acx_libxml2.m4
+++ opendnssec-2.1.6/m4/acx_libxml2.m4
@@ -1,37 +1,67 @@
+#serial 11
+AU_ALIAS([CHECK_XML2], [ACX_LIBXML2])
 AC_DEFUN([ACX_LIBXML2],[
-	AC_ARG_WITH(libxml2,
-		[AS_HELP_STRING([--with-libxml2=DIR],[look for libxml2 in this dir])],
-        	[
-			XML2_PATH="$withval"
-			AC_PATH_PROGS(XML2_CONFIG, xml2-config, xml2-config, $XML2_PATH/bin)
-		],[
-			XML2_PATH="/usr/local"
-			AC_PATH_PROGS(XML2_CONFIG, xml2-config, xml2-config, $PATH)
-		])
-	if test -x "$XML2_CONFIG"
-	then
-		AC_MSG_CHECKING(what are the xml2 includes)
-		XML2_INCLUDES="`$XML2_CONFIG --cflags`"
-		AC_MSG_RESULT($XML2_INCLUDES)
-
-		AC_MSG_CHECKING(what are the xml2 libs)
-		XML2_LIBS="`$XML2_CONFIG --libs`"
-		AC_MSG_RESULT($XML2_LIBS)
-
-		tmp_CPPFLAGS=$CPPFLAGS
-		tmp_LIBS=$LIBS
-
-		CPPFLAGS="$CPPFLAGS $XML2_INCLUDES"
-		LIBS="$LIBS $XML2_LIBS"
-
-		AC_CHECK_LIB(xml2, xmlDocGetRootElement,,[AC_MSG_ERROR([Can't find libxml2 library])])
-		
-		CPPFLAGS=$tmp_CPPFLAGS
-		LIBS=$tmp_LIBS
-	else
-		AC_MSG_ERROR([libxml2 required, but not found.])
-	fi
+    found=false
+    AC_ARG_WITH([libxml2],
+        [AS_HELP_STRING([--with-libxml2=DIR],
+            [root of the libxml directory])],
+        [
+            case "$withval" in
+            "" | y | ye | yes | n | no)
+            AC_MSG_ERROR([Invalid --with-libxml2 value])
+              ;;
+            *) xml2dirs="$withval"
+              ;;
+            esac
+        ], [
+            # if pkg-config is installed and openssl has installed a .pc file,
+            # then use that information and don't search ssldirs
+            AC_CHECK_TOOL([PKG_CONFIG], [pkg-config])
+            if test x"$PKG_CONFIG" != x""; then
+                XML2_LDFLAGS=`$PKG_CONFIG libxml-2.0 --libs-only-L 2>/dev/null`
+                if test $? = 0; then
+                    XML2_LIBS=`$PKG_CONFIG libxml-2.0 --libs-only-l 2>/dev/null`
+                    XML2_INCLUDES=`$PKG_CONFIG libxml-2.0 --cflags-only-I 2>/dev/null`
+                    found=true
+                fi
+            fi
 
-	AC_SUBST(XML2_INCLUDES)
-	AC_SUBST(XML2_LIBS)
+            # no such luck; use some default ssldirs
+            if ! $found; then
+                xml2dirs="/usr/local/libxml /usr/lib/libxml /usr/libxml /usr/pkg /usr/local /usr"
+            fi
+        ]
+        )
+
+
+    # note that we #include <libxml/tree.h>, so the libxml2 headers have to be in
+    # an 'libxml' subdirectory
+
+    if ! $found; then
+        XML2_INCLUDES=
+        for xml2dir in $xml2dirs; do
+            AC_MSG_CHECKING([for XML2 in $xml2dir])
+            if test -f "$xml2dir/include/libxml2/libxml/tree.h"; then
+                XML2_INCLUDES="-I$xml2dir/include/libxml2"
+                XML2_LDFLAGS="-L$xml2dir/lib"
+                XML2_LIBS="-lxml2"
+                found=true
+                AC_MSG_RESULT([yes])
+                break
+            else
+                AC_MSG_RESULT([no])
+            fi
+        done
+
+        # if the file wasn't found, well, go ahead and try the link anyway -- maybe
+        # it will just work!
+    fi
+
+    LDFLAGS="$LDFLAGS $XML2_LDFLAGS"
+    LIBS="$XML2_LIBS $LIBS"
+    CPPFLAGS="$XML2_INCLUDES $CPPFLAGS"
+
+    AC_SUBST(XML2_INCLUDES)
+    AC_SUBST(XML2_LIBS)
+    AC_SUBST(XML2_LDFLAGS)
 ])
