diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2022-08-11 07:54:55 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2022-08-11 07:55:45 +0200 |
commit | d36b6b1373e30b7e51af4c3b612e87d6487ba7ee (patch) | |
tree | 3160910f84238d27fa3fee656bfa2b170240ed3d | |
parent | 1a35b5abf481d8ecd25866599d1416897a5721f8 (diff) |
interface: Add enabled set
-rw-r--r-- | config.yml | 1 | ||||
-rw-r--r-- | rtemsspec/interface.py | 13 | ||||
-rw-r--r-- | rtemsspec/tests/test_interface.py | 1 |
3 files changed, 11 insertions, 4 deletions
@@ -109,6 +109,7 @@ appl-config: validation: base-directory: modules/rtems interface: + enabled: [] item-level-interfaces: - /build-options/if/container - /compiler/if/container diff --git a/rtemsspec/interface.py b/rtemsspec/interface.py index 0e49fba3..882c442a 100644 --- a/rtemsspec/interface.py +++ b/rtemsspec/interface.py @@ -646,6 +646,7 @@ class Node: constraints = [ self.substitute_text(parent["text"], parent) for parent in item.parents("constraint") + if parent.is_enabled(self.header_file.enabled) ] if constraints: constraint_content = CContent() @@ -708,7 +709,8 @@ def _bubble_sort(nodes: List[Node]) -> List[Node]: class _HeaderFile: """ A header file. """ - def __init__(self, item: Item, enabled_by_defined: Dict[str, str]): + def __init__(self, item: Item, enabled_by_defined: Dict[str, str], + enabled: List[str]): self._item = item self._content = CContent() self._content.register_license_and_copyrights_of_item(item) @@ -716,6 +718,7 @@ class _HeaderFile: self._includes = [] # type: List[Item] self._nodes = {} # type: Dict[str, Node] self.enabled_by_defined = enabled_by_defined + self.enabled = enabled def add_includes(self, item: Item) -> None: """ Adds the includes of the item to the header file includes. """ @@ -816,13 +819,14 @@ class _HeaderFile: def _generate_header_file(item: Item, domains: Dict[str, str], - enabled_by_defined: Dict[str, str]) -> None: + enabled_by_defined: Dict[str, str], + enabled: List[str]) -> None: domain = item.parent("interface-placement") assert domain["interface-type"] == "domain" domain_path = domains.get(domain.uid, None) if domain_path is None: return - header_file = _HeaderFile(item, enabled_by_defined) + header_file = _HeaderFile(item, enabled_by_defined, enabled) header_file.generate_nodes() header_file.finalize() header_file.write(domain_path) @@ -846,8 +850,9 @@ def generate(config: dict, item_cache: ItemCache) -> None: :param item_cache: The specification item cache containing the interfaces. """ domains = config["domains"] + enabled = config["enabled"] enabled_by_defined = _gather_enabled_by_defined( config["item-level-interfaces"], item_cache) for item in item_cache.all.values(): if item.type == "interface/header-file": - _generate_header_file(item, domains, enabled_by_defined) + _generate_header_file(item, domains, enabled_by_defined, enabled) diff --git a/rtemsspec/tests/test_interface.py b/rtemsspec/tests/test_interface.py index 037dbee9..6a46b837 100644 --- a/rtemsspec/tests/test_interface.py +++ b/rtemsspec/tests/test_interface.py @@ -38,6 +38,7 @@ def test_interface(tmpdir): base_directory = os.path.join(tmpdir, "base") interface_domains = {"/domain-abc": base_directory} interface_config["domains"] = interface_domains + interface_config["enabled"] = [] generate(interface_config, EmptyItemCache()) |