From e8526c0c2bc6f36663039cb8de740759cf9028d7 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Wed, 3 May 2023 13:20:25 +0100 Subject: 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 Reviewed-by: Jacopo Mondi Reviewed-by: Laurent Pinchart Signed-off-by: Laurent Pinchart --- meson.build | 2 +- src/ipa/ipu3/meson.build | 2 ++ src/ipa/meson.build | 31 +++++++++++++++++++++++-------- src/ipa/raspberrypi/meson.build | 2 ++ src/ipa/rkisp1/meson.build | 2 ++ src/ipa/vimc/meson.build | 2 ++ 6 files changed, 32 insertions(+), 9 deletions(-) diff --git a/meson.build b/meson.build index d3289181..2d99029b 100644 --- a/meson.build +++ b/meson.build @@ -262,7 +262,7 @@ py_mod.find_installation('python3', modules: py_modules) ## Summarise Configurations summary({ 'Enabled pipelines': pipelines, - 'Enabled IPA modules': enabled_ipa_modules, + 'Enabled IPA modules': enabled_ipa_names, 'Tracing support': tracing_enabled, 'Android support': android_enabled, 'GStreamer support': gst_enabled, diff --git a/src/ipa/ipu3/meson.build b/src/ipa/ipu3/meson.build index 658e7c9b..66c39843 100644 --- a/src/ipa/ipu3/meson.build +++ b/src/ipa/ipu3/meson.build @@ -29,3 +29,5 @@ if ipa_sign_module install : false, build_by_default : true) endif + +ipa_names += ipa_name diff --git a/src/ipa/meson.build b/src/ipa/meson.build index 76ad5b44..289f861c 100644 --- a/src/ipa/meson.build +++ b/src/ipa/meson.build @@ -36,16 +36,31 @@ if get_option('test') and 'vimc' not in ipa_modules endif enabled_ipa_modules = [] +enabled_ipa_names = [] +ipa_names = [] -# The ipa-sign-install.sh script which uses the ipa_names variable will itself -# prepend MESON_INSTALL_DESTDIR_PREFIX to each ipa module name, therefore we -# must not include the prefix string here. +subdirs = [] foreach pipeline : pipelines - if ipa_modules.contains(pipeline) - subdir(pipeline) - ipa_names += ipa_install_dir / ipa_name + '.so' - enabled_ipa_modules += pipeline + if not ipa_modules.contains(pipeline) + continue + 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 if ipa_sign_module @@ -54,5 +69,5 @@ if ipa_sign_module # install time, which invalidates the signatures. meson.add_install_script('ipa-sign-install.sh', ipa_priv_key.full_path(), - ipa_names) + enabled_ipa_modules) endif diff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build index de78cbd8..95437cbc 100644 --- a/src/ipa/raspberrypi/meson.build +++ b/src/ipa/raspberrypi/meson.build @@ -64,3 +64,5 @@ if ipa_sign_module endif subdir('data') + +ipa_names += ipa_name diff --git a/src/ipa/rkisp1/meson.build b/src/ipa/rkisp1/meson.build index ccb84b27..e813da53 100644 --- a/src/ipa/rkisp1/meson.build +++ b/src/ipa/rkisp1/meson.build @@ -29,3 +29,5 @@ if ipa_sign_module install : false, build_by_default : true) endif + +ipa_names += ipa_name diff --git a/src/ipa/vimc/meson.build b/src/ipa/vimc/meson.build index ecbeee13..264a2d9a 100644 --- a/src/ipa/vimc/meson.build +++ b/src/ipa/vimc/meson.build @@ -21,3 +21,5 @@ if ipa_sign_module endif subdir('data') + +ipa_names += ipa_name -- cgit v1.2.1