summaryrefslogtreecommitdiff
path: root/CC/foreign/cmake/RULES
diff options
context:
space:
mode:
authorOliver Reiche <oliver.reiche@huawei.com>2023-08-30 17:03:14 +0200
committerOliver Reiche <oliver.reiche@huawei.com>2023-08-30 19:01:12 +0200
commit4118e0b9930d11f6062751db4f1656e8cc2a680a (patch)
treea839d9d63048f38f596e4613fdf5d11bd22b4ca2 /CC/foreign/cmake/RULES
parenta27d18f2265c74804842c1170396dbc273c9e1c9 (diff)
downloadrules-cc-4118e0b9930d11f6062751db4f1656e8cc2a680a.tar.gz
foreign: Implement 'expand_exec' via POSIX shell
... and coreutils by default. This has the advantage that no C compiler and no specific toolchain definition is required to build rule-internal tools. 'expand_exec' is provided via an implicit target with proper config transition for host, so it could be overwritten by the rule user. The C code of the previous implementation is still kept as an example.
Diffstat (limited to 'CC/foreign/cmake/RULES')
-rw-r--r--CC/foreign/cmake/RULES26
1 files changed, 22 insertions, 4 deletions
diff --git a/CC/foreign/cmake/RULES b/CC/foreign/cmake/RULES
index 5f7c4f8..b36bc73 100644
--- a/CC/foreign/cmake/RULES
+++ b/CC/foreign/cmake/RULES
@@ -38,6 +38,7 @@
, "implicit":
{ "defaults": [["CC", "defaults"]]
, "foreign-defaults": [["CC/foreign", "defaults"]]
+ , "expand_exec": [["./", "..", "expand_exec"]]
}
, "field_doc":
{ "project":
@@ -156,6 +157,7 @@
, "config_transitions":
{ "defaults":
[{"type": "empty_map"}, {"type": "CALL_EXPRESSION", "name": "for host"}]
+ , "expand_exec": [{"type": "CALL_EXPRESSION", "name": "for host"}]
}
, "expression":
{ "type": "let*"
@@ -203,8 +205,15 @@
, ["pre_cmds", {"type": "FIELD", "name": "pre_cmds"}]
, ["post_cmds", {"type": "FIELD", "name": "post_cmds"}]
, ["defaults-transition", {"type": "empty_map"}]
- , [ "host-defaults-transition"
- , {"type": "CALL_EXPRESSION", "name": "for host"}
+ , [ "expand_exec"
+ , { "type": "let*"
+ , "bindings":
+ [ ["fieldname", "expand_exec"]
+ , ["location", "expand_exec"]
+ , ["transition", {"type": "CALL_EXPRESSION", "name": "for host"}]
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "stage_field"}
+ }
]
, [ "full_install_dir"
, {"type": "CALL_EXPRESSION", "name": "cmake-build"}
@@ -303,6 +312,7 @@
{ "defaults": [["CC", "defaults"]]
, "foreign-defaults": [["CC/foreign", "defaults"]]
, "config_reader": [["CC", "prebuilt/read_pkgconfig.py"]]
+ , "expand_exec": [["./", "..", "expand_exec"]]
}
, "field_doc":
{ "project":
@@ -462,6 +472,7 @@
, "config_transitions":
{ "defaults":
[{"type": "empty_map"}, {"type": "CALL_EXPRESSION", "name": "for host"}]
+ , "expand_exec": [{"type": "CALL_EXPRESSION", "name": "for host"}]
}
, "expression":
{ "type": "let*"
@@ -597,8 +608,15 @@
, ["pre_cmds", {"type": "FIELD", "name": "pre_cmds"}]
, ["post_cmds", {"type": "FIELD", "name": "post_cmds"}]
, ["defaults-transition", {"type": "empty_map"}]
- , [ "host-defaults-transition"
- , {"type": "CALL_EXPRESSION", "name": "for host"}
+ , [ "expand_exec"
+ , { "type": "let*"
+ , "bindings":
+ [ ["fieldname", "expand_exec"]
+ , ["location", "expand_exec"]
+ , ["transition", {"type": "CALL_EXPRESSION", "name": "for host"}]
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "stage_field"}
+ }
]
, [ "full_install_dir"
, {"type": "CALL_EXPRESSION", "name": "cmake-build"}