Commit Graph

299 Commits

Author SHA1 Message Date
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
Moritz Bunkus
0c06672722 build system: fix Qt platform plugin directory detection
-L can occur multiple times in $QT_LIBS; replace all occurrences.
2015-07-21 10:58:50 +02:00
Moritz Bunkus
9042b3ebf8 GUI: show progress in Windows on task bar button
Implements #1335.
2015-07-04 18:21:26 +02:00
Moritz Bunkus
a7c84f4104 build system: check for the Qt5Network module 2015-06-22 22:02:42 +02:00
Moritz Bunkus
fef12cc386 build system: test for -std=gnu++14/-std=gnu++11 as well
For clang using gnu++14/11 results in a dummy type being defined for
__float128. That, in turn, allows compilation with unmodified libstdc++
and clang.
2015-06-06 11:18:00 +02:00
Moritz Bunkus
479f5d3670 build system: build Qt translation files on MingW 2015-06-03 20:06:34 +02:00
Moritz Bunkus
3b8458f38d build system: compile without maybe-uninitialized warnings for gcc
See e.g.
http://stackoverflow.com/questions/21755206/how-to-get-around-gcc-void-b-4-may-be-used-uninitialized-in-this-funct
2015-05-23 19:45:35 +02:00
Moritz Bunkus
0ea55b2956 configure: don't abort if moc/uic/rcc is not found 2015-05-10 10:43:32 +02:00
Moritz Bunkus
2a57cb4cb0 configure: remove duplicate pkg-config module 2015-05-09 21:46:15 +02:00
Moritz Bunkus
14ff0d12d1 configure: fix Qt test for certain versions 2015-05-09 18:44:03 +02:00
Moritz Bunkus
be6d290129 configure: enable Qt-based GUIs by default 2015-05-09 17:01:25 +02:00
Moritz Bunkus
0046805360 build system: require at least Qt 5.2.0 2015-05-09 16:24:07 +02:00
Moritz Bunkus
f76088d561 configure: don't require Qt5PlatforumSupport to be available 2015-05-09 10:20:57 +02:00
Moritz Bunkus
5ca23b0cdb Qt UIs: only link static platform plugins if building against static Qt 2015-05-01 08:50:48 +02:00
Moritz Bunkus
cbdef0301a configure: try to detect zlib simply via -lz if no pkg-config module installed for it
This can happen e.g. on Mac OS.
2015-04-29 21:50:47 +02:00
Moritz Bunkus
86ee6ce6a9 build system: auto-detect curl-config/wx-config with host prefix 2015-04-28 23:38:20 +02:00
Moritz Bunkus
3d4ebe7d07 build system: prefer curl-config over pkg-config for cflags/libs
On Mac OS »pkg-config --libs libcurl« doesn't output all the required
libraries for some reason (e.g. no »-lssl«). »curl-config --libs« does,
though. So prefer that if it's present and fall back to using pkg-config
otherwise.
2015-04-28 22:31:38 +02:00
Moritz Bunkus
afb6472d6d build system: use correct order for linker flags for internal libEBML/libMatroska
Should fix #1177.
2015-04-28 13:55:10 +02:00
Moritz Bunkus
d3d68641fd version info: remove build time stamp 2015-04-22 12:56:10 +02:00
Moritz Bunkus
093a894fb2 build system: add switches for linking against a static Qt 2015-04-19 19:55:20 +02:00
Moritz Bunkus
728fb0a307 GUI, mkvinfo GUI: link against Cocoa platform plugin on Mac OS 2015-04-19 19:53:12 +02:00
Dominik 'Rathann' Mierzejewski
b4ca4862b4 make system utf8cpp check more robust
Check if utf8to32() and utf32to8() methods are available.
2015-04-02 23:05:01 +02:00
Dominik 'Rathann' Mierzejewski
fcd92036b4 build system: use system version of UTF8-CPP if present 2015-03-31 01:35:23 +02:00
Moritz Bunkus
30a18e07ba rounding: use std::llround() instead of boost::math::llround()
See #1150.
2015-03-28 16:31:09 +01:00
Moritz Bunkus
c2a74a8ebe build system: don't build tools by default but provide configure option 2015-03-25 20:21:59 +01:00
Moritz Bunkus
2fcc79b00c build system: check for and turn off some new warnings from clang++ 3.6
These warnings include -Winconsistent-missing-override and
-Wpotentially-evaluated-expression which are both triggered by code out
of my control (Qt and wxWidgets).
2015-03-25 17:51:30 +01:00
Moritz Bunkus
f3be86478f build system: fix setting USE_CLANG when cache files are used 2015-03-25 17:25:25 +01:00
Moritz Bunkus
baeb11a4a0 math common: remove irnd() in favor of Boost's roundll() 2015-03-25 17:18:20 +01:00
Moritz Bunkus
a2456c1bb6 build system: don't test for -std=c++1y
This won't do what I think it does with clang 3.3: it doesn't seem to
turn on the C++11 features.
2015-03-25 12:20:32 +01:00
Moritz Bunkus
8f7a5b73b1 refactoring: test, fallback impl. for std::make_unique and use it 2015-03-24 21:43:48 +01:00
Moritz Bunkus
4f116a93b5 build system: test for -std=c++14 2015-03-24 17:04:35 +01:00
Moritz Bunkus
e41c70f1e3 refactoring: prefer alias declarations to typedefs 2015-03-24 16:31:52 +01:00
Anthony Violo
b5fd9b0fc0 Remove pthread option, because is not necessary to generate static application 2015-02-23 16:37:17 +01:00
Florent Thiéry
b00eeac099 rename STATIC_LIBS by LINK_STATICALLY because it was misleading 2015-02-19 13:36:40 +01:00
Florent Thiéry
a77e1e3677 fix --enable-static opt_features description 2015-02-19 13:34:44 +01:00
Florent Thiéry
113ffc5447 fix --enable-static flag description 2015-02-19 13:33:06 +01:00
Anthony Violo
1e6b546cd1 Added option to compile static binaries 2015-02-18 11:44:45 +01:00
Moritz Bunkus
b41bd6fd9d configure: be more explicit about which optimizations are enabled 2015-02-12 13:34:38 +01:00
Moritz Bunkus
f7eb73a546 build system: check for checked-out copies of libEBML/libMatroska 2014-12-21 11:19:06 +01:00
Moritz Bunkus
b47ae1ee4b build system: use libEBML/libMatroska via pkg-config 2014-12-21 10:50:26 +01:00
Moritz Bunkus
0c8a8392cf build system: require libMatroska v1.4.2
See #1096.
2014-12-19 14:03:11 +01:00
Moritz Bunkus
6f86568a27 build system: require libEBML 1.3.1
Together with 563be4d and 8415af3 the changes in libEBML 1.3.1 address
the problems in #1089. Therefore: fixes #1089.
2014-12-19 00:32:00 +01:00
Moritz Bunkus
61e9e36592 build sys: use system version of pugixml if present
Fixes #1090.
2014-12-05 12:35:39 +01:00
Moritz Bunkus
4a610ce9c1 Build system: Qt: link against and load platform plugin on Windows 2014-09-07 21:30:50 +02:00
Moritz Bunkus
bd0f5bc0df build system: require Boost's date/time library 2014-05-26 08:49:15 +02:00
Moritz Bunkus
640788f675 build system: build man page translations regardless of level of completion 2014-05-24 20:49:37 +02:00
Moritz Bunkus
108e5dbe71 Merge branch 'master' into mkvtoolnix-gui 2014-02-07 22:30:44 +01:00
Moritz Bunkus
d3cf4f5756 fix compilation on Solaris: ioctl requires more headers 2014-02-05 07:53:34 +01:00
Moritz Bunkus
c2747fca07 fixup! configure: adjust tests for Qt5 2014-01-16 12:14:07 +01:00
Moritz Bunkus
181bde8bcb configure: adjust tests for Qt5 2014-01-16 12:09:30 +01:00
Moritz Bunkus
cd13fb900f build system: use correct processor architecture for 64bit Windows builds 2014-01-02 21:23:13 +01:00
Moritz Bunkus
2670e2e168 build system: use gtest system installation if present 2013-12-25 13:00:28 +01:00
Moritz Bunkus
cf06b42c66 build system: fix wxWidgets detection for wx 2.9x and mingw i686-pc-mingw32 2013-11-02 15:40:27 +01:00
Moritz Bunkus
fddc0b7231 build system: add C++11 flag to wxWidgets test 2013-10-26 18:52:13 +02:00
Moritz Bunkus
5b887990ca build system: use -std=c++11 instead of -std=c++0x if the compiler supports it 2013-10-26 18:50:15 +02:00