build system: look for and use libdvdread if found

This library is required for reading chapters from DVDs.

Part of the implementation of #2808.
This commit is contained in:
Moritz Bunkus 2020-05-03 11:48:44 +02:00
parent 1cc279755c
commit a8139750c5
No known key found for this signature in database
GPG Key ID: 74AF00ADF2E32C85
10 changed files with 45 additions and 6 deletions

View File

@ -89,7 +89,7 @@ one, and increase `JOBS` if you have more than one core):
cd $HOME/mxe
make MXE_TARGETS=x86_64-w64-mingw32.static MXE_PLUGIN_DIRS=plugins/gcc6 \
JOBS=2 \
gettext libiconv zlib boost file flac lzo ogg pthreads vorbis \
gettext libiconv zlib boost file flac lzo ogg pthreads vorbis cmark dvdread \
qtbase qttranslations qtwinextras
Append the installation directory to your `PATH` variable:

10
NEWS.md
View File

@ -1,3 +1,13 @@
# Version ?
## Build system changes
* The [`libdvdread`](https://www.videolan.org/developers/libdvdnav.html)
library will be used if found via `pkg-config`. If it is found, support for
reading chapters from DVDs will be enabled in `mkvmerge` and the MKVToolNix
GUI. Part of the implementation of #2808.
# Version 46.0.0 "No Deeper Escape" 2020-05-01
## New features and enhancements

View File

@ -137,7 +137,7 @@ def setup_globals
cflags_common += " -Ilib/libebml -Ilib/libmatroska" if c?(:EBML_MATROSKA_INTERNAL)
cflags_common += " -Ilib/nlohmann-json/include" if c?(:NLOHMANN_JSON_INTERNAL)
cflags_common += " -Ilib/fmt/include" if c?(:FMT_INTERNAL)
cflags_common += " #{c(:MATROSKA_CFLAGS)} #{c(:EBML_CFLAGS)} #{c(:PUGIXML_CFLAGS)} #{c(:CMARK_CFLAGS)} #{c(:EXTRA_CFLAGS)} #{c(:USER_CPPFLAGS)}"
cflags_common += " #{c(:MATROSKA_CFLAGS)} #{c(:EBML_CFLAGS)} #{c(:PUGIXML_CFLAGS)} #{c(:CMARK_CFLAGS)} #{c(:DVDREAD_CFLAGS)} #{c(:EXTRA_CFLAGS)} #{c(:USER_CPPFLAGS)}"
cflags_common += " -mno-ms-bitfields -DWINVER=0x0601 -D_WIN32_WINNT=0x0601 " if $building_for[:windows] # 0x0601 = Windows 7/Server 2008 R2
cflags_common += " -march=i686" if $building_for[:windows] && /i686/.match(c(:host))
cflags_common += " -fPIC " if c?(:USE_QT) && !$building_for[:windows]
@ -1081,7 +1081,8 @@ $common_libs = [
:fmt,
]
$common_libs += [:cmark] if c?(:USE_QT)
$common_libs += [:cmark] if c?(:USE_QT)
$common_libs += [:dvdread] if c?(:USE_DVDREAD)
$common_libs += [:exchndl] if c?(:USE_DRMINGW) && $building_for[:windows]
if !$libmtxcommon_as_dll
$common_libs += [

23
ac/dvdread.m4 Normal file
View File

@ -0,0 +1,23 @@
dnl
dnl Check for dvdread
dnl
PKG_CHECK_EXISTS([dvdread],[dvdread_found=yes],[dvdread_found=no])
if test x"$dvdread_found" = xyes; then
PKG_CHECK_MODULES([dvdread],[dvdread],[dvdread_found=yes])
DVDREAD_CFLAGS="`$PKG_CONFIG --cflags dvdread`"
DVDREAD_LIBS="`$PKG_CONFIG --libs dvdread`"
fi
if test x"$dvdread_found" = xyes; then
USE_DVDREAD=yes
opt_features_yes="$opt_features_yes\n * DVD chapter support via libdvdread"
else
opt_features_no="$opt_features_no\n * DVD chapter support via libdvdread"
fi
AC_DEFINE(HAVE_DVDREAD,,[define if building with dvdread])
AC_SUBST(DVDREAD_CFLAGS)
AC_SUBST(DVDREAD_LIBS)
AC_SUBST(USE_DVDREAD)

View File

@ -87,6 +87,8 @@ COMPILER_TYPE = @COMPILER_TYPE@
COMPILER_VERSION = @COMPILER_VERSION@
DOCBOOK_ROOT = @DOCBOOK_ROOT@
DRMINGW_PATH = @DRMINGW_PATH@
DVDREAD_CFLAGS = @DVDREAD_CFLAGS@
DVDREAD_LIBS = @DVDREAD_LIBS@
EBML_MATROSKA_INTERNAL = @EBML_MATROSKA_INTERNAL@
EBML_CFLAGS = @EBML_CFLAGS@
EBML_LIBS = @EBML_LIBS@
@ -141,6 +143,7 @@ USE_PROFILING = @USE_PROFILING@
USE_OPTIMIZATION = @USE_OPTIMIZATION@
USE_ADDRSAN = @USE_ADDRSAN@
USE_UBSAN = @USE_UBSAN@
USE_DVDREAD = @USE_DVDREAD@
APPIMAGE_BUILD = @APPIMAGE_BUILD@
BUILD_TOOLS = @BUILD_TOOLS@
BUILD_COMPILATION_DATABASE = no

View File

@ -49,6 +49,7 @@ m4_include(ac/benchmark.m4)
m4_include(ac/pandoc.m4)
m4_include(ac/ax_docbook.m4)
m4_include(ac/tiocgwinsz.m4)
m4_include(ac/dvdread.m4)
m4_include(ac/po4a.m4)
m4_include(ac/translations.m4)
m4_include(ac/manpages_translations.m4)

View File

@ -10,7 +10,7 @@ Summary: Tools to create, alter and inspect Matroska files
Source: %{name}-%{version}.tar.xz
Requires: hicolor-icon-theme
BuildRequires: desktop-file-utils, fdupes, file-devel, flac, flac-devel, glibc-devel, libogg-devel, libstdc++-devel, libvorbis-devel, make, pkgconfig, zlib-devel, cmark-devel, po4a
BuildRequires: desktop-file-utils, fdupes, file-devel, flac, flac-devel, glibc-devel, libogg-devel, libstdc++-devel, libvorbis-devel, make, pkgconfig, zlib-devel, cmark-devel, po4a, libdvdread-devel
%if 0%{?rhel}
BuildRequires: rubygem-drake

View File

@ -14,7 +14,7 @@ Build-Depends:
libboost-system-dev (>= 1.46), qtbase5-dev, qtbase5-dev-tools,
qtmultimedia5-dev, qt5-default,
nlohmann-json3-dev | nlohmann-json-dev (>= 2),
libcmark-dev, libgtest-dev, libfmt-dev (>= 4),
libcmark-dev, libgtest-dev, libfmt-dev (>= 4), libdvdread-dev,
pkg-config, po4a, docbook-xsl, xsltproc
Package: mkvtoolnix

View File

@ -54,7 +54,7 @@ MXE_USE_CCACHE =
MXE_PLUGIN_DIRS += plugins/gcc9
JOBS = ${PARALLEL}
MKVTOOLNIX_DEPENDENCIES=gettext libiconv zlib boost file flac lzo ogg pthreads vorbis cmark
MKVTOOLNIX_DEPENDENCIES=gettext libiconv zlib boost file flac lzo ogg pthreads vorbis cmark dvdread
MKVTOOLNIX_DEPENDENCIES+=qtbase qttranslations qtwinextras
LOCAL_PKG_LIST=\$(MKVTOOLNIX_DEPENDENCIES)

View File

@ -162,6 +162,7 @@ class Target
when :iconv then c(:ICONV_LIBS)
when :intl then c(:LIBINTL_LIBS)
when :cmark then c(:CMARK_LIBS)
when :dvdread then c(:DVDREAD_LIBS)
when :boost_filesystem then c(:BOOST_FILESYSTEM_LIB)
when :boost_system then c(:BOOST_SYSTEM_LIB)
when :pugixml then c?(:PUGIXML_INTERNAL) ? [ '-Llib/pugixml/src', '-lpugixml' ] : c(:PUGIXML_LIBS)