[libcamera-devel] [PATCH v2 1/3] apps: qcam: Port to Qt 6

Neal Gompa neal at gompa.dev
Sun Jan 21 23:39:53 CET 2024


Open source Qt 5 has been effectively end of life since the release
of Qt 6, and Qt 6 has current LTS releases now.

This change ports qcam to Qt 6.2 and drops some of the baggage related
to Qt 5 that is no longer applicable.

Signed-off-by: Neal Gompa <neal at gompa.dev>
---
 README.rst                |  2 +-
 meson.build               |  2 +-
 src/apps/qcam/meson.build | 45 +++++++++++----------------------------
 3 files changed, 15 insertions(+), 34 deletions(-)

diff --git a/README.rst b/README.rst
index 315738ee..6f1c9302 100644
--- a/README.rst
+++ b/README.rst
@@ -88,7 +88,7 @@ for cam: [optional]
         - libsdl2-dev: Enables the SDL sink
 
 for qcam: [optional]
-        libtiff-dev qtbase5-dev qttools5-dev-tools
+        libtiff-dev qt6-base-dev qt6-tools-dev-tools
 
 for tracing with lttng: [optional]
         liblttng-ust-dev python3-jinja2 lttng-tools
diff --git a/meson.build b/meson.build
index cb6b666a..4c315e2a 100644
--- a/meson.build
+++ b/meson.build
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: CC0-1.0
 
 project('libcamera', 'c', 'cpp',
-    meson_version : '>= 0.60',
+    meson_version : '>= 0.63',
     version : '0.2.0',
     default_options : [
         'werror=true',
diff --git a/src/apps/qcam/meson.build b/src/apps/qcam/meson.build
index 6cf4c171..c7fcfbeb 100644
--- a/src/apps/qcam/meson.build
+++ b/src/apps/qcam/meson.build
@@ -1,13 +1,13 @@
 # SPDX-License-Identifier: CC0-1.0
 
-qt5 = import('qt5')
-qt5_dep = dependency('qt5',
+qt6 = import('qt6')
+qt6_dep = dependency('qt6',
                      method : 'pkg-config',
-                     modules : ['Core', 'Gui', 'Widgets'],
+                     modules : ['Core', 'Gui', 'OpenGL', 'OpenGLWidgets', 'Widgets'],
                      required : get_option('qcam'),
-                     version : '>=5.4')
+                     version : '>=6.2')
 
-if not qt5_dep.found()
+if not qt6_dep.found()
     qcam_enabled = false
     subdir_done()
 endif
@@ -20,46 +20,27 @@ qcam_sources = files([
     'main.cpp',
     'main_window.cpp',
     'message_handler.cpp',
+    'viewfinder_gl.cpp',
     'viewfinder_qt.cpp',
 ])
 
 qcam_moc_headers = files([
     'cam_select_dialog.h',
     'main_window.h',
+    'viewfinder_gl.h',
     'viewfinder_qt.h',
 ])
 
 qcam_resources = files([
     'assets/feathericons/feathericons.qrc',
+    'assets/shader/shaders.qrc',
 ])
 
-qt5_cpp_args = [apps_cpp_args, '-DQT_NO_KEYWORDS']
+qt6_cpp_args = [apps_cpp_args, '-DQT_NO_KEYWORDS']
 
-if cxx.has_header_symbol('QOpenGLWidget', 'QOpenGLWidget',
-                         dependencies : qt5_dep, args : '-fPIC')
-    qcam_sources += files([
-        'viewfinder_gl.cpp',
-    ])
-    qcam_moc_headers += files([
-        'viewfinder_gl.h',
-    ])
-    qcam_resources += files([
-        'assets/shader/shaders.qrc'
-    ])
-endif
-
-# gcc 9 introduced a deprecated-copy warning that is triggered by Qt until
-# Qt 5.13. clang 10 introduced the same warning, but detects more issues
-# that are not fixed in Qt yet. Disable the warning manually in both cases.
-if ((cc.get_id() == 'gcc' and cc.version().version_compare('>=9.0') and
-     qt5_dep.version().version_compare('<5.13')) or
-    (cc.get_id() == 'clang' and cc.version().version_compare('>=10.0')))
-    qt5_cpp_args += ['-Wno-deprecated-copy']
-endif
-
-resources = qt5.preprocess(moc_headers : qcam_moc_headers,
+resources = qt6.preprocess(moc_headers : qcam_moc_headers,
                            qresources : qcam_resources,
-                           dependencies : qt5_dep)
+                           dependencies : qt6_dep)
 
 qcam  = executable('qcam', qcam_sources, resources,
                    install : true,
@@ -69,6 +50,6 @@ qcam  = executable('qcam', qcam_sources, resources,
                        libatomic,
                        libcamera_public,
                        libtiff,
-                       qt5_dep,
+                       qt6_dep,
                    ],
-                   cpp_args : qt5_cpp_args)
+                   cpp_args : qt6_cpp_args)
-- 
2.43.0



More information about the libcamera-devel mailing list