[v1] meson: Add options to control drm, sdl2, jpeg dependencies of `cam`
diff mbox series

Message ID 20260130111133.1576210-1-barnabas.pocze@ideasonboard.com
State New
Headers show
Series
  • [v1] meson: Add options to control drm, sdl2, jpeg dependencies of `cam`
Related show

Commit Message

Barnabás Pőcze Jan. 30, 2026, 11:11 a.m. UTC
Previously it was not possible to control these dependencies, they were
always used if found. Furthermore, libjpeg was unnecessarily added as a
dependency even if sdl2 was not found. Fix that by introducing three
options to control the dependencies.

Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
---
 meson_options.txt        | 15 +++++++++++++++
 src/apps/cam/meson.build | 36 ++++++++++++++++++++++--------------
 2 files changed, 37 insertions(+), 14 deletions(-)

Comments

Milan Zamazal Jan. 30, 2026, 1:59 p.m. UTC | #1
Barnabás Pőcze <barnabas.pocze@ideasonboard.com> writes:

> Previously it was not possible to control these dependencies, they were
> always used if found. Furthermore, libjpeg was unnecessarily added as a
> dependency even if sdl2 was not found. Fix that by introducing three
> options to control the dependencies.

If it is useful:

Reviewed-by: Milan Zamazal <mzamazal@redhat.com>

> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
> ---
>  meson_options.txt        | 15 +++++++++++++++
>  src/apps/cam/meson.build | 36 ++++++++++++++++++++++--------------
>  2 files changed, 37 insertions(+), 14 deletions(-)
>
> diff --git a/meson_options.txt b/meson_options.txt
> index 8121cf5d2..58cf52ad1 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -16,6 +16,21 @@ option('cam',
>          value : 'auto',
>          description : 'Compile the cam test application')
>  
> +option('cam-output-kms',
> +        type : 'feature',
> +        value : 'auto',
> +        description : 'Enable KMS output in the cam application')
> +
> +option('cam-output-sdl2',
> +        type : 'feature',
> +        value : 'auto',
> +        description : 'Enable SDL2 output in the cam application')
> +
> +option('cam-output-sdl2-jpeg',
> +        type : 'feature',
> +        value : 'auto',
> +        description : 'Enable JPEG support in the SDL2 output in the cam application')
> +
>  option('documentation',
>          type : 'feature',
>          value : 'auto',
> diff --git a/src/apps/cam/meson.build b/src/apps/cam/meson.build
> index cd7f120f9..c73c0f5d9 100644
> --- a/src/apps/cam/meson.build
> +++ b/src/apps/cam/meson.build
> @@ -17,9 +17,18 @@ cam_sources = files([
>  
>  cam_cpp_args = [apps_cpp_args]
>  
> -libdrm = dependency('libdrm', required : false)
> -libjpeg = dependency('libjpeg', required : false)
> -libsdl2 = dependency('SDL2', required : false)
> +cam_deps = [
> +    libatomic,
> +    libcamera_public,
> +    libevent,
> +    libthreads,
> +    libyaml,
> +    libtiff,
> +]
> +
> +libdrm = dependency('libdrm', required : get_option('cam-output-kms'))
> +libsdl2 = dependency('SDL2', required : get_option('cam-output-sdl2'))
> +libjpeg = dependency('libjpeg', required : get_option('cam-output-sdl2-jpeg'))
>  
>  if libdrm.found()
>      cam_cpp_args += [ '-DHAVE_KMS' ]
> @@ -27,6 +36,9 @@ if libdrm.found()
>          'drm.cpp',
>          'kms_sink.cpp'
>      ])
> +    cam_deps += [
> +        libdrm,
> +    ]
>  endif
>  
>  if libsdl2.found()
> @@ -37,28 +49,24 @@ if libsdl2.found()
>          'sdl_texture_1plane.cpp',
>          'sdl_texture_yuv.cpp',
>      ])
> +    cam_deps += [
> +        libsdl2,
> +    ]
>  
>      if libjpeg.found()
>          cam_cpp_args += ['-DHAVE_LIBJPEG']
>          cam_sources += files([
>              'sdl_texture_mjpg.cpp'
>          ])
> +        cam_deps += [
> +            libjpeg,
> +        ]
>      endif
>  endif
>  
>  cam  = executable('cam', cam_sources,
>                    link_with : apps_lib,
> -                  dependencies : [
> -                      libatomic,
> -                      libcamera_public,
> -                      libdrm,
> -                      libevent,
> -                      libjpeg,
> -                      libsdl2,
> -                      libtiff,
> -                      libthreads,
> -                      libyaml,
> -                  ],
> +                  dependencies : cam_deps,
>                    cpp_args : cam_cpp_args,
>                    install : true,
>                    install_tag : 'bin')

Patch
diff mbox series

diff --git a/meson_options.txt b/meson_options.txt
index 8121cf5d2..58cf52ad1 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -16,6 +16,21 @@  option('cam',
         value : 'auto',
         description : 'Compile the cam test application')
 
+option('cam-output-kms',
+        type : 'feature',
+        value : 'auto',
+        description : 'Enable KMS output in the cam application')
+
+option('cam-output-sdl2',
+        type : 'feature',
+        value : 'auto',
+        description : 'Enable SDL2 output in the cam application')
+
+option('cam-output-sdl2-jpeg',
+        type : 'feature',
+        value : 'auto',
+        description : 'Enable JPEG support in the SDL2 output in the cam application')
+
 option('documentation',
         type : 'feature',
         value : 'auto',
diff --git a/src/apps/cam/meson.build b/src/apps/cam/meson.build
index cd7f120f9..c73c0f5d9 100644
--- a/src/apps/cam/meson.build
+++ b/src/apps/cam/meson.build
@@ -17,9 +17,18 @@  cam_sources = files([
 
 cam_cpp_args = [apps_cpp_args]
 
-libdrm = dependency('libdrm', required : false)
-libjpeg = dependency('libjpeg', required : false)
-libsdl2 = dependency('SDL2', required : false)
+cam_deps = [
+    libatomic,
+    libcamera_public,
+    libevent,
+    libthreads,
+    libyaml,
+    libtiff,
+]
+
+libdrm = dependency('libdrm', required : get_option('cam-output-kms'))
+libsdl2 = dependency('SDL2', required : get_option('cam-output-sdl2'))
+libjpeg = dependency('libjpeg', required : get_option('cam-output-sdl2-jpeg'))
 
 if libdrm.found()
     cam_cpp_args += [ '-DHAVE_KMS' ]
@@ -27,6 +36,9 @@  if libdrm.found()
         'drm.cpp',
         'kms_sink.cpp'
     ])
+    cam_deps += [
+        libdrm,
+    ]
 endif
 
 if libsdl2.found()
@@ -37,28 +49,24 @@  if libsdl2.found()
         'sdl_texture_1plane.cpp',
         'sdl_texture_yuv.cpp',
     ])
+    cam_deps += [
+        libsdl2,
+    ]
 
     if libjpeg.found()
         cam_cpp_args += ['-DHAVE_LIBJPEG']
         cam_sources += files([
             'sdl_texture_mjpg.cpp'
         ])
+        cam_deps += [
+            libjpeg,
+        ]
     endif
 endif
 
 cam  = executable('cam', cam_sources,
                   link_with : apps_lib,
-                  dependencies : [
-                      libatomic,
-                      libcamera_public,
-                      libdrm,
-                      libevent,
-                      libjpeg,
-                      libsdl2,
-                      libtiff,
-                      libthreads,
-                      libyaml,
-                  ],
+                  dependencies : cam_deps,
                   cpp_args : cam_cpp_args,
                   install : true,
                   install_tag : 'bin')