The executable headers on Mac OS contain paths to shared libraries. When
building the disk image these absolute paths must be changed into ones
relative to the executable's location so that the end user doesn't have
to install those libraries (Qt in this case) system-wide.
Unfortunately there may not be enough room in the headers for this
substitution. The additional linker flag "-headerpad_max_install_names"
forces the linker to reserve enough space.
This is a regression introduced in
8ca1160de0 which was supposed to fix
--sub-charset having an effect on files with a byte-order
mark (BOM).
Problem is that the supposed fix also made the subtitle packetizer only
recode if a character set was explicitly given even for files which do
not contain a BOM. Instead it should recode from the system's character
set in such a case. This is done if charset_converter_c::init() is
called with an empty string. Unfortunately commit 8ca1160 changed the
packetizer not to call charset_converter_c::init() if the given
character set is empty.
Thee semantics are:
- "recode" is not set if the source is known to be in UTF-8 already,
e.g. if the track is read from an SRT file with a BOM or if it's read
from a Matroska file.
- "is_utf8" is set if the source is known to be in UTF-8 for other
reasons.
Therefore if recode is set and is_utf8 isn't then the conversion must
take place no matter if --sub-charset is given or not. If it is
given (m_ti.m_sub_charset is not empty) then use that;
otherwise (m__ti.m_sub_charset is empty) use the system's character
set.
Fixes#1639.
- fix is a combination of 95c2edd3 and cee1debe progression
- 95c2edd3 masked a cee1debe regression
When pch is enabled we must establish a .moco => .moc dependency
(regressed by cee1debe).
Other changes are cosmetic.
Without a call to UpdateSize() the actual size of the chapters to be
written would not be known. Therefore the decision whether or not to
overwrite the void placeholder reserved for chapters would be made based
on wrong data. In effect mkvmerge was always trying to overwrite the
void which ultimately failed because it was actually calling
UpdateSize() and saw that the new elements wouldn't fit.
This affected chapters generated with --generate-chapters but not
chapters added through other means (e.g. --chapters or when reading them
from other source files). For the latter other code paths were already
calling UpdateSize() in appropriate places.
The error was that a dependency was set from the source files to the
pre-compiled header (e.g. src/mkvmerge/mkvmerge.cpp =>
src/common/common_pch.h.pch). The dependency must be for the object
file, though, otherwise the source files will always be considered to be
out of date.
- convert gcc to use -include
- add clang support for -include
- new target namespace: pch (invoke rake -T or pch:overview for details)
- move pch logic into rake.d/pch.rb
- convert a few troublesome source files from ISO-8859-1 -> UTF-8
- add persistent config: config.pch.json
- add TTY support for running commands with filters (keeps pretty
color diagnostics even when filtering compiler stdout/stderr)
- for fun try:
drake "pch[pretty]"
drake -j4
drake pch:status