ipa: meson: Allow nested IPA directory structures

The current IPA build files require a flat directory structure for the
IPAs. Modify the build files to remove this restriction and allow a
directory structure such as:

src/ipa
  |- raspberrypi
      |- common
      |- cam_helpers
      |- controller
      |- vc4
  |- rkisp1
  |- ipu3

where each subdir (e.g. raspberrypi/common, raspberrypi/cam_helper) has
its own meson.build file. Such a directory structure will be introduced
for the Raspberry Pi IPA in a future commit.

Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Naushir Patuck 2023-05-03 13:20:25 +01:00 committed by Laurent Pinchart
parent 6388449a79
commit e8526c0c2b
6 changed files with 32 additions and 9 deletions

View file

@ -262,7 +262,7 @@ py_mod.find_installation('python3', modules: py_modules)
## Summarise Configurations ## Summarise Configurations
summary({ summary({
'Enabled pipelines': pipelines, 'Enabled pipelines': pipelines,
'Enabled IPA modules': enabled_ipa_modules, 'Enabled IPA modules': enabled_ipa_names,
'Tracing support': tracing_enabled, 'Tracing support': tracing_enabled,
'Android support': android_enabled, 'Android support': android_enabled,
'GStreamer support': gst_enabled, 'GStreamer support': gst_enabled,

View file

@ -29,3 +29,5 @@ if ipa_sign_module
install : false, install : false,
build_by_default : true) build_by_default : true)
endif endif
ipa_names += ipa_name

View file

@ -36,16 +36,31 @@ if get_option('test') and 'vimc' not in ipa_modules
endif endif
enabled_ipa_modules = [] enabled_ipa_modules = []
enabled_ipa_names = []
ipa_names = []
# The ipa-sign-install.sh script which uses the ipa_names variable will itself subdirs = []
# prepend MESON_INSTALL_DESTDIR_PREFIX to each ipa module name, therefore we
# must not include the prefix string here.
foreach pipeline : pipelines foreach pipeline : pipelines
if ipa_modules.contains(pipeline) if not ipa_modules.contains(pipeline)
subdir(pipeline) continue
ipa_names += ipa_install_dir / ipa_name + '.so'
enabled_ipa_modules += pipeline
endif endif
enabled_ipa_names += pipeline
# Allow multi-level directory structuring for the IPAs if needed.
pipeline = pipeline.split('/')[0]
if pipeline in subdirs
continue
endif
subdir(pipeline)
subdirs += pipeline
endforeach
# The ipa-sign-install.sh script which uses the enabled_ipa_modules variable
# will itself prepend MESON_INSTALL_DESTDIR_PREFIX to each ipa module name,
# therefore we must not include the prefix string here.
foreach ipa_name : ipa_names
enabled_ipa_modules += ipa_install_dir / ipa_name + '.so'
endforeach endforeach
if ipa_sign_module if ipa_sign_module
@ -54,5 +69,5 @@ if ipa_sign_module
# install time, which invalidates the signatures. # install time, which invalidates the signatures.
meson.add_install_script('ipa-sign-install.sh', meson.add_install_script('ipa-sign-install.sh',
ipa_priv_key.full_path(), ipa_priv_key.full_path(),
ipa_names) enabled_ipa_modules)
endif endif

View file

@ -64,3 +64,5 @@ if ipa_sign_module
endif endif
subdir('data') subdir('data')
ipa_names += ipa_name

View file

@ -29,3 +29,5 @@ if ipa_sign_module
install : false, install : false,
build_by_default : true) build_by_default : true)
endif endif
ipa_names += ipa_name

View file

@ -21,3 +21,5 @@ if ipa_sign_module
endif endif
subdir('data') subdir('data')
ipa_names += ipa_name