diff options
Diffstat (limited to 'CC/EXPRESSIONS')
-rw-r--r-- | CC/EXPRESSIONS | 1598 |
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"} } } } |