summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNaushir Patuck <naush@raspberrypi.com>2023-05-03 13:20:25 +0100
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2023-05-04 19:08:23 +0300
commite8526c0c2bc6f36663039cb8de740759cf9028d7 (patch)
treeabdc3c9a792fdf2c41b57eb586ac22bd29b32e15
parent6388449a790a610718a86aed585da1096f707159 (diff)
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>
-rw-r--r--meson.build2
-rw-r--r--src/ipa/ipu3/meson.build2
-rw-r--r--src/ipa/meson.build31
-rw-r--r--src/ipa/raspberrypi/meson.build2
-rw-r--r--src/ipa/rkisp1/meson.build2
-rw-r--r--src/ipa/vimc/meson.build2
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