summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rules/CC/foreign/cmake/EXPRESSIONS44
-rw-r--r--rules/CC/foreign/cmake/RULES59
-rw-r--r--rules/CC/foreign/make/EXPRESSIONS44
-rw-r--r--rules/CC/foreign/make/RULES59
4 files changed, 196 insertions, 10 deletions
diff --git a/rules/CC/foreign/cmake/EXPRESSIONS b/rules/CC/foreign/cmake/EXPRESSIONS
index 9b264d8..ee7c595 100644
--- a/rules/CC/foreign/cmake/EXPRESSIONS
+++ b/rules/CC/foreign/cmake/EXPRESSIONS
@@ -45,17 +45,37 @@
, "foreign-PATH": ["CC/foreign", "default-PATH"]
, "foreign-TOOLCHAIN": ["CC/foreign", "default-TOOLCHAIN"]
, "foreign-NON_SYSTEM_TOOLS": ["CC/foreign", "default-NON_SYSTEM_TOOLS"]
+ , "map_provider": ["", "field_map_provider"]
+ , "sh": ["shell", "sh"]
+ , "sh-PATH": ["shell", "PATH"]
}
, "expression":
{ "type": "let*"
, "bindings":
[ ["TOOLCHAIN_DIR", "toolchain"]
+ , [ "shell TOOLCHAIN"
+ , { "type": "let*"
+ , "bindings":
+ [ ["fieldname", "shell defaults"]
+ , ["provider", "TOOLCHAIN"]
+ , ["default", {"type": "empty_map"}]
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "map_provider"}
+ }
+ ]
+ , [ "sh"
+ , { "type": "let*"
+ , "bindings": [["fieldname", "shell defaults"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "sh"}
+ }
+ ]
, [ "TOOLCHAIN"
, { "type": "disjoint_map_union"
, "msg": "Toolchain trees may not overlap"
, "$1":
[ {"type": "CALL_EXPRESSION", "name": "foreign-TOOLCHAIN"}
, {"type": "CALL_EXPRESSION", "name": "default-TOOLCHAIN"}
+ , {"type": "var", "name": "shell TOOLCHAIN"}
]
}
]
@@ -183,6 +203,27 @@
}
}
]
+ , [ "sh-PATH"
+ , { "type": "join"
+ , "separator": ":"
+ , "$1":
+ { "type": "let*"
+ , "bindings": [["fieldname", "shell defaults"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "sh-PATH"}
+ }
+ }
+ ]
+ , [ "sh-ENV"
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "sh-PATH"}
+ , "then":
+ { "type": "singleton_map"
+ , "key": "PATH"
+ , "value": {"type": "var", "name": "sh-PATH"}
+ }
+ , "else": {"type": "empty_map"}
+ }
+ ]
, [ "PATH"
, { "type": "join"
, "separator": ":"
@@ -217,6 +258,7 @@
, "CMAKE"
]
}
+ , {"type": "var", "name": "sh-ENV"}
, {"type": "CALL_EXPRESSION", "name": "default-ENV"}
, {"type": "CALL_EXPRESSION", "name": "foreign-ENV"}
, {"type": "var", "name": "ENV", "default": {"type": "empty_map"}}
@@ -385,7 +427,7 @@
, "cmd":
{ "type": "++"
, "$1":
- [ [ "sh"
+ [ [ {"type": "var", "name": "sh"}
, "run_cmake.sh"
, {"type": "var", "name": "CMAKE_SUBDIR"}
, {"type": "var", "name": "AR"}
diff --git a/rules/CC/foreign/cmake/RULES b/rules/CC/foreign/cmake/RULES
index 166e2d6..b7fd406 100644
--- a/rules/CC/foreign/cmake/RULES
+++ b/rules/CC/foreign/cmake/RULES
@@ -39,6 +39,7 @@
, "implicit":
{ "defaults": [["CC", "defaults"]]
, "foreign-defaults": [["CC/foreign", "defaults"]]
+ , "shell defaults": [["shell", "defaults"]]
, "expand_exec": [["./", "..", "expand_exec"]]
}
, "field_doc":
@@ -158,6 +159,8 @@
, "cmake-build": "cmake-build"
, "strip-prefix": ["./", "..", "strip-prefix"]
, "for host": ["transitions", "for host"]
+ , "map_provider": ["", "field_map_provider"]
+ , "sh": ["shell", "sh"]
}
, "config_transitions":
{ "defaults":
@@ -224,10 +227,33 @@
, [ "full_install_dir"
, {"type": "CALL_EXPRESSION", "name": "cmake-build"}
]
+ , ["TOOLCHAIN_DIR", "toolchain"]
+ , [ "shell TOOLCHAIN"
+ , { "type": "let*"
+ , "bindings":
+ [ ["fieldname", "shell defaults"]
+ , ["provider", "TOOLCHAIN"]
+ , ["default", {"type": "empty_map"}]
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "map_provider"}
+ }
+ ]
+ , [ "sh"
+ , { "type": "let*"
+ , "bindings": [["fieldname", "shell defaults"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "sh"}
+ }
+ ]
, [ "install_dir"
, { "type": "ACTION"
- , "inputs": {"type": "var", "name": "full_install_dir"}
- , "cmd": ["/bin/sh", "-c", ":"]
+ , "inputs":
+ { "type": "map_union"
+ , "$1":
+ [ {"type": "var", "name": "shell TOOLCHAIN"}
+ , {"type": "var", "name": "full_install_dir"}
+ ]
+ }
+ , "cmd": [{"type": "var", "name": "sh"}, "-c", ":"]
, "outs": {"type": "var", "name": "installed_out_files"}
, "out_dirs": {"type": "var", "name": "installed_out_dirs"}
}
@@ -318,6 +344,7 @@
, "implicit":
{ "defaults": [["CC", "defaults"]]
, "foreign-defaults": [["CC/foreign", "defaults"]]
+ , "shell defaults": [["shell", "defaults"]]
, "config_reader": [["CC", "prebuilt/read_pkgconfig.py"]]
, "expand_exec": [["./", "..", "expand_exec"]]
}
@@ -479,6 +506,8 @@
, "prebuilt result": ["CC/prebuilt", "prebuilt result"]
, "install-deps": ["CC", "install-with-deps stage"]
, "for host": ["transitions", "for host"]
+ , "map_provider": ["", "field_map_provider"]
+ , "sh": ["shell", "sh"]
}
, "config_transitions":
{ "defaults":
@@ -633,10 +662,32 @@
, [ "full_install_dir"
, {"type": "CALL_EXPRESSION", "name": "cmake-build"}
]
+ , [ "shell TOOLCHAIN"
+ , { "type": "let*"
+ , "bindings":
+ [ ["fieldname", "shell defaults"]
+ , ["provider", "TOOLCHAIN"]
+ , ["default", {"type": "empty_map"}]
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "map_provider"}
+ }
+ ]
+ , [ "sh"
+ , { "type": "let*"
+ , "bindings": [["fieldname", "shell defaults"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "sh"}
+ }
+ ]
, [ "install_dir"
, { "type": "ACTION"
- , "inputs": {"type": "var", "name": "full_install_dir"}
- , "cmd": ["/bin/sh", "-c", ":"]
+ , "inputs":
+ { "type": "map_union"
+ , "$1":
+ [ {"type": "var", "name": "shell TOOLCHAIN"}
+ , {"type": "var", "name": "full_install_dir"}
+ ]
+ }
+ , "cmd": [{"type": "var", "name": "sh"}, "-c", ":"]
, "outs": {"type": "var", "name": "installed_files"}
, "out_dirs": {"type": "var", "name": "installed_dirs"}
}
diff --git a/rules/CC/foreign/make/EXPRESSIONS b/rules/CC/foreign/make/EXPRESSIONS
index 5556f20..5f80fd8 100644
--- a/rules/CC/foreign/make/EXPRESSIONS
+++ b/rules/CC/foreign/make/EXPRESSIONS
@@ -46,17 +46,37 @@
, "foreign-PATH": ["CC/foreign", "default-PATH"]
, "foreign-TOOLCHAIN": ["CC/foreign", "default-TOOLCHAIN"]
, "foreign-NON_SYSTEM_TOOLS": ["CC/foreign", "default-NON_SYSTEM_TOOLS"]
+ , "map_provider": ["", "field_map_provider"]
+ , "sh": ["shell", "sh"]
+ , "sh-PATH": ["shell", "PATH"]
}
, "expression":
{ "type": "let*"
, "bindings":
[ ["TOOLCHAIN_DIR", "toolchain"]
+ , [ "shell TOOLCHAIN"
+ , { "type": "let*"
+ , "bindings":
+ [ ["fieldname", "shell defaults"]
+ , ["provider", "TOOLCHAIN"]
+ , ["default", {"type": "empty_map"}]
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "map_provider"}
+ }
+ ]
+ , [ "sh"
+ , { "type": "let*"
+ , "bindings": [["fieldname", "shell defaults"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "sh"}
+ }
+ ]
, [ "TOOLCHAIN"
, { "type": "disjoint_map_union"
, "msg": "Toolchain trees may not overlap"
, "$1":
[ {"type": "CALL_EXPRESSION", "name": "foreign-TOOLCHAIN"}
, {"type": "CALL_EXPRESSION", "name": "default-TOOLCHAIN"}
+ , {"type": "var", "name": "shell TOOLCHAIN"}
]
}
]
@@ -160,6 +180,27 @@
, "else": {"type": "var", "name": "PREFIX", "default": "/"}
}
]
+ , [ "sh-PATH"
+ , { "type": "join"
+ , "separator": ":"
+ , "$1":
+ { "type": "let*"
+ , "bindings": [["fieldname", "shell defaults"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "sh-PATH"}
+ }
+ }
+ ]
+ , [ "sh-ENV"
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "sh-PATH"}
+ , "then":
+ { "type": "singleton_map"
+ , "key": "PATH"
+ , "value": {"type": "var", "name": "sh-PATH"}
+ }
+ , "else": {"type": "empty_map"}
+ }
+ ]
, [ "PATH"
, { "type": "join"
, "separator": ":"
@@ -194,6 +235,7 @@
, "PREFIX"
]
}
+ , {"type": "var", "name": "sh-ENV"}
, {"type": "CALL_EXPRESSION", "name": "default-ENV"}
, {"type": "CALL_EXPRESSION", "name": "foreign-ENV"}
, {"type": "var", "name": "ENV", "default": {"type": "empty_map"}}
@@ -348,7 +390,7 @@
, "cmd":
{ "type": "++"
, "$1":
- [ ["sh", "run_make.sh"]
+ [ [{"type": "var", "name": "sh"}, "run_make.sh"]
, [{"type": "var", "name": "SUBDIR"}]
, {"type": "var", "name": "make_options"}
, { "type": "if"
diff --git a/rules/CC/foreign/make/RULES b/rules/CC/foreign/make/RULES
index e3c28db..cf67998 100644
--- a/rules/CC/foreign/make/RULES
+++ b/rules/CC/foreign/make/RULES
@@ -42,6 +42,7 @@
, "implicit":
{ "defaults": [["CC", "defaults"]]
, "foreign-defaults": [["CC/foreign", "defaults"]]
+ , "shell defaults": [["shell", "defaults"]]
, "expand_exec": [["./", "..", "expand_exec"]]
}
, "field_doc":
@@ -174,6 +175,8 @@
, "make-build": "make-build"
, "strip-prefix": ["./", "..", "strip-prefix"]
, "for host": ["transitions", "for host"]
+ , "map_provider": ["", "field_map_provider"]
+ , "sh": ["shell", "sh"]
}
, "config_transitions":
{ "defaults":
@@ -240,10 +243,33 @@
}
]
, ["full_install_dir", {"type": "CALL_EXPRESSION", "name": "make-build"}]
+ , ["TOOLCHAIN_DIR", "toolchain"]
+ , [ "shell TOOLCHAIN"
+ , { "type": "let*"
+ , "bindings":
+ [ ["fieldname", "shell defaults"]
+ , ["provider", "TOOLCHAIN"]
+ , ["default", {"type": "empty_map"}]
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "map_provider"}
+ }
+ ]
+ , [ "sh"
+ , { "type": "let*"
+ , "bindings": [["fieldname", "shell defaults"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "sh"}
+ }
+ ]
, [ "install_dir"
, { "type": "ACTION"
- , "inputs": {"type": "var", "name": "full_install_dir"}
- , "cmd": ["/bin/sh", "-c", ":"]
+ , "inputs":
+ { "type": "map_union"
+ , "$1":
+ [ {"type": "var", "name": "shell TOOLCHAIN"}
+ , {"type": "var", "name": "full_install_dir"}
+ ]
+ }
+ , "cmd": [{"type": "var", "name": "sh"}, "-c", ":"]
, "outs": {"type": "var", "name": "installed_out_files"}
, "out_dirs": {"type": "var", "name": "installed_out_dirs"}
}
@@ -338,6 +364,7 @@
, "implicit":
{ "defaults": [["CC", "defaults"]]
, "foreign-defaults": [["CC/foreign", "defaults"]]
+ , "shell defaults": [["shell", "defaults"]]
, "config_reader": [["CC", "prebuilt/read_pkgconfig.py"]]
, "expand_exec": [["./", "..", "expand_exec"]]
}
@@ -509,6 +536,8 @@
, "prebuilt result": ["CC/prebuilt", "prebuilt result"]
, "install-deps": ["CC", "install-with-deps stage"]
, "for host": ["transitions", "for host"]
+ , "map_provider": ["", "field_map_provider"]
+ , "sh": ["shell", "sh"]
}
, "config_transitions":
{ "defaults":
@@ -664,10 +693,32 @@
}
]
, ["full_install_dir", {"type": "CALL_EXPRESSION", "name": "make-build"}]
+ , [ "shell TOOLCHAIN"
+ , { "type": "let*"
+ , "bindings":
+ [ ["fieldname", "shell defaults"]
+ , ["provider", "TOOLCHAIN"]
+ , ["default", {"type": "empty_map"}]
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "map_provider"}
+ }
+ ]
+ , [ "sh"
+ , { "type": "let*"
+ , "bindings": [["fieldname", "shell defaults"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "sh"}
+ }
+ ]
, [ "install_dir"
, { "type": "ACTION"
- , "inputs": {"type": "var", "name": "full_install_dir"}
- , "cmd": ["/bin/sh", "-c", ":"]
+ , "inputs":
+ { "type": "map_union"
+ , "$1":
+ [ {"type": "var", "name": "shell TOOLCHAIN"}
+ , {"type": "var", "name": "full_install_dir"}
+ ]
+ }
+ , "cmd": [{"type": "var", "name": "sh"}, "-c", ":"]
, "outs": {"type": "var", "name": "installed_files"}
, "out_dirs": {"type": "var", "name": "installed_dirs"}
}