Index: Source/bindings/scripts/compute_interfaces_info_overall.py |
diff --git a/Source/bindings/scripts/compute_interfaces_info_overall.py b/Source/bindings/scripts/compute_interfaces_info_overall.py |
index 6e311211ae92b78a02160b5ce58392bcc0f48f64..912d8db4545e7c7aa6291148f9dc266d0250832b 100755 |
--- a/Source/bindings/scripts/compute_interfaces_info_overall.py |
+++ b/Source/bindings/scripts/compute_interfaces_info_overall.py |
@@ -68,6 +68,11 @@ Current keys are: |
'include_path': path for use in C++ #include directives |
'dependencies_full_paths': paths to dependencies (for merging into main) |
'dependencies_include_paths': paths for use in C++ #include directives |
+ 'dependencies_other_component_full_paths': |
+ paths to dependencies (cannot merge because of other component) |
+ 'dependencies_other_component_include_paths': |
+ paths for use in C++ #include directives because of dependencies in |
+ other component |
Note that all of these are stable information, unlikely to change without |
moving or deleting files (hence requiring a full rebuild anyway) or significant |
@@ -268,13 +273,36 @@ def compute_interfaces_info_overall(info_individuals): |
for implemented_interface_info in implemented_interfaces_info: |
if (implemented_interface_info['is_legacy_treat_as_partial_interface'] and |
implemented_interface_info['include_path']): |
- implemented_interfaces_include_paths.append(implemented_interface_info['include_path']) |
+ implemented_interfaces_include_paths.append( |
+ implemented_interface_info['include_path']) |
+ |
+ dependencies_full_paths = implemented_interfaces_full_paths |
+ dependencies_include_paths = implemented_interfaces_include_paths |
+ dependencies_other_component_full_paths = [] |
+ dependencies_other_component_include_paths = [] |
+ |
+ component = idl_filename_to_component(interface_info['full_path']) |
+ for full_path in partial_interfaces_full_paths: |
+ partial_interface_component = idl_filename_to_component(full_path) |
+ if component == partial_interface_component: |
+ dependencies_full_paths.append(full_path) |
+ else: |
+ dependencies_other_component_full_paths.append(full_path) |
+ |
+ for include_path in partial_interfaces_include_paths: |
+ partial_interface_component = idl_filename_to_component(include_path) |
+ if component == partial_interface_component: |
+ dependencies_include_paths.append(include_path) |
+ else: |
+ dependencies_other_component_include_paths.append(include_path) |
interface_info.update({ |
- 'dependencies_full_paths': (partial_interfaces_full_paths + |
- implemented_interfaces_full_paths), |
- 'dependencies_include_paths': (partial_interfaces_include_paths + |
- implemented_interfaces_include_paths), |
+ 'dependencies_full_paths': dependencies_full_paths, |
+ 'dependencies_include_paths': dependencies_include_paths, |
+ 'dependencies_other_component_full_paths': |
+ dependencies_other_component_full_paths, |
+ 'dependencies_other_component_include_paths': |
+ dependencies_other_component_include_paths, |
}) |
# Clean up temporary private information |