meson: Rework automatic pipeline selection
The supported pipelines are listed in three places: the meson_options.txt file, the defined array when a user selects -Dpipelines="all", and arrays defined when the default -Dpipelines="auto" is selected. This can be hard to maintain and error prone. Rework the definition of pipeline selection to a single table which specifies the architecture(s) that the pipeline handler supports and iterate it to handle the special cases for 'all', 'auto' and 'test'. The current behaviour such that 'all' takes precedence over 'auto' is maintained, and 'test' is now extended such that additional test pipeline handlers can easily be introduced. The existing implementation defines the i.MX8-ISI and RKISP1 pipeline handlers as only supported by 'aarch64'. This conversion changes the behaviour such that those pipeline handlers are now supported on both 'arm' and 'aarch64' as each of those platforms could support a 32-bit ARM build. Suggested-by: Javier Martinez Canillas <javierm@redhat.com> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
4133dbe2b3
commit
8f85c024f9
1 changed files with 28 additions and 29 deletions
55
meson.build
55
meson.build
|
@ -164,42 +164,41 @@ liblttng = dependency('lttng-ust', required : get_option('tracing'))
|
|||
|
||||
# Pipeline handlers
|
||||
#
|
||||
# Tests require the vimc pipeline handler, include it automatically when tests
|
||||
# are enabled.
|
||||
pipelines = get_option('pipelines')
|
||||
|
||||
if pipelines.contains('all')
|
||||
pipelines = [
|
||||
'imx8-isi',
|
||||
'ipu3',
|
||||
'raspberrypi',
|
||||
'rkisp1',
|
||||
'simple',
|
||||
'uvcvideo',
|
||||
'vimc',
|
||||
]
|
||||
endif
|
||||
arch_arm = ['arm', 'aarch64']
|
||||
arch_x86 = ['x86', 'x86_64']
|
||||
pipelines_support = {
|
||||
'imx8-isi': arch_arm,
|
||||
'ipu3': arch_x86,
|
||||
'raspberrypi': arch_arm,
|
||||
'rkisp1': arch_arm,
|
||||
'simple': arch_arm,
|
||||
'uvcvideo': ['any'],
|
||||
'vimc': ['test'],
|
||||
}
|
||||
|
||||
if pipelines.contains('auto')
|
||||
if pipelines.contains('all')
|
||||
pipelines = pipelines_support.keys()
|
||||
elif 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']
|
||||
foreach pipeline, archs : pipelines_support
|
||||
if host_cpu in archs or 'any' in archs
|
||||
pipelines += pipeline
|
||||
endif
|
||||
|
||||
if host_cpu == 'arm' or host_cpu == 'aarch64'
|
||||
pipelines += ['raspberrypi', 'simple']
|
||||
endif
|
||||
|
||||
# Always include the uvcvideo pipeline handler.
|
||||
pipelines += ['uvcvideo']
|
||||
endforeach
|
||||
endif
|
||||
|
||||
if get_option('test') and 'vimc' not in pipelines
|
||||
message('Enabling vimc pipeline handler to support tests')
|
||||
pipelines += ['vimc']
|
||||
# Tests require the vimc pipeline handler, include it automatically when tests
|
||||
# are enabled.
|
||||
if get_option('test')
|
||||
foreach pipeline, archs : pipelines_support
|
||||
if 'test' in archs and pipeline not in pipelines
|
||||
message('Enabling ' + pipeline + ' pipeline handler for tests')
|
||||
pipelines += pipeline
|
||||
endif
|
||||
endforeach
|
||||
endif
|
||||
|
||||
# Utilities are parsed first to provide support for other components.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue