summaryrefslogtreecommitdiff
path: root/rules/CC/EXPRESSIONS
diff options
context:
space:
mode:
Diffstat (limited to 'rules/CC/EXPRESSIONS')
-rw-r--r--rules/CC/EXPRESSIONS279
1 files changed, 199 insertions, 80 deletions
diff --git a/rules/CC/EXPRESSIONS b/rules/CC/EXPRESSIONS
index a520cde..d7289c9 100644
--- a/rules/CC/EXPRESSIONS
+++ b/rules/CC/EXPRESSIONS
@@ -2,54 +2,45 @@
{ "vars": ["defaults-transition"]
, "imports": {"list_provider": ["./", "..", "field_list_provider"]}
, "expression":
- { "type": "join"
- , "$1":
- { "type": "let*"
- , "bindings":
- [ ["fieldname", "defaults"]
- , ["provider", "CC"]
- , [ "transition"
- , {"type": "var", "name": "defaults-transition", "default": null}
- ]
+ { "type": "let*"
+ , "bindings":
+ [ ["fieldname", "defaults"]
+ , ["provider", "CC"]
+ , [ "transition"
+ , {"type": "var", "name": "defaults-transition", "default": null}
]
- , "body": {"type": "CALL_EXPRESSION", "name": "list_provider"}
- }
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "list_provider"}
}
}
, "default-CXX":
{ "vars": ["defaults-transition"]
, "imports": {"list_provider": ["./", "..", "field_list_provider"]}
, "expression":
- { "type": "join"
- , "$1":
- { "type": "let*"
- , "bindings":
- [ ["fieldname", "defaults"]
- , ["provider", "CXX"]
- , [ "transition"
- , {"type": "var", "name": "defaults-transition", "default": null}
- ]
+ { "type": "let*"
+ , "bindings":
+ [ ["fieldname", "defaults"]
+ , ["provider", "CXX"]
+ , [ "transition"
+ , {"type": "var", "name": "defaults-transition", "default": null}
]
- , "body": {"type": "CALL_EXPRESSION", "name": "list_provider"}
- }
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "list_provider"}
}
}
, "default-AR":
{ "vars": ["defaults-transition"]
, "imports": {"list_provider": ["./", "..", "field_list_provider"]}
, "expression":
- { "type": "join"
- , "$1":
- { "type": "let*"
- , "bindings":
- [ ["fieldname", "defaults"]
- , ["provider", "AR"]
- , [ "transition"
- , {"type": "var", "name": "defaults-transition", "default": null}
- ]
+ { "type": "let*"
+ , "bindings":
+ [ ["fieldname", "defaults"]
+ , ["provider", "AR"]
+ , [ "transition"
+ , {"type": "var", "name": "defaults-transition", "default": null}
]
- , "body": {"type": "CALL_EXPRESSION", "name": "list_provider"}
- }
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "list_provider"}
}
}
, "default-CFLAGS":
@@ -99,7 +90,7 @@
}
, "default-ENV":
{ "vars": ["defaults-transition"]
- , "imports": {"provider_list": ["./", "..", "field_provider_list"]}
+ , "imports": {"map_provider": ["./", "..", "field_map_provider"]}
, "expression":
{ "type": "let*"
, "bindings":
@@ -110,14 +101,54 @@
]
, ["default", {"type": "empty_map"}]
]
- , "body": {"type": "CALL_EXPRESSION", "name": "provider_list"}
+ , "body": {"type": "CALL_EXPRESSION", "name": "map_provider"}
+ }
+ }
+, "default-TOOLCHAIN":
+ { "vars": ["defaults-transition"]
+ , "imports": {"map_provider": ["./", "..", "field_map_provider"]}
+ , "expression":
+ { "type": "let*"
+ , "bindings":
+ [ ["fieldname", "defaults"]
+ , ["provider", "TOOLCHAIN"]
+ , [ "transition"
+ , {"type": "var", "name": "defaults-transition", "default": null}
+ ]
+ , ["default", {"type": "empty_map"}]
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "map_provider"}
+ }
+ }
+, "default-NON_SYSTEM_TOOLS":
+ { "vars": ["defaults-transition"]
+ , "expression":
+ { "type": "map_union"
+ , "$1":
+ { "type": "foreach"
+ , "var": "x"
+ , "range": {"type": "FIELD", "name": "defaults"}
+ , "body":
+ { "type": "DEP_PROVIDES"
+ , "dep": {"type": "var", "name": "x"}
+ , "provider": "NON_SYSTEM_TOOLS"
+ , "transition":
+ { "type": "var"
+ , "name": "defaults-transition"
+ , "default": {"type": "empty_map"}
+ }
+ , "default": {"type": "empty_map"}
+ }
+ }
}
}
, "defaults-base-provides":
{ "doc": ["Query list-provider from 'base' targets (last wins)"]
, "vars": ["provider", "default"]
, "vars_doc":
- {"provider": ["The name of the list-provider in the provides map."]}
+ { "provider": ["The name of the list-provider in the provides map."]
+ , "default": ["The default if provider is missing (default: [])."]
+ }
, "imports": {"provider_list": ["./", "..", "field_provider_list"]}
, "expression":
{ "type": "let*"
@@ -586,6 +617,7 @@
[ "COMPILER"
, "COMPILE_FLAGS"
, "ENV"
+ , "TOOLCHAIN"
, "srcs"
, "hdrs"
, "private-hdrs"
@@ -648,6 +680,10 @@
, "name": "cflags-files"
, "default": {"type": "empty_map"}
}
+ , { "type": "var"
+ , "name": "TOOLCHAIN"
+ , "default": {"type": "empty_map"}
+ }
]
}
]
@@ -706,25 +742,64 @@
}
}
, "compiler-cc":
- { "vars": ["CC", "defaults-transition"]
+ { "vars": ["CC", "TOOLCHAIN_DIR", "NON_SYSTEM_TOOLS", "defaults-transition"]
, "imports": {"default-CC": "default-CC"}
, "expression":
{ "type": "var"
, "name": "CC"
- , "default": {"type": "CALL_EXPRESSION", "name": "default-CC"}
+ , "default":
+ { "type": "join"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ [ { "type": "if"
+ , "cond":
+ { "type": "lookup"
+ , "key": "CC"
+ , "map": {"type": "var", "name": "NON_SYSTEM_TOOLS"}
+ }
+ , "then": ["./", {"type": "var", "name": "TOOLCHAIN_DIR"}, "/"]
+ }
+ , {"type": "CALL_EXPRESSION", "name": "default-CC"}
+ ]
+ }
+ }
}
}
, "compiler-cxx":
- { "vars": ["CXX", "defaults-transition"]
+ { "vars": ["CXX", "TOOLCHAIN_DIR", "NON_SYSTEM_TOOLS", "defaults-transition"]
, "imports": {"default-CXX": "default-CXX"}
, "expression":
{ "type": "var"
, "name": "CXX"
- , "default": {"type": "CALL_EXPRESSION", "name": "default-CXX"}
+ , "default":
+ { "type": "join"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ [ { "type": "if"
+ , "cond":
+ { "type": "lookup"
+ , "key": "CXX"
+ , "map": {"type": "var", "name": "NON_SYSTEM_TOOLS"}
+ }
+ , "then": ["./", {"type": "var", "name": "TOOLCHAIN_DIR"}, "/"]
+ }
+ , {"type": "CALL_EXPRESSION", "name": "default-CXX"}
+ ]
+ }
+ }
}
}
, "compiler":
- { "vars": ["CC", "CXX", "pure C", "defaults-transition"]
+ { "vars":
+ [ "CC"
+ , "CXX"
+ , "pure C"
+ , "TOOLCHAIN_DIR"
+ , "NON_SYSTEM_TOOLS"
+ , "defaults-transition"
+ ]
, "imports": {"compiler-cc": "compiler-cc", "compiler-cxx": "compiler-cxx"}
, "expression":
{ "type": "if"
@@ -825,11 +900,24 @@
, "objects": "objects"
, "default-AR": "default-AR"
, "default-ENV": "default-ENV"
+ , "default-TOOLCHAIN": "default-TOOLCHAIN"
+ , "default-NON_SYSTEM_TOOLS": "default-NON_SYSTEM_TOOLS"
}
, "expression":
{ "type": "let*"
, "bindings":
- [ ["COMPILER", {"type": "CALL_EXPRESSION", "name": "compiler"}]
+ [ ["TOOLCHAIN_DIR", "toolchain"]
+ , ["TOOLCHAIN", {"type": "CALL_EXPRESSION", "name": "default-TOOLCHAIN"}]
+ , [ "TOOLCHAIN"
+ , { "type": "to_subdir"
+ , "subdir": {"type": "var", "name": "TOOLCHAIN_DIR"}
+ , "$1": {"type": "var", "name": "TOOLCHAIN"}
+ }
+ ]
+ , [ "NON_SYSTEM_TOOLS"
+ , {"type": "CALL_EXPRESSION", "name": "default-NON_SYSTEM_TOOLS"}
+ ]
+ , ["COMPILER", {"type": "CALL_EXPRESSION", "name": "compiler"}]
, [ "COMPILE_FLAGS"
, { "type": "++"
, "$1":
@@ -841,22 +929,32 @@
, [ "AR"
, { "type": "var"
, "name": "AR"
- , "default": {"type": "CALL_EXPRESSION", "name": "default-AR"}
+ , "default":
+ { "type": "join"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ [ { "type": "if"
+ , "cond":
+ { "type": "lookup"
+ , "key": "AR"
+ , "map": {"type": "var", "name": "NON_SYSTEM_TOOLS"}
+ }
+ , "then":
+ ["./", {"type": "var", "name": "TOOLCHAIN_DIR"}, "/"]
+ }
+ , {"type": "CALL_EXPRESSION", "name": "default-AR"}
+ ]
+ }
+ }
}
]
, [ "ENV"
, { "type": "map_union"
, "$1":
- { "type": "++"
- , "$1":
- [ {"type": "CALL_EXPRESSION", "name": "default-ENV"}
- , [ { "type": "var"
- , "name": "ENV"
- , "default": {"type": "empty_map"}
- }
- ]
- ]
- }
+ [ {"type": "CALL_EXPRESSION", "name": "default-ENV"}
+ , {"type": "var", "name": "ENV", "default": {"type": "empty_map"}}
+ ]
}
]
, ["objects", {"type": "CALL_EXPRESSION", "name": "objects"}]
@@ -897,7 +995,13 @@
, "then":
{ "type": "ACTION"
, "outs": [{"type": "var", "name": "libpath"}]
- , "inputs": {"type": "var", "name": "objects"}
+ , "inputs":
+ { "type": "map_union"
+ , "$1":
+ [ {"type": "var", "name": "TOOLCHAIN"}
+ , {"type": "var", "name": "objects"}
+ ]
+ }
, "env":
{"type": "var", "name": "ENV", "default": {"type": "empty_map"}}
, "cmd":
@@ -1080,13 +1184,26 @@
{ "compiler": "compiler"
, "flags": "flags"
, "objects": "objects"
- , "default-LDFLAGS": "default-LDFLAGS"
, "default-ENV": "default-ENV"
+ , "default-LDFLAGS": "default-LDFLAGS"
+ , "default-TOOLCHAIN": "default-TOOLCHAIN"
+ , "default-NON_SYSTEM_TOOLS": "default-NON_SYSTEM_TOOLS"
}
, "expression":
{ "type": "let*"
, "bindings":
[ ["BUILD_POSITION_INDEPENDENT", true]
+ , ["TOOLCHAIN_DIR", "toolchain"]
+ , ["TOOLCHAIN", {"type": "CALL_EXPRESSION", "name": "default-TOOLCHAIN"}]
+ , [ "TOOLCHAIN"
+ , { "type": "to_subdir"
+ , "subdir": {"type": "var", "name": "TOOLCHAIN_DIR"}
+ , "$1": {"type": "var", "name": "TOOLCHAIN"}
+ }
+ ]
+ , [ "NON_SYSTEM_TOOLS"
+ , {"type": "CALL_EXPRESSION", "name": "default-NON_SYSTEM_TOOLS"}
+ ]
, ["COMPILER", {"type": "CALL_EXPRESSION", "name": "compiler"}]
, [ "COMPILE_FLAGS"
, { "type": "++"
@@ -1111,16 +1228,9 @@
, [ "ENV"
, { "type": "map_union"
, "$1":
- { "type": "++"
- , "$1":
- [ {"type": "CALL_EXPRESSION", "name": "default-ENV"}
- , [ { "type": "var"
- , "name": "ENV"
- , "default": {"type": "empty_map"}
- }
- ]
- ]
- }
+ [ {"type": "CALL_EXPRESSION", "name": "default-ENV"}
+ , {"type": "var", "name": "ENV", "default": {"type": "empty_map"}}
+ ]
}
]
, ["objects", {"type": "CALL_EXPRESSION", "name": "objects"}]
@@ -1162,7 +1272,8 @@
, "inputs":
{ "type": "map_union"
, "$1":
- [ {"type": "var", "name": "objects"}
+ [ {"type": "var", "name": "TOOLCHAIN"}
+ , {"type": "var", "name": "objects"}
, {"type": "var", "name": "link-deps"}
, {"type": "var", "name": "run-libs"}
, { "type": "var"
@@ -1190,11 +1301,11 @@
}
]
, {"type": "var", "name": "COMPILE_FLAGS"}
- , {"type": "var", "name": "LDFLAGS"}
, ["-o", {"type": "var", "name": "libname"}]
, {"type": "keys", "$1": {"type": "var", "name": "objects"}}
, {"type": "var", "name": "link-args"}
, {"type": "var", "name": "run-libs-args"}
+ , {"type": "var", "name": "LDFLAGS"}
]
}
}
@@ -1227,6 +1338,7 @@
, "soversion"
, "pkg-name"
, "extra-provides"
+ , "defaults-transition"
, "deps-transition"
, "public-fieldnames"
, "private-fieldnames"
@@ -1406,11 +1518,24 @@
, "objects": "objects"
, "default-ENV": "default-ENV"
, "default-LDFLAGS": "default-LDFLAGS"
+ , "default-TOOLCHAIN": "default-TOOLCHAIN"
+ , "default-NON_SYSTEM_TOOLS": "default-NON_SYSTEM_TOOLS"
}
, "expression":
{ "type": "let*"
, "bindings":
- [ ["COMPILER", {"type": "CALL_EXPRESSION", "name": "compiler"}]
+ [ ["TOOLCHAIN_DIR", "toolchain"]
+ , ["TOOLCHAIN", {"type": "CALL_EXPRESSION", "name": "default-TOOLCHAIN"}]
+ , [ "TOOLCHAIN"
+ , { "type": "to_subdir"
+ , "subdir": {"type": "var", "name": "TOOLCHAIN_DIR"}
+ , "$1": {"type": "var", "name": "TOOLCHAIN"}
+ }
+ ]
+ , [ "NON_SYSTEM_TOOLS"
+ , {"type": "CALL_EXPRESSION", "name": "default-NON_SYSTEM_TOOLS"}
+ ]
+ , ["COMPILER", {"type": "CALL_EXPRESSION", "name": "compiler"}]
, [ "COMPILE_FLAGS"
, { "type": "++"
, "$1":
@@ -1434,16 +1559,9 @@
, [ "ENV"
, { "type": "map_union"
, "$1":
- { "type": "++"
- , "$1":
- [ {"type": "CALL_EXPRESSION", "name": "default-ENV"}
- , [ { "type": "var"
- , "name": "ENV"
- , "default": {"type": "empty_map"}
- }
- ]
- ]
- }
+ [ {"type": "CALL_EXPRESSION", "name": "default-ENV"}
+ , {"type": "var", "name": "ENV", "default": {"type": "empty_map"}}
+ ]
}
]
, ["hdrs", {"type": "empty_map"}]
@@ -1479,7 +1597,8 @@
, "inputs":
{ "type": "disjoint_map_union"
, "$1":
- [ {"type": "var", "name": "objects"}
+ [ {"type": "var", "name": "TOOLCHAIN"}
+ , {"type": "var", "name": "objects"}
, {"type": "var", "name": "link-deps"}
, {"type": "var", "name": "run-libs"}
, { "type": "var"
@@ -1502,9 +1621,9 @@
, {"type": "var", "name": "binpath"}
]
, {"type": "var", "name": "COMPILE_FLAGS"}
- , {"type": "var", "name": "LDFLAGS"}
, {"type": "var", "name": "link-args"}
, {"type": "var", "name": "run-libs-args"}
+ , {"type": "var", "name": "LDFLAGS"}
]
}
, "env": {"type": "var", "name": "ENV"}