diff options
author | Oliver Reiche <oliver.reiche@huawei.com> | 2023-08-30 17:03:14 +0200 |
---|---|---|
committer | Oliver Reiche <oliver.reiche@huawei.com> | 2023-08-30 19:01:12 +0200 |
commit | 4118e0b9930d11f6062751db4f1656e8cc2a680a (patch) | |
tree | a839d9d63048f38f596e4613fdf5d11bd22b4ca2 /CC/foreign/cmake/RULES | |
parent | a27d18f2265c74804842c1170396dbc273c9e1c9 (diff) | |
download | rules-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/RULES | 26 |
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"} |