Skip to content

Commit

Permalink
meson: Rework automatic pipeline selection
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reviewed-by: Javier Martinez Canillas <[email protected]>
Reviewed-by: Paul Elder <[email protected]>
Reviewed-by: Laurent Pinchart <[email protected]>
Signed-off-by: Kieran Bingham <[email protected]>
  • Loading branch information
kbingham committed Jan 30, 2023
1 parent 4133dbe commit 8f85c02
Showing 1 changed file with 28 additions and 29 deletions.
57 changes: 28 additions & 29 deletions meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -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']
endif

if host_cpu == 'arm' or host_cpu == 'aarch64'
pipelines += ['raspberrypi', 'simple']
endif

# Always include the uvcvideo pipeline handler.
pipelines += ['uvcvideo']
foreach pipeline, archs : pipelines_support
if host_cpu in archs or 'any' in archs
pipelines += pipeline
endif
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.
Expand Down

0 comments on commit 8f85c02

Please sign in to comment.