Commit Graph

299 Commits

Author SHA1 Message Date
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
Moritz Bunkus
9eaf235c76 build system: only use -Wshadow-compatible-local if compiler supports it 2018-04-17 23:28:50 +02:00
Moritz Bunkus
f99bea1f4a Windwos build: support shared libraries 2018-04-08 12:26:03 +02:00
Moritz Bunkus
ccd92f0594 configure: redirect error of qmake to /dev/null
Recent `qmake` versions warn about plugins being added multiple times
via the `QT_PLUGIN` setting. However, our configure must add the
plugins manually as it cannot rely on them being present automatically
in older Qt versions. So just ignore those warnings.
2018-04-07 11:45:51 +02:00
Moritz Bunkus
8baed3aaf9 configure: don't generate static_plugins.cpp for mkvinfo anymore 2018-02-05 19:13:33 +01:00
Timo Gurr
8b229b399c cmark.m4: don't hardcode the pkg-config command 2018-01-22 19:05:06 +01:00
Moritz Bunkus
a26be1f600 configure: verify presence of msgfmt instead of relying on it 2018-01-21 13:04:29 +01:00
Moritz Bunkus
ce191d097b configure: handle --disable-ubsan and --disable-addrsan correctly
Fixes #2199.
2018-01-16 09:09:25 +01:00
Moritz Bunkus
038f61aa0e build system: use Qt's Windows Vista style plugin on static Qt >= 5.10.0 2018-01-01 19:45:23 +01:00
Moritz Bunkus
f700dfbd1e build system: require cmark when building the GUIs 2018-01-01 16:42:06 +01:00
Moritz Bunkus
0fc23cd7bd build system: option for running unit tests with valgrind 2017-12-18 22:02:50 +01:00
darealshinji
4c5ca7ebe5 AppImage compatibility build option 2017-12-12 09:59:34 +01:00
Moritz Bunkus
9de81581f2 configure: enable strong stack protection for clang >= 3.5.0 2017-11-18 10:46:36 +01:00
Moritz Bunkus
cd155df59b configure rework compiler type & version check 2017-11-18 10:46:36 +01:00
Moritz Bunkus
4f2cebac01 build system: silence output of po4a-translate during configure run
Messages that are silenced are ones such as this:

> Your input po file ./doc/man/po4a/po/ja.po seems outdated (The
> amount of entries differ between files: 958 is not 633). Please
> consider running po4a-updatepo to refresh it.
2017-11-17 23:15:41 +01:00
Moritz Bunkus
336726825b build system: use llvm's lld linker when building with clang 2017-11-17 22:44:54 +01:00
Moritz Bunkus
4d5a052472 configure: use -O3 with mingw 7.2.0
Older versions suffered from issues such as segmentation faults on
startup with optimization levels higher than `-O2` or with
`-fipa-icf`. v7.2.0 is OK, though.
2017-11-17 22:21:40 +01:00
Moritz Bunkus
989e5df1eb configure: use -O3 with clang++ 3.8.0 or newer
Older versions suffered from excessive memory usage with optimization
levels higher than `-O1`:

%https://bugs.llvm.org/show_bug.cgi?id=11962

v3.8.0 is known to be OK, though.
2017-11-17 21:57:32 +01:00
Moritz Bunkus
de093c2913 configure: get real version for clang(++)
`clang++ -dumpversion` always outputs 4.2.1 as it was designed to be
compatible with `g++` in that version. So parse `clang++ --version`
for `clang++` instead.
2017-11-17 21:49:36 +01:00
Moritz Bunkus
abb66a5486 build system: check for Google Benchmark, compile benchmark if source exists 2017-11-16 15:15:46 +01:00
Moritz Bunkus
2e238ed122 configure: require libMatroska v1.4.8
That version fixes writing block groups and simple blocks for tracks
with track number 128 (see #2103).

Also adds a test case for writing 130 tracks.
2017-09-25 20:27:25 +02:00