aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-security/opendnssec/files/libxml2_conf.patch
blob: b4ed4306da1b2f0558ee27966a35d0f0adb2297e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
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)
 ])