summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure122
-rw-r--r--configure.ac2
-rw-r--r--include/asterisk/autoconfig.h.in3
-rw-r--r--main/xml.c3
4 files changed, 129 insertions, 1 deletions
diff --git a/configure b/configure
index ff7a01d13..2552aa2dc 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
#! /bin/sh
-# From configure.ac Revision: 400078 .
+# From configure.ac Revision: 400186 .
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for asterisk trunk.
#
@@ -967,6 +967,10 @@ PBX_LTDL
LTDL_DIR
LTDL_INCLUDE
LTDL_LIB
+PBX_LIBXSLT_CLEANUP
+LIBXSLT_CLEANUP_DIR
+LIBXSLT_CLEANUP_INCLUDE
+LIBXSLT_CLEANUP_LIB
PBX_LIBXSLT
LIBXSLT_DIR
LIBXSLT_INCLUDE
@@ -9591,6 +9595,18 @@ fi
+LIBXSLT_CLEANUP_DESCRIP="LibXSLT Library Cleanup Function"
+LIBXSLT_CLEANUP_OPTION=libxslt
+LIBXSLT_CLEANUP_DIR=${LIBXSLT_DIR}
+
+PBX_LIBXSLT_CLEANUP=0
+
+
+
+
+
+
+
LTDL_DESCRIP="libtool"
LTDL_OPTION="ltdl"
PBX_LTDL=0
@@ -12972,6 +12988,110 @@ fi
+if test "x${PBX_LIBXSLT_CLEANUP}" != "x1" -a "${USE_LIBXSLT_CLEANUP}" != "no"; then
+ pbxlibdir=""
+ # if --with-LIBXSLT_CLEANUP=DIR has been specified, use it.
+ if test "x${LIBXSLT_CLEANUP_DIR}" != "x"; then
+ if test -d ${LIBXSLT_CLEANUP_DIR}/lib; then
+ pbxlibdir="-L${LIBXSLT_CLEANUP_DIR}/lib"
+ else
+ pbxlibdir="-L${LIBXSLT_CLEANUP_DIR}"
+ fi
+ fi
+ pbxfuncname="xsltCleanupGlobals"
+ if test "x${pbxfuncname}" = "x" ; then # empty lib, assume only headers
+ AST_LIBXSLT_CLEANUP_FOUND=yes
+ else
+ ast_ext_lib_check_save_CFLAGS="${CFLAGS}"
+ CFLAGS="${CFLAGS} ${LIBXML2_INCLUDE}"
+ as_ac_Lib=`$as_echo "ac_cv_lib_xslt_${pbxfuncname}" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${pbxfuncname} in -lxslt" >&5
+$as_echo_n "checking for ${pbxfuncname} in -lxslt... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lxslt ${pbxlibdir} ${LIBXML2_LIB} $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ${pbxfuncname} ();
+int
+main ()
+{
+return ${pbxfuncname} ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ eval "$as_ac_Lib=yes"
+else
+ eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+ AST_LIBXSLT_CLEANUP_FOUND=yes
+else
+ AST_LIBXSLT_CLEANUP_FOUND=no
+fi
+
+ CFLAGS="${ast_ext_lib_check_save_CFLAGS}"
+ fi
+
+ # now check for the header.
+ if test "${AST_LIBXSLT_CLEANUP_FOUND}" = "yes"; then
+ LIBXSLT_CLEANUP_LIB="${pbxlibdir} -lxslt ${LIBXML2_LIB}"
+ # if --with-LIBXSLT_CLEANUP=DIR has been specified, use it.
+ if test "x${LIBXSLT_CLEANUP_DIR}" != "x"; then
+ LIBXSLT_CLEANUP_INCLUDE="-I${LIBXSLT_CLEANUP_DIR}/include"
+ fi
+ LIBXSLT_CLEANUP_INCLUDE="${LIBXSLT_CLEANUP_INCLUDE} ${LIBXML2_INCLUDE}"
+ if test "xlibxslt/xsltInternals.h" = "x" ; then # no header, assume found
+ LIBXSLT_CLEANUP_HEADER_FOUND="1"
+ else # check for the header
+ ast_ext_lib_check_saved_CPPFLAGS="${CPPFLAGS}"
+ CPPFLAGS="${CPPFLAGS} ${LIBXSLT_CLEANUP_INCLUDE}"
+ ac_fn_c_check_header_mongrel "$LINENO" "libxslt/xsltInternals.h" "ac_cv_header_libxslt_xsltInternals_h" "$ac_includes_default"
+if test "x$ac_cv_header_libxslt_xsltInternals_h" = xyes; then :
+ LIBXSLT_CLEANUP_HEADER_FOUND=1
+else
+ LIBXSLT_CLEANUP_HEADER_FOUND=0
+fi
+
+
+ CPPFLAGS="${ast_ext_lib_check_saved_CPPFLAGS}"
+ fi
+ if test "x${LIBXSLT_CLEANUP_HEADER_FOUND}" = "x0" ; then
+ LIBXSLT_CLEANUP_LIB=""
+ LIBXSLT_CLEANUP_INCLUDE=""
+ else
+ if test "x${pbxfuncname}" = "x" ; then # only checking headers -> no library
+ LIBXSLT_CLEANUP_LIB=""
+ fi
+ PBX_LIBXSLT_CLEANUP=1
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBXSLT_CLEANUP 1
+_ACEOF
+
+ fi
+ fi
+fi
+
+
+
fi
# some embedded systems omit internationalization (locale) support
diff --git a/configure.ac b/configure.ac
index 765f0805b..f67832731 100644
--- a/configure.ac
+++ b/configure.ac
@@ -415,6 +415,7 @@ AST_LIBCURL_CHECK_CONFIG([], [7.10.1])
AST_EXT_LIB_SETUP([LIBEDIT], [NetBSD Editline library], [libedit], [, use 'internal' Editline otherwise])
AST_EXT_LIB_SETUP([LIBXML2], [LibXML2], [libxml2])
AST_EXT_LIB_SETUP([LIBXSLT], [LibXSLT], [libxslt])
+AST_EXT_LIB_SETUP_OPTIONAL([LIBXSLT_CLEANUP], [LibXSLT Library Cleanup Function], [LIBXSLT], [libxslt])
AST_EXT_LIB_SETUP([LTDL], [libtool], [ltdl])
AST_EXT_LIB_SETUP([LUA], [Lua], [lua])
AST_EXT_LIB_SETUP([MISDN], [mISDN user], [misdn])
@@ -570,6 +571,7 @@ if test "${disable_xmldoc}" != "yes"; then
fi
AST_EXT_LIB_CHECK([LIBXSLT], [xslt], [xsltLoadStylesheetPI], [libxslt/xsltInternals.h], [${LIBXML2_LIB}], [${LIBXML2_INCLUDE}])
+ AST_EXT_LIB_CHECK([LIBXSLT_CLEANUP], [xslt], [xsltCleanupGlobals], [libxslt/xsltInternals.h], [${LIBXML2_LIB}], [${LIBXML2_INCLUDE}])
fi
diff --git a/include/asterisk/autoconfig.h.in b/include/asterisk/autoconfig.h.in
index 559b69af1..a13df9e9c 100644
--- a/include/asterisk/autoconfig.h.in
+++ b/include/asterisk/autoconfig.h.in
@@ -400,6 +400,9 @@
/* Define to 1 if you have the LibXSLT library. */
#undef HAVE_LIBXSLT
+/* Define to 1 if LIBXSLT has the LibXSLT Library Cleanup Function feature. */
+#undef HAVE_LIBXSLT_CLEANUP
+
/* Define to 1 if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H
diff --git a/main/xml.c b/main/xml.c
index bd5850813..dee249711 100644
--- a/main/xml.c
+++ b/main/xml.c
@@ -55,6 +55,9 @@ int ast_xml_init(void)
int ast_xml_finish(void)
{
xmlCleanupParser();
+#ifdef HAVE_LIBXSLT_CLEANUP
+ xsltCleanupGlobals();
+#endif
return 0;
}