From 6dd7abe796448ceb391091dbdf875cc9f7c2cc4e Mon Sep 17 00:00:00 2001 From: Alberto Garcia Date: Fri, 12 Aug 2016 13:18:42 +0000 Subject: [PATCH] Use pkg-config to detect libpng and libxml2 (more from patch #375). Legacy-ID: 5731 --- Makefile.am | 1 - configure.ac | 53 +++++-------- hacking/ChangeLog | 2 + m4/libxml.m4 | 190 ---------------------------------------------- 4 files changed, 20 insertions(+), 226 deletions(-) delete mode 100644 m4/libxml.m4 diff --git a/Makefile.am b/Makefile.am index 93ab860b..7e195dce 100644 --- a/Makefile.am +++ b/Makefile.am @@ -134,7 +134,6 @@ EXTRA_DIST = AUTHORS \ m4/ax_create_stdint_h.m4 \ m4/ax_pthread.m4 \ m4/gtk-2.0.m4 \ - m4/libxml.m4 \ m4/pkg.m4 \ m4/sdl.m4 \ menu_data.dat \ diff --git a/configure.ac b/configure.ac index e1791361..2433b7de 100644 --- a/configure.ac +++ b/configure.ac @@ -507,40 +507,17 @@ if test "$withval" = no; then libpng=no; else libpng=yes; fi, libpng=yes) AC_MSG_RESULT($libpng) if test "$libpng" = yes; then - AC_PATH_PROG([LIBPNG_CONFIG], [libpng-config]) - if test -n "$LIBPNG_CONFIG"; then - PNG_CFLAGS=`libpng-config --cflags` - PNG_LIBS=`libpng-config --ldflags` - AC_DEFINE([USE_LIBPNG], 1, [Defined if we're going to be using the installed libpng]) - else - ac_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $PNG_CFLAGS" - ac_save_LDFLAGS="$LDFLAGS" - LDFLAGS="$PNG_LIBS $LDFLAGS" - - AC_CHECK_LIB( png, png_write_png, - [AC_CHECK_HEADER( - png.h, - [AC_DEFINE([USE_LIBPNG], 1, [Defined if we're going to be using the installed libpng]) PNG_LIBS='-lpng -lm -lz'], - [AC_CHECK_HEADERS(libpng/png.h, - [CPPFLAGS="$ac_save_CPPFLAGS $PNG_CFLAGS/libpng" - AC_DEFINE([USE_LIBPNG], 1, [Defined if we're going to be using the installed libpng]) PNG_LIBS='-lpng -lm -lz'], - [AC_MSG_WARN(png.h not found - saving screenshots disabled) - PNG_LIBS=''] - )], - )], - [AC_MSG_WARN(png_write_png not found - saving screenshots disabled) - PNG_LIBS=''] - ) - - CPPFLAGS="$ac_save_CPPFLAGS" - LDFLAGS="$ac_save_LDFLAGS" - fi - - AC_SUBST(PNG_CFLAGS) - AC_SUBST(PNG_LIBS) + PKG_CHECK_MODULES( + [PNG], + [libpng], + [AC_DEFINE([USE_LIBPNG], 1, [Defined if we're going to be using the installed libpng])], + [AC_MSG_WARN([libpng not found - saving screenshots disabled])] + ) fi +AC_SUBST(PNG_CFLAGS) +AC_SUBST(PNG_LIBS) + dnl Check if a version of libasound which supplies pcm is available AC_MSG_CHECKING(whether ALSA requested) AC_ARG_WITH(alsa, @@ -737,11 +714,17 @@ AC_MSG_CHECKING(whether libxml2 support requested) libxml2=yes) AC_MSG_RESULT($libxml2) if test "$libxml2" = yes; then - AM_PATH_XML2(2.0.0,AC_DEFINE([HAVE_LIB_XML2], 1, - [Defined if we've got libxml2]), - AC_MSG_WARN(libxml2 not found - config file will use ini format)) + PKG_CHECK_MODULES( + [XML], + [libxml-2.0], + [AC_DEFINE([HAVE_LIB_XML2], 1, [Defined if we've got libxml2])], + [AC_MSG_WARN([libxml2 not found - config file will use ini format])] + ) fi +AC_SUBST(XML_CFLAGS) +AC_SUBST(XML_LIBS) + dnl Work out which timer routines to use AC_MSG_CHECKING(which timer routines to use) if test "$UI" = sdl; then diff --git a/hacking/ChangeLog b/hacking/ChangeLog index deec32d3..220b215c 100644 --- a/hacking/ChangeLog +++ b/hacking/ChangeLog @@ -5390,3 +5390,5 @@ (part of bug #356) (thanks, windale and BogDan Vatra) (Sergio). 20160812 tape.c: change microphone state when 0 tstate pulses do not have the no edge flag set (Fred). +20160812 Makefile.am,configure.ac,m4/libxml.m4: use pkg-config to detect libpng + and libxml2 (more from patch #375) (Alberto Garcia). diff --git a/m4/libxml.m4 b/m4/libxml.m4 deleted file mode 100644 index d263627b..00000000 --- a/m4/libxml.m4 +++ /dev/null @@ -1,190 +0,0 @@ -# Configure paths for LIBXML2 -# Toshio Kuratomi 2001-04-21 -# Adapted from: -# Configure paths for GLIB -# Owen Taylor 97-11-3 -# Modified to use CPPFLAGS instead of CFLAGS -# Mike Hommey 2004-05-26 - -# Taken from libxml2 2.6.10 by PAK 2004/07/06 - -dnl AM_PATH_XML2([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) -dnl Test for XML, and define XML_CFLAGS and XML_LIBS -dnl -AC_DEFUN([AM_PATH_XML2],[ -AC_ARG_WITH(xml-prefix, - [ --with-xml-prefix=PFX Prefix where libxml is installed (optional)], - xml_config_prefix="$withval", xml_config_prefix="") -AC_ARG_WITH(xml-exec-prefix, - [ --with-xml-exec-prefix=PFX Exec prefix where libxml is installed (optional)], - xml_config_exec_prefix="$withval", xml_config_exec_prefix="") -AC_ARG_ENABLE(xmltest, - [ --disable-xmltest Do not try to compile and run a test LIBXML program],, - enable_xmltest=yes) - - if test x$xml_config_exec_prefix != x ; then - xml_config_args="$xml_config_args" - if test x${XML2_CONFIG+set} != xset ; then - XML2_CONFIG=$xml_config_exec_prefix/bin/xml2-config - fi - fi - if test x$xml_config_prefix != x ; then - xml_config_args="$xml_config_args --prefix=$xml_config_prefix" - if test x${XML2_CONFIG+set} != xset ; then - XML2_CONFIG=$xml_config_prefix/bin/xml2-config - fi - fi - - AC_PATH_PROG(XML2_CONFIG, xml2-config, no) - min_xml_version=ifelse([$1], ,2.0.0,[$1]) - AC_MSG_CHECKING(for libxml - version >= $min_xml_version) - no_xml="" - if test "$XML2_CONFIG" = "no" ; then - no_xml=yes - else - XML_CFLAGS=`$XML2_CONFIG $xml_config_args --cflags` - XML_LIBS=`$XML2_CONFIG $xml_config_args --libs` - xml_config_major_version=`$XML2_CONFIG $xml_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - xml_config_minor_version=`$XML2_CONFIG $xml_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - xml_config_micro_version=`$XML2_CONFIG $xml_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - if test "x$enable_xmltest" = "xyes" ; then - ac_save_CPPFLAGS="$CPPFLAGS" - ac_save_LIBS="$LIBS" - CPPFLAGS="$CPPFLAGS $XML_CFLAGS" - LIBS="$XML_LIBS $LIBS" -dnl -dnl Now check if the installed libxml is sufficiently new. -dnl (Also sanity checks the results of xml2-config to some extent) -dnl - rm -f conf.xmltest - AC_TRY_RUN([ -#include -#include -#include -#include - -int -main() -{ - int xml_major_version, xml_minor_version, xml_micro_version; - int major, minor, micro; - char *tmp_version; - - system("touch conf.xmltest"); - - /* Capture xml2-config output via autoconf/configure variables */ - /* HP/UX 9 (%@#!) writes to sscanf strings */ - tmp_version = (char *)strdup("$min_xml_version"); - if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { - printf("%s, bad version string from xml2-config\n", "$min_xml_version"); - exit(1); - } - free(tmp_version); - - /* Capture the version information from the header files */ - tmp_version = (char *)strdup(LIBXML_DOTTED_VERSION); - if (sscanf(tmp_version, "%d.%d.%d", &xml_major_version, &xml_minor_version, &xml_micro_version) != 3) { - printf("%s, bad version string from libxml includes\n", "LIBXML_DOTTED_VERSION"); - exit(1); - } - free(tmp_version); - - /* Compare xml2-config output to the libxml headers */ - if ((xml_major_version != $xml_config_major_version) || - (xml_minor_version != $xml_config_minor_version) || - (xml_micro_version != $xml_config_micro_version)) - { - printf("*** libxml header files (version %d.%d.%d) do not match\n", - xml_major_version, xml_minor_version, xml_micro_version); - printf("*** xml2-config (version %d.%d.%d)\n", - $xml_config_major_version, $xml_config_minor_version, $xml_config_micro_version); - return 1; - } -/* Compare the headers to the library to make sure we match */ - /* Less than ideal -- doesn't provide us with return value feedback, - * only exits if there's a serious mismatch between header and library. - */ - LIBXML_TEST_VERSION; - - /* Test that the library is greater than our minimum version */ - if ((xml_major_version > major) || - ((xml_major_version == major) && (xml_minor_version > minor)) || - ((xml_major_version == major) && (xml_minor_version == minor) && - (xml_micro_version >= micro))) - { - return 0; - } - else - { - printf("\n*** An old version of libxml (%d.%d.%d) was found.\n", - xml_major_version, xml_minor_version, xml_micro_version); - printf("*** You need a version of libxml newer than %d.%d.%d. The latest version of\n", - major, minor, micro); - printf("*** libxml is always available from ftp://ftp.xmlsoft.org.\n"); - printf("***\n"); - printf("*** If you have already installed a sufficiently new version, this error\n"); - printf("*** probably means that the wrong copy of the xml2-config shell script is\n"); - printf("*** being found. The easiest way to fix this is to remove the old version\n"); - printf("*** of LIBXML, but you can also set the XML2_CONFIG environment to point to the\n"); - printf("*** correct copy of xml2-config. (In this case, you will have to\n"); - printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); - printf("*** so that the correct libraries are found at run-time))\n"); - } - return 1; -} -],, no_xml=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CPPFLAGS="$ac_save_CPPFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - - if test "x$no_xml" = x ; then - AC_MSG_RESULT(yes (version $xml_config_major_version.$xml_config_minor_version.$xml_config_micro_version)) - ifelse([$2], , :, [$2]) - else - AC_MSG_RESULT(no) - if test "$XML2_CONFIG" = "no" ; then - echo "*** The xml2-config script installed by LIBXML could not be found" - echo "*** If libxml was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the XML2_CONFIG environment variable to the" - echo "*** full path to xml2-config." - else - if test -f conf.xmltest ; then - : - else - echo "*** Could not run libxml test program, checking why..." - CPPFLAGS="$CPPFLAGS $XML_CFLAGS" - LIBS="$LIBS $XML_LIBS" - AC_TRY_LINK([ -#include -#include -], [ LIBXML_TEST_VERSION; return 0;], - [ echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding LIBXML or finding the wrong" - echo "*** version of LIBXML. If it is not finding LIBXML, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ], - [ echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means LIBXML was incorrectly installed" - echo "*** or that you have moved LIBXML since it was installed. In the latter case, you" - echo "*** may want to edit the xml2-config script: $XML2_CONFIG" ]) - CPPFLAGS="$ac_save_CPPFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - - XML_CFLAGS="" - XML_LIBS="" - ifelse([$3], , :, [$3]) - fi - AC_SUBST(XML_CFLAGS) - AC_SUBST(XML_LIBS) - rm -f conf.xmltest -])