summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Magalhães <mail@pmmaga.net>2018-02-06 19:16:22 +0000
committerJoe <krakjoe@php.net>2018-02-08 10:50:22 +0100
commit5673c641dc30610e7e2fcca2e9b61761e4608ffc (patch)
tree7143149e280b885a3c5880883bb3da7dbc0fb6b6
parent8000334538c53090067246fea9411701cae8c6d5 (diff)
downloadphp-git-5673c641dc30610e7e2fcca2e9b61761e4608ffc.tar.gz
Fixes bug #75871 Use pkg-config for libxml2 if available
-rw-r--r--NEWS3
-rw-r--r--acinclude.m481
-rw-r--r--ext/dom/config.m42
-rw-r--r--ext/libxml/config0.m42
-rw-r--r--ext/simplexml/config.m42
-rw-r--r--ext/soap/config.m42
-rw-r--r--ext/wddx/config.m42
-rw-r--r--ext/xml/config.m42
-rw-r--r--ext/xmlreader/config.m42
-rw-r--r--ext/xmlrpc/config.m42
-rw-r--r--ext/xmlwriter/config.m42
11 files changed, 65 insertions, 37 deletions
diff --git a/NEWS b/NEWS
index 4716446bf8..3561319f4d 100644
--- a/NEWS
+++ b/NEWS
@@ -15,6 +15,9 @@ PHP NEWS
- LDAP:
. Fixed bug #49876 (Fix LDAP path lookup on 64-bit distros). (dzuelke)
+- libxml2:
+ . Fixed bug #75871 (use pkg-config where available). (pmmaga)
+
- Phar:
. Fixed bug #65414 (deal with leading slash when adding files correctly).
(bishopb)
diff --git a/acinclude.m4 b/acinclude.m4
index 151722d951..0e6fb5de85 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -2534,15 +2534,18 @@ dnl
dnl Common setup macro for libxml
dnl
AC_DEFUN([PHP_SETUP_LIBXML], [
-AC_CACHE_CHECK([for xml2-config path], ac_cv_php_xml2_config_path,
-[
- for i in $PHP_LIBXML_DIR /usr/local /usr; do
- if test -x "$i/bin/xml2-config"; then
- ac_cv_php_xml2_config_path="$i/bin/xml2-config"
- break
- fi
- done
-])
+ found_libxml=no
+
+ dnl First try to find xml2-config
+ AC_CACHE_CHECK([for xml2-config path], ac_cv_php_xml2_config_path,
+ [
+ for i in $PHP_LIBXML_DIR /usr/local /usr; do
+ if test -x "$i/bin/xml2-config"; then
+ ac_cv_php_xml2_config_path="$i/bin/xml2-config"
+ break
+ fi
+ done
+ ])
if test -x "$ac_cv_php_xml2_config_path"; then
XML2_CONFIG="$ac_cv_php_xml2_config_path"
@@ -2553,30 +2556,52 @@ AC_CACHE_CHECK([for xml2-config path], ac_cv_php_xml2_config_path,
IFS=$ac_IFS
LIBXML_VERSION=`expr [$]1 \* 1000000 + [$]2 \* 1000 + [$]3`
if test "$LIBXML_VERSION" -ge "2006011"; then
+ found_libxml=yes
LIBXML_LIBS=`$XML2_CONFIG --libs`
LIBXML_INCS=`$XML2_CONFIG --cflags`
- PHP_EVAL_LIBLINE($LIBXML_LIBS, $1)
- PHP_EVAL_INCLINE($LIBXML_INCS)
-
- dnl Check that build works with given libs
- AC_CACHE_CHECK(whether libxml build works, php_cv_libxml_build_works, [
- PHP_TEST_BUILD(xmlInitParser,
- [
- php_cv_libxml_build_works=yes
- ], [
- AC_MSG_RESULT(no)
- AC_MSG_ERROR([build test failed. Please check the config.log for details.])
- ], [
- [$]$1
- ])
- ])
- if test "$php_cv_libxml_build_works" = "yes"; then
- AC_DEFINE(HAVE_LIBXML, 1, [ ])
- fi
- $2
else
AC_MSG_ERROR([libxml2 version 2.6.11 or greater required.])
fi
+ fi
+
+ dnl If xml2-config fails, try pkg-config
+ if test "$found_libxml" = "no"; then
+ if test -z "$PKG_CONFIG"; then
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+ fi
+
+ dnl If pkg-config is found try using it
+ if test -x "$PKG_CONFIG" && $PKG_CONFIG --exists libxml-2.0; then
+ if $PKG_CONFIG --atleast-version=2.6.11 libxml-2.0; then
+ found_libxml=yes
+ LIBXML_LIBS=`$PKG_CONFIG --libs libxml-2.0`
+ LIBXML_INCS=`$PKG_CONFIG --cflags-only-I libxml-2.0`
+ else
+ AC_MSG_ERROR([libxml2 version 2.6.11 or greater required.])
+ fi
+ fi
+ fi
+
+ if test "$found_libxml" = "yes"; then
+ PHP_EVAL_LIBLINE($LIBXML_LIBS, $1)
+ PHP_EVAL_INCLINE($LIBXML_INCS)
+
+ dnl Check that build works with given libs
+ AC_CACHE_CHECK(whether libxml build works, php_cv_libxml_build_works, [
+ PHP_TEST_BUILD(xmlInitParser,
+ [
+ php_cv_libxml_build_works=yes
+ ], [
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([build test failed. Please check the config.log for details.])
+ ], [
+ [$]$1
+ ])
+ ])
+ if test "$php_cv_libxml_build_works" = "yes"; then
+ AC_DEFINE(HAVE_LIBXML, 1, [ ])
+ fi
+ $2
ifelse([$3],[],,[else $3])
fi
])
diff --git a/ext/dom/config.m4 b/ext/dom/config.m4
index 7882483b30..5ea62ad24c 100644
--- a/ext/dom/config.m4
+++ b/ext/dom/config.m4
@@ -33,6 +33,6 @@ if test "$PHP_DOM" != "no"; then
PHP_INSTALL_HEADERS([ext/dom/xml_common.h])
PHP_ADD_EXTENSION_DEP(dom, libxml)
], [
- AC_MSG_ERROR([xml2-config not found. Please check your libxml2 installation.])
+ AC_MSG_ERROR([libxml2 not found. Please check your libxml2 installation.])
])
fi
diff --git a/ext/libxml/config0.m4 b/ext/libxml/config0.m4
index 79e94a40ad..5d44c77846 100644
--- a/ext/libxml/config0.m4
+++ b/ext/libxml/config0.m4
@@ -20,6 +20,6 @@ if test "$PHP_LIBXML" != "no"; then
PHP_NEW_EXTENSION(libxml, [libxml.c], $ext_shared,, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1)
PHP_INSTALL_HEADERS([ext/libxml/php_libxml.h])
], [
- AC_MSG_ERROR([xml2-config not found. Please check your libxml2 installation.])
+ AC_MSG_ERROR([libxml2 not found. Please check your libxml2 installation.])
])
fi
diff --git a/ext/simplexml/config.m4 b/ext/simplexml/config.m4
index b06f5b00f0..ec1b2b2cc5 100644
--- a/ext/simplexml/config.m4
+++ b/ext/simplexml/config.m4
@@ -21,7 +21,7 @@ if test "$PHP_SIMPLEXML" != "no"; then
PHP_INSTALL_HEADERS([ext/simplexml/php_simplexml.h ext/simplexml/php_simplexml_exports.h])
PHP_SUBST(SIMPLEXML_SHARED_LIBADD)
], [
- AC_MSG_ERROR([xml2-config not found. Please check your libxml2 installation.])
+ AC_MSG_ERROR([libxml2 not found. Please check your libxml2 installation.])
])
PHP_ADD_EXTENSION_DEP(simplexml, libxml)
PHP_ADD_EXTENSION_DEP(simplexml, spl, true)
diff --git a/ext/soap/config.m4 b/ext/soap/config.m4
index 5fcb8bd447..ea39dd7894 100644
--- a/ext/soap/config.m4
+++ b/ext/soap/config.m4
@@ -20,6 +20,6 @@ if test "$PHP_SOAP" != "no"; then
PHP_NEW_EXTENSION(soap, soap.c php_encoding.c php_http.c php_packet_soap.c php_schema.c php_sdl.c php_xml.c, $ext_shared,, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1)
PHP_SUBST(SOAP_SHARED_LIBADD)
], [
- AC_MSG_ERROR([xml2-config not found. Please check your libxml2 installation.])
+ AC_MSG_ERROR([libxml2 not found. Please check your libxml2 installation.])
])
fi
diff --git a/ext/wddx/config.m4 b/ext/wddx/config.m4
index 8f933d490a..96b566e2e3 100644
--- a/ext/wddx/config.m4
+++ b/ext/wddx/config.m4
@@ -29,7 +29,7 @@ if test "$PHP_WDDX" != "no"; then
PHP_ADD_BUILD_DIR(ext/xml)
fi
], [
- AC_MSG_ERROR([xml2-config not found. Use --with-libxml-dir=<DIR>])
+ AC_MSG_ERROR([libxml2 not found. Use --with-libxml-dir=<DIR>])
])
fi
diff --git a/ext/xml/config.m4 b/ext/xml/config.m4
index 812032bc6a..715f65a915 100644
--- a/ext/xml/config.m4
+++ b/ext/xml/config.m4
@@ -28,7 +28,7 @@ if test "$PHP_XML" != "no"; then
xml_extra_sources="compat.c"
PHP_ADD_EXTENSION_DEP(xml, libxml)
], [
- AC_MSG_ERROR([xml2-config not found. Use --with-libxml-dir=<DIR>])
+ AC_MSG_ERROR([libxml2 not found. Use --with-libxml-dir=<DIR>])
])
fi
diff --git a/ext/xmlreader/config.m4 b/ext/xmlreader/config.m4
index d346b58eea..4ada113a00 100644
--- a/ext/xmlreader/config.m4
+++ b/ext/xmlreader/config.m4
@@ -22,6 +22,6 @@ if test "$PHP_XMLREADER" != "no"; then
PHP_ADD_EXTENSION_DEP(xmlreader, dom, true)
PHP_SUBST(XMLREADER_SHARED_LIBADD)
], [
- AC_MSG_ERROR([xml2-config not found. Please check your libxml2 installation.])
+ AC_MSG_ERROR([libxml2 not found. Please check your libxml2 installation.])
])
fi
diff --git a/ext/xmlrpc/config.m4 b/ext/xmlrpc/config.m4
index f82016edcb..6ed7a6312a 100644
--- a/ext/xmlrpc/config.m4
+++ b/ext/xmlrpc/config.m4
@@ -42,7 +42,7 @@ if test "$PHP_XMLRPC" != "no"; then
PHP_ADD_BUILD_DIR(ext/xml)
fi
], [
- AC_MSG_ERROR([xml2-config not found. Use --with-libxml-dir=<DIR>])
+ AC_MSG_ERROR([libxml2 not found. Use --with-libxml-dir=<DIR>])
])
else
testval=no
diff --git a/ext/xmlwriter/config.m4 b/ext/xmlwriter/config.m4
index b3b98012f8..8261e2114c 100644
--- a/ext/xmlwriter/config.m4
+++ b/ext/xmlwriter/config.m4
@@ -21,6 +21,6 @@ if test "$PHP_XMLWRITER" != "no"; then
PHP_NEW_EXTENSION(xmlwriter, php_xmlwriter.c, $ext_shared)
PHP_SUBST(XMLWRITER_SHARED_LIBADD)
], [
- AC_MSG_ERROR([xml2-config not found. Please check your libxml2 installation.])
+ AC_MSG_ERROR([libxml2 not found. Please check your libxml2 installation.])
])
fi