summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2022-08-11 07:54:55 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2022-08-11 07:55:45 +0200
commitd36b6b1373e30b7e51af4c3b612e87d6487ba7ee (patch)
tree3160910f84238d27fa3fee656bfa2b170240ed3d
parent1a35b5abf481d8ecd25866599d1416897a5721f8 (diff)
interface: Add enabled set
-rw-r--r--config.yml1
-rw-r--r--rtemsspec/interface.py13
-rw-r--r--rtemsspec/tests/test_interface.py1
3 files changed, 11 insertions, 4 deletions
diff --git a/config.yml b/config.yml
index b29cbb6d..529a2a59 100644
--- a/config.yml
+++ b/config.yml
@@ -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())