Commit Graph

47 Commits

Author SHA1 Message Date
Moritz Bunkus
a03df87fe8
configure: adjust to autoconf 2.71 & require at least 2.69 2022-11-04 18:56:43 +01:00
Moritz Bunkus
1c05841113
SVG icon theme: add SVG variants of most raster icons
Part of the fix of #3335.
2022-04-24 13:41:20 +02:00
Moritz Bunkus
f73d30ac51
GUI: Qt6: actively check if QMediaPlayer is available instead of version check 2022-02-21 22:51:16 +01:00
Moritz Bunkus
b489d894fe
build system: Qt6: fix plugin detection for static mingw builds 2022-02-21 22:51:15 +01:00
Moritz Bunkus
ca6405324c
GUI: Windows: use native code for taskbar progress instead of Qt's QWinTaskbarProgress
The "Windows extras" module was removed in Qt6.
2022-02-20 16:29:00 +01:00
John Einar Reitan
d70bf97e8f Only check for Qt GUI modules if building the GUI 2021-08-13 14:00:40 +02:00
Moritz Bunkus
783229560f
configure: require Qt 5 or 6; add --disable-gui for disabling the GUI
This is in preparation of fixing #3137. The plan is not to use
libfile's MIME type detection but Qt's. As both mkvmerge and the GUI
need to auto-detect the MIME type, this means that the command line
applications will have to be linked against Qt's core library (but not
the GUI libraries).
2021-06-15 22:39:33 +02:00
Moritz Bunkus
8cf8251d6b
Qt 6 detection: try compiling & linking a test program
Prevents using the system qmake6 in cross-compilation situations.

Also cleans up the paths to `lconvert`, `moc`, `rcc` and `uic` from
the Qt 6 detection so that Qt 5 can detect their own version.

Part of the implementation of #3115.
2021-05-24 21:12:39 +02:00
Moritz Bunkus
2848178815
configure: detect & use Qt 6 if present, prefer over Qt 5
Qt 6

`configure` will look for Qt 6 first and only continue looking for Qt
5 if Qt 6 isn't found or disabled via `--disable-qt6`.

Qt 6 detection works by first looking for the `qmake6` binary. Its location
can be specified with the `--with-qmake6=…` option.

All other Qt 6 related facts (such as compiler & linker flags or the
position of the other required tools such as `lconvert`, `moc`, `rcc` and
`uic`) will be derived from the output generated by `qmake6`.

Note that at this point Qt 6 is not yet supported for the cross-compilation
build to Windows, nor is a static Qt 6 build supported yet.

Note that the command line options `--enable-static-qt`,
`--with-qt-pkg-config-modules` and `--without-qt-pkg-config` only apply to
the Qt 5 and have no effect on Qt 6.

Qt 5

The options for specifying the position of the tools (`--with-moc=…`,
`--with-rcc=…` and `--with-uic=…`) have been removed. Their position
will now be derived from the output generated by `qmake`.

General

Completely disabling the GUI now requires passing both `--disable-qt6`
and `--disable-qt` options.

Part of the implementation of #3115.
2021-05-24 20:53:09 +02:00
Moritz Bunkus
c84dff0086
configure: Qt 5: remove old and not used anymore variable enable_gui 2021-05-24 20:42:08 +02:00
Moritz Bunkus
dd8a03a909
fix detection of QtDBus
Fixes #2886.
2020-07-30 13:34:06 +02: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
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
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
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
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
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
66c7078bd7 GUI: run programs: implement action "playing an audio file" 2017-04-04 19:26:54 +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
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
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
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
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
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
479f5d3670 build system: build Qt translation files on MingW 2015-06-03 20:06:34 +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
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
Moritz Bunkus
4a610ce9c1 Build system: Qt: link against and load platform plugin on Windows 2014-09-07 21:30:50 +02: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