17 # FIXME: -Dqt5=enabled is silently ignored if a c++ compiler is not found
18 if have_cxx and build_gstgl
19 qt5_mod = import('qt5')
20 qt5qml_dep = dependency('qt5', modules : ['Core', 'Gui', 'Qml', 'Quick'],
21 required: get_option('qt5'))
23 # FIXME Add a way to get that information out of the qt5 module
24 moc = find_program('moc-qt5', 'moc', required : get_option('qt5'))
25 if qt5qml_dep.found() and moc.found()
28 have_qpa_include = false
29 have_qt_windowing = false
31 # Attempt to find the QPA header either through pkg-config (preferred) or qmake
32 # This semi-matches what meson does internally with the qt5 module
33 # FIXME Add a way to get some of this information out of the qt5 module
34 if not have_qpa_include
36 qt5core_dep = dependency('Qt5Core', required: false)
37 if qt5core_dep.found() and qt5core_dep.type_name() == 'pkgconfig'
38 qt_version = qt5core_dep.version()
39 qt_include_dir = qt5core_dep.get_pkgconfig_variable('includedir')
40 qpa_include_path = join_paths(qt_include_dir, 'QtGui', qt_version, 'QtGui')
41 if cxx.has_header('qpa/qplatformnativeinterface.h',
42 dependencies : qt5core_dep,
43 args : '-I' + qpa_include_path)
44 qt_defines += '-DHAVE_QT_QPA_HEADER'
45 qt_defines += '-I' + qpa_include_path
46 have_qpa_include = true
47 message('Found QPA header using pkg-config')
51 if not have_qpa_include
52 qmake = find_program('qmake-qt5', 'qmake')
54 qt_version = run_command(qmake, '-query', 'QT_VERSION').stdout().strip()
55 qt_include_dir = run_command(qmake, '-query', 'QT_INSTALL_HEADERS').stdout().strip()
56 qpa_include_path = join_paths(qt_include_dir, 'QtGui', qt_version, 'QtGui')
57 if cxx.has_header('qpa/qplatformnativeinterface.h',
58 args : '-I' + qpa_include_path)
59 qt_defines += '-DHAVE_QT_QPA_HEADER'
60 qt_defines += '-I' + qpa_include_path
61 have_qpa_include = true
62 message('Found QPA header using qmake')
67 # Try to come up with all the platform/winsys combinations that will work
69 if gst_gl_have_window_x11 and gst_gl_have_platform_glx
71 qt5x11extras = dependency('qt5', modules : ['X11Extras'], required : false)
72 if qt5x11extras.found()
73 optional_deps += qt5x11extras
74 qt_defines += ['-DHAVE_QT_X11']
75 have_qt_windowing = true
79 if gst_gl_have_platform_egl
81 if gst_gl_have_window_wayland
83 qt5waylandextras = dependency('qt5', modules : ['WaylandClient'], required : false)
84 if qt5waylandextras.found()
85 optional_deps += qt5waylandextras
86 qt_defines += ['-DHAVE_QT_WAYLAND']
87 have_qt_windowing = true
90 if gst_gl_have_window_android
93 qt5androidextras = dependency('qt5', modules : ['AndroidExtras'], required : false)
94 if qt5androidextras.found()
95 optional_deps += qt5androidextras
96 # also uses the HAVE_QT_EGLFS define below
97 have_qt_windowing = true
101 qt_defines += ['-DHAVE_QT_EGLFS']
102 have_qt_windowing = true
105 if gst_gl_have_platform_wgl and gst_gl_have_window_win32
106 # for wglMakeCurrent()
108 opengl32_dep = cc.find_library('opengl32', required : false)
109 if opengl32_dep.found()
110 qt_defines += ['-DHAVE_QT_WIN32']
111 optional_deps += opengl32_dep
112 have_qt_windowing = true
116 # FIXME: OSX/iOS definitions
120 moc_files = qt5_mod.preprocess(moc_headers : moc_headers)
121 gstqmlgl = library('gstqmlgl', sources, moc_files,
122 cpp_args : gst_plugins_good_args + qt_defines,
123 link_args : noseh_link_args,
124 include_directories: [configinc, libsinc],
125 dependencies : [glib_deps, gst_dep, gstvideo_dep, gstgl_dep, qt5qml_dep, optional_deps],
127 install_dir : plugins_install_dir)
128 pkgconfig.generate(gstqmlgl, install_dir : plugins_pkgconfig_install_dir)