[libcamera-devel] [PATCH v2] meson: Only build pipeline handlers needed in the host architecture
Kieran Bingham
kieran.bingham at ideasonboard.com
Sat Dec 24 16:47:10 CET 2022
Hi Javier
Quoting Javier Martinez Canillas (2022-12-24 10:28:28)
> 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>
I like this :-)
Reviewed-by: Kieran Bingham <kieran.bingham 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')
perhaps on top of this patch we can try an "all" target option.
if contains auto or all:
> + host_cpu = host_machine.cpu_family()
> + pipelines = []
> + if host_cpu == 'x86' or host_cpu == 'x86_64'
and then "or all" on these too, would let us easily keep builds as
-Dpipelines=all.
but I can experiment on top of this patch when merged to avoid the yaks.
> + 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