[libcamera-devel] [PATCH v2] meson: Only build pipeline handlers needed in the host architecture

Javier Martinez Canillas javierm at redhat.com
Sat Dec 24 11:28:28 CET 2022


By default all pipeline handlers are built, regardless on whether these
are needed in the host architecture or not. It makes more sense to build
only the pipeline handlers that will be used for the given architecture.

Let's do that by default now, but still allow to build the other pipeline
handlers if needed, by using the `pipelines` meson option. For example:

  $ meson build
  ...
    Configuration
    Enabled pipelines        : ipu3
                               simple
                               uvcvideo
    Enabled IPA modules      : ipu3
  ...

  $ meson build -Dpipelines="ipu3,raspberrypi,rkisp1" -Dtest=true
  ...
    Configuration
    Enabled pipelines        : ipu3
                               raspberrypi
                               rkisp1
                               vimc
    Enabled IPA modules      : ipu3
                               raspberrypi
                               rkisp1
                               vimc
  ...

Suggested-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
Signed-off-by: Javier Martinez Canillas <javierm at redhat.com>
Reviewed-by: Umang Jain <umang.jain at ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>
---

Changes in v2:
- Add collected reviewed-by tags.
- Don't include ipu3 pipeline handler for aarch64 (pinchartl).
- Only include the simple pipeline handler for arm and aarch64 (pinchartl).
- Remove spaces in pipelines meson option description (pinchartl).
- Wrap pipelines meson option choice list (pinchartl).

 meson.build       | 17 +++++++++++++++++
 meson_options.txt | 14 ++++++++++++--
 2 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/meson.build b/meson.build
index d02f9917965c..df9099d0b996 100644
--- a/meson.build
+++ b/meson.build
@@ -164,6 +164,23 @@ liblttng = dependency('lttng-ust', required : get_option('tracing'))
 # are enabled.
 pipelines = get_option('pipelines')
 
+if pipelines.contains('auto')
+    host_cpu = host_machine.cpu_family()
+    pipelines = []
+    if host_cpu == 'x86' or host_cpu == 'x86_64'
+        pipelines += ['ipu3']
+    elif host_cpu == 'aarch64'
+        pipelines += ['imx8-isi', 'rkisp1']
+    endif
+
+    if host_cpu == 'arm' or host_cpu == 'aarch64'
+        pipelines += ['raspberrypi', 'simple']
+    endif
+
+    # Always include the uvcvideo pipeline handler.
+    pipelines += ['uvcvideo']
+endif
+
 if get_option('test') and 'vimc' not in pipelines
     message('Enabling vimc pipeline handler to support tests')
     pipelines += ['vimc']
diff --git a/meson_options.txt b/meson_options.txt
index 1ba6778ce257..1a68bcd37e88 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -37,8 +37,18 @@ option('lc-compliance',
 
 option('pipelines',
         type : 'array',
-        choices : ['imx8-isi', 'ipu3', 'raspberrypi', 'rkisp1', 'simple', 'uvcvideo', 'vimc'],
-        description : 'Select which pipeline handlers to include')
+        value : ['auto'],
+        choices : [
+            'auto',
+            'imx8-isi',
+            'ipu3',
+            'raspberrypi',
+            'rkisp1',
+            'simple',
+            'uvcvideo',
+            'vimc'
+        ],
+        description : 'Select which pipeline handlers to build. If it this set to auto, all the pipelines applicable to the target architecture will be built.')
 
 option('qcam',
         type : 'feature',
-- 
2.38.1



More information about the libcamera-devel mailing list