Browse Source

qt: update to Qt 6

pull/162/head
Fatih Uzunoglu 3 years ago
committed by Steve Lhomme
parent
commit
d8e9e1a2b6
  1. 160
      configure.ac
  2. 102
      modules/gui/qt/Makefile.am
  3. 136
      modules/gui/qt/meson.build
  4. 5
      modules/meson.build
  5. 6
      test/meson.build

160
configure.ac

@ -3993,35 +3993,39 @@ AC_ARG_ENABLE([qt],
enable_qt="no"
])
])
have_qt5_x11="no"
have_qt5_gtk="no"
have_qt5_quick_test="no"
have_qt5_declarative_private="no"
have_qt5_gui_private="no"
have_qt_gtk="no"
have_qt_quick_test="no"
have_qt_declarative_private="no"
have_qt_gui_private="no"
have_qt_core_private="no"
AS_IF([test "${enable_qt}" != "no"], [
PKG_CHECK_MODULES([QT], [Qt5Core >= 5.12.0 Qt5Widgets Qt5Gui Qt5Quick Qt5QuickWidgets Qt5QuickControls2 Qt5Svg], [
PKG_CHECK_MODULES([QT5_X11], [Qt5X11Extras], [
have_qt5_x11="yes"
],[
AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
])
dnl TODO
PKG_CHECK_MODULES([QT5_WAYLAND], [Qt5WaylandClient], [
have_qt5_wayland="yes"
],[
AC_MSG_WARN([Not building Qt Interface with wayland support.])
])
QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
QT_INCLUDE_DIRECTORY="$(eval $PKG_CONFIG --variable=includedir Qt5Core)"
QT_VERSION="$(eval $PKG_CONFIG --modversion Qt5Gui)"
AC_PATH_PROGS(QMAKE, [qmake], qmake, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
AC_PATH_PROGS(QMLCACHE, [qmlcachegen-qt5 qmlcachegen], no, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
AS_IF([test "${QMLCACHE}" = "no"], [
dnl Note that Qt < 6.2.5 does not provide pc files!
QT_MINIMUM_VERSION=6.2
PKG_CHECK_MODULES([QT], m4_foreach([pkg], [Qt6Core Qt6Widgets Qt6Gui Qt6Qml Qt6QmlModels Qt6Quick Qt6QuickControls2 Qt6QuickLayouts Qt6QuickTemplates2 Qt6ShaderTools Qt6Svg Qt6Network], [pkg >= ${QT_MINIMUM_VERSION}]), [
QT_PREFIX_PATH="$(eval $PKG_CONFIG --variable=prefix Qt6Core)"
QT_PLUGINS_PATH="${QT_PREFIX_PATH}/plugins"
PKG_CHECK_MODULES([QT_WAYLAND], [Qt6WaylandClient >= ${QT_MINIMUM_VERSION}], [
have_qt_wayland="yes"
],[:])
QT_BIN_DIRECTORY="$(eval $PKG_CONFIG --variable=bindir Qt6Core)"
QT_LIBEXEC_DIRECTORY="$(eval $PKG_CONFIG --variable=libexecdir Qt6Core)"
QT_INCLUDE_DIRECTORY="$(eval $PKG_CONFIG --variable=includedir Qt6Core)"
QT_LIB_DIRECTORY="$(eval $PKG_CONFIG --variable=libdir Qt6Core)"
QT_VERSION_CORE="$(eval $PKG_CONFIG --modversion Qt6Core)"
QT_VERSION_GUI="$(eval $PKG_CONFIG --modversion Qt6Gui)"
QT_VERSION_QML="$(eval $PKG_CONFIG --modversion Qt6Qml)"
QT_VERSION_QUICK="$(eval $PKG_CONFIG --modversion Qt6Quick)"
AC_PATH_PROGS(QMAKE, [qmake], qmake, ["${QT_BIN_DIRECTORY}"])
AC_PATH_PROGS(MOC, [moc], moc, ["${QT_LIBEXEC_DIRECTORY}"])
AC_PATH_PROGS(RCC, [rcc], rcc, ["${QT_LIBEXEC_DIRECTORY}"])
AC_PATH_PROGS(UIC, [uic], uic, ["${QT_LIBEXEC_DIRECTORY}"])
AC_PATH_PROGS(QMLCACHEGEN, [qmlcachegen], no, ["${QT_LIBEXEC_DIRECTORY}"])
AS_IF([test "${QMLCACHEGEN}" = "no"], [
AC_MSG_WARN([qmlcachegen not found])
])
@ -4029,45 +4033,46 @@ AS_IF([test "${enable_qt}" != "no"], [
AS_IF([test "$PYTHON3" != "no" && ${PYTHON3} ${srcdir}/buildsystem/check_qml_module.py \
--qmake "${QMAKE}" \
--modules \
QtQml.Models=2.12 \
QtQuick.Layouts=1.12 \
QtQuick.Window=2.12 \
QtQuick.Controls=2.12 \
QtGraphicalEffects=1.12],
QtQml.Models="" \
QtQuick.Layouts="" \
QtQuick.Window="" \
QtQuick.Controls="" \
Qt5Compat.GraphicalEffects=""],
[],[
AC_MSG_WARN([qt runtime dependencies are missing, disabling qt interface])
enable_qt="no"
])
PKG_CHECK_MODULES([QT5_QUICK_TEST], [Qt5QuickTest], [
AS_IF([test "$PYTHON3" != "no" && ${PYTHON3} ${srcdir}/buildsystem/check_qml_module.py --qmake "${QMAKE}" --modules QtTest=1.12], [
have_qt5_quick_test="yes"
PKG_CHECK_MODULES([QT_QUICK_TEST], [Qt6QuickTest >= ${QT_MINIMUM_VERSION}], [
AS_IF([test "$PYTHON3" != "no" && ${PYTHON3} ${srcdir}/buildsystem/check_qml_module.py --qmake "${QMAKE}" --modules QtTest=""], [
have_qt_quick_test="yes"
], [])
],[
])
dnl Check private headers avaibility
dnl Check private headers availability
VLC_SAVE_FLAGS
CPPFLAGS="${CPPFLAGS} ${QT_CFLAGS}"
CPPFLAGS="${CPPFLAGS} -I${QT_INCLUDE_DIRECTORY}/QtCore/${QT_VERSION}"
CPPFLAGS="${CPPFLAGS} -I${QT_INCLUDE_DIRECTORY}/QtCore/${QT_VERSION}/QtCore"
CPPFLAGS="${CPPFLAGS} -I${QT_INCLUDE_DIRECTORY}/QtGui/${QT_VERSION}"
CPPFLAGS="${CPPFLAGS} -I${QT_INCLUDE_DIRECTORY}/QtGui/${QT_VERSION}/QtGui"
CPPFLAGS="${CPPFLAGS} -I${QT_INCLUDE_DIRECTORY}/QtQml/${QT_VERSION}"
CPPFLAGS="${CPPFLAGS} -I${QT_INCLUDE_DIRECTORY}/QtQml/${QT_VERSION}/QtQml"
CPPFLAGS="${CPPFLAGS} -I${QT_INCLUDE_DIRECTORY}/QtQuick/${QT_VERSION}"
CPPFLAGS="${CPPFLAGS} -I${QT_INCLUDE_DIRECTORY}/QtQuick/${QT_VERSION}/QtQuick"
CPPFLAGS="${CPPFLAGS} -I${QT_INCLUDE_DIRECTORY}/QtCore/${QT_VERSION_CORE}"
CPPFLAGS="${CPPFLAGS} -I${QT_INCLUDE_DIRECTORY}/QtCore/${QT_VERSION_CORE}/QtCore"
CPPFLAGS="${CPPFLAGS} -I${QT_INCLUDE_DIRECTORY}/QtGui/${QT_VERSION_GUI}"
CPPFLAGS="${CPPFLAGS} -I${QT_INCLUDE_DIRECTORY}/QtGui/${QT_VERSION_GUI}/QtGui"
CPPFLAGS="${CPPFLAGS} -I${QT_INCLUDE_DIRECTORY}/QtQml/${QT_VERSION_QML}"
CPPFLAGS="${CPPFLAGS} -I${QT_INCLUDE_DIRECTORY}/QtQml/${QT_VERSION_QML}/QtQml"
CPPFLAGS="${CPPFLAGS} -I${QT_INCLUDE_DIRECTORY}/QtQuick/${QT_VERSION_QUICK}"
CPPFLAGS="${CPPFLAGS} -I${QT_INCLUDE_DIRECTORY}/QtQuick/${QT_VERSION_QUICK}/QtQuick"
AS_IF([test "${SYS}" != "mingw32"], [
CPPFLAGS="${CPPFLAGS} -fPIC"
])
AC_LANG_PUSH([C++])
AC_CHECK_HEADERS([private/qobject_p.h],
[have_qt_core_private="yes"], [])
AC_CHECK_HEADERS([private/qquickitem_p.h private/qquickwindow_p.h],
[have_qt5_declarative_private="yes"], [])
[have_qt_declarative_private="yes"], [])
AC_CHECK_HEADERS([QtGui/qpa/qplatformnativeinterface.h],
[have_qt5_gui_private="yes"], [])
[have_qt_gui_private="yes"], [])
AC_LANG_POP([C++])
VLC_RESTORE_FLAGS
@ -4079,39 +4084,15 @@ AS_IF([test "${enable_qt}" != "no"], [
VLC_RESTORE_FLAGS
AS_IF([test "${have_qt_static}" = "yes"],[
PKG_CHECK_MODULES([QT5_PLUGINS], [
qtgraphicaleffectsplugin qtquick2plugin qtquickcontrols2plugin
qtquicktemplates2plugin qquicklayoutsplugin windowplugin
qmlshapesplugin qmlplugin modelsplugin qsvg qsvgicon
qtgraphicaleffectsprivate qjpeg ])
PKG_CHECK_MODULES([QT5_XCB_PLUGINS], [
qxcb-glx-integration qxcb
], [VLC_ADD_LIBS([qt],[${QT5_XCB_PLUGINS_LIBS}])], [:])
PKG_CHECK_MODULES([QT5_WAYLAND_PLUGINS], [
qwayland-generic qwayland-egl xdg-shell
], [VLC_ADD_LIBS([qt],[${QT5_WAYLAND_PLUGINS_LIBS}])], [:])
dnl Platform plugins are mandatory on those platforms, as opposed to
dnl the previous integration for linux which are optional
AS_IF([test "${SYS}" = "mingw32"], [
PKG_CHECK_MODULES([QT5_PLATFORM_PLUGINS], [qwindows qwindowsvistastyle])
PKG_CHECK_MODULES([VLCQTDEPS], [qtvlcdeps], [], [
enable_qt="no"
])
AS_IF([test "${SYS}" = "darwin" -a "${HAVE_OSX}" = 1], [
PKG_CHECK_MODULES([QT5_PLATFORM_PLUGINS], [qcocoa])
])
])
AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
dnl gtk theme provider
PKG_CHECK_MODULES([GTK3], [gtk+-3.0 >= 3.20], [
have_qt5_gtk=yes
], [:])
])
dnl gtk theme provider
PKG_CHECK_MODULES([GTK3], [gtk+-3.0 >= 3.20], [
have_qt_gtk="yes"
], [:])
], [
AS_IF([test -n "${enable_qt}"],[
AC_MSG_ERROR([${QT_PKG_ERRORS}. If you want to build VLC without GUI, pass --disable-qt.])
@ -4125,7 +4106,7 @@ AS_IF([test "${enable_qt}" != "no"], [
AC_ARG_ENABLE([qt-qml-cache],
AS_HELP_STRING([--enable-qt-qml-cache],
[enable qml cache generation]))
AM_CONDITIONAL([HAVE_QMLCACHE], [test "${enable_qt_qml_cache}" = "yes" && test "$QMLCACHE" != "no"])
AM_CONDITIONAL([HAVE_QMLCACHEGEN], [test "${enable_qt_qml_cache}" = "yes" && test "$QMLCACHEGEN" != "no"])
AC_ARG_ENABLE([qt-qml-debug],
AS_HELP_STRING([--enable-qt-qml-debug], [enable qml debugger]))
@ -4134,15 +4115,20 @@ AM_CONDITIONAL(QT_QML_DEBUG, [test "${enable_qt_qml_debug}" = "yes"])
AS_IF([test "${enable_qt}" != "no"], [
ALIASES="${ALIASES} qvlc"
])
AC_SUBST([QT_VERSION])
AC_SUBST([QT_VERSION_CORE])
AC_SUBST([QT_VERSION_GUI])
AC_SUBST([QT_VERSION_QML])
AC_SUBST([QT_VERSION_QUICK])
AC_SUBST([QT_INCLUDE_DIRECTORY])
AC_SUBST([QT_INDIRECT_LIBS])
AM_CONDITIONAL([ENABLE_QT], [test "$enable_qt" != "no"])
AM_CONDITIONAL([HAVE_QT5_X11], [test "${have_qt5_x11}" = "yes"])
AM_CONDITIONAL([HAVE_QT5_WAYLAND], [test "${have_qt5_wayland}" = "yes"])
AM_CONDITIONAL([HAVE_QT5_GTK], [test "${have_qt5_gtk}" = "yes"])
AM_CONDITIONAL([HAVE_QT5_DECLARATIVE_PRIVATE], [test "${have_qt5_declarative_private}" = "yes"])
AM_CONDITIONAL([HAVE_QT5_GUI_PRIVATE], [test "${have_qt5_gui_private}" = "yes"])
AM_CONDITIONAL([HAVE_QT5_QUICK_TEST], [test "${have_qt5_quick_test}" = "yes"])
AM_CONDITIONAL([QT_STATIC], [test "${have_qt_static}" = "yes"])
AM_CONDITIONAL([HAVE_QT_WAYLAND], [test "${have_qt_wayland}" = "yes"])
AM_CONDITIONAL([HAVE_QT_GTK], [test "${have_qt_gtk}" = "yes"])
AM_CONDITIONAL([HAVE_QT_QUICK_TEST], [test "${have_qt_quick_test}" = "yes"])
AM_CONDITIONAL([HAVE_QT_DECLARATIVE_PRIVATE], [test "${have_qt_declarative_private}" = "yes"])
AM_CONDITIONAL([HAVE_QT_GUI_PRIVATE], [test "${have_qt_gui_private}" = "yes"])
AM_CONDITIONAL([HAVE_QT_CORE_PRIVATE], [test "${have_qt_core_private}" = "yes"])
dnl
dnl detect kde4-config patch (used for kde solids).

102
modules/gui/qt/Makefile.am

@ -18,14 +18,14 @@ SUFFIXES += .ui .h .hpp .moc.cpp .qml
TEST_EXTENSIONS = .qml
EXTRA_DIST =
vlc_qt_libs = $(QT5_PLUGINS_LIBS) $(QT5_PLATFORM_PLUGINS_LIBS) $(QT5_XCB_PLUGINS_LIBS) $(QT5_WAYLAND_PLUGINS_LIBS) $(QT_LIBS) $(LIBS_qt)
vlc_qt_libs = $(QT_LIBS) $(VLCQTDEPS_LIBS)
vlc_qt_check_SOURCES = vlc-qt-check.cpp plugins.hpp
vlc_qt_check_CXXFLAGS = $(AM_CXXFLAGS) $(QT_CFLAGS) -fPIC $(CXXFLAGS_qt)
vlc_qt_check_CPPFLAGS = $(AM_CPPFLAGS)
vlc_qt_check_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_qt)
vlc_qt_check_LDADD = $(vlc_qt_libs)
libqt_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) \
libqt_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_qt) \
-DQT_STRICT_ITERATORS \
-I$(srcdir) -I$(builddir) \
-I$(builddir)/dialogs/extended \
@ -38,7 +38,7 @@ libqt_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) \
-I$(builddir)/dialogs/preferences \
-I$(builddir)/dialogs/sout \
-I$(builddir)/dialogs/vlm \
-DQPNI_HEADER=\<$(QT_VERSION)/QtGui/qpa/qplatformnativeinterface.h\>
-DQPNI_HEADER=\<$(QT_VERSION_GUI)/QtGui/qpa/qplatformnativeinterface.h\>
libqt_plugin_la_CXXFLAGS = $(AM_CXXFLAGS) $(QT_CFLAGS) $(CXXFLAGS_qt)
libqt_plugin_la_LIBADD = $(vlc_qt_libs)
@ -47,22 +47,24 @@ if HAVE_DARWIN
libqt_plugin_la_LDFLAGS += -Wl,-framework,Cocoa
endif
if HAVE_X
if HAVE_XCB
libqt_plugin_la_CXXFLAGS += $(XCB_CFLAGS) -DQT5_HAS_X11
libqt_plugin_la_CXXFLAGS += $(XCB_CFLAGS) -DQT_HAS_X11
libqt_plugin_la_LIBADD += $(XCB_LIBS) $(X_LIBS) $(X_PRE_LIB) -lX11
vlc_qt_check_CXXFLAGS += $(XCB_CFLAGS) -DQT5_HAS_X11
vlc_qt_check_CXXFLAGS += $(XCB_CFLAGS) -DQT_HAS_X11
endif
endif
if HAVE_QT5_WAYLAND
libqt_plugin_la_CPPFLAGS += $(QT5_WAYLAND_CFLAGS)
libqt_plugin_la_LIBADD += $(QT5_WAYLAND_LIBS)
vlc_qt_check_CPPFLAGS += $(QT5_WAYLAND_CFLAGS) -DQT5_HAS_WAYLAND
vlc_qt_check_LDADD += $(QT5_WAYLAND_LIBS)
if HAVE_QT_WAYLAND
libqt_plugin_la_CPPFLAGS += $(QT_WAYLAND_CFLAGS)
libqt_plugin_la_LIBADD += $(QT_WAYLAND_LIBS)
vlc_qt_check_CPPFLAGS += $(QT_WAYLAND_CFLAGS) -DQT_HAS_WAYLAND
vlc_qt_check_LDADD += $(QT_WAYLAND_LIBS)
endif
if HAVE_WIN32
libqt_plugin_la_CXXFLAGS += $(LIBCOMCXXFLAGS)
libqt_plugin_la_LIBADD += $(LIBCOM) -lcomctl32 -luuid -ld3d11 -ldwmapi
libqt_plugin_la_LIBADD += $(LIBCOM) -lcomctl32 -luuid -ldwmapi
endif
if UPDATE_CHECK
libqt_plugin_la_CPPFLAGS += -DUPDATE_CHECK
@ -70,28 +72,32 @@ endif
if QT_QML_DEBUG
libqt_plugin_la_CPPFLAGS += -DQT_QML_DEBUG
endif
if HAVE_QT5_GTK
libqt_plugin_la_CPPFLAGS += -DQT5_HAS_GTK
if HAVE_QT_GTK
libqt_plugin_la_CPPFLAGS += -DQT_HAS_GTK
endif
if HAVE_QT_CORE_PRIVATE
libqt_plugin_la_CPPFLAGS += -DQT_CORE_PRIVATE
endif
if HAVE_QT5_GUI_PRIVATE
libqt_plugin_la_CPPFLAGS += -DQT5_GUI_PRIVATE \
-I$(QT_INCLUDE_DIRECTORY)/QtCore/$(QT_VERSION) \
-I$(QT_INCLUDE_DIRECTORY)/QtCore/$(QT_VERSION)/QtCore \
-I$(QT_INCLUDE_DIRECTORY)/QtGui/$(QT_VERSION) \
-I$(QT_INCLUDE_DIRECTORY)/QtGui/$(QT_VERSION)/QtGui
if HAVE_QT_GUI_PRIVATE
libqt_plugin_la_CPPFLAGS += -DQT_GUI_PRIVATE \
-I$(QT_INCLUDE_DIRECTORY)/QtCore/$(QT_VERSION_CORE) \
-I$(QT_INCLUDE_DIRECTORY)/QtCore/$(QT_VERSION_CORE)/QtCore \
-I$(QT_INCLUDE_DIRECTORY)/QtGui/$(QT_VERSION_GUI) \
-I$(QT_INCLUDE_DIRECTORY)/QtGui/$(QT_VERSION_GUI)/QtGui
endif
if HAVE_QT5_DECLARATIVE_PRIVATE
libqt_plugin_la_CPPFLAGS += -DQT5_DECLARATIVE_PRIVATE \
-I$(QT_INCLUDE_DIRECTORY)/QtCore/$(QT_VERSION) \
-I$(QT_INCLUDE_DIRECTORY)/QtCore/$(QT_VERSION)/QtCore \
-I$(QT_INCLUDE_DIRECTORY)/QtGui/$(QT_VERSION) \
-I$(QT_INCLUDE_DIRECTORY)/QtGui/$(QT_VERSION)/QtGui \
-I$(QT_INCLUDE_DIRECTORY)/QtQml/$(QT_VERSION) \
-I$(QT_INCLUDE_DIRECTORY)/QtQml/$(QT_VERSION)/QtQml \
-I$(QT_INCLUDE_DIRECTORY)/QtQuick/$(QT_VERSION) \
-I$(QT_INCLUDE_DIRECTORY)/QtQuick/$(QT_VERSION)/QtQuick
if HAVE_QT_DECLARATIVE_PRIVATE
libqt_plugin_la_CPPFLAGS += -DQT_DECLARATIVE_PRIVATE \
-I$(QT_INCLUDE_DIRECTORY)/QtCore/$(QT_VERSION_CORE) \
-I$(QT_INCLUDE_DIRECTORY)/QtCore/$(QT_VERSION_CORE)/QtCore \
-I$(QT_INCLUDE_DIRECTORY)/QtGui/$(QT_VERSION_GUI) \
-I$(QT_INCLUDE_DIRECTORY)/QtGui/$(QT_VERSION_GUI)/QtGui \
-I$(QT_INCLUDE_DIRECTORY)/QtQml/$(QT_VERSION_QML) \
-I$(QT_INCLUDE_DIRECTORY)/QtQml/$(QT_VERSION_QML)/QtQml \
-I$(QT_INCLUDE_DIRECTORY)/QtQuick/$(QT_VERSION_QUICK) \
-I$(QT_INCLUDE_DIRECTORY)/QtQuick/$(QT_VERSION_QUICK)/QtQuick
endif
@ -544,15 +550,15 @@ endif
# X11 compositor
if HAVE_QT5_X11
if HAVE_X
if HAVE_XCB
if HAVE_XCB_DAMAGE
if HAVE_XCB_XFIXES
libqt_plugin_la_CXXFLAGS += -DQT5_HAS_X11_COMPOSITOR \
$(QT5_X11_CFLAGS) $(XCB_RENDER_CFLAGS) $(XCB_COMPOSITE_CFLAGS) $(XLCB_DAMAGE_CFLAGS) $(XCB_XFIXES_CFLAGS)
libqt_plugin_la_CXXFLAGS += -DQT_HAS_X11_COMPOSITOR \
$(QT_X11_CFLAGS) $(XCB_RENDER_CFLAGS) $(XCB_COMPOSITE_CFLAGS) $(XLCB_DAMAGE_CFLAGS) $(XCB_XFIXES_CFLAGS)
libqt_plugin_la_LIBADD += $(QT5_X11_LIBS) $(XCB_RENDER_LIBS) $(XCB_COMPOSITE_LIBS) $(XCB_DAMAGE_LIBS) $(XCB_XFIXES_LIBS)
libqt_plugin_la_LIBADD += $(QT_X11_LIBS) $(XCB_RENDER_LIBS) $(XCB_COMPOSITE_LIBS) $(XCB_DAMAGE_LIBS) $(XCB_XFIXES_LIBS)
libqt_plugin_la_SOURCES += \
maininterface/compositor_x11.cpp \
@ -581,10 +587,10 @@ endif
# wayland compositor
if HAVE_WAYLAND
if HAVE_QT5_WAYLAND
if HAVE_QT5_GUI_PRIVATE
if HAVE_QT_WAYLAND
if HAVE_QT_GUI_PRIVATE
libqt_plugin_la_CPPFLAGS += -DQT5_HAS_WAYLAND_COMPOSITOR
libqt_plugin_la_CPPFLAGS += -DQT_HAS_WAYLAND_COMPOSITOR
libqt_plugin_la_SOURCES += \
maininterface/compositor_wayland.cpp \
@ -1119,22 +1125,22 @@ if ENABLE_VLM
nodist_libqt_plugin_la_SOURCES += dialogs/vlm/vlm.moc.cpp
endif
if HAVE_QMLCACHE
if HAVE_QMLCACHEGEN
nodist_libqt_plugin_la_SOURCES += qmlcache_loader.cpp
libqt_plugin_la_SOURCES += $(libqt_plugin_la_QML)
.qml.cpp:
$(AM_V_GEN)$(QMLCACHE) --resource=$(srcdir)/vlc.qrc -o $@ $<
$(AM_V_GEN)$(QMLCACHEGEN) --resource=$(srcdir)/vlc.qrc -o $@ $<
.js.cpp:
$(AM_V_GEN)$(QMLCACHE) --resource=$(srcdir)/vlc.qrc -o $@ $<
$(AM_V_GEN)$(QMLCACHEGEN) --resource=$(srcdir)/vlc.qrc -o $@ $<
.mjs.cpp:
$(AM_V_GEN)$(QMLCACHE) --resource=$(srcdir)/vlc.qrc -o $@ $<
$(AM_V_GEN)$(QMLCACHEGEN) --resource=$(srcdir)/vlc.qrc -o $@ $<
qml_cache.qrc: vlc.qrc
$(AM_V_GEN)$(QMLCACHE) --filter-resource-file -o $@ $<
$(AM_V_GEN)$(QMLCACHEGEN) --filter-resource-file -o $@ $<
QRCS_EXCEPT_VLC_QRC = $(filter-out vlc.qrc, $(lib_qt_plugin_la_QRC))
QRCS_EXCEPT_VLC_QRC += qml_cache.qrc
@ -1144,7 +1150,7 @@ resources.cpp: $(QRCS_EXCEPT_VLC_QRC) $(libqt_plugin_la_RES)
#output name matters here
qmlcache_loader.cpp: vlc.qrc qml_cache.qrc $(libqt_plugin_la_QML)
$(AM_V_GEN)$(QMLCACHE) --resource-file-mapping=$<=qml_cache.qrc $< -o $@
$(AM_V_GEN)$(QMLCACHEGEN) --resource-file-mapping=$<=qml_cache.qrc $< -o $@
else
@ -1155,7 +1161,7 @@ resources.cpp: $(lib_qt_plugin_la_QRC) $(libqt_plugin_la_RES) $(libqt_plugin_la_
endif
if HAVE_QT5_GTK
if HAVE_QT_GTK
libqt_gtktheme_plugin_la_CXXFLAGS = $(AM_CXXFLAGS) $(GTK3_CFLAGS)
libqt_gtktheme_CPPFLAGS = $(AM_CPPFLAGS)
libqt_gtktheme_plugin_la_LDFLAGS = $(AM_LDFLAGS)
@ -1202,14 +1208,14 @@ TESTS = base_model_test
QML_LOG_COMPILER = $(builddir)/qml_test -input
if HAVE_QT5_QUICK_TEST
if HAVE_QT_QUICK_TEST
qml_test_SOURCES = tests/qml_test.cpp
nodist_qml_test_SOURCES = resources.cpp
if HAVE_QMLCACHE
if HAVE_QMLCACHEGEN
nodist_qml_test_SOURCES += qmlcache_loader.cpp $(libqt_plugin_la_QML)
endif
qml_test_CXXFLAGS = $(AM_CXXFLAGS) $(QT_CFLAGS) -fPIC $(CXXFLAGS_qt) ${QT5_QUICK_TEST_CFLAGS} -DQUICK_TEST_SOURCE_DIR="\"${srcdir}/tests\""
qml_test_LDADD = $(QT5_PLUGINS_LIBS) ${QT5_QUICK_TEST_LIBS} $(QT_LIBS) $(LIBS_qt)
qml_test_CXXFLAGS = $(AM_CXXFLAGS) $(QT_CFLAGS) -fPIC $(CXXFLAGS_qt) ${QT_QUICK_TEST_CFLAGS} -DQUICK_TEST_SOURCE_DIR="\"${srcdir}/tests\""
qml_test_LDADD = $(QT_INDIRECT_LIBS) ${QT_QUICK_TEST_LIBS} $(QT_LIBS) $(LIBS_qt)
check_PROGRAMS += qml_test
EXTRA_DIST += tests/tst_FSM.qml
TESTS += tests/tst_FSM.qml

136
modules/gui/qt/meson.build

@ -5,19 +5,22 @@
# Qt is temporarily disabled
subdir_done()
qt5 = import('qt5')
qt6 = import('qt6')
qt_include_dir = include_directories('.')
qt_extra_deps = []
qt_extra_flags = ['-DQT_STRICT_ITERATORS']
qt_cppargs = []
qt_link_args = []
qt5_dep = dependency('qt5',
version: '>=5.12.0',
qt6_dep = dependency('qt6',
# Note that Qt < 6.2.5 does not provide pc files!
version: '>=6.2',
modules: [
'Core', 'Gui', 'Widgets', 'Svg', 'Qml',
'Quick', 'QuickWidgets', 'QuickControls2',
'Core', 'Gui', 'Widgets', 'Svg', 'Qml', 'QmlModels',
'Network', 'QuickLayouts', 'QuickTemplates2',
'Quick', 'QuickControls2', 'ShaderTools'
],
private_headers: true,
required: get_option('qt'))
@ -165,7 +168,8 @@ if host_system == 'windows'
endif
endif
if (xcb_dep.found() and
if (x11_dep.found() and
xcb_dep.found() and
xcb_damage_dep.found() and
xcb_xfixes_dep.found())
moc_headers += files(
@ -492,13 +496,12 @@ if host_system == 'windows'
if cdata.has('HAVE_DCOMP_H')
some_sources += files(
'maininterface/compositor_dcomp.cpp',
'maininterface/compositor_dcomp_acrylicsurface.cpp',
'maininterface/compositor_dcomp_uisurface.cpp',
)
endif
endif
if (xcb_dep.found() and
if (x11_dep.found() and
xcb_dep.found() and
xcb_damage_dep.found() and
xcb_xfixes_dep.found())
some_sources += files(
@ -544,17 +547,18 @@ qml_tests = {
'tst_FSM': files('tests/tst_FSM.qml'),
}
if qt5_dep.found()
qt5pre_qrc = qt5.preprocess(
if qt6_dep.found()
qt6pre_qrc = qt6.preprocess(
qresources: qrc_files,
include_directories: qt_include_dir,
dependencies: qt5_dep)
dependencies: qt6_dep)
qt5pre_files = qt5.preprocess(ui_files: ui_sources,
qt6pre_files = qt6.preprocess(ui_files: ui_sources,
moc_headers: moc_headers,
include_directories: qt_include_dir,
dependencies: qt5_dep)
dependencies: qt6_dep)
qt_bin_directory = qt6_dep.get_variable(pkgconfig: 'bindir')
qt_sources = files('qt.cpp')
@ -565,68 +569,21 @@ if qt5_dep.found()
#error Qt using shared libraries
#endif
'''
if cpp.compiles(qt_static_check, dependencies: qt5_dep, name: 'Qt5 compiled with static libraries')
qt_extra_deps += [
dependency('qtgraphicaleffectsplugin', required: false),
dependency('qtquick2plugin ', required: false),
dependency('qtquickcontrols2plugin', required: false),
dependency('qtquicktemplates2plugin', required: false),
dependency('qquicklayoutsplugin', required: false),
dependency('windowplugin', required: false),
dependency('qmlshapesplugin', required: false),
dependency('qmlplugin', required: false),
dependency('modelsplugin', required: false),
dependency('qsvg', required: false),
dependency('qsvgicon', required: false),
dependency('qtgraphicaleffectsprivate', required: false),
dependency('qjpeg', required: false),
]
qt_extra_deps += [
dependency('qxcb-glx-integration', required: false),
dependency('qxcb', required: false),
]
qt_extra_deps += [
dependency('qwayland-generic', required: false),
dependency('qwayland-egl', required: false),
dependency('xdg-shell', required: false),
]
if host_system == 'windows'
qt_extra_deps += [
dependency('qwindows', required: false),
dependency('qwindowsvistastyle', required: false),
]
endif
if host_system == 'darwin'
qt_extra_deps += [
dependency('qcocoa', required: false),
]
endif
if cpp.compiles(qt_static_check, dependencies: qt6_dep, name: 'Qt6 compiled with static libraries')
qt_extra_deps += dependency('qtvlcdeps', required: true)
endif
if host_system == 'windows'
qt_extra_deps += [
cc.find_library('dwmapi'),
cc.find_library('comctl32'),
cc.find_library('d3d11'),
]
endif
if x11_dep.found()
qt5_x11_dep = dependency('qt5',
modules: ['X11Extras'],
required: get_option('qt'))
qt_extra_flags += '-DQT5_HAS_X11'
qt_extra_deps += [x11_dep, qt5_x11_dep]
endif
if xcb_dep.found()
if x11_dep.found() and xcb_dep.found()
qt_extra_deps += xcb_dep
qt_extra_flags += '-DQT5_HAS_XCB'
qt_extra_deps += x11_dep
qt_extra_flags += '-DQT_HAS_XCB'
if xcb_damage_dep.found() and xcb_xfixes_dep.found()
qt_extra_deps += [
xcb_render_dep,
@ -634,31 +591,31 @@ if qt5_dep.found()
xcb_damage_dep,
xcb_xfixes_dep
]
qt_extra_flags += '-DQT5_HAS_X11_COMPOSITOR'
qt_extra_flags += '-DQT_HAS_X11_COMPOSITOR'
endif
endif
# Qt5 wayland
wayland_qt5_dep = dependency('qt5', modules: ['WaylandClient'], required: false)
if wayland_qt5_dep.found()
qt_extra_deps += [wayland_qt5_dep]
qt_extra_flags += '-DQT5_HAS_WAYLAND'
endif
if get_option('qt_qml_debug')
qt_extra_flags += '-DQT_QML_DEBUG'
endif
#check private headers
if cpp.has_header('private/qquickitem_p.h', dependencies: qt5_dep) \
and cpp.has_header('private/qquickwindow_p.h', dependencies: qt5_dep)
qt_extra_flags += '-DQT5_DECLARATIVE_PRIVATE'
if cpp.has_header('private/qquickitem_p.h', dependencies: qt6_dep) \
and cpp.has_header('private/qquickwindow_p.h', dependencies: qt6_dep)
qt_extra_flags += '-DQT_DECLARATIVE_PRIVATE'
endif
if cpp.has_header('qpa/qplatformnativeinterface.h', dependencies: qt6_dep)
qt_extra_flags += '-DQT_GUI_PRIVATE'
endif
if cpp.has_header('private/qobject_p.h', dependencies: qt6_dep)
qt_extra_flags += '-DQT_CORE_PRIVATE'
endif
if host_system == 'windows'
qt_cppargs += libcom_cppflags
qt_extra_flags += '-DQPNI_HEADER=<' + qt5_dep.version() + '/QtGui/qpa/qplatformnativeinterface.h>'
qt_extra_flags += '-DQPNI_HEADER=<' + qt6_dep.version() + '/QtGui/qpa/qplatformnativeinterface.h>'
endif
if not (host_system in ['windows', 'darwin'])
@ -685,7 +642,7 @@ if qt5_dep.found()
'dependencies' : [gtk_dep]
}
qt_extra_flags += '-DQT5_HAS_GTK'
qt_extra_flags += '-DQT_HAS_GTK'
endif
endif
@ -693,21 +650,22 @@ if qt5_dep.found()
vlc_modules += {
'name' : 'qt',
'sources' : [qt5pre_files, qt5pre_qrc, qt_sources, some_sources],
'dependencies' : [qt_extra_deps, qt5_dep],
'sources' : [qt6pre_files, qt6pre_qrc, qt_sources, some_sources],
'dependencies' : [qt_extra_deps, qt6_dep],
'include_directories' : qt_include_dir,
'c_args' : qt_extra_flags,
'cpp_args' : [qt_extra_flags, qt_cppargs]
'cpp_args' : [qt_extra_flags, qt_cppargs],
'link_args' : qt_link_args
}
test_qt5_dep = dependency('qt5', modules: ['QuickTest'], required: false)
if test_qt5_dep.found()
test_qt6_dep = dependency('qt6', modules: ['QuickTest'], required: false)
if test_qt6_dep.found()
qml_test = executable(
'qml_test',
files('tests/qml_test.cpp'),
qt5pre_qrc,
qt6pre_qrc,
build_by_default: false,
dependencies: [test_qt5_dep],
dependencies: [test_qt6_dep],
cpp_args: ['-DQUICK_TEST_SOURCE_DIR="' + meson.current_source_dir() + '/tests"']
)
foreach test_name, test_file : qml_tests
@ -728,7 +686,7 @@ if qt5_dep.found()
'util/locallistcacheloader.hpp'),
'suite': ['qt'],
'link_with': [libvlccore],
'dependencies': [qt5_dep, qt_extra_deps],
'dependencies': [qt6_dep, qt_extra_deps],
}
endif

5
modules/meson.build

@ -280,16 +280,17 @@ subdir('lua')
# This has to be declared here as it needs to end up
# in the modules folder, not in gui/qt/ subfolder as
# vlc-static would not find it there.
if qt5_dep.found()
if qt6_dep.found()
executable('vlc-qt-check',
files('gui/qt/vlc-qt-check.cpp'),
dependencies: [qt5_dep, qt_extra_deps],
dependencies: [qt6_dep, qt_extra_deps],
include_directories: [vlc_include_dirs],
build_by_default: true,
install: true,
install_dir: get_option('libexecdir'),
c_args : qt_extra_flags,
cpp_args : qt_extra_flags,
link_args : qt_link_args,
)
endif

6
test/meson.build

@ -56,10 +56,10 @@ foreach vlc_test: vlc_tests
endif
moc_sources = []
if vlc_test.has_key('moc_headers') and qt5_dep.found()
moc_sources += qt5.preprocess(moc_headers: vlc_test['moc_headers'],
if vlc_test.has_key('moc_headers') and qt6_dep.found()
moc_sources += qt6.preprocess(moc_headers: vlc_test['moc_headers'],
include_directories: qt_include_dir,
dependencies: qt5_dep)
dependencies: qt6_dep)
endif
test(vlc_test['name'],

Loading…
Cancel
Save