mkvtoolnix/ac/matroska.m4
Moritz Bunkus 598fe5e69e
configure: fix detection of libebml::FindNextChild
The internal libEBML was updated to v1.3.9. That version contains
changes to cmake to build an additional header file, ebml_export.h. In
MKVToolNix, which isn't cmake-based, that file has to be created
manually, and the Rakefile does so.

However, when configure runs the file doesn't exist yet. This means
that any attempt to compile a test program with the internal libebml
will fail due to the header not being found. configure's compilation
checks will therefore fail.

For the detection of libebml::FindNextChild doing a compilation check
against the internal libebml isn't really needed as we know that the
version does include it. So just hardcode that knowledge and avoid the
compilation check.
2019-05-25 17:48:24 +02:00

76 lines
2.2 KiB
Plaintext

dnl
dnl Test for libEBML and libMatroska, and define MATROSKA_CFLAGS and MATROSKA_LIBS
dnl
EBML_MATROSKA_INTERNAL=no
PKG_CHECK_MODULES([EBML],[libebml >= 1.3.7],[],[EBML_MATROSKA_INTERNAL=yes])
PKG_CHECK_MODULES([MATROSKA],[libmatroska >= 1.5.0],[],[EBML_MATROSKA_INTERNAL=yes])
if test x"$EBML_MATROSKA_INTERNAL" = xyes; then
if ! test -f lib/libebml/ebml/EbmlTypes.h ; then
echo '*** The internal version of the libEBML library is supposed to be used,'
echo '*** but it was not found in "lib/libebml. If this is a clone from the'
echo '*** git repository then submodules have to be initialized with the'
echo '*** following two commands:'
echo '***'
echo '*** git submodule init'
echo '*** git submodule update'
exit 1
fi
if ! test -f lib/libmatroska/matroska/KaxVersion.h ; then
echo '*** The internal version of the libMatroska library is supposed to be used,'
echo '*** but it was not found in "lib/libmatroska". If this is a clone from the'
echo '*** git repository then submodules have to be initialized with the'
echo '*** following two commands:'
echo '***'
echo '*** git submodule init'
echo '*** git submodule update'
exit 1
fi
fi
AC_DEFUN([AX_EBML_FINDNEXTCHILD],[
AC_CACHE_CHECK([if libEBML contains FindNextChild], [ax_cv_ebml_findnextchild],[
if test x"$EBML_MATROSKA_INTERNAL" = xyes; then
ax_cv_ebml_findnextchild=yes
else
CXXFLAGS_SAVED=$CXXFLAGS
CXXFLAGS="$EBML_CFLAGS $MATROSKA_CFLAGS"
export CXXFLAGS
AC_LANG_PUSH(C++)
AC_TRY_COMPILE(
[
#include <matroska/KaxInfo.h>
#include <matroska/KaxSegment.h>
using namespace libebml;
using namespace libmatroska;
],
[
EbmlMaster *m = new KaxSegment;
EbmlElement *e = new KaxTitle;
FindNextChild(*m, *e);
],
[ax_cv_ebml_findnextchild="yes"],
[ax_cv_ebml_findnextchild="no"])
AC_LANG_POP
CXXFLAGS="$CXXFLAGS_SAVED"
fi
])
if test x"$ax_cv_ebml_findnextchild" = xyes; then
AC_DEFINE(HAVE_EBML_FINDNEXTCHILD, 1, [Define if libEBML contains FindNextChild])
fi
])
AX_EBML_FINDNEXTCHILD
AC_SUBST(EBML_MATROSKA_INTERNAL)
AC_SUBST(EBML_CFLAGS)
AC_SUBST(EBML_LIBS)
AC_SUBST(MATROSKA_CFLAGS)
AC_SUBST(MATROSKA_LIBS)