[libcamera-devel] [PATCH v2 1/3] apps: qcam: Port to Qt 6
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Wed Apr 17 17:41:56 CEST 2024
On Tue, Apr 16, 2024 at 07:14:35PM +0100, Kieran Bingham wrote:
> Quoting Neal Gompa via libcamera-devel (2024-01-21 22:39:53)
> > 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.
>
> With Ubuntu 24.04 release 'imminent' (as well as the next libcamera-0.3
> after I can merge the softISP) I believe it's time to merge this patch.
Unless I'm mistaken, Ubuntu will still ship Qt5, so there's no urgency.
I'm not opposed to this patch though (once fixed), as Qt6 seems to be
available everywhere.
> However ...
>
> > 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
>
> Having installed these packages - I still can't enable qcam. So we must
> be missing some more dependencies that need to be listed here.
>
>
> --
> Kieran
>
>
> >
> > 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)
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list