Commit Graph

357 Commits

Author SHA1 Message Date
Moritz Bunkus
79bcf14c8f
only link against libstdc++fs if it's actually available
It's neither available nor required on macOS.
2021-02-20 00:43:48 +01:00
Moritz Bunkus
64be0ce080
explicitly link against libstdc++fs for std::filesystem
g++ 10 does this automatically, but older versions don't (haven't
checked clang++).
2021-02-19 23:47:28 +01:00
Moritz Bunkus
752f66db45
switch from boost::filesystem to std::filesystem 2021-02-19 21:28:23 +01:00
Moritz Bunkus
d2aceb1b34
build system: don't mess with global flags
Otherwise parts of the files might be compiled with different
optimization settings which a) isn't allowed when using pre-copmpiled
headers and b) isn't what we want anyway (safe for the one file we
need it for).
2021-02-17 23:48:50 +01:00
Moritz Bunkus
c9884c3e77
build system: don't optimize when compiling iso639_language_list.cpp
Even `-O1` causes compilation time & memory usage to skyrocket,
possibly exponentially, with the number of entries to `emplace_back()`
into the vector.

This isn't so bad with the current number of entries (489). In that
case compilation with `-O3` only takes 7.2s.

However, extending the list to cover ISO 639-3 means that the list
will include 7160 entries. With that many entries things are much,
much more severe:

• with `-O1` alone compilation takes 11m 23s already.
• with `-O3` memory usage exceeded 20 GB after six minutes when I had
  to abort due to other running applications getting killed.

Runtime cost is negligible. I ran a micro benchmark. With all 7160
entries and no optimizations (`-O0`) the initialization takes ~1.4
milliseconds for the one-time initialization on startup; with
optimizations (`-O1`) it still took ~570 microseconds.

Part of the implementation of #3007.
2021-02-17 22:18:20 +01:00
Moritz Bunkus
f1821ce868
Rakefile: always build bluray_dump for Windows
The "populate_installer_dir.sh" script relies on it having been built.
2021-01-30 15:48:42 +01:00
Moritz Bunkus
da92f8163d
build system: change link order for common libraries vs libebml/matroska
Helpful for when I want to use fmt in libebml/matroska temporarily.
2021-01-02 22:03:05 +01:00
Ofir Petrushka
962088f59c style: rubocop Style/Encoding
Fix Style/Encoding by rubocop

Signed-off-by: Cody Coder <cody.coder@gitcodebuddy.com>
2020-10-07 11:58:06 +11: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
74c5272591
Rakefile: explicitly link against libstdc++
Fixes compilation with afl-clang++
2020-09-20 13:23:49 +02:00
Moritz Bunkus
2156af77fa
Rakefile: add dev target for updating all lists 2020-09-07 17:49:33 +02:00
Moritz Bunkus
19e61a2d2e
IANA language subtag registry: make registry download & parsing reusable
Part of the implementation of #2919.
2020-09-07 17:49:32 +02:00
Moritz Bunkus
941e47d97c
build system: look for & require the PCRE2 library 2020-08-20 13:29:29 +02:00
Moritz Bunkus
ef1a803687
Rakefile: add target for generating IANA language subtag registry 2020-07-02 19:09:47 +02:00
Moritz Bunkus
c8742e80d3
Rakefile: add target for generating list of ISO 3166 countries 2020-07-02 19:09:47 +02:00
Moritz Bunkus
d5239fabb9
Rakefile: add target for generating list of ISO 15924 scripts 2020-07-02 19:09:47 +02:00
Moritz Bunkus
572bf8d552
Rakefile: fix name/description of target generating ISO 639 language list 2020-07-02 19:09:47 +02:00
Moritz Bunkus
0a1da6ad1e
update libEBML & libMatroska 2020-06-22 12:46:31 +02:00
Moritz Bunkus
d34d87804c
build system: fix dependencies of QRC files wrt. icons 2020-06-21 20:23:11 +02:00
Moritz Bunkus
3e4f59d3ab
build system: add dev target for updating ISO 639 language list 2020-06-02 19:33:10 +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
a1b00956cf
GUI: compile without emit/signals/slots/foreach keywords
Instead use the variants not clashing with keywords/function names
current and future C++ standards introduce (Q_EMIT/Q_SIGNALS/Q_SLOTS).
2020-04-12 14:49:59 +02:00
Moritz Bunkus
8a6c101545
pgs_dump: tool for dumping details about PGS files 2020-01-31 12:37:46 +01:00
Moritz Bunkus
622a5c8f8a
build system: DRY in tool build instructions 2020-01-31 12:37:12 +01:00
Moritz Bunkus
e8a8591c56
build system: support translating the Docbook-to-HTML XSLT stylesheets 2020-01-01 18:59:07 +01:00
Moritz Bunkus
080dfeda57
source: use std::regex instead of boost::regex 2019-12-31 15:53:03 +01:00
Moritz Bunkus
3b028c20fd
GUI: dark mode: replace QtDarkStyleSheet with built-in Fusion style & custom palette 2019-11-09 10:25:14 +01:00
Moritz Bunkus
e9d65b182b
build system: add dependencies for Qt resource files 2019-11-08 11:12:53 +01:00
Moritz Bunkus
64d2f5e112
GUI: Windows: add dark mode with help of QDarkStyleSheet project
The dark mode is only turned on if Windows 10's own dark mode is
enabled. This manual dark mode configuration is necessary as Qt itself
doesn't support Windows' dark mode yet; see the following bug:

https://bugreports.qt.io/browse/QTBUG-72028

This isn't a problem for other operating systems (Linux, macOS…) as Qt
uses the system colors there and will use dark colors when the
system's colors are set to dark colors, too.
2019-10-12 23:32: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
95f7d12f48
Revert "build system: verify configured host type is same as current host type"
This reverts commit af744cea80.
2019-09-27 18:02:13 +02:00
Moritz Bunkus
9c50085e3f
all: macOS: normalize file & path names to NFD
Fixes #2620.
2019-09-27 17:27:16 +02:00
Moritz Bunkus
af744cea80
build system: verify configured host type is same as current host type 2019-09-27 17:01:22 +02:00
Moritz Bunkus
e43d58994b
macOS build: build Boost with same custom iconv as rest of MKVToolNix 2019-09-27 14:24:15 +02:00
Moritz Bunkus
6a8246e7eb
build system: include git commit number since last release in version for dev builds 2019-09-11 20:27:47 +02:00
Moritz Bunkus
ea62983378
build system: no deprecated-copy warnings on gcc ≥ 9
Too many warnings at this point.
2019-08-08 19:03:16 +02:00
Moritz Bunkus
218e5b5ccd
build system: fix xml-to-html dependencies in man2html targets 2019-08-06 20:42:43 +02:00
Moritz Bunkus
a831dd8e4f
avoid pedantic warning when building fmt
Actual warning:

lib/fmt/include/fmt/format.h:3475:55: warning: ISO C++ did not adopt string literal operator templates taking an argument pack of characters [-Wpedantic]
 3475 | FMT_CONSTEXPR internal::udl_formatter<Char, CHARS...> operator""_format() {
      |                                                       ^~~~~~~~

This has already been fixed in fmt's master branch.
2019-07-08 18:45:24 +02:00
Moritz Bunkus
b582811653
libEBML, libMatroska: update to releases 1.3.9/1.5.2 2019-05-27 22:15:20 +02:00
Moritz Bunkus
61b8dfd203
build system: create ebml_export.h if using internal libEBML 2019-05-25 12:24:38 +02:00
Moritz Bunkus
573ee904a6
build system: Rakefile cleanup 2019-04-13 17:21:30 +02:00
Moritz Bunkus
f56bc4ff3f
build system: fix selecting -fstack-protector-strong
gcc >= 4.9.0 and clang >= 3.5.0 support it.
2019-04-13 17:21:20 +02:00
Moritz Bunkus
0c3f81fef3
build system: only use -Wno-extra-semi with gcc 8 or any clang 2019-04-12 18:35:38 +02:00
Moritz Bunkus
a7f6a21d3c
translations: for .h files to be treated as C++
Otherwise xgettext will recognize them as C files and complain about
the usage of digit separators.
2019-04-11 09:12:35 +02:00
Moritz Bunkus
60bf14c88f
build system: don't use -Wdouble-promotion
Can't get rid of one particular warning on clang.
2019-02-23 21:11:19 +01:00
Moritz Bunkus
8e45394048
build system: add several more warning flags & fix results part 3 2019-02-23 21:11:19 +01:00
Moritz Bunkus
b6e79797bb
build system: add several more warning flags & fix results 2019-02-23 21:11:19 +01:00
Moritz Bunkus
9a084c268f
build system: add several warning flags & fix results 2019-02-23 21:11:19 +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
71865d9081
macOS build: don't use visibility compiler flags
According to issue #2508 a self-compiled version of `mkvextract`
misbehaves if the option `-fvisibility=hidden` is used. As building my
own DMG without the option works just fine, and as the resulting
programs work fine, too, I'll simply drop both flags from the build
process altogether.

Fixes #2508.
2019-02-13 13:35:49 +01:00