Commit Graph

319 Commits

Author SHA1 Message Date
Moritz Bunkus
49be444a61
build system: require libEBML v1.4.1 or newer
libEBML < v1.4.1 contains a bug that leads to use-after-free access in
all of MKVToolNix's programs.

Part of the fix of #2989.
2021-01-04 17:08:59 +01:00
Moritz Bunkus
926301bfd4
fmt.m4: fix wrong name in comment 2020-09-30 17:19:32 +02:00
Moritz Bunkus
f588ebbe32
configure: check for system-wide installed jpcre2.hpp & use if new enough
Implements #2929.
2020-09-30 17:19:02 +02:00
Moritz Bunkus
941e47d97c
build system: look for & require the PCRE2 library 2020-08-20 13:29:29 +02:00
Moritz Bunkus
91579569b5
build system: require libMatroska v1.6.1 2020-08-02 14:08:17 +02:00
Moritz Bunkus
dd8a03a909
fix detection of QtDBus
Fixes #2886.
2020-07-30 13:34:06 +02:00
Moritz Bunkus
28608963d3
require libEBML 1.4.0, libMatroska 1.6.0 2020-06-22 12:47:37 +02:00
Moritz Bunkus
34b4ef1fbd
fmtlib: require at least 6.1.0 2020-05-15 10:33:12 +02:00
Moritz Bunkus
afa1d1437f
configure: add check for fmt::to_string function
That function is part of fmtlib v4 or newer. Use bundled copy if not
found.
2020-05-15 08:36:48 +02:00
Moritz Bunkus
540ba7f122
configure: remove tests for C++11 & C++14 features & corresponding -std= flags
The compilers that I support that implement the required C++17
functionality also implement the full C++11 and C++14 specifications.
2020-05-13 16:37:44 +02:00
Moritz Bunkus
f13c9c83fe
configure: add test for C++17 feature "constexpr if" 2020-05-13 16:34:17 +02:00
Moritz Bunkus
6570d48c53
use std::istringstream instead of boost::lexical_cast for parsing numbers 2020-05-12 22:04:42 +02:00
Moritz Bunkus
75cd193bea
use std::variant instead of boost::variant 2020-05-12 21:12:50 +02:00
Moritz Bunkus
debdc919d2
use std::gcd instead of boost::gcd 2020-05-12 19:01:56 +02:00
Moritz Bunkus
9cd9542ab5
use std::optional<bool> instead of boost::logic::tribool 2020-05-12 14:30:22 +02:00
Moritz Bunkus
b26288eb3b
use stdlib instead of Boost's Range & Adaptors libraries 2020-05-11 21:09:51 +02:00
Moritz Bunkus
067722bc96
switch from Boost's Date/Time library to std::chrono 2020-05-11 21:09:51 +02:00
Moritz Bunkus
77f686c15c
configure: fix --without-dvdread so that HAVE_DVDREAD isn't defined 2020-05-05 17:33:06 +02:00
Moritz Bunkus
c41e75013e
configure: add option for disabling building with libdvdread 2020-05-05 14:06:39 +02:00
Moritz Bunkus
a8139750c5
build system: look for and use libdvdread if found
This library is required for reading chapters from DVDs.

Part of the implementation of #2808.
2020-05-03 11:53:20 +02:00
Moritz Bunkus
9eb4a11b35
build system: run xsltproc with higher maximum recursion depth
On macOS the default `xsltproc` installation has the same limit (3000)
as on Linux, but for some reason it exceeds that limit on
macOS. Bumping it to 10000 lets builds succeed on macOS, too.

Fixes #2754.
2020-04-07 18:35:17 +02:00
Moritz Bunkus
ce3bdf3c9d
macOS: require 10.14 or newer
Several functions of `std::optional` are only available
on Mojave (10.14) and newer, unfortunately.
2019-12-31 16:08:55 +01:00
Moritz Bunkus
080dfeda57
source: use std::regex instead of boost::regex 2019-12-31 15:53:03 +01:00
Moritz Bunkus
ebf0ba5b6a
source: use std::optional instead of boost::optional 2019-12-30 21:37:46 +01:00
Moritz Bunkus
8630264aaa
GUI: require Qt ≥ 5.9.0; remove compatibility code for older versions 2019-11-07 21:28:34 +01:00
Moritz Bunkus
1a7b9ad4da
build system: require Boost 1.60.0 or newer 2019-11-03 14:30:34 +01:00
Moritz Bunkus
68d1f155e5
build system: require C++17 feature "nested namespace definition" 2019-10-31 18:34:04 +01:00
Moritz Bunkus
ff761e44c4
build system: require several C++17 features
* `[[maybe_unused]]` attribute
* structured bindings
2019-10-13 13:40:19 +02:00
Moritz Bunkus
8b078cb297
build system: fix configure handling of undefined behavior sanitizer arguments 2019-10-08 19:45:03 +02:00
Moritz Bunkus
0d962e30c4
build system: move flag generation to Rakefile for several features
Features include debuging, profiling, optimizations & sanitizers. The
flags don't depend on something that's actually tested, but only on
which features are enabled and which compiler & compiler version is
used. Therefore doing it in Ruby instead of sh is easier.
2019-10-08 00:44:08 +02:00
Moritz Bunkus
a47add8196
version_number_t: provide all comparison operators via Boost::Operators 2019-09-11 20:54:41 +02:00
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
Moritz Bunkus
1e7a6b6e31
build system: test for and use -std=c++17 compiler flag if supported 2019-05-18 17:12:27 +02:00
Moritz Bunkus
3e8fa4b95e
build system: Docbook: look for & prefer -nons XSL stylesheets 2019-04-16 10:37:57 +02:00
Moritz Bunkus
218a6d71b4
build system: require libMatroska 1.5.0 2019-03-12 21:02:44 +01:00
Moritz Bunkus
82b8b1ba86
build system: require libEBML v1.3.7
This pulls the fixes for handling Unicode code points >
U+FFFF.

Part of the fix of #2516.
2019-03-06 22:41:03 +01:00
Moritz Bunkus
3cbd95b003
build system: move compiler flag determination to Rakefile
Logic's more straight forward to implement there instead of having to
check in `configure`, adding a variable to `build-local.in` and using
that variable later on. The logic's the same in both places anyway.
2019-02-23 21:11:19 +01:00
Moritz Bunkus
00468a549b
macOS build: move certain compiler & linker flags to build system
That way they don't have to be set manually before running `configure`.

Fixes #2485.
2019-01-26 12:02:55 +01:00
Moritz Bunkus
8cde39725e
build system: update Qt requirement to 5.4.0 or newer 2019-01-06 15:29:33 +01:00
Moritz Bunkus
b71b2b27c1
configure: there's only one GUI left, so talk about its name, not "GUIs" 2018-12-12 09:15:47 +01:00
Moritz Bunkus
6e7f04a142
fmt conversion: integrate bundled fmt into build system 2018-11-20 21:30:27 +01:00
Moritz Bunkus
3ee0b9276e
GUI: don't compile logind sleep inhibitor if QtDBus isn't available 2018-11-05 09:08:47 +01:00
Moritz Bunkus
1ebbb284bd
GUI: inhibit sleep via logind while the job queue is running
This method works for systems where a logind-compatible D-Bus
interface is available for inhibiting sleep & idle states. Requires
Qt's D-Bus library.

Part of the implementation of #2411.
2018-11-04 18:58:06 +01:00
Moritz Bunkus
7f3d89d9e6
build system: optionally link against Dr. MinGW's crash backtrace library 2018-09-11 19:13:31 +02:00
Moritz Bunkus
a21ee36733
configure: fix name of PO4A_TRANSLATE override variable 2018-09-11 17:36:29 +02:00
Moritz Bunkus
4eefc50110
JSON identification: replace invalid UTF-8 bytes with placeholder characters
nlohmann's JSON libraries in version 2.x used to strip bytes that
aren't valid UTF-8 from strings (e.g. service/station names in MPEG
transport streams) before outputting the JSON data structures. With
MKVToolNix v24 that bundled library was updated to v3 which now throws
an exception on such invalid data.

Therefore mkvmerge now takes care of replacing invalid bytes with
placeholder characters itself before passing the strings to nlohmann's
JSON library.

Fixes #2327.
2018-06-15 17:45:22 +02:00
Moritz Bunkus
471fc84ed2
nlohmann-json: update to v3.1.1 (git revision g183390c1) 2018-06-08 22:17:08 +02:00
Moritz Bunkus
2f4daa5454
boost: use boost/integer/common_factor.hpp if available
The header `boost/math/common_factor.hpp` has been deprecated.
2018-06-08 22:17:08 +02:00
Moritz Bunkus
c9e931d69e configure: add test for C++14 feature "user-defined literals for std::string" 2018-04-20 20:03:57 +02:00
Moritz Bunkus
c78177e99b build system: use version number comparison for -Wshadow-compatible-local test
clang++ doesn't error out on unknown flags, it only spews
warnings. Therefore AC_TRY_COMPILE is useless for detecting support
for it.
2018-04-17 23:41:32 +02:00