summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorNaushir Patuck <naush@raspberrypi.com>2023-10-13 08:48:34 +0100
committerKieran Bingham <kieran.bingham@ideasonboard.com>2023-10-18 11:01:23 +0100
commit2ec7f2fede347c3470022b71bc9b6789e7dc43c2 (patch)
tree5d20a65d21bd4c0346095ea2091a72b32a352613 /include
parent9535f2c745944fcacfdd661fdba120800164d037 (diff)
build: ipa: Fix bug in building multiple IPA interfaces with the same mojom file
In the existing meson scripts, an IPA mojom interface file may not be built if: - There are duplicate entries for the mojom file shared by different pipeline handlers in pipeline_ipa_mojom_mapping, and - The IPA is not listed first in pipeline_ipa_mojom_mapping, and - The first listed IPA for the given mojom file is not selected in the build. Fix this by using a separate list of already built mojom files (mojoms_built) instead of overloading use of the existing ipa_mojom_files list. Now, ipa_mojom_files gets filled in outside of the IPA list enumeration loop, this also guarantees the IPA documentation gets built even if the pipeline is not selected. Fixes: 312e9910ba2e ("meson: ipa: Add mapping for pipeline handler to mojom interface file") Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'include')
-rw-r--r--include/libcamera/ipa/meson.build19
1 files changed, 12 insertions, 7 deletions
diff --git a/include/libcamera/ipa/meson.build b/include/libcamera/ipa/meson.build
index e72803b4..f3b4881c 100644
--- a/include/libcamera/ipa/meson.build
+++ b/include/libcamera/ipa/meson.build
@@ -68,29 +68,28 @@ pipeline_ipa_mojom_mapping = {
'vimc': 'vimc.mojom',
}
-ipa_mojom_files = []
-ipa_mojoms = []
-
#
# Generate headers from templates.
#
# TODO Define per-pipeline ControlInfoMap with yaml?
+ipa_mojoms = []
+mojoms_built = []
foreach pipeline, file : pipeline_ipa_mojom_mapping
name = file.split('.')[0]
- # Ensure we do not build duplicate mojom modules
- if file in ipa_mojom_files
+ # Avoid building duplicate mojom interfaces with the same interface file
+ if name in mojoms_built
continue
endif
- ipa_mojom_files += file
-
if pipeline not in pipelines
continue
endif
+ mojoms_built += name
+
# {interface}.mojom-module
mojom = custom_target(name + '_mojom_module',
input : file,
@@ -155,6 +154,12 @@ foreach pipeline, file : pipeline_ipa_mojom_mapping
libcamera_generated_ipa_headers += [header, serializer, proxy_header]
endforeach
+ipa_mojom_files = []
+foreach pipeline, file : pipeline_ipa_mojom_mapping
+ if file not in ipa_mojom_files
+ ipa_mojom_files += file
+ endif
+endforeach
ipa_mojom_files = files(ipa_mojom_files)
# Pass this to the documentation generator in src/libcamera/ipa