From 82f046d3f93392b4a49eedf5edd5147df36526ea Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 9 Oct 2024 09:55:02 -0500 Subject: [PATCH 1/3] Extract AX_PROG_XML2 into its own file --- config/macros.m4 | 66 ------------------------------------------------ config/xml.m4 | 65 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 66 deletions(-) create mode 100644 config/xml.m4 diff --git a/config/macros.m4 b/config/macros.m4 index 83cdd56a..5bf8ff70 100644 --- a/config/macros.m4 +++ b/config/macros.m4 @@ -603,72 +603,6 @@ AC_DEFUN([AX_CHECK_PGI], fi ]) -# AX_PROG_XML2 -# ----------- -# Check for libxml2 installation -AC_DEFUN([AX_PROG_XML2], -[ - AX_FLAGS_SAVE() - - AC_ARG_WITH(xml-prefix, - AC_HELP_STRING( - [--with-xml-prefix@<:@=DIR@:>@], - [specify where to find libxml2 libraries and includes (deprecated, use --with-xml)] - ), - [xml_paths="${withval}"], - [xml_paths="/usr/local /usr"] dnl List of possible default paths - ) - - AC_ARG_WITH(xml, - AC_HELP_STRING( - [--with-xml@<:@=DIR@:>@], - [specify where to find libxml2 libraries and includes] - ), - [xml_paths="${withval}"] - dnl [xml_paths="/usr/local /usr"] dnl List of possible default not given here, taken from --with-xml-prefix - dnl dnl Activate this again when --with-xml-prefix is removed - ) - - AX_FIND_INSTALLATION([XML2], [${xml_paths}], [xml2-config], [], [], [], [xml2], [], [], []) - if test "$XML2_INSTALLED" = "yes" ; then - - min_xml_version=ifelse([$1], ,2.0.0, [$1]) - AC_MSG_CHECKING(for libxml2 version >= $min_xml_version) - min_xml_major_version=`echo ${min_xml_version} | cut -d. -f1` - min_xml_minor_version=`echo ${min_xml_version} | cut -d. -f2` - min_xml_micro_version=`echo ${min_xml_version} | cut -d. -f3` - - xml_config_major_version=`${XML2_BIN_xml2_config} --version | cut -d. -f1` - xml_config_minor_version=`${XML2_BIN_xml2_config} --version | cut -d. -f2` - xml_config_micro_version=`${XML2_BIN_xml2_config} --version | cut -d. -f3` - - if ((xml_config_major_version > min_xml_major_version)) || - ((xml_config_major_version == min_xml_major_version && xml_config_minor_version > min_xml_minor_version)) || - ((xml_config_major_version == major && xml_config_minor_version == min_xml_minor_version && xml_config_micro_version >= min_xml_micro_version)); then - AC_MSG_RESULT([yes ($xml_config_major_version.$xml_config_minor_version.$xml_config_micro_version)]) - else - AC_MSG_RESULT([no ($xml_config_major_version.$xml_config_minor_version.$xml_config_micro_version)]) - XML2_INSTALLED="no" - fi - - XML2_CFLAGS="${XML2_CFLAGS} -I${XML2_INCLUDES}/libxml2" - XML2_CPPFLAGS="${XML2_CPPFLAGS} -I${XML2_INCLUDES}/libxml2" - XML2_CXXFLAGS="${XML2_CXXFLAGS} -I${XML2_INCLUDES}/libxml2" - AC_SUBST(XML2_CFLAGS) - AC_SUBST(XML2_CPPFLAGS) - AC_SUBST(XML2_CXXFLAGS) - - CFLAGS=${XML2_CFLAGS} - AC_CHECK_HEADERS([libxml/parser.h libxml/xmlmemory.h], [], [$XML2_INSTALLED="no"]) - fi - AX_FLAGS_RESTORE() - - AM_CONDITIONAL(HAVE_XML2, test "${XML2_INSTALLED}" = "yes") - if test "$XML2_INSTALLED" = "yes" ; then - AC_DEFINE([HAVE_XML2], [1], [Defined if libxml2 is available]) - fi -]) - # # TEST_BFD_SECTION_FUNCTION # ------------------------- diff --git a/config/xml.m4 b/config/xml.m4 new file mode 100644 index 00000000..89a7cf50 --- /dev/null +++ b/config/xml.m4 @@ -0,0 +1,65 @@ +# AX_PROG_XML2 +# ----------- +# Check for libxml2 installation +AC_DEFUN([AX_PROG_XML2], +[ + AX_FLAGS_SAVE() + + AC_ARG_WITH(xml-prefix, + AC_HELP_STRING( + [--with-xml-prefix@<:@=DIR@:>@], + [specify where to find libxml2 libraries and includes (deprecated, use --with-xml)] + ), + [xml_paths="${withval}"], + [xml_paths="/usr/local /usr"] dnl List of possible default paths + ) + + AC_ARG_WITH(xml, + AC_HELP_STRING( + [--with-xml@<:@=DIR@:>@], + [specify where to find libxml2 libraries and includes] + ), + [xml_paths="${withval}"] + dnl [xml_paths="/usr/local /usr"] dnl List of possible default not given here, taken from --with-xml-prefix + dnl dnl Activate this again when --with-xml-prefix is removed + ) + + AX_FIND_INSTALLATION([XML2], [${xml_paths}], [xml2-config], [], [], [], [xml2], [], [], []) + if test "$XML2_INSTALLED" = "yes" ; then + + min_xml_version=ifelse([$1], ,2.0.0, [$1]) + AC_MSG_CHECKING(for libxml2 version >= $min_xml_version) + min_xml_major_version=`echo ${min_xml_version} | cut -d. -f1` + min_xml_minor_version=`echo ${min_xml_version} | cut -d. -f2` + min_xml_micro_version=`echo ${min_xml_version} | cut -d. -f3` + + xml_config_major_version=`${XML2_BIN_xml2_config} --version | cut -d. -f1` + xml_config_minor_version=`${XML2_BIN_xml2_config} --version | cut -d. -f2` + xml_config_micro_version=`${XML2_BIN_xml2_config} --version | cut -d. -f3` + + if ((xml_config_major_version > min_xml_major_version)) || + ((xml_config_major_version == min_xml_major_version && xml_config_minor_version > min_xml_minor_version)) || + ((xml_config_major_version == major && xml_config_minor_version == min_xml_minor_version && xml_config_micro_version >= min_xml_micro_version)); then + AC_MSG_RESULT([yes ($xml_config_major_version.$xml_config_minor_version.$xml_config_micro_version)]) + else + AC_MSG_RESULT([no ($xml_config_major_version.$xml_config_minor_version.$xml_config_micro_version)]) + XML2_INSTALLED="no" + fi + + XML2_CFLAGS="${XML2_CFLAGS} -I${XML2_INCLUDES}/libxml2" + XML2_CPPFLAGS="${XML2_CPPFLAGS} -I${XML2_INCLUDES}/libxml2" + XML2_CXXFLAGS="${XML2_CXXFLAGS} -I${XML2_INCLUDES}/libxml2" + AC_SUBST(XML2_CFLAGS) + AC_SUBST(XML2_CPPFLAGS) + AC_SUBST(XML2_CXXFLAGS) + + CFLAGS=${XML2_CFLAGS} + AC_CHECK_HEADERS([libxml/parser.h libxml/xmlmemory.h], [], [$XML2_INSTALLED="no"]) + fi + AX_FLAGS_RESTORE() + + AM_CONDITIONAL(HAVE_XML2, test "${XML2_INSTALLED}" = "yes") + if test "$XML2_INSTALLED" = "yes" ; then + AC_DEFINE([HAVE_XML2], [1], [Defined if libxml2 is available]) + fi +]) \ No newline at end of file From 2b310a363d0d4e48dd78d0e3523ceb0fff1c6ea1 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 9 Oct 2024 09:55:36 -0500 Subject: [PATCH 2/3] Require libxml2 when building Dyninst launcher --- config/dyninst.m4 | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/config/dyninst.m4 b/config/dyninst.m4 index 7419d80e..44232302 100644 --- a/config/dyninst.m4 +++ b/config/dyninst.m4 @@ -121,6 +121,7 @@ AC_DEFUN([AX_PROG_DYNINST], AC_REQUIRE([AX_PROG_ELFUTILS]) AC_REQUIRE([AX_PROG_TBB]) AC_REQUIRE([AX_PROG_BOOST]) + AC_REQUIRE([AX_PROG_XML2([2.5.0])]) AX_FLAGS_SAVE() @@ -150,6 +151,10 @@ AC_DEFUN([AX_PROG_DYNINST], AC_MSG_ERROR([Dyninst support was activated but a required dependency was not found. Please specify where to find Boost C++ libraries and includes with --with-boost.]) fi + if test "${XML2_INSTALLED}" != "yes" ; then + AC_MSG_ERROR([Dyninst support was activated but a required dependency was not found. Please specify where to find Boost C++ libraries and includes with --with-xml2.]) + fi + dnl Search for Dyninst installation AC_LANG_SAVE() AC_LANG_PUSH([C++]) From cfb6bd4a57d52d110165d72fd9cc4e914c95567f Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 9 Oct 2024 09:56:26 -0500 Subject: [PATCH 3/3] Update mini-xml-parse.c HAVE_XML2 check This makes it consistent with the one in xml-parse.c. --- src/launcher/dyninst/mini-xml-parse.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/launcher/dyninst/mini-xml-parse.c b/src/launcher/dyninst/mini-xml-parse.c index e4b7373e..118aa777 100644 --- a/src/launcher/dyninst/mini-xml-parse.c +++ b/src/launcher/dyninst/mini-xml-parse.c @@ -24,11 +24,7 @@ #include "common.h" #include "xalloc.h" -#if !defined(HAVE_XML2) - -# error "You need libxml2 to compile this file!" - -#else +#if defined(HAVE_XML2) #include #include