Commit Graph

253 Commits

Author SHA1 Message Date
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
Moritz Bunkus
493cda8dd1 configure, README, NEWS: fix requirements for libEBML and libMatroska
Fixes #2088.
2017-09-01 09:39:28 +02:00
Moritz Bunkus
c262de4888 configure: require libEBML v1.3.5
libEBML v1.3.5 contains the following change:

------------------------------------------------------------
EbmlMaster::CheckMandatory: only fail for default-value-less mandatory elements

The function EbmlMaster::CheckMandatory() will now only return false
if a mandatory element is missing for which there's no default value
in the specifications. This means that callers such as
EbmlMaster::UpdateSize() and by extension EbmlMaster::Render() will
not insist on all mandatory elements being present anymore, but only
those for which there's no default value.
------------------------------------------------------------

This allows mkvmerge, mkvpropedit and the GUI's header editor to only
actually add those elements that have to be added to a master before
writing it to the file. Adding e.g. the TrackLanguage element isn't
necessary anymore if should be set to "eng" anyway as "eng" is its
default value. Before the change libEBML was insisting on it being
present in the "TrackEntry" master, though, no matter what it was set
to.
2017-08-12 10:51:33 +02:00
Moritz Bunkus
7c6e16b436 configure: EBML FindNextChild check: cached variable names must contain _cv_ 2017-08-06 15:52:18 +02:00
Moritz Bunkus
5904da93bf all: libEBML now contains FindNextChild; use that if present 2017-08-06 13:54:49 +02:00
Moritz Bunkus
d31fb3961a configure: add option for disabling the update check code 2017-07-23 17:25:13 +02:00
Moritz Bunkus
41c0eac064 configure: DocBook detection: don't use bashisms
The `{variant-a,variant-b}` globbing doesn't work on dash. Patch by
Steve Dibb. Fixes #2054.
2017-07-22 20:27:59 +02:00
Moritz Bunkus
f8e425714e configure: look for nlohmann/json.hpp first, json.hpp second
The upstream project intends the include files to be installed in
`$includedir/nlohmann/json.hpp`,
e.g. `/usr/include/nlohmann/json.hpp`. Debian did not follow that
recommendation and installed them directly in `$includedir`. Therefore
`configure` was only looking for the latter, not the former.

However, Debian will soon follow suit. Therefore detection has been
extended to check for the intended location first.

Fixes #2048.
2017-07-17 20:58:19 +02:00
Moritz Bunkus
504209ce71 configure: options for enabling address/undefined behavior sanitizers
The `Rakefile` has supported both for a while now, but the values had
to be set manually in `build-config`.
2017-07-15 16:59:58 +02:00
Moritz Bunkus
ed6586569a build system: require Boost 1.49.0 or newer
Earlier versions fail to build on both my development system as well
as my CentOS 7 BuildBot CI instance. Therefore I cannot properly
support that version anymore.

See #2037.
2017-07-11 19:44:27 +02:00
Moritz Bunkus
bc89d0268c configure: don't abort if moc/uic/rcc/qmake is found but too old
Fixes #1979.
2017-05-09 20:54:15 +02:00
Moritz Bunkus
aa959233b5 configure: link gtest with pthreads during check
googletest on openSUSE uses threads, so…
2017-04-20 22:01:24 +02:00
Moritz Bunkus
66c7078bd7 GUI: run programs: implement action "playing an audio file" 2017-04-04 19:26:54 +02:00
Moritz Bunkus
1752969589 configure: use AC_CHECK_TOOL for strings
Fixes #1923.
2017-03-27 19:27:00 +02:00
Moritz Bunkus
ce1bdcb1b1 build system: re-work static Qt plugin handling
This changes several things:

1. The path to the plugins is no longer determined by looking through
   the include flags in QT_LIBS. This process was broken for paths
   with file names. Instead, qmake is queried for the installation
   location for the plugins.

2. Similar to qmake, configure now generates a file for both mkvinfo
   and mkvtoolnix-gui that includes the appropriate #include
   directives for the chosen plugins. Therefore no additional #ifdef…
   logic is required for the static plugins in other parts of the two
   programs.

3. For platforms other than Windows or macOS, configure will now add
   the Xcb platform integration plugin. This is required for using a
   static Qt on Linux. This change should implement #1898.
2017-03-09 22:06:40 +01:00
Moritz Bunkus
8b295e1332 build system: fix pugixml again
Another part of the implementation of #1891.
2017-02-13 21:37:29 +01:00
Moritz Bunkus
fb306e3921 build system: link against system pugixml if library's found
Fixes the incomplete implementation of #1891.
2017-02-13 21:00:00 +01:00
Moritz Bunkus
c1213feac3 build system: try detecting pugixml via pkg-config with fallback
Implements #1891.
2017-02-13 20:47:45 +01:00
Moritz Bunkus
6f7b760d34 build system: explicitly check for the C++ preprocessor
Otherwise setting PKG_CONFIG_PATH may interfere, and CXXCPP won't be
set. This in turn leads to problems detecting Boost.
2017-02-13 20:21:27 +01:00
Moritz Bunkus
113450f23c build system: make xsltproc, DocBook mandatory for man pages
Additionally don't try to build or install the translated man pages if
po4a wasn't found or doesn't work.

See #1865.
2017-01-25 21:19:10 +01:00
Moritz Bunkus
f07203fb42 configure: add -stdc++ flag during check for nlohmann-jsoncpp
See #1858.
2017-01-24 22:44:58 +01:00
Moritz Bunkus
05919681f6 configure: find DocBook man page stylesheets on openSUSE 2017-01-22 22:00:23 +01:00
Moritz Bunkus
e52f878720 build system: look for & use system-wide version of nlohmann json-cpp
If one is found, it will be used. Otherwise the included version in
lib/nlohmann-json will be used.

Implements #1858.
2017-01-20 23:07:34 +01:00
Moritz Bunkus
d7b691b6f5 all: remove --check-for-updates command line option & dependency on CURL 2016-12-30 15:01:30 +01:00
Moritz Bunkus
cfe6e85eb6 build system: don't use -fipa-icf optimization on i686 mingw target
The result are segfaulting executables.
2016-12-22 18:20:25 +01:00
Moritz Bunkus
5097f0da6c GUIs: require Qt v5.3.0 or newer & remove compatibility code for older versions 2016-12-17 12:41:24 +01:00
Moritz Bunkus
0271688719 build system: remove checks for etags/ebrowse 2016-12-16 14:15:39 +01:00
Moritz Bunkus
c827f9d0b6 build system: require more C++14 features
The source will start using the following features from the C++14
standard:

• the "std::make_unique()" Standard Library function
• digit separators
• binary literals
• generic lambdas

gcc's v4.9.x and clang's v3.4 are the oldest releases to support all of
them.
2016-12-13 22:37:14 +01:00
Moritz Bunkus
f3900953d4 build system: rename c++11.m4 to c++-features.m4
I'll add tests for features from later standard versions soon.
2016-12-13 22:16:28 +01:00
Moritz Bunkus
449e2bf82c GUI: mux: cache file identification results
The GUI will now cache file identification results on disc. When the
same file is identified a second time the cached results are used
instead leading to a huge speed gain, especially when scanning Blu-ray
playlists multiple times.

Both positive and negative results are cached.

Cache results are invalidated whenever one of the following conditions
is met:

• if the source file's modification time stamp differs from when the
  result was cached
• if the source file's size in bytes differs from when the result was
  cached
• if the current version of MKVToolNix GUI differs from the version used
  to write the cached result
2016-12-03 12:24:17 +01:00
Moritz Bunkus
d7afc32412 build system: look for libQt5PlatformSupport.a and link it if found
Newer versions of Qt (definitely 5.7.0 but not yet 5.5.1) contain part
of the platform-specific code not in e.g. libqwindows.a but in
libQt5PlatformSupport.a. That library doesn't seem to be mentioned in
the LDFLAGS gathered from pkg-config. But its functionality is actually
required for libqwindows.a.

Therefore look for the library manually and link it if it's found.

Required in at least the static mingw cross-compiled build.
2016-10-29 00:24:21 +02:00
Moritz Bunkus
6d85fbc046 build system: require libEBML v1.3.4, libMatroska v1.4.5 2016-07-13 18:39:12 +02:00
Moritz Bunkus
684f7c7c7b configure: enable C++11/14 during Qt detection
Starting with v5.7.0 Qt requires the compiler to be in C++11 mode.
2016-07-02 20:23:36 +02:00
Moritz Bunkus
8b6b876d2a configure: add switch for circumventing pkg-config for Qt detection
Normally configure uses pkg-config for detecting Qt and setting
QT_CFLAGS and QT_LIBS. With this option configure won't use pkg-config
and rely on the user having set both variables before running
configure. This enables using Qt on systems where no pkg-config files
are generated (e.g. Qt 5.6.0 on MacOS with frameworks enabled).

See https://github.com/Homebrew/homebrew/pull/50234
2016-03-20 10:01:14 +01:00
Moritz Bunkus
5c6cf41028 build system: find DocBook styleheets on Fedora
Fixes #1607.
2016-02-22 10:50:24 +01:00
Moritz Bunkus
d867a79d97 build system: use {EBML,MATROSKA}_{CFLAGS,LIBS} from pkg-config if not internal 2015-11-21 11:56:27 +01:00
Moritz Bunkus
d0193dc354 build system: only use -O2 with 32bit mingw cross compilers >= 5.1.0
MXE has recently reverted to 4.9.x, and that line still produces fine
binaries with -O3.
2015-11-17 22:16:22 +01:00
Moritz Bunkus
bc596fa06c configure: don't check for libintl if --without-gettext is used
Fixes #1501.
2015-11-08 20:40:48 +01:00
Moritz Bunkus
3a8acead8d build system: only use -O2 with 32bit mingw cross compilers
Recent versions of the MXE mingw cross compilers produce stack-smashing
binaries with -O3 for some of the tools.
2015-10-22 11:36:42 +02:00
Moritz Bunkus
004585c79f build system: require libEBML 1.3.3, libMatroska 1.4.4 2015-10-20 16:13:14 +02:00
Moritz Bunkus
20e26c840b build system: remove option --without-mkvtoolnix-gui 2015-08-15 20:33:46 +02:00
Moritz Bunkus
64465ce72b all: remove support for wxWidgets; remove mmg 2015-08-15 20:33:46 +02:00
Moritz Bunkus
c14a01aed6 build system: Qt: only look for platform plugin for static Qt 2015-08-15 14:06:11 +02:00
Moritz Bunkus
943ee96fc9 build system: Qt: don't assume GNU sed
\(…\) seems to be a GNU extension to sed, and MacOS uses BSD sed which
doesn't support it.
2015-08-15 14:06:07 +02:00
Moritz Bunkus
94eb9af366 build system: enable gcc's stack protection
Implements #1370.
2015-08-11 15:02:58 +02:00
Moritz Bunkus
8683e553f3 build system: update Boost configure macros from www.gnu.org
Those new versions seem to improve support for more basic shells like
dash.
2015-08-09 21:04:04 +02:00
Moritz Bunkus
f8e00b68be build system: add configure option for disabling libmagic 2015-07-21 16:42:07 +02:00