build system: try detecting pugixml via pkg-config with fallback

Implements #1891.
This commit is contained in:
Moritz Bunkus 2017-02-13 20:47:45 +01:00
parent 6f7b760d34
commit c1213feac3
5 changed files with 27 additions and 8 deletions

View File

@ -67,6 +67,10 @@
In order to facilitate finding the new requirements new options have been
added to confiure: "--with-xsltproc=prog", "--with-docbook-xsl=dir",
"--with-po4a=prog" and "--with-po4a-translate=prog.
* pugixml detection will be attempted via "pkg-config" first. If that fails,
"configure" will fall back to the previous method of trying just to compile
and link a test program with the standard include and library locations.
Implements #1891.
# Version 9.8.0 "Kuglblids" 2017-01-22

View File

@ -126,7 +126,7 @@ def setup_globals
cflags_common += " -fsanitize=undefined" if c?(:UBSAN)
cflags_common += " -fsanitize=address -fno-omit-frame-pointer" if c?(:ADDRSAN)
cflags_common += " -Ilib/libebml -Ilib/libmatroska" if c?(:EBML_MATROSKA_INTERNAL)
cflags_common += " #{c(:MATROSKA_CFLAGS)} #{c(:EBML_CFLAGS)} #{c(:EXTRA_CFLAGS)} #{c(:DEBUG_CFLAGS)} #{c(:PROFILING_CFLAGS)} #{c(:USER_CPPFLAGS)}"
cflags_common += " #{c(:MATROSKA_CFLAGS)} #{c(:EBML_CFLAGS)} #{c(:PUGIXML_CFLAGS)} #{c(:EXTRA_CFLAGS)} #{c(:DEBUG_CFLAGS)} #{c(:PROFILING_CFLAGS)} #{c(:USER_CPPFLAGS)}"
cflags_common += " -mno-ms-bitfields -DWINVER=0x0500 -D_WIN32_WINNT=0x0500 " if c?(:MINGW)
cflags_common += " -march=i686" if c?(:MINGW) && /i686/.match(c(:host))
cflags_common += " -fPIC " if c?(:USE_QT) && !c?(:MINGW)

View File

@ -2,17 +2,29 @@ dnl
dnl Check for pugixml
dnl
AC_LANG_PUSH(C++)
PKG_CHECK_EXISTS([pugixml],[pugixml_found=yes],[pugixml_found=no])
AC_CHECK_HEADERS([pugixml.hpp])
if test x"$ac_cv_header_pugixml_hpp" = xyes; then
AC_CHECK_LIB([pugixml], [main])
if test x"$pugixml_found" = xyes; then
PKG_CHECK_MODULES([PUGIXML],[pugixml],[pugixml_found=yes],[pugixml_found=no])
fi
AC_LANG_POP
if test x"$pugixml_found" = xno; then
AC_LANG_PUSH(C++)
if test x"$ac_cv_header_pugixml_hpp" = xyes -a x"$ac_cv_lib_pugixml_main" = xyes ; then
AC_CHECK_HEADERS([pugixml.hpp])
if test x"$ac_cv_header_pugixml_hpp" = xyes; then
AC_CHECK_LIB([pugixml], [main])
fi
AC_LANG_POP
if test x"$ac_cv_header_pugixml_hpp" = xyes -a x"$ac_cv_lib_pugixml_main" = xyes ; then
pugixml_found=yes
fi
fi
if test $pugixml_found = yes; then
AC_MSG_NOTICE([Using the system version of the pugixml library])
PUGIXML_INTERNAL=no
else

View File

@ -107,7 +107,9 @@ PO4A_TRANSLATE_FLAGS = @PO4A_TRANSLATE_FLAGS@
PO4A_WORKS = @PO4A_WORKS@
PROFILING_CFLAGS = @PROFILING_CFLAGS@
PROFILING_LIBS = @PROFILING_LIBS@
PUGIXML_CFLAGS = @PUGIXML_CFLAGS@
PUGIXML_INTERNAL = @PUGIXML_INTERNAL@
PUGIXML_LIBS = @PUGIXML_LIBS@
QT_CFLAGS = @QT_CFLAGS@
QT_LIBS = @QT_LIBS@
QUNUSED_ARGUMENTS = @QUNUSED_ARGUMENTS@

View File

@ -131,6 +131,7 @@ class Target
when :boost_regex then c(:BOOST_REGEX_LIB)
when :boost_filesystem then c(:BOOST_FILESYSTEM_LIB)
when :boost_system then c(:BOOST_SYSTEM_LIB)
when :pugixml then c(:PUGIXML_LIBS)
when :qt then c(:QT_LIBS)
when :static then c(:LINK_STATICALLY)
when :mpegparser then [ '-Lsrc/mpegparser', '-lmpegparser' ]