summaryrefslogtreecommitdiff
path: root/CC/EXPRESSIONS
diff options
context:
space:
mode:
Diffstat (limited to 'CC/EXPRESSIONS')
-rw-r--r--CC/EXPRESSIONS1598
1 files changed, 1523 insertions, 75 deletions
diff --git a/CC/EXPRESSIONS b/CC/EXPRESSIONS
index cb114aa..0e06903 100644
--- a/CC/EXPRESSIONS
+++ b/CC/EXPRESSIONS
@@ -61,6 +61,19 @@
, "body": {"type": "var", "name": "AR"}
}
}
+, "default-INCLUDE_SCANNER":
+ { "vars": ["defaults-transition"]
+ , "imports": {"map_provider": ["./", "..", "field_map_provider"]}
+ , "expression":
+ { "type": "let*"
+ , "bindings":
+ [ ["fieldname", "defaults"]
+ , ["provider", "INCLUDE_SCANNER"]
+ , ["transition", {"type": "var", "name": "defaults-transition"}]
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "map_provider"}
+ }
+ }
, "default-DWP":
{ "vars": ["defaults-transition"]
, "imports": {"list_provider": ["./", "..", "field_list_provider"]}
@@ -257,13 +270,20 @@
, "debug-deps":
{ "doc":
["Collect debug dependencies (sources/headers) from given target_fields"]
- , "vars": ["deps-provider", "deps-fieldnames", "deps-transition"]
+ , "vars":
+ [ "deps-provider"
+ , "deps-fieldnames"
+ , "deps-transition"
+ , "modified-transitions"
+ ]
, "vars_doc":
{ "deps-provider": ["Name of provider to use (debug-srcs/debug-hdrs)."]
, "deps-fieldnames":
["List of target_field names to collect dependencies from."]
, "deps-transition":
["The optional configuration transition for the targets."]
+ , "modified-transitions":
+ ["Map telling fields that need to be transitioned differently"]
}
, "imports": {"provider_list": ["./", "..", "field_provider_list"]}
, "expression":
@@ -280,7 +300,17 @@
{ "type": "let*"
, "bindings":
[ ["provider", {"type": "var", "name": "deps-provider"}]
- , ["transition", {"type": "var", "name": "deps-transition"}]
+ , [ "transition"
+ , { "type": "lookup"
+ , "map":
+ { "type": "var"
+ , "name": "modified-transitions"
+ , "default": {"type": "empty_map"}
+ }
+ , "key": {"type": "var", "name": "fieldname"}
+ , "default": {"type": "var", "name": "deps-transition"}
+ }
+ ]
, ["default", {"type": "empty_map"}]
]
, "body": [{"type": "CALL_EXPRESSION", "name": "provider_list"}]
@@ -292,12 +322,19 @@
}
, "compile-deps":
{ "doc": ["Collect compile dependencies (headers) from given target_fields"]
- , "vars": ["deps-fieldnames", "deps-transition"]
+ , "vars":
+ [ "deps-fieldnames"
+ , "deps-transition"
+ , "modified-transitions"
+ , "component-fieldnames"
+ ]
, "vars_doc":
{ "deps-fieldnames":
["List of target_field names to collect dependencies from."]
, "deps-transition":
["The optional configuration transition for the targets."]
+ , "modified-transitions":
+ ["Map telling fields that need to be transitioned differently"]
}
, "imports":
{ "runfiles_list": ["./", "..", "field_runfiles_list"]
@@ -308,36 +345,80 @@
, "$1":
{ "type": "++"
, "$1":
- { "type": "foreach"
- , "var": "fieldname"
- , "range": {"type": "var", "name": "deps-fieldnames"}
- , "body":
- { "type": "++"
+ [ { "type": "++"
, "$1":
- { "type": "let*"
- , "bindings":
- [ ["provider", "compile-deps"]
- , ["transition", {"type": "var", "name": "deps-transition"}]
- , ["default", {"type": "empty_map"}]
- ]
+ { "type": "foreach"
+ , "var": "fieldname"
+ , "range":
+ { "type": "++"
+ , "$1":
+ [ {"type": "var", "name": "deps-fieldnames"}
+ , { "type": "var"
+ , "name": "component-fieldnames"
+ , "default": []
+ }
+ ]
+ }
, "body":
- [ {"type": "CALL_EXPRESSION", "name": "provider_list"}
- , {"type": "CALL_EXPRESSION", "name": "runfiles_list"}
- ]
+ { "type": "let*"
+ , "bindings":
+ [ ["provider", "compile-deps"]
+ , [ "transition"
+ , { "type": "lookup"
+ , "map":
+ { "type": "var"
+ , "name": "modified-transitions"
+ , "default": {"type": "empty_map"}
+ }
+ , "key": {"type": "var", "name": "fieldname"}
+ , "default": {"type": "var", "name": "deps-transition"}
+ }
+ ]
+ , ["default", {"type": "empty_map"}]
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "provider_list"}
+ }
}
}
- }
+ , { "type": "++"
+ , "$1":
+ { "type": "foreach"
+ , "var": "fieldname"
+ , "range": {"type": "var", "name": "deps-fieldnames"}
+ , "body":
+ { "type": "let*"
+ , "bindings":
+ [ [ "transition"
+ , { "type": "lookup"
+ , "map":
+ { "type": "var"
+ , "name": "modified-transitions"
+ , "default": {"type": "empty_map"}
+ }
+ , "key": {"type": "var", "name": "fieldname"}
+ , "default": {"type": "var", "name": "deps-transition"}
+ }
+ ]
+ , ["default", {"type": "empty_map"}]
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "runfiles_list"}
+ }
+ }
+ }
+ ]
}
}
}
, "compile-args-deps":
{ "doc": ["Collect compile arguments from given target_fields"]
- , "vars": ["deps-fieldnames", "deps-transition"]
+ , "vars": ["deps-fieldnames", "deps-transition", "modified-transitions"]
, "vars_doc":
{ "deps-fieldnames":
["List of target_field names to collect arguments from."]
, "deps-transition":
["The optional configuration transition for the targets."]
+ , "modified-transitions":
+ ["Map telling fields that need to be transitioned differently"]
}
, "imports": {"list_provider": ["./", "..", "field_list_provider"]}
, "expression":
@@ -352,7 +433,17 @@
{ "type": "let*"
, "bindings":
[ ["provider", "compile-args"]
- , ["transition", {"type": "var", "name": "deps-transition"}]
+ , [ "transition"
+ , { "type": "lookup"
+ , "map":
+ { "type": "var"
+ , "name": "modified-transitions"
+ , "default": {"type": "empty_map"}
+ }
+ , "key": {"type": "var", "name": "fieldname"}
+ , "default": {"type": "var", "name": "deps-transition"}
+ }
+ ]
]
, "body": {"type": "CALL_EXPRESSION", "name": "list_provider"}
}
@@ -362,19 +453,95 @@
}
, "link-deps":
{ "doc": ["Collect link dependencies (libraries) from given target_fields"]
- , "vars": ["deps-fieldnames", "deps-transition"]
+ , "vars":
+ [ "deps-fieldnames"
+ , "deps-transition"
+ , "modified-transitions"
+ , "component-fieldnames"
+ ]
, "vars_doc":
{ "deps-fieldnames":
["List of target_field names to collect dependencies from."]
, "deps-transition":
["The optional configuration transition for the targets."]
+ , "modified-transitions":
+ ["Map telling fields that need to be transitioned differently"]
}
, "imports":
{ "artifacts_list": ["./", "..", "field_artifacts_list"]
, "provider_list": ["./", "..", "field_provider_list"]
}
, "expression":
- { "type": "disjoint_map_union"
+ { "type": "let*"
+ , "bindings":
+ [ [ "drop_artifacts"
+ , { "type": "set"
+ , "$1":
+ {"type": "var", "name": "component-fieldnames", "default": []}
+ }
+ ]
+ ]
+ , "body":
+ { "type": "disjoint_map_union"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ { "type": "foreach"
+ , "var": "fieldname"
+ , "range": {"type": "var", "name": "deps-fieldnames"}
+ , "body":
+ { "type": "++"
+ , "$1":
+ { "type": "let*"
+ , "bindings":
+ [ ["provider", "link-deps"]
+ , ["default", {"type": "empty_map"}]
+ , [ "transition"
+ , { "type": "lookup"
+ , "map":
+ { "type": "var"
+ , "name": "modified-transitions"
+ , "default": {"type": "empty_map"}
+ }
+ , "key": {"type": "var", "name": "fieldname"}
+ , "default": {"type": "var", "name": "deps-transition"}
+ }
+ ]
+ ]
+ , "body":
+ [ {"type": "CALL_EXPRESSION", "name": "provider_list"}
+ , { "type": "if"
+ , "cond":
+ { "type": "lookup"
+ , "map": {"type": "var", "name": "drop_artifacts"}
+ , "key": {"type": "var", "name": "fieldname"}
+ }
+ , "then": []
+ , "else":
+ {"type": "CALL_EXPRESSION", "name": "artifacts_list"}
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+, "link-args-deps":
+ { "doc": ["Collect linker arguments from given target_fields"]
+ , "vars": ["deps-fieldnames", "deps-transition", "modified-transitions"]
+ , "vars_doc":
+ { "deps-fieldnames":
+ ["List of target_field names to collect arguments from."]
+ , "deps-transition":
+ ["The optional configuration transition for the targets."]
+ , "modified-transitions":
+ ["Map telling fields that need to be transitioned differently"]
+ }
+ , "imports": {"list_provider": ["./", "..", "field_list_provider"]}
+ , "expression":
+ { "type": "nub_right"
, "$1":
{ "type": "++"
, "$1":
@@ -382,32 +549,85 @@
, "var": "fieldname"
, "range": {"type": "var", "name": "deps-fieldnames"}
, "body":
- { "type": "++"
- , "$1":
+ { "type": "let*"
+ , "bindings":
+ [ ["provider", "link-args"]
+ , [ "transition"
+ , { "type": "lookup"
+ , "map":
+ { "type": "var"
+ , "name": "modified-transitions"
+ , "default": {"type": "empty_map"}
+ }
+ , "key": {"type": "var", "name": "fieldname"}
+ , "default": {"type": "var", "name": "deps-transition"}
+ }
+ ]
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "list_provider"}
+ }
+ }
+ }
+ }
+ }
+, "run-libs-deps":
+ { "doc": ["Collect runtime libraries from given target_fields"]
+ , "vars": ["deps-fieldnames", "deps-transition", "modified-transitions"]
+ , "vars_doc":
+ { "deps-fieldnames":
+ ["List of target_field names to collect dependencies from."]
+ , "deps-transition":
+ ["The optional configuration transition for the targets."]
+ , "modified-transitions":
+ ["Map telling fields that need to be transitioned differently"]
+ }
+ , "imports": {"provider_list": ["./", "..", "field_provider_list"]}
+ , "expression":
+ { "type": "to_subdir"
+ , "flat": true
+ , "$1":
+ { "type": "disjoint_map_union"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ { "type": "foreach"
+ , "var": "fieldname"
+ , "range": {"type": "var", "name": "deps-fieldnames"}
+ , "body":
{ "type": "let*"
, "bindings":
- [ ["provider", "link-deps"]
+ [ ["provider", "run-libs"]
, ["default", {"type": "empty_map"}]
- , ["transition", {"type": "var", "name": "deps-transition"}]
- ]
- , "body":
- [ {"type": "CALL_EXPRESSION", "name": "provider_list"}
- , {"type": "CALL_EXPRESSION", "name": "artifacts_list"}
+ , [ "transition"
+ , { "type": "lookup"
+ , "map":
+ { "type": "var"
+ , "name": "modified-transitions"
+ , "default": {"type": "empty_map"}
+ }
+ , "key": {"type": "var", "name": "fieldname"}
+ , "default": {"type": "var", "name": "deps-transition"}
+ }
+ ]
]
+ , "body": {"type": "CALL_EXPRESSION", "name": "provider_list"}
}
}
}
}
}
}
-, "link-args-deps":
- { "doc": ["Collect linker arguments from given target_fields"]
- , "vars": ["deps-fieldnames", "deps-transition"]
+, "run-libs-args-deps":
+ { "doc":
+ ["Collect runtime libraries link arguments from given target_fields"]
+ , "vars": ["deps-fieldnames", "deps-transition", "modified-transitions"]
, "vars_doc":
{ "deps-fieldnames":
["List of target_field names to collect arguments from."]
, "deps-transition":
["The optional configuration transition for the targets."]
+ , "modified-transitions":
+ ["Map telling fields that need to be transitioned differently"]
}
, "imports": {"list_provider": ["./", "..", "field_list_provider"]}
, "expression":
@@ -421,8 +641,18 @@
, "body":
{ "type": "let*"
, "bindings":
- [ ["provider", "link-args"]
- , ["transition", {"type": "var", "name": "deps-transition"}]
+ [ ["provider", "run-libs-args"]
+ , [ "transition"
+ , { "type": "lookup"
+ , "map":
+ { "type": "var"
+ , "name": "modified-transitions"
+ , "default": {"type": "empty_map"}
+ }
+ , "key": {"type": "var", "name": "fieldname"}
+ , "default": {"type": "var", "name": "deps-transition"}
+ }
+ ]
]
, "body": {"type": "CALL_EXPRESSION", "name": "list_provider"}
}
@@ -432,12 +662,15 @@
}
, "pkg-map-provider-deps":
{ "doc": ["Collect maps from provider \"package\" for given target_fields"]
- , "vars": ["pkg-key", "deps-fieldnames", "deps-transition"]
+ , "vars":
+ ["pkg-key", "deps-fieldnames", "deps-transition", "modified-transitions"]
, "vars_doc":
{ "pkg-key": ["Key to lookup in provider \"package\"."]
, "deps-fieldnames": ["List of target_field names to collect maps from."]
, "deps-transition":
["The optional configuration transition for the targets."]
+ , "modified-transitions":
+ ["Map telling fields that need to be transitioned differently"]
}
, "imports": {"provider_list": ["./", "..", "field_provider_list"]}
, "expression":
@@ -453,7 +686,17 @@
, "bindings":
[ ["provider", "package"]
, ["default", {"type": "empty_map"}]
- , ["transition", {"type": "var", "name": "deps-transition"}]
+ , [ "transition"
+ , { "type": "lookup"
+ , "map":
+ { "type": "var"
+ , "name": "modified-transitions"
+ , "default": {"type": "empty_map"}
+ }
+ , "key": {"type": "var", "name": "fieldname"}
+ , "default": {"type": "var", "name": "deps-transition"}
+ }
+ ]
]
, "body":
{ "type": "foreach"
@@ -473,11 +716,13 @@
}
, "cflags-files-deps":
{ "doc": ["Collect cflags files from target_fields"]
- , "vars": ["deps-fieldnames", "deps-transition"]
+ , "vars": ["deps-fieldnames", "deps-transition", "modified-transitions"]
, "vars_doc":
{ "deps-fieldnames": ["List of target_field names to collect files from."]
, "deps-transition":
["The optional configuration transition for the targets."]
+ , "modified-transitions":
+ ["Map telling fields that need to be transitioned differently"]
}
, "imports": {"pkg-provider": "pkg-map-provider-deps"}
, "expression":
@@ -488,11 +733,13 @@
}
, "ldflags-files-deps":
{ "doc": ["Collect cflags files from target_fields"]
- , "vars": ["deps-fieldnames", "deps-transition"]
+ , "vars": ["deps-fieldnames", "deps-transition", "modified-transitions"]
, "vars_doc":
{ "deps-fieldnames": ["List of target_field names to collect files from."]
, "deps-transition":
["The optional configuration transition for the targets."]
+ , "modified-transitions":
+ ["Map telling fields that need to be transitioned differently"]
}
, "imports": {"pkg-provider": "pkg-map-provider-deps"}
, "expression":
@@ -986,8 +1233,16 @@
, "private-hdrs"
, "compile-deps"
, "cflags-files"
+ , "component-fieldnames"
+ , "defaults-transition"
+ , "deps-transition"
+ , "modified-transitions"
]
- , "imports": {"add-fission-compile-flags": "add-fission-compile-flags"}
+ , "imports":
+ { "field_artifacts": ["./", "..", "field_artifacts"]
+ , "default-INCLUDE_SCANNER": "default-INCLUDE_SCANNER"
+ , "add-fission-compile-flags": "add-fission-compile-flags"
+ }
, "expression":
{ "type": "let*"
, "bindings":
@@ -1015,10 +1270,29 @@
]
}
]
+ , [ "include_scan_tool"
+ , { "type": "disjoint_map_union"
+ , "msg": "Include scanner should be single artifact"
+ , "$1":
+ { "type": "foreach"
+ , "var": "artifact"
+ , "range":
+ { "type": "values"
+ , "$1":
+ {"type": "CALL_EXPRESSION", "name": "default-INCLUDE_SCANNER"}
+ }
+ , "body":
+ { "type": "singleton_map"
+ , "key": "include_scan"
+ , "value": {"type": "var", "name": "artifact"}
+ }
+ }
+ }
+ ]
, [ "compile flags"
, {"type": "CALL_EXPRESSION", "name": "add-fission-compile-flags"}
]
- , [ "all staged output artifacts"
+ , [ "my output artifacts"
, { "type": "foreach_map"
, "var_key": "src_name"
, "var_val": "src_val"
@@ -1075,6 +1349,59 @@
, "$1": ["work", {"type": "var", "name": "dwarf out"}]
}
]
+ , [ "cmdline"
+ , { "type": "++"
+ , "$1":
+ [ [{"type": "var", "name": "COMPILER"}]
+ , {"type": "var", "name": "compile flags"}
+ , ["-I", "work", "-isystem", "include"]
+ , ["-c", {"type": "var", "name": "work src_name"}]
+ ]
+ }
+ ]
+ , [ "minimal include tree"
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "include_scan_tool"}
+ , "then":
+ { "type": "from_subdir"
+ , "subdir": "out"
+ , "$1":
+ { "type": "ACTION"
+ , "out_dirs": ["out/include"]
+ , "inputs":
+ { "type": "map_union"
+ , "$1":
+ [ {"type": "var", "name": "inputs"}
+ , {"type": "var", "name": "include_scan_tool"}
+ ]
+ }
+ , "env":
+ { "type": "var"
+ , "name": "ENV"
+ , "default": {"type": "empty_map"}
+ }
+ , "cmd":
+ { "type": "++"
+ , "$1":
+ [ ["./include_scan"]
+ , ["out"]
+ , {"type": "var", "name": "cmdline"}
+ , ["-E", "-M"]
+ ]
+ }
+ }
+ }
+ , "else": {"type": "var", "name": "include tree"}
+ }
+ ]
+ , [ "minimal inputs"
+ , { "type": "map_union"
+ , "$1":
+ [ {"type": "var", "name": "inputs"}
+ , {"type": "var", "name": "minimal include tree"}
+ ]
+ }
+ ]
, [ "action output"
, { "type": "ACTION"
, "outs":
@@ -1096,7 +1423,7 @@
, [{"type": "var", "name": "work out"}]
]
}
- , "inputs": {"type": "var", "name": "inputs"}
+ , "inputs": {"type": "var", "name": "minimal inputs"}
, "env":
{ "type": "var"
, "name": "ENV"
@@ -1105,10 +1432,7 @@
, "cmd":
{ "type": "++"
, "$1":
- [ [{"type": "var", "name": "COMPILER"}]
- , {"type": "var", "name": "compile flags"}
- , ["-I", "work", "-isystem", "include"]
- , ["-c", {"type": "var", "name": "work src_name"}]
+ [ {"type": "var", "name": "cmdline"}
, ["-o", {"type": "var", "name": "work out"}]
]
}
@@ -1156,11 +1480,11 @@
}
}
]
- , [ "staged objects"
+ , [ "my objects"
, { "type": "map_union"
, "$1":
{ "type": "foreach"
- , "range": {"type": "var", "name": "all staged output artifacts"}
+ , "range": {"type": "var", "name": "my output artifacts"}
, "body":
{ "type": "[]"
, "index": "0"
@@ -1169,7 +1493,7 @@
}
}
]
- , [ "staged dwarf objects"
+ , [ "my dwarf objects"
, { "type": "if"
, "cond":
{ "type": "lookup"
@@ -1185,7 +1509,7 @@
{ "type": "map_union"
, "$1":
{ "type": "foreach"
- , "range": {"type": "var", "name": "all staged output artifacts"}
+ , "range": {"type": "var", "name": "my output artifacts"}
, "body":
{ "type": "[]"
, "index": "1"
@@ -1195,17 +1519,51 @@
}
}
]
+ , [ "component artifacts"
+ , { "type": "disjoint_map_union"
+ , "$1":
+ { "type": "foreach"
+ , "var": "fieldname"
+ , "range":
+ {"type": "var", "name": "component-fieldnames", "default": []}
+ , "body":
+ { "type": "let*"
+ , "bindings":
+ [ [ "transition"
+ , { "type": "lookup"
+ , "map":
+ { "type": "var"
+ , "name": "modified-transitions"
+ , "default": {"type": "empty_map"}
+ }
+ , "key": {"type": "var", "name": "fieldname"}
+ , "default": {"type": "var", "name": "deps-transition"}
+ }
+ ]
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "field_artifacts"}
+ }
+ }
+ }
+ ]
]
, "body":
{ "type": "map_union"
, "$1":
[ { "type": "singleton_map"
, "key": "objects"
- , "value": {"type": "var", "name": "staged objects"}
+ , "value":
+ { "type": "disjoint_map_union"
+ , "msg": "Staging conflict between own objects and objects of components"
+ , "$1":
+ [ {"type": "var", "name": "my objects"}
+ , {"type": "var", "name": "component artifacts"}
+ ]
+ }
}
, { "type": "singleton_map"
, "key": "dwarf objects"
- , "value": {"type": "var", "name": "staged dwarf objects"}
+ , "value": {"type": "var", "name": "my dwarf objects"}
}
]
}
@@ -1231,6 +1589,7 @@
, "deps-fieldnames"
, "compile-args"
, "defaults-transition"
+ , "modified-transitions"
]
, "imports":
{ "list_provider": ["./", "..", "field_list_provider"]
@@ -1295,17 +1654,28 @@
, { "type": "to_subdir"
, "subdir": "include"
, "$1":
- { "type": "let*"
- , "bindings":
- [["transition", {"type": "var", "name": "deps-transition"}]]
- , "body":
- { "type": "map_union"
+ { "type": "map_union"
+ , "$1":
+ { "type": "++"
, "$1":
- { "type": "++"
- , "$1":
- { "type": "foreach"
- , "var": "fieldname"
- , "range": {"type": "var", "name": "deps-fieldnames"}
+ { "type": "foreach"
+ , "var": "fieldname"
+ , "range": {"type": "var", "name": "deps-fieldnames"}
+ , "body":
+ { "type": "let*"
+ , "bindings":
+ [ [ "transition"
+ , { "type": "lookup"
+ , "map":
+ { "type": "var"
+ , "name": "modified-transitions"
+ , "default": {"type": "empty_map"}
+ }
+ , "key": {"type": "var", "name": "fieldname"}
+ , "default": {"type": "var", "name": "deps-transition"}
+ }
+ ]
+ ]
, "body":
{"type": "CALL_EXPRESSION", "name": "runfiles_list"}
}
@@ -1504,7 +1874,17 @@
{ "type": "let*"
, "bindings":
[ ["provider", "lint"]
- , ["transition", {"type": "var", "name": "deps-transition"}]
+ , [ "transition"
+ , { "type": "lookup"
+ , "map":
+ { "type": "var"
+ , "name": "modified-transitions"
+ , "default": {"type": "empty_map"}
+ }
+ , "key": {"type": "var", "name": "fieldname"}
+ , "default": {"type": "var", "name": "deps-transition"}
+ }
+ ]
]
, "body": {"type": "CALL_EXPRESSION", "name": "list_provider"}
}
@@ -1595,12 +1975,21 @@
}
}
, "flags-cc":
- { "vars": ["CFLAGS", "ADD_CFLAGS", "defaults-transition"]
+ { "vars":
+ [ "CFLAGS"
+ , "ADD_CFLAGS"
+ , "BUILD_POSITION_INDEPENDENT"
+ , "defaults-transition"
+ ]
, "imports": {"default-CFLAGS": "default-CFLAGS"}
, "expression":
{ "type": "++"
, "$1":
- [ { "type": "var"
+ [ { "type": "if"
+ , "cond": {"type": "var", "name": "BUILD_POSITION_INDEPENDENT"}
+ , "then": ["-fPIC"]
+ }
+ , { "type": "var"
, "name": "CFLAGS"
, "default": {"type": "CALL_EXPRESSION", "name": "default-CFLAGS"}
}
@@ -1609,12 +1998,21 @@
}
}
, "flags-cxx":
- { "vars": ["CXXFLAGS", "ADD_CXXFLAGS", "defaults-transition"]
+ { "vars":
+ [ "CXXFLAGS"
+ , "ADD_CXXFLAGS"
+ , "BUILD_POSITION_INDEPENDENT"
+ , "defaults-transition"
+ ]
, "imports": {"default-CXXFLAGS": "default-CXXFLAGS"}
, "expression":
{ "type": "++"
, "$1":
- [ { "type": "var"
+ [ { "type": "if"
+ , "cond": {"type": "var", "name": "BUILD_POSITION_INDEPENDENT"}
+ , "then": ["-fPIC"]
+ }
+ , { "type": "var"
, "name": "CXXFLAGS"
, "default": {"type": "CALL_EXPRESSION", "name": "default-CXXFLAGS"}
}
@@ -1629,6 +2027,7 @@
, "ADD_CFLAGS"
, "ADD_CXXFLAGS"
, "DEBUG"
+ , "BUILD_POSITION_INDEPENDENT"
, "pure C"
, "defaults-transition"
]
@@ -1667,6 +2066,7 @@
, "ADD_CXXFLAGS"
, "AR"
, "ENV"
+ , "BUILD_POSITION_INDEPENDENT"
, "DEBUG"
, "name"
, "pure C"
@@ -1678,6 +2078,9 @@
, "compile-args"
, "cflags-files"
, "defaults-transition"
+ , "component-fieldnames"
+ , "deps-transition"
+ , "modified-transitions"
]
, "imports": {"lib action": "lib action"}
, "expression":
@@ -1701,6 +2104,7 @@
, "ADD_CXXFLAGS"
, "AR"
, "ENV"
+ , "BUILD_POSITION_INDEPENDENT"
, "DEBUG"
, "name"
, "pure C"
@@ -1712,6 +2116,9 @@
, "compile-args"
, "cflags-files"
, "defaults-transition"
+ , "component-fieldnames"
+ , "deps-transition"
+ , "modified-transitions"
]
, "imports":
{ "compiler": "compiler"
@@ -1947,8 +2354,8 @@
, "ADD_CFLAGS"
, "ADD_CXXFLAGS"
, "AR"
- , "DWP"
, "ENV"
+ , "BUILD_POSITION_INDEPENDENT"
, "DEBUG"
, "LINT"
, "name"
@@ -1958,18 +2365,25 @@
, "private-hdrs"
, "cflags"
, "private-cflags"
+ , "ldflags"
, "private-ldflags"
, "stage"
, "pkg-name"
, "extra-provides"
, "public-fieldnames"
, "private-fieldnames"
+ , "component-fieldnames"
+ , "deps-transition"
+ , "modified-transitions"
+ , "defaults-transition"
]
, "imports":
{ "compile-deps": "compile-deps"
, "compile-args-deps": "compile-args-deps"
, "link-deps": "link-deps"
, "link-args-deps": "link-args-deps"
+ , "run-libs-deps": "run-libs-deps"
+ , "run-libs-args-deps": "run-libs-args-deps"
, "cflags-files-deps": "cflags-files-deps"
, "ldflags-files-deps": "ldflags-files-deps"
, "lib action": "lib action"
@@ -2063,7 +2477,7 @@
, "else": {"type": "empty_map"}
}
]
- , ["lint-deps fieldnames", ["deps", "private-deps"]]
+ , ["lint-deps fieldnames", ["deps", "private-deps", "components"]]
, [ "lint"
, { "type": "if"
, "cond": {"type": "var", "name": "LINT"}
@@ -2076,12 +2490,17 @@
{ "type": "++"
, "$1":
[ {"type": "keys", "$1": {"type": "var", "name": "lib"}}
+ , {"type": "var", "name": "ldflags", "default": []}
, {"type": "var", "name": "private-ldflags", "default": []}
, {"type": "CALL_EXPRESSION", "name": "link-args-deps"}
]
}
}
]
+ , ["run-libs", {"type": "CALL_EXPRESSION", "name": "run-libs-deps"}]
+ , [ "run-libs-args"
+ , {"type": "CALL_EXPRESSION", "name": "run-libs-args-deps"}
+ ]
, [ "ldflags-files"
, {"type": "CALL_EXPRESSION", "name": "ldflags-files-deps"}
]
@@ -2156,6 +2575,958 @@
, "compile-args"
, "link-deps"
, "link-args"
+ , "run-libs"
+ , "run-libs-args"
+ , "package"
+ , "debug-srcs"
+ , "debug-hdrs"
+ , "lint"
+ , "dwarf-pkg"
+ ]
+ }
+ , { "type": "var"
+ , "name": "extra-provides"
+ , "default": {"type": "empty_map"}
+ }
+ ]
+ }
+ }
+ }
+ }
+, "shared artifact":
+ { "doc": ["Provides the shared library artifact."]
+ , "vars":
+ [ "CC"
+ , "CXX"
+ , "CFLAGS"
+ , "CXXFLAGS"
+ , "LDFLAGS"
+ , "ADD_CFLAGS"
+ , "ADD_CXXFLAGS"
+ , "ADD_LDFLAGS"
+ , "ENV"
+ , "DEBUG"
+ , "name"
+ , "pure C"
+ , "srcs"
+ , "hdrs"
+ , "private-hdrs"
+ , "soversion"
+ , "compile-deps"
+ , "compile-args"
+ , "link-deps"
+ , "link-args"
+ , "run-libs"
+ , "run-libs-args"
+ , "cflags-files"
+ , "ldflags-files"
+ , "defaults-transition"
+ , "component-fieldnames"
+ , "deps-transition"
+ , "modified-transitions"
+ ]
+ , "imports": {"shared action": "shared action"}
+ , "expression":
+ { "type": "lookup"
+ , "key": "library"
+ , "map": {"type": "CALL_EXPRESSION", "name": "shared action"}
+ , "default": {"type": "empty_map"}
+ }
+ }
+, "shared action":
+ { "doc":
+ [ "Run the action producing the shared artifact and pass it together with"
+ , "related information to consumers."
+ ]
+ , "vars":
+ [ "CC"
+ , "CXX"
+ , "CFLAGS"
+ , "CXXFLAGS"
+ , "LDFLAGS"
+ , "ADD_CFLAGS"
+ , "ADD_CXXFLAGS"
+ , "ADD_LDFLAGS"
+ , "ENV"
+ , "DEBUG"
+ , "name"
+ , "pure C"
+ , "srcs"
+ , "hdrs"
+ , "private-hdrs"
+ , "soversion"
+ , "compile-deps"
+ , "compile-args"
+ , "link-deps"
+ , "link-args"
+ , "run-libs"
+ , "run-libs-args"
+ , "cflags-files"
+ , "ldflags-files"
+ , "defaults-transition"
+ , "component-fieldnames"
+ , "deps-transition"
+ , "modified-transitions"
+ ]
+ , "imports":
+ { "compiler": "compiler"
+ , "flags": "flags"
+ , "objects": "objects"
+ , "default-ENV": "default-ENV"
+ , "default-PATH": "default-PATH"
+ , "default-LDFLAGS": "default-LDFLAGS"
+ , "default-TOOLCHAIN": "default-TOOLCHAIN"
+ , "default-NON_SYSTEM_TOOLS": "default-NON_SYSTEM_TOOLS"
+ , "add-fission-compile-flags": "add-fission-compile-flags"
+ , "add-fission-link-flags": "add-fission-link-flags"
+ }
+ , "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": "++"
+ , "$1":
+ [ {"type": "CALL_EXPRESSION", "name": "flags"}
+ , {"type": "var", "name": "compile-args"}
+ ]
+ }
+ ]
+ , [ "LDFLAGS"
+ , { "type": "++"
+ , "$1":
+ [ { "type": "var"
+ , "name": "LDFLAGS"
+ , "default":
+ {"type": "CALL_EXPRESSION", "name": "default-LDFLAGS"}
+ }
+ , {"type": "var", "name": "ADD_LDFLAGS", "default": []}
+ ]
+ }
+ ]
+ , [ "ENV"
+ , { "type": "map_union"
+ , "$1":
+ [ {"type": "CALL_EXPRESSION", "name": "default-ENV"}
+ , {"type": "var", "name": "ENV", "default": {"type": "empty_map"}}
+ ]
+ }
+ ]
+ , [ "ENV_PATH"
+ , { "type": "lookup"
+ , "map": {"type": "var", "name": "ENV"}
+ , "key": "PATH"
+ }
+ ]
+ , [ "ENV"
+ , { "type": "map_union"
+ , "$1":
+ [ {"type": "var", "name": "ENV"}
+ , { "type": "singleton_map"
+ , "key": "PATH"
+ , "value":
+ { "type": "join"
+ , "separator": ":"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ [ {"type": "CALL_EXPRESSION", "name": "default-PATH"}
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "ENV_PATH"}
+ , "then": [{"type": "var", "name": "ENV_PATH"}]
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ ]
+ , ["objects result", {"type": "CALL_EXPRESSION", "name": "objects"}]
+ , [ "objects"
+ , { "type": "lookup"
+ , "key": "objects"
+ , "map":
+ { "type": "var"
+ , "name": "objects result"
+ , "default": {"type": "empty_map"}
+ }
+ }
+ ]
+ , [ "compile flags"
+ , {"type": "CALL_EXPRESSION", "name": "add-fission-compile-flags"}
+ ]
+ , [ "ld flags"
+ , {"type": "CALL_EXPRESSION", "name": "add-fission-link-flags"}
+ ]
+ , [ "base name"
+ , { "type": "if"
+ , "cond":
+ { "type": "or"
+ , "$1":
+ [ {"type": "var", "name": "objects"}
+ , {"type": "var", "name": "link-deps"}
+ ]
+ }
+ , "then":
+ { "type": "assert_non_empty"
+ , "msg": "A name has to be provided for non-header-only libraries"
+ , "$1": {"type": "var", "name": "name"}
+ }
+ , "else": {"type": "var", "name": "name"}
+ }
+ ]
+ , [ "libname"
+ , { "type": "join"
+ , "$1": ["lib", {"type": "var", "name": "base name"}, ".so"]
+ }
+ ]
+ , [ "libname"
+ , { "type": "join"
+ , "separator": "."
+ , "$1":
+ { "type": "++"
+ , "$1":
+ [ [{"type": "var", "name": "libname"}]
+ , {"type": "var", "name": "soversion"}
+ ]
+ }
+ }
+ ]
+ , [ "lib"
+ , { "type": "if"
+ , "cond":
+ { "type": "or"
+ , "$1":
+ [ {"type": "var", "name": "objects"}
+ , {"type": "var", "name": "link-deps"}
+ ]
+ }
+ , "else": {"type": "empty_map"}
+ , "then":
+ { "type": "ACTION"
+ , "outs": [{"type": "var", "name": "libname"}]
+ , "inputs":
+ { "type": "map_union"
+ , "$1":
+ [ {"type": "var", "name": "TOOLCHAIN"}
+ , {"type": "var", "name": "objects"}
+ , {"type": "var", "name": "link-deps"}
+ , {"type": "var", "name": "run-libs"}
+ , { "type": "var"
+ , "name": "cflags-files"
+ , "default": {"type": "empty_map"}
+ }
+ , { "type": "var"
+ , "name": "ldflags-files"
+ , "default": {"type": "empty_map"}
+ }
+ ]
+ }
+ , "env":
+ {"type": "var", "name": "ENV", "default": {"type": "empty_map"}}
+ , "cmd":
+ { "type": "++"
+ , "$1":
+ [ [ {"type": "var", "name": "COMPILER"}
+ , "-shared"
+ , "-Wl,-rpath,$ORIGIN"
+ , "-Wl,-rpath,$ORIGIN/../lib"
+ , { "type": "join"
+ , "$1":
+ ["-Wl,-soname,", {"type": "var", "name": "libname"}]
+ }
+ ]
+ , {"type": "var", "name": "compile flags"}
+ , ["-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": "ld flags"}
+ ]
+ }
+ }
+ }
+ ]
+ ]
+ , "body":
+ { "type": "map_union"
+ , "$1":
+ [ { "type": "singleton_map"
+ , "key": "library"
+ , "value": {"type": "var", "name": "lib"}
+ }
+ , { "type": "singleton_map"
+ , "key": "dwarf objects"
+ , "value":
+ { "type": "lookup"
+ , "key": "dwarf objects"
+ , "map":
+ { "type": "var"
+ , "name": "objects result"
+ , "default": {"type": "empty_map"}
+ }
+ }
+ }
+ , { "type": "env"
+ , "vars": ["TOOLCHAIN", "TOOLCHAIN_DIR", "NON_SYSTEM_TOOLS", "ENV"]
+ }
+ ]
+ }
+ }
+ }
+, "shared result":
+ { "vars":
+ [ "CC"
+ , "CXX"
+ , "CFLAGS"
+ , "CXXFLAGS"
+ , "LDFLAGS"
+ , "ADD_CXXFLAGS"
+ , "ADD_CFLAGS"
+ , "ADD_LDFLAGS"
+ , "ENV"
+ , "DEBUG"
+ , "LINT"
+ , "name"
+ , "pure C"
+ , "srcs"
+ , "hdrs"
+ , "private-hdrs"
+ , "cflags"
+ , "private-cflags"
+ , "ldflags"
+ , "private-ldflags"
+ , "soversion"
+ , "pkg-name"
+ , "extra-provides"
+ , "defaults-transition"
+ , "deps-transition"
+ , "modified-transitions"
+ , "public-fieldnames"
+ , "private-fieldnames"
+ , "component-fieldnames"
+ ]
+ , "imports":
+ { "compile-deps": "compile-deps"
+ , "compile-args-deps": "compile-args-deps"
+ , "link-deps": "link-deps"
+ , "link-args-deps": "link-args-deps"
+ , "run-libs-deps": "run-libs-deps"
+ , "run-libs-args-deps": "run-libs-args-deps"
+ , "cflags-files-deps": "cflags-files-deps"
+ , "ldflags-files-deps": "ldflags-files-deps"
+ , "shared action": "shared action"
+ , "debug-deps": "debug-deps"
+ , "lint": "lint information"
+ , "dwarf package": "dwarf package"
+ }
+ , "expression":
+ { "type": "let*"
+ , "bindings":
+ [ ["deps-fieldnames", {"type": "var", "name": "private-fieldnames"}]
+ , ["compile-deps", {"type": "CALL_EXPRESSION", "name": "compile-deps"}]
+ , [ "compile-args"
+ , { "type": "nub_right"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ [ {"type": "var", "name": "cflags"}
+ , {"type": "var", "name": "private-cflags"}
+ , {"type": "CALL_EXPRESSION", "name": "compile-args-deps"}
+ ]
+ }
+ }
+ ]
+ , [ "cflags-files"
+ , {"type": "CALL_EXPRESSION", "name": "cflags-files-deps"}
+ ]
+ , ["link-deps", {"type": "CALL_EXPRESSION", "name": "link-deps"}]
+ , ["link-args", {"type": "CALL_EXPRESSION", "name": "link-args-deps"}]
+ , ["run-libs", {"type": "CALL_EXPRESSION", "name": "run-libs-deps"}]
+ , [ "run-libs-args"
+ , { "type": "nub_right"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ [ {"type": "var", "name": "ldflags", "default": []}
+ , {"type": "var", "name": "private-ldflags", "default": []}
+ , {"type": "CALL_EXPRESSION", "name": "run-libs-args-deps"}
+ ]
+ }
+ }
+ ]
+ , [ "ldflags-files"
+ , {"type": "CALL_EXPRESSION", "name": "ldflags-files-deps"}
+ ]
+ , [ "lib action result"
+ , {"type": "CALL_EXPRESSION", "name": "shared action"}
+ ]
+ , [ "lib"
+ , { "type": "lookup"
+ , "key": "library"
+ , "map": {"type": "var", "name": "lib action result"}
+ }
+ ]
+ , [ "dwarf objects"
+ , { "type": "lookup"
+ , "key": "dwarf objects"
+ , "map": {"type": "var", "name": "lib action result"}
+ }
+ ]
+ , ["dwarf deps", {"type": "empty_map"}]
+ , [ "dwarf-pkg"
+ , { "type": "if"
+ , "cond":
+ { "type": "and"
+ , "$1":
+ [ {"type": "var", "name": "dwarf objects"}
+ , { "type": "lookup"
+ , "key": "USE_DEBUG_FISSION"
+ , "map":
+ { "type": "var"
+ , "name": "DEBUG"
+ , "default": {"type": "empty_map"}
+ }
+ }
+ ]
+ }
+ , "then":
+ { "type": "let*"
+ , "bindings":
+ [ [ "TOOLCHAIN"
+ , { "type": "lookup"
+ , "key": "TOOLCHAIN"
+ , "map": {"type": "var", "name": "lib action result"}
+ }
+ ]
+ , [ "TOOLCHAIN_DIR"
+ , { "type": "lookup"
+ , "key": "TOOLCHAIN_DIR"
+ , "map": {"type": "var", "name": "lib action result"}
+ }
+ ]
+ , [ "NON_SYSTEM_TOOLS"
+ , { "type": "lookup"
+ , "key": "NON_SYSTEM_TOOLS"
+ , "map": {"type": "var", "name": "lib action result"}
+ }
+ ]
+ , [ "ENV"
+ , { "type": "lookup"
+ , "key": "ENV"
+ , "map": {"type": "var", "name": "lib action result"}
+ }
+ ]
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "dwarf package"}
+ }
+ , "else": {"type": "empty_map"}
+ }
+ ]
+ , [ "debug-srcs"
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "DEBUG"}
+ , "then":
+ { "type": "map_union"
+ , "$1":
+ [ { "type": "let*"
+ , "bindings": [["deps-provider", "debug-srcs"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "debug-deps"}
+ }
+ , {"type": "var", "name": "srcs"}
+ , {"type": "var", "name": "private-hdrs"}
+ , {"type": "var", "name": "hdrs"}
+ ]
+ }
+ , "else": {"type": "empty_map"}
+ }
+ ]
+ , ["lint-deps fieldnames", ["deps", "private-deps", "components"]]
+ , [ "lint"
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "LINT"}
+ , "then": {"type": "CALL_EXPRESSION", "name": "lint"}
+ }
+ ]
+ , [ "debug-hdrs"
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "DEBUG"}
+ , "then":
+ { "type": "map_union"
+ , "$1":
+ [ { "type": "let*"
+ , "bindings": [["deps-provider", "debug-hdrs"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "debug-deps"}
+ }
+ , {"type": "var", "name": "hdrs"}
+ ]
+ }
+ , "else": {"type": "empty_map"}
+ }
+ ]
+ , ["deps-fieldnames", {"type": "var", "name": "public-fieldnames"}]
+ , ["compile-deps", {"type": "CALL_EXPRESSION", "name": "compile-deps"}]
+ , [ "compile-args"
+ , { "type": "nub_right"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ [ {"type": "var", "name": "cflags"}
+ , {"type": "CALL_EXPRESSION", "name": "compile-args-deps"}
+ ]
+ }
+ }
+ ]
+ , [ "cflags-files"
+ , {"type": "CALL_EXPRESSION", "name": "cflags-files-deps"}
+ ]
+ , ["link-deps", {"type": "empty_map"}]
+ , ["link-args", []]
+ , [ "run-libs"
+ , { "type": "map_union"
+ , "$1":
+ [ {"type": "var", "name": "lib"}
+ , {"type": "var", "name": "run-libs"}
+ ]
+ }
+ ]
+ , [ "run-libs-args"
+ , { "type": "nub_right"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ [ {"type": "keys", "$1": {"type": "var", "name": "lib"}}
+ , {"type": "var", "name": "ldflags", "default": []}
+ ]
+ }
+ }
+ ]
+ , [ "ldflags-files"
+ , {"type": "CALL_EXPRESSION", "name": "ldflags-files-deps"}
+ ]
+ , [ "package"
+ , { "type": "let*"
+ , "bindings":
+ [ ["name", {"type": "var", "name": "pkg-name"}]
+ , [ "version"
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "soversion"}
+ , "then":
+ { "type": "join"
+ , "separator": "."
+ , "$1": {"type": "var", "name": "soversion"}
+ }
+ , "else": null
+ }
+ ]
+ ]
+ , "body":
+ { "type": "env"
+ , "vars": ["name", "version", "cflags-files", "ldflags-files"]
+ }
+ }
+ ]
+ ]
+ , "body":
+ { "type": "RESULT"
+ , "artifacts": {"type": "var", "name": "lib"}
+ , "runfiles": {"type": "var", "name": "hdrs"}
+ , "provides":
+ { "type": "map_union"
+ , "$1":
+ [ { "type": "env"
+ , "vars":
+ [ "compile-deps"
+ , "compile-args"
+ , "link-deps"
+ , "link-args"
+ , "run-libs"
+ , "run-libs-args"
+ , "package"
+ , "debug-srcs"
+ , "debug-hdrs"
+ , "lint"
+ , "dwarf-pkg"
+ ]
+ }
+ , { "type": "var"
+ , "name": "extra-provides"
+ , "default": {"type": "empty_map"}
+ }
+ ]
+ }
+ }
+ }
+ }
+, "object artifacts":
+ { "doc":
+ [ "Get the relevant object artifacts and pass them together with related"
+ , "information to consumers."
+ ]
+ , "vars":
+ [ "CC"
+ , "CXX"
+ , "CFLAGS"
+ , "CXXFLAGS"
+ , "ADD_CFLAGS"
+ , "ADD_CXXFLAGS"
+ , "AR"
+ , "ENV"
+ , "BUILD_POSITION_INDEPENDENT"
+ , "DEBUG"
+ , "name"
+ , "pure C"
+ , "srcs"
+ , "hdrs"
+ , "private-hdrs"
+ , "stage"
+ , "compile-deps"
+ , "compile-args"
+ , "cflags-files"
+ , "defaults-transition"
+ , "modified-transitions"
+ , "component-fieldnames"
+ ]
+ , "imports":
+ { "compiler": "compiler"
+ , "flags": "flags"
+ , "objects": "objects"
+ , "default-AR": "default-AR"
+ , "default-ENV": "default-ENV"
+ , "default-PATH": "default-PATH"
+ , "default-TOOLCHAIN": "default-TOOLCHAIN"
+ , "default-NON_SYSTEM_TOOLS": "default-NON_SYSTEM_TOOLS"
+ }
+ , "expression":
+ { "type": "let*"
+ , "bindings":
+ [ ["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":
+ [ {"type": "CALL_EXPRESSION", "name": "flags"}
+ , {"type": "var", "name": "compile-args"}
+ ]
+ }
+ ]
+ , [ "ENV"
+ , { "type": "map_union"
+ , "$1":
+ [ {"type": "CALL_EXPRESSION", "name": "default-ENV"}
+ , {"type": "var", "name": "ENV", "default": {"type": "empty_map"}}
+ ]
+ }
+ ]
+ , [ "ENV_PATH"
+ , { "type": "lookup"
+ , "map": {"type": "var", "name": "ENV"}
+ , "key": "PATH"
+ }
+ ]
+ , [ "ENV"
+ , { "type": "map_union"
+ , "$1":
+ [ {"type": "var", "name": "ENV"}
+ , { "type": "singleton_map"
+ , "key": "PATH"
+ , "value":
+ { "type": "join"
+ , "separator": ":"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ [ {"type": "CALL_EXPRESSION", "name": "default-PATH"}
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "ENV_PATH"}
+ , "then": [{"type": "var", "name": "ENV_PATH"}]
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ ]
+ ]
+ , "body":
+ { "type": "map_union"
+ , "$1":
+ [ {"type": "CALL_EXPRESSION", "name": "objects"}
+ , { "type": "env"
+ , "vars": ["TOOLCHAIN", "TOOLCHAIN_DIR", "NON_SYSTEM_TOOLS", "ENV"]
+ }
+ ]
+ }
+ }
+ }
+, "object result":
+ { "vars":
+ [ "CC"
+ , "CXX"
+ , "CFLAGS"
+ , "CXXFLAGS"
+ , "ADD_CFLAGS"
+ , "ADD_CXXFLAGS"
+ , "AR"
+ , "DWP"
+ , "ENV"
+ , "BUILD_POSITION_INDEPENDENT"
+ , "BUILD_OBJECT_ONLY_DROP_OBJECT_LINKING"
+ , "DEBUG"
+ , "LINT"
+ , "name"
+ , "pure C"
+ , "srcs"
+ , "hdrs"
+ , "private-hdrs"
+ , "cflags"
+ , "private-cflags"
+ , "ldflags"
+ , "private-ldflags"
+ , "stage"
+ , "pkg-name"
+ , "extra-provides"
+ , "public-fieldnames"
+ , "private-fieldnames"
+ , "component-fieldnames"
+ , "deps-transition"
+ , "modified-transitions"
+ , "defaults-transition"
+ ]
+ , "imports":
+ { "compile-deps": "compile-deps"
+ , "compile-args-deps": "compile-args-deps"
+ , "link-deps": "link-deps"
+ , "link-args-deps": "link-args-deps"
+ , "run-libs-deps": "run-libs-deps"
+ , "run-libs-args-deps": "run-libs-args-deps"
+ , "cflags-files-deps": "cflags-files-deps"
+ , "ldflags-files-deps": "ldflags-files-deps"
+ , "object artifacts": "object artifacts"
+ , "debug-deps": "debug-deps"
+ , "lint": "lint information"
+ , "dwarf package": "dwarf package"
+ }
+ , "expression":
+ { "type": "let*"
+ , "bindings":
+ [ ["deps-fieldnames", {"type": "var", "name": "private-fieldnames"}]
+ , ["compile-deps", {"type": "CALL_EXPRESSION", "name": "compile-deps"}]
+ , [ "compile-args"
+ , { "type": "nub_right"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ [ {"type": "var", "name": "cflags"}
+ , {"type": "var", "name": "private-cflags"}
+ , {"type": "CALL_EXPRESSION", "name": "compile-args-deps"}
+ ]
+ }
+ }
+ ]
+ , [ "cflags-files"
+ , {"type": "CALL_EXPRESSION", "name": "cflags-files-deps"}
+ ]
+ , ["link-deps", {"type": "CALL_EXPRESSION", "name": "link-deps"}]
+ , [ "object artifacts with env"
+ , {"type": "CALL_EXPRESSION", "name": "object artifacts"}
+ ]
+ , [ "objects"
+ , { "type": "lookup"
+ , "key": "objects"
+ , "map": {"type": "var", "name": "object artifacts with env"}
+ }
+ ]
+ , [ "dwarf objects"
+ , { "type": "lookup"
+ , "key": "dwarf objects"
+ , "map": {"type": "var", "name": "object artifacts with env"}
+ }
+ ]
+ , ["dwarf deps", {"type": "empty_map"}]
+ , [ "dwarf-pkg"
+ , { "type": "if"
+ , "cond":
+ { "type": "and"
+ , "$1":
+ [ {"type": "var", "name": "dwarf objects"}
+ , { "type": "lookup"
+ , "key": "USE_DEBUG_FISSION"
+ , "map":
+ { "type": "var"
+ , "name": "DEBUG"
+ , "default": {"type": "empty_map"}
+ }
+ }
+ ]
+ }
+ , "then":
+ { "type": "let*"
+ , "bindings":
+ [ [ "TOOLCHAIN"
+ , { "type": "lookup"
+ , "key": "TOOLCHAIN"
+ , "map": {"type": "var", "name": "object artifacts with env"}
+ }
+ ]
+ , [ "TOOLCHAIN_DIR"
+ , { "type": "lookup"
+ , "key": "TOOLCHAIN_DIR"
+ , "map": {"type": "var", "name": "object artifacts with env"}
+ }
+ ]
+ , [ "NON_SYSTEM_TOOLS"
+ , { "type": "lookup"
+ , "key": "NON_SYSTEM_TOOLS"
+ , "map": {"type": "var", "name": "object artifacts with env"}
+ }
+ ]
+ , [ "ENV"
+ , { "type": "lookup"
+ , "key": "ENV"
+ , "map": {"type": "var", "name": "object artifacts with env"}
+ }
+ ]
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "dwarf package"}
+ }
+ , "else": {"type": "empty_map"}
+ }
+ ]
+ , ["lint-deps fieldnames", ["deps", "private-deps", "components"]]
+ , [ "lint"
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "LINT"}
+ , "then": {"type": "CALL_EXPRESSION", "name": "lint"}
+ }
+ ]
+ , [ "link-args"
+ , { "type": "nub_right"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ [ { "type": "if"
+ , "cond":
+ { "type": "var"
+ , "name": "BUILD_OBJECT_ONLY_DROP_OBJECT_LINKING"
+ }
+ , "then": []
+ , "else":
+ {"type": "keys", "$1": {"type": "var", "name": "objects"}}
+ }
+ , {"type": "var", "name": "ldflags", "default": []}
+ , {"type": "var", "name": "private-ldflags", "default": []}
+ , {"type": "CALL_EXPRESSION", "name": "link-args-deps"}
+ ]
+ }
+ }
+ ]
+ , ["run-libs", {"type": "CALL_EXPRESSION", "name": "run-libs-deps"}]
+ , [ "run-libs-args"
+ , { "type": "nub_right"
+ , "$1": {"type": "CALL_EXPRESSION", "name": "run-libs-args-deps"}
+ }
+ ]
+ , [ "ldflags-files"
+ , {"type": "CALL_EXPRESSION", "name": "ldflags-files-deps"}
+ ]
+ , [ "debug-srcs"
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "DEBUG"}
+ , "then":
+ { "type": "map_union"
+ , "$1":
+ [ { "type": "let*"
+ , "bindings": [["deps-provider", "debug-srcs"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "debug-deps"}
+ }
+ , {"type": "var", "name": "srcs"}
+ , {"type": "var", "name": "private-hdrs"}
+ , {"type": "var", "name": "hdrs"}
+ ]
+ }
+ , "else": {"type": "empty_map"}
+ }
+ ]
+ , [ "debug-hdrs"
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "DEBUG"}
+ , "then":
+ { "type": "map_union"
+ , "$1":
+ [ { "type": "let*"
+ , "bindings": [["deps-provider", "debug-hdrs"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "debug-deps"}
+ }
+ , {"type": "var", "name": "hdrs"}
+ ]
+ }
+ , "else": {"type": "empty_map"}
+ }
+ ]
+ , ["deps-fieldnames", {"type": "var", "name": "public-fieldnames"}]
+ , ["compile-deps", {"type": "CALL_EXPRESSION", "name": "compile-deps"}]
+ , [ "compile-args"
+ , { "type": "nub_right"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ [ {"type": "var", "name": "cflags"}
+ , {"type": "CALL_EXPRESSION", "name": "compile-args-deps"}
+ ]
+ }
+ }
+ ]
+ , [ "cflags-files"
+ , {"type": "CALL_EXPRESSION", "name": "cflags-files-deps"}
+ ]
+ , [ "package"
+ , { "type": "let*"
+ , "bindings": [["name", {"type": "var", "name": "pkg-name"}]]
+ , "body":
+ {"type": "env", "vars": ["name", "cflags-files", "ldflags-files"]}
+ }
+ ]
+ ]
+ , "body":
+ { "type": "RESULT"
+ , "artifacts": {"type": "var", "name": "objects"}
+ , "runfiles": {"type": "var", "name": "hdrs"}
+ , "provides":
+ { "type": "map_union"
+ , "$1":
+ [ { "type": "env"
+ , "vars":
+ [ "compile-deps"
+ , "compile-args"
+ , "link-deps"
+ , "link-args"
+ , "run-libs"
+ , "run-libs-args"
, "package"
, "debug-srcs"
, "debug-hdrs"
@@ -2179,9 +3550,12 @@
, "CXX"
, "CFLAGS"
, "CXXFLAGS"
+ , "LDFLAGS"
, "ADD_CFLAGS"
, "ADD_CXXFLAGS"
+ , "ADD_LDFLAGS"
, "ENV"
+ , "BUILD_POSITION_INDEPENDENT"
, "DEBUG"
, "name"
, "pure C"
@@ -2192,6 +3566,8 @@
, "compile-args"
, "link-deps"
, "link-args"
+ , "run-libs"
+ , "run-libs-args"
, "cflags-files"
, "ldflags-files"
, "defaults-transition"
@@ -2214,9 +3590,12 @@
, "CXX"
, "CFLAGS"
, "CXXFLAGS"
+ , "LDFLAGS"
, "ADD_CFLAGS"
, "ADD_CXXFLAGS"
+ , "ADD_LDFLAGS"
, "ENV"
+ , "BUILD_POSITION_INDEPENDENT"
, "DEBUG"
, "name"
, "pure C"
@@ -2227,6 +3606,8 @@
, "compile-args"
, "link-deps"
, "link-args"
+ , "run-libs"
+ , "run-libs-args"
, "cflags-files"
, "ldflags-files"
, "defaults-transition"
@@ -2266,7 +3647,18 @@
]
}
]
- , ["LDFLAGS", {"type": "CALL_EXPRESSION", "name": "default-LDFLAGS"}]
+ , [ "LDFLAGS"
+ , { "type": "++"
+ , "$1":
+ [ { "type": "var"
+ , "name": "LDFLAGS"
+ , "default":
+ {"type": "CALL_EXPRESSION", "name": "default-LDFLAGS"}
+ }
+ , {"type": "var", "name": "ADD_LDFLAGS", "default": []}
+ ]
+ }
+ ]
, [ "ENV"
, { "type": "map_union"
, "$1":
@@ -2381,11 +3773,14 @@
, { "type": "++"
, "$1":
[ [ {"type": "var", "name": "COMPILER"}
+ , "-Wl,-rpath,$ORIGIN"
+ , "-Wl,-rpath,$ORIGIN/../lib"
, "-o"
, {"type": "var", "name": "binpath"}
]
, {"type": "var", "name": "compile flags"}
, {"type": "var", "name": "link-args"}
+ , {"type": "var", "name": "run-libs-args"}
, {"type": "var", "name": "ld flags"}
]
}
@@ -2404,6 +3799,7 @@
, "$1":
[ {"type": "var", "name": "objects"}
, {"type": "var", "name": "link-deps"}
+ , {"type": "var", "name": "run-libs"}
, { "type": "var"
, "name": "cflags-files"
, "default": {"type": "empty_map"}
@@ -2466,9 +3862,12 @@
, "CXX"
, "CFLAGS"
, "CXXFLAGS"
+ , "LDFLAGS"
, "ADD_CFLAGS"
, "ADD_CXXFLAGS"
+ , "ADD_LDFLAGS"
, "ENV"
+ , "BUILD_POSITION_INDEPENDENT"
, "DEBUG"
, "LINT"
, "name"
@@ -2479,12 +3878,15 @@
, "private-ldflags"
, "stage"
, "private-fieldnames"
+ , "component-fieldnames"
]
, "imports":
{ "compile-deps": "compile-deps"
, "compile-args-deps": "compile-args-deps"
, "link-deps": "link-deps"
, "link-args-deps": "link-args-deps"
+ , "run-libs-deps": "run-libs-deps"
+ , "run-libs-args-deps": "run-libs-args-deps"
, "cflags-files-deps": "cflags-files-deps"
, "ldflags-files-deps": "ldflags-files-deps"
, "bin action": "bin action"
@@ -2517,6 +3919,10 @@
}
}
]
+ , ["run-libs", {"type": "CALL_EXPRESSION", "name": "run-libs-deps"}]
+ , [ "run-libs-args"
+ , {"type": "CALL_EXPRESSION", "name": "run-libs-args-deps"}
+ ]
, [ "cflags-files"
, {"type": "CALL_EXPRESSION", "name": "cflags-files-deps"}
]
@@ -2664,12 +4070,19 @@
, "artifacts": {"type": "var", "name": "binary"}
, "provides":
{ "type": "env"
- , "vars": ["package", "debug-srcs", "debug-hdrs", "lint", "dwarf-pkg"]
+ , "vars":
+ [ "run-libs"
+ , "package"
+ , "debug-srcs"
+ , "debug-hdrs"
+ , "lint"
+ , "dwarf-pkg"
+ ]
}
}
}
}
-, "install-with-deps result":
+, "install-with-deps stage":
{ "vars":
[ "pc-install-dir"
, "targets"
@@ -2678,7 +4091,15 @@
, "hdrs-only"
, "skip-debug-stage"
]
- , "imports": {"pkg-config": "pkg-config"}
+ , "imports":
+ { "compile-deps": "compile-deps"
+ , "compile-args-deps": "compile-args-deps"
+ , "link-deps": "link-deps"
+ , "link-args-deps": "link-args-deps"
+ , "run-libs-deps": "run-libs-deps"
+ , "run-libs-args-deps": "run-libs-args-deps"
+ , "pkg-config": "pkg-config"
+ }
, "expression":
{ "type": "let*"
, "bindings":
@@ -2776,6 +4197,13 @@
, "default": {"type": "empty_map"}
}
]
+ , [ "run-libs"
+ , { "type": "DEP_PROVIDES"
+ , "dep": {"type": "var", "name": "target"}
+ , "provider": "run-libs"
+ , "default": {"type": "empty_map"}
+ }
+ ]
, [ "package"
, { "type": "DEP_PROVIDES"
, "dep": {"type": "var", "name": "target"}
@@ -2808,6 +4236,7 @@
, "else": [{"type": "var", "name": "artifacts"}]
}
, [{"type": "var", "name": "link-deps"}]
+ , [{"type": "var", "name": "run-libs"}]
]
}
}
@@ -2846,6 +4275,11 @@
, "provider": "link-args"
, "default": []
}
+ , { "type": "DEP_PROVIDES"
+ , "dep": {"type": "var", "name": "target"}
+ , "provider": "run-libs-args"
+ , "default": []
+ }
]
}
]
@@ -2928,8 +4362,22 @@
}
]
]
- , "body":
- {"type": "RESULT", "artifacts": {"type": "var", "name": "install-stage"}}
+ , "body": {"type": "var", "name": "install-stage"}
+ }
+ }
+, "install-with-deps result":
+ { "vars":
+ [ "pc-install-dir"
+ , "targets"
+ , "prefix"
+ , "flat-libs"
+ , "hdrs-only"
+ , "skip-debug-stage"
+ ]
+ , "imports": {"install stage": "install-with-deps stage"}
+ , "expression":
+ { "type": "RESULT"
+ , "artifacts": {"type": "CALL_EXPRESSION", "name": "install stage"}
}
}
}