diff options
Diffstat (limited to 'CC/EXPRESSIONS')
-rw-r--r-- | CC/EXPRESSIONS | 4383 |
1 files changed, 0 insertions, 4383 deletions
diff --git a/CC/EXPRESSIONS b/CC/EXPRESSIONS deleted file mode 100644 index 0e06903..0000000 --- a/CC/EXPRESSIONS +++ /dev/null @@ -1,4383 +0,0 @@ -{ "default-CC": - { "vars": ["defaults-transition"] - , "imports": {"list_provider": ["./", "..", "field_list_provider"]} - , "expression": - { "type": "let*" - , "bindings": - [ ["fieldname", "defaults"] - , ["provider", "CC"] - , ["transition", {"type": "var", "name": "defaults-transition"}] - , ["CC", {"type": "CALL_EXPRESSION", "name": "list_provider"}] - , [ "CC" - , { "type": "if" - , "cond": {"type": "var", "name": "CC"} - , "then": {"type": "var", "name": "CC"} - , "else": ["cc"] - } - ] - ] - , "body": {"type": "var", "name": "CC"} - } - } -, "default-CXX": - { "vars": ["defaults-transition"] - , "imports": {"list_provider": ["./", "..", "field_list_provider"]} - , "expression": - { "type": "let*" - , "bindings": - [ ["fieldname", "defaults"] - , ["provider", "CXX"] - , ["transition", {"type": "var", "name": "defaults-transition"}] - , ["CXX", {"type": "CALL_EXPRESSION", "name": "list_provider"}] - , [ "CXX" - , { "type": "if" - , "cond": {"type": "var", "name": "CXX"} - , "then": {"type": "var", "name": "CXX"} - , "else": ["c++"] - } - ] - ] - , "body": {"type": "var", "name": "CXX"} - } - } -, "default-AR": - { "vars": ["defaults-transition"] - , "imports": {"list_provider": ["./", "..", "field_list_provider"]} - , "expression": - { "type": "let*" - , "bindings": - [ ["fieldname", "defaults"] - , ["provider", "AR"] - , ["transition", {"type": "var", "name": "defaults-transition"}] - , ["AR", {"type": "CALL_EXPRESSION", "name": "list_provider"}] - , [ "AR" - , { "type": "if" - , "cond": {"type": "var", "name": "AR"} - , "then": {"type": "var", "name": "AR"} - , "else": ["ar"] - } - ] - ] - , "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"]} - , "expression": - { "type": "let*" - , "bindings": - [ ["fieldname", "defaults"] - , ["provider", "DWP"] - , ["transition", {"type": "var", "name": "defaults-transition"}] - , ["DWP", {"type": "CALL_EXPRESSION", "name": "list_provider"}] - , [ "DWP" - , { "type": "if" - , "cond": {"type": "var", "name": "DWP"} - , "then": {"type": "var", "name": "DWP"} - , "else": ["dwp"] - } - ] - ] - , "body": {"type": "var", "name": "DWP"} - } - } -, "default-ARFLAGS": - { "vars": ["defaults-transition"] - , "imports": {"list_provider": ["./", "..", "field_list_provider"]} - , "expression": - { "type": "let*" - , "bindings": - [ ["fieldname", "defaults"] - , ["provider", "ARFLAGS"] - , ["transition", {"type": "var", "name": "defaults-transition"}] - , ["ARFLAGS", {"type": "CALL_EXPRESSION", "name": "list_provider"}] - , [ "ARFLAGS" - , { "type": "if" - , "cond": {"type": "var", "name": "ARFLAGS"} - , "then": {"type": "var", "name": "ARFLAGS"} - , "else": ["cqs"] - } - ] - ] - , "body": {"type": "var", "name": "ARFLAGS"} - } - } -, "default-CFLAGS": - { "vars": ["defaults-transition"] - , "imports": {"list_provider": ["./", "..", "field_list_provider"]} - , "expression": - { "type": "let*" - , "bindings": - [ ["fieldname", "defaults"] - , ["provider", "CFLAGS"] - , ["transition", {"type": "var", "name": "defaults-transition"}] - ] - , "body": {"type": "CALL_EXPRESSION", "name": "list_provider"} - } - } -, "default-CXXFLAGS": - { "vars": ["defaults-transition"] - , "imports": {"list_provider": ["./", "..", "field_list_provider"]} - , "expression": - { "type": "let*" - , "bindings": - [ ["fieldname", "defaults"] - , ["provider", "CXXFLAGS"] - , ["transition", {"type": "var", "name": "defaults-transition"}] - ] - , "body": {"type": "CALL_EXPRESSION", "name": "list_provider"} - } - } -, "default-LDFLAGS": - { "vars": ["defaults-transition"] - , "imports": {"list_provider": ["./", "..", "field_list_provider"]} - , "expression": - { "type": "let*" - , "bindings": - [ ["fieldname", "defaults"] - , ["provider", "LDFLAGS"] - , ["transition", {"type": "var", "name": "defaults-transition"}] - ] - , "body": {"type": "CALL_EXPRESSION", "name": "list_provider"} - } - } -, "default-ENV": - { "vars": ["defaults-transition"] - , "imports": {"map_provider": ["./", "..", "field_map_provider"]} - , "expression": - { "type": "let*" - , "bindings": - [ ["fieldname", "defaults"] - , ["provider", "ENV"] - , ["transition", {"type": "var", "name": "defaults-transition"}] - , ["default", {"type": "empty_map"}] - ] - , "body": {"type": "CALL_EXPRESSION", "name": "map_provider"} - } - } -, "default-PATH": - { "vars": ["defaults-transition"] - , "imports": {"list_provider": ["./", "..", "field_list_provider"]} - , "expression": - { "type": "let*" - , "bindings": - [ ["fieldname", "defaults"] - , ["provider", "PATH"] - , ["transition", {"type": "var", "name": "defaults-transition"}] - ] - , "body": {"type": "CALL_EXPRESSION", "name": "list_provider"} - } - } -, "default-TOOLCHAIN": - { "vars": ["defaults-transition"] - , "imports": {"map_provider": ["./", "..", "field_map_provider"]} - , "expression": - { "type": "let*" - , "bindings": - [ ["fieldname", "defaults"] - , ["provider", "TOOLCHAIN"] - , ["transition", {"type": "var", "name": "defaults-transition"}] - , ["default", {"type": "empty_map"}] - ] - , "body": {"type": "CALL_EXPRESSION", "name": "map_provider"} - } - } -, "default-NON_SYSTEM_TOOLS": - { "vars": ["defaults-transition"] - , "expression": - { "type": "map_union" - , "$1": - { "type": "foreach" - , "var": "x" - , "range": {"type": "FIELD", "name": "defaults"} - , "body": - { "type": "DEP_PROVIDES" - , "dep": {"type": "var", "name": "x"} - , "provider": "NON_SYSTEM_TOOLS" - , "transition": - { "type": "var" - , "name": "defaults-transition" - , "default": {"type": "empty_map"} - } - , "default": {"type": "empty_map"} - } - } - } - } -, "defaults-base-provides-list": - { "doc": ["Query list of providers from 'base' targets"] - , "vars": ["provider", "default"] - , "vars_doc": - { "provider": ["The name of the provider in the provides map."] - , "default": ["The default if provider is missing (default: [])."] - } - , "imports": {"provider_list": ["./", "..", "field_provider_list"]} - , "expression": - { "type": "let*" - , "bindings": [["fieldname", "base"]] - , "body": {"type": "CALL_EXPRESSION", "name": "provider_list"} - } - } -, "defaults-base-provides-++": - { "doc": ["Query flattend list of providers from 'base' targets"] - , "vars": ["provider", "default"] - , "vars_doc": - { "provider": ["The name of the provider in the provides map."] - , "default": ["The default if provider is missing (default: [])."] - } - , "imports": {"base-provides-list": "defaults-base-provides-list"} - , "expression": - { "type": "++" - , "$1": {"type": "CALL_EXPRESSION", "name": "base-provides-list"} - } - } -, "defaults-base-provides": - { "doc": ["Query provider from 'base' targets (last wins)"] - , "vars": ["provider", "default"] - , "vars_doc": - { "provider": ["The name of the provider in the provides map."] - , "default": ["The default if provider is missing (default: [])."] - } - , "imports": {"base-provides-list": "defaults-base-provides-list"} - , "expression": - { "type": "foldl" - , "var": "next" - , "start": {"type": "var", "name": "default", "default": []} - , "accum_var": "curr" - , "range": {"type": "CALL_EXPRESSION", "name": "base-provides-list"} - , "body": - { "type": "if" - , "cond": {"type": "var", "name": "next"} - , "then": {"type": "var", "name": "next"} - , "else": {"type": "var", "name": "curr"} - } - } - } -, "debug-deps": - { "doc": - ["Collect debug dependencies (sources/headers) from given target_fields"] - , "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": - { "type": "map_union" - , "$1": - { "type": "++" - , "$1": - { "type": "foreach" - , "var": "fieldname" - , "range": {"type": "var", "name": "deps-fieldnames"} - , "body": - { "type": "++" - , "$1": - { "type": "let*" - , "bindings": - [ ["provider", {"type": "var", "name": "deps-provider"}] - , [ "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"}] - } - } - } - } - } - } -, "compile-deps": - { "doc": ["Collect compile dependencies (headers) from given target_fields"] - , "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"] - , "provider_list": ["./", "..", "field_provider_list"] - } - , "expression": - { "type": "disjoint_map_union" - , "$1": - { "type": "++" - , "$1": - [ { "type": "++" - , "$1": - { "type": "foreach" - , "var": "fieldname" - , "range": - { "type": "++" - , "$1": - [ {"type": "var", "name": "deps-fieldnames"} - , { "type": "var" - , "name": "component-fieldnames" - , "default": [] - } - ] - } - , "body": - { "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", "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": - { "type": "foreach" - , "var": "fieldname" - , "range": {"type": "var", "name": "deps-fieldnames"} - , "body": - { "type": "let*" - , "bindings": - [ ["provider", "compile-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"} - } - } - } - } - } -, "link-deps": - { "doc": ["Collect link dependencies (libraries) from given target_fields"] - , "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": "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": - { "type": "foreach" - , "var": "fieldname" - , "range": {"type": "var", "name": "deps-fieldnames"} - , "body": - { "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", "run-libs"] - , ["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"} - } - } - } - } - } - } -, "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": - { "type": "nub_right" - , "$1": - { "type": "++" - , "$1": - { "type": "foreach" - , "var": "fieldname" - , "range": {"type": "var", "name": "deps-fieldnames"} - , "body": - { "type": "let*" - , "bindings": - [ ["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"} - } - } - } - } - } -, "pkg-map-provider-deps": - { "doc": ["Collect maps from provider \"package\" for given target_fields"] - , "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": - { "type": "disjoint_map_union" - , "$1": - { "type": "++" - , "$1": - { "type": "foreach" - , "var": "fieldname" - , "range": {"type": "var", "name": "deps-fieldnames"} - , "body": - { "type": "let*" - , "bindings": - [ ["provider", "package"] - , ["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": "foreach" - , "range": {"type": "CALL_EXPRESSION", "name": "provider_list"} - , "var": "map" - , "body": - { "type": "lookup" - , "key": {"type": "var", "name": "pkg-key"} - , "map": {"type": "var", "name": "map"} - , "default": {"type": "empty_map"} - } - } - } - } - } - } - } -, "cflags-files-deps": - { "doc": ["Collect cflags files from target_fields"] - , "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": - { "type": "let*" - , "bindings": [["pkg-key", "cflags-files"]] - , "body": {"type": "CALL_EXPRESSION", "name": "pkg-provider"} - } - } -, "ldflags-files-deps": - { "doc": ["Collect cflags files from target_fields"] - , "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": - { "type": "let*" - , "bindings": [["pkg-key", "ldflags-files"]] - , "body": {"type": "CALL_EXPRESSION", "name": "pkg-provider"} - } - } -, "pkg-prefix-lib-paths": - { "doc": ["Detect ldflags referring to local libs and prefix them."] - , "vars": ["pkg-ldflags", "pkg-libs", "flat-libs", "lib-prefix"] - , "expression": - { "type": "let*" - , "bindings": - [ [ "libs set" - , { "type": "set" - , "$1": {"type": "keys", "$1": {"type": "var", "name": "pkg-libs"}} - } - ] - ] - , "body": - { "type": "foreach" - , "var": "item" - , "range": {"type": "var", "name": "pkg-ldflags"} - , "body": - { "type": "if" - , "cond": - { "type": "lookup" - , "key": {"type": "var", "name": "item"} - , "map": {"type": "var", "name": "libs set"} - } - , "then": - { "type": "join" - , "$1": - { "type": "if" - , "cond": {"type": "var", "name": "flat-libs"} - , "then": - [ "-l:" - , {"type": "basename", "$1": {"type": "var", "name": "item"}} - ] - , "else": - [ {"type": "var", "name": "lib-prefix"} - , "/" - , {"type": "var", "name": "item"} - ] - } - } - , "else": {"type": "var", "name": "item"} - } - } - } - } -, "pkg-prefix-flag-paths": - { "doc": ["Detect flags referring to local flag files and prefix them."] - , "vars": ["flags", "pkg-flag-files", "flag-prefix"] - , "expression": - { "type": "let*" - , "bindings": - [ [ "pkg-flag-files unprefix map" - , { "type": "map_union" - , "$1": - { "type": "foreach" - , "var": "name" - , "range": - {"type": "keys", "$1": {"type": "var", "name": "pkg-flag-files"}} - , "body": - { "type": "singleton_map" - , "key": - {"type": "join", "$1": ["@", {"type": "var", "name": "name"}]} - , "value": {"type": "var", "name": "name"} - } - } - } - ] - ] - , "body": - { "type": "foreach" - , "var": "item" - , "range": {"type": "var", "name": "flags"} - , "body": - { "type": "let*" - , "bindings": - [ [ "flag-file" - , { "type": "lookup" - , "map": {"type": "var", "name": "pkg-flag-files unprefix map"} - , "key": {"type": "var", "name": "item"} - } - ] - ] - , "body": - { "type": "if" - , "cond": {"type": "var", "name": "flag-file"} - , "then": - { "type": "join" - , "$1": - [ "@" - , {"type": "var", "name": "flag-prefix"} - , "/" - , {"type": "var", "name": "flag-file"} - ] - } - , "else": {"type": "var", "name": "item"} - } - } - } - } - } -, "pkg-config": - { "vars": - [ "pkg-name" - , "pkg-prefix" - , "pkg-version" - , "pkg-cflags" - , "pkg-ldflags" - , "pkg-flag-files" - , "pkg-libs" - , "flat-libs" - , "pc-install-dir" - ] - , "imports": - { "pkg-prefix-lib-paths": "pkg-prefix-lib-paths" - , "pkg-prefix-flag-paths": "pkg-prefix-flag-paths" - } - , "expression": - { "type": "let*" - , "bindings": - [ ["lib-prefix", "${libdir}"] - , [ "pkg-ldflags" - , {"type": "CALL_EXPRESSION", "name": "pkg-prefix-lib-paths"} - ] - , [ "flag-prefix" - , { "type": "join" - , "$1": ["${prefix}/", {"type": "var", "name": "pc-install-dir"}] - } - ] - , ["flags", {"type": "var", "name": "pkg-cflags"}] - , [ "pkg-cflags" - , {"type": "CALL_EXPRESSION", "name": "pkg-prefix-flag-paths"} - ] - , ["flags", {"type": "var", "name": "pkg-ldflags"}] - , [ "pkg-ldflags" - , {"type": "CALL_EXPRESSION", "name": "pkg-prefix-flag-paths"} - ] - ] - , "body": - { "type": "singleton_map" - , "key": - {"type": "join", "$1": [{"type": "var", "name": "pkg-name"}, ".pc"]} - , "value": - { "type": "BLOB" - , "data": - { "type": "join" - , "separator": "\n" - , "$1": - [ { "type": "join" - , "$1": - [ "prefix=" - , {"type": "var", "name": "pkg-prefix", "default": "/"} - ] - } - , "libdir=${prefix}/lib" - , "includedir=${prefix}/include" - , { "type": "join" - , "$1": ["Name: ", {"type": "var", "name": "pkg-name"}] - } - , { "type": "join" - , "$1": - [ "Version: " - , {"type": "var", "name": "pkg-version", "default": "unknown"} - ] - } - , { "type": "join" - , "$1": - [ "Description: Pkg-config for " - , {"type": "var", "name": "pkg-name"} - , ", generated by JustBuild" - ] - } - , "URL: unknown" - , { "type": "join" - , "separator": " " - , "$1": - { "type": "++" - , "$1": - [ ["Cflags:", "-I${includedir}"] - , {"type": "var", "name": "pkg-cflags"} - ] - } - } - , { "type": "join" - , "separator": " " - , "$1": - { "type": "++" - , "$1": - [ ["Libs:"] - , { "type": "if" - , "cond": {"type": "var", "name": "flat-libs"} - , "then": ["-L${libdir}"] - } - , {"type": "var", "name": "pkg-ldflags"} - ] - } - } - , "" - ] - } - } - } - } - } -, "add-fission-compile-flags": - { "doc": ["Add debug fission flags, if enabled, to existing compile flags."] - , "vars": ["COMPILE_FLAGS", "DEBUG"] - , "expression": - { "type": "let*" - , "bindings": - [ [ "fission-config" - , { "type": "if" - , "cond": - { "type": "lookup" - , "key": "USE_DEBUG_FISSION" - , "map": - { "type": "var" - , "name": "DEBUG" - , "default": {"type": "empty_map"} - } - } - , "then": - { "type": "assert_non_empty" - , "msg": - [ "Debug fission requires non-empty debug map FISSION_CONFIG field" - ] - , "$1": - { "type": "lookup" - , "key": "FISSION_CONFIG" - , "map": - { "type": "var" - , "name": "DEBUG" - , "default": {"type": "empty_map"} - } - } - } - , "else": {"type": "empty_map"} - } - ] - , [ "flags" - , { "type": "++" - , "$1": - [ {"type": "var", "name": "COMPILE_FLAGS"} - , { "type": "if" - , "cond": - { "type": "lookup" - , "key": "USE_SPLIT_DWARF" - , "map": {"type": "var", "name": "fission-config"} - } - , "then": ["-gsplit-dwarf"] - } - , { "type": "let*" - , "bindings": - [ [ "version" - , { "type": "lookup" - , "key": "DWARF_VERSION" - , "map": {"type": "var", "name": "fission-config"} - } - ] - ] - , "body": - { "type": "if" - , "cond": {"type": "var", "name": "version"} - , "then": - [ { "type": "join" - , "$1": ["-gdwarf-", {"type": "var", "name": "version"}] - } - ] - } - } - , { "type": "if" - , "cond": - { "type": "lookup" - , "key": "USE_DEBUG_TYPES_SECTION" - , "map": {"type": "var", "name": "fission-config"} - } - , "then": ["-fdebug-types-section"] - } - ] - } - ] - ] - , "body": {"type": "var", "name": "flags"} - } - } -, "add-fission-link-flags": - { "doc": ["Add debug fission flags, if enabled, to existing link flags."] - , "vars": ["LDFLAGS", "DEBUG"] - , "expression": - { "type": "let*" - , "bindings": - [ [ "fission-config" - , { "type": "if" - , "cond": - { "type": "lookup" - , "key": "USE_DEBUG_FISSION" - , "map": - { "type": "var" - , "name": "DEBUG" - , "default": {"type": "empty_map"} - } - } - , "then": - { "type": "assert_non_empty" - , "msg": - [ "Debug fission requires non-empty debug map FISSION_CONFIG field" - ] - , "$1": - { "type": "lookup" - , "key": "FISSION_CONFIG" - , "map": - { "type": "var" - , "name": "DEBUG" - , "default": {"type": "empty_map"} - } - } - } - , "else": {"type": "empty_map"} - } - ] - , [ "flags" - , { "type": "++" - , "$1": - [ {"type": "var", "name": "LDFLAGS"} - , { "type": "if" - , "cond": - { "type": "lookup" - , "key": "USE_GDB_INDEX" - , "map": {"type": "var", "name": "fission-config"} - } - , "then": ["-Wl,--gdb-index"] - } - ] - } - ] - ] - , "body": {"type": "var", "name": "flags"} - } - } -, "dwarf package": - { "vars": - [ "DWP" - , "TOOLCHAIN" - , "TOOLCHAIN_DIR" - , "NON_SYSTEM_TOOLS" - , "ENV" - , "name" - , "dwarf objects" - , "dwarf deps" - , "stage" - ] - , "imports": {"default-DWP": "default-DWP"} - , "expression": - { "type": "let*" - , "bindings": - [ [ "DWP" - , { "type": "var" - , "name": "DWP" - , "default": - { "type": "join" - , "$1": - { "type": "++" - , "$1": - [ { "type": "if" - , "cond": - { "type": "lookup" - , "key": "DWP" - , "map": {"type": "var", "name": "NON_SYSTEM_TOOLS"} - } - , "then": - ["./", {"type": "var", "name": "TOOLCHAIN_DIR"}, "/"] - } - , {"type": "CALL_EXPRESSION", "name": "default-DWP"} - ] - } - } - } - ] - , [ "pkgname" - , {"type": "join", "$1": [{"type": "var", "name": "name"}, ".dwp"]} - ] - , [ "pkgpath" - , { "type": "if" - , "cond": {"type": "var", "name": "stage"} - , "then": - { "type": "join" - , "separator": "/" - , "$1": - [ {"type": "var", "name": "stage"} - , {"type": "var", "name": "pkgname"} - ] - } - , "else": {"type": "var", "name": "pkgname"} - } - ] - , [ "objects" - , { "type": "var" - , "name": "dwarf objects" - , "default": {"type": "empty_map"} - } - ] - , [ "objects" - , { "type": "disjoint_map_union" - , "$1": - [ {"type": "var", "name": "objects"} - , {"type": "var", "name": "dwarf deps"} - ] - } - ] - , [ "dwarf pkg" - , { "type": "if" - , "cond": {"type": "var", "name": "objects"} - , "else": {"type": "empty_map"} - , "then": - { "type": "let*" - , "bindings": - [ [ "staged objects" - , { "type": "to_subdir" - , "subdir": "work" - , "$1": {"type": "var", "name": "objects"} - } - ] - , [ "staged pkgpath" - , { "type": "join" - , "$1": ["work/", {"type": "var", "name": "pkgpath"}] - } - ] - , [ "staged pkg" - , { "type": "ACTION" - , "outs": [{"type": "var", "name": "staged pkgpath"}] - , "inputs": - { "type": "map_union" - , "$1": - [ {"type": "var", "name": "TOOLCHAIN"} - , {"type": "var", "name": "staged objects"} - ] - } - , "env": - { "type": "var" - , "name": "ENV" - , "default": {"type": "empty_map"} - } - , "cmd": - { "type": "++" - , "$1": - [ [ {"type": "var", "name": "DWP", "default": "dwp"} - , "-o" - , {"type": "var", "name": "staged pkgpath"} - ] - , { "type": "keys" - , "$1": {"type": "var", "name": "staged objects"} - } - ] - } - } - ] - , [ "pkg artifact" - , { "type": "lookup" - , "map": {"type": "var", "name": "staged pkg"} - , "key": {"type": "var", "name": "staged pkgpath"} - } - ] - ] - , "body": - { "type": "singleton_map" - , "key": {"type": "var", "name": "pkgpath"} - , "value": {"type": "var", "name": "pkg artifact"} - } - } - } - ] - ] - , "body": {"type": "var", "name": "dwarf pkg"} - } - } -, "objects": - { "vars": - [ "COMPILER" - , "COMPILE_FLAGS" - , "ENV" - , "DEBUG" - , "TOOLCHAIN" - , "srcs" - , "hdrs" - , "private-hdrs" - , "compile-deps" - , "cflags-files" - , "component-fieldnames" - , "defaults-transition" - , "deps-transition" - , "modified-transitions" - ] - , "imports": - { "field_artifacts": ["./", "..", "field_artifacts"] - , "default-INCLUDE_SCANNER": "default-INCLUDE_SCANNER" - , "add-fission-compile-flags": "add-fission-compile-flags" - } - , "expression": - { "type": "let*" - , "bindings": - [ [ "include tree" - , { "type": "singleton_map" - , "key": "include" - , "value": - {"type": "TREE", "$1": {"type": "var", "name": "compile-deps"}} - } - ] - , [ "all hdrs" - , { "type": "map_union" - , "$1": - [ {"type": "var", "name": "include tree"} - , { "type": "to_subdir" - , "subdir": "work" - , "$1": - { "type": "disjoint_map_union" - , "$1": - [ {"type": "var", "name": "hdrs"} - , {"type": "var", "name": "private-hdrs"} - ] - } - } - ] - } - ] - , [ "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"} - ] - , [ "my output artifacts" - , { "type": "foreach_map" - , "var_key": "src_name" - , "var_val": "src_val" - , "range": {"type": "var", "name": "srcs"} - , "body": - { "type": "let*" - , "bindings": - [ [ "work src_name" - , { "type": "join" - , "separator": "/" - , "$1": ["work", {"type": "var", "name": "src_name"}] - } - ] - , [ "inputs" - , { "type": "map_union" - , "$1": - [ {"type": "var", "name": "all hdrs"} - , { "type": "singleton_map" - , "key": {"type": "var", "name": "work src_name"} - , "value": {"type": "var", "name": "src_val"} - } - , { "type": "var" - , "name": "cflags-files" - , "default": {"type": "empty_map"} - } - , { "type": "var" - , "name": "TOOLCHAIN" - , "default": {"type": "empty_map"} - } - ] - } - ] - , [ "out" - , { "type": "change_ending" - , "$1": {"type": "var", "name": "src_name"} - , "ending": ".o" - } - ] - , [ "work out" - , { "type": "join" - , "separator": "/" - , "$1": ["work", {"type": "var", "name": "out"}] - } - ] - , [ "dwarf out" - , { "type": "change_ending" - , "$1": {"type": "var", "name": "src_name"} - , "ending": ".dwo" - } - ] - , [ "work dwarf out" - , { "type": "join" - , "separator": "/" - , "$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": - { "type": "++" - , "$1": - [ { "type": "if" - , "cond": - { "type": "lookup" - , "key": "USE_DEBUG_FISSION" - , "map": - { "type": "var" - , "name": "DEBUG" - , "default": {"type": "empty_map"} - } - } - , "then": [{"type": "var", "name": "work dwarf out"}] - , "else": [] - } - , [{"type": "var", "name": "work out"}] - ] - } - , "inputs": {"type": "var", "name": "minimal inputs"} - , "env": - { "type": "var" - , "name": "ENV" - , "default": {"type": "empty_map"} - } - , "cmd": - { "type": "++" - , "$1": - [ {"type": "var", "name": "cmdline"} - , ["-o", {"type": "var", "name": "work out"}] - ] - } - } - ] - , [ "staged output artifacts" - , { "type": "++" - , "$1": - [ [ { "type": "singleton_map" - , "key": {"type": "var", "name": "out"} - , "value": - { "type": "lookup" - , "key": {"type": "var", "name": "work out"} - , "map": {"type": "var", "name": "action output"} - } - } - ] - , { "type": "if" - , "cond": - { "type": "lookup" - , "key": "USE_DEBUG_FISSION" - , "map": - { "type": "var" - , "name": "DEBUG" - , "default": {"type": "empty_map"} - } - } - , "else": [] - , "then": - [ { "type": "singleton_map" - , "key": {"type": "var", "name": "dwarf out"} - , "value": - { "type": "lookup" - , "key": {"type": "var", "name": "work dwarf out"} - , "map": {"type": "var", "name": "action output"} - } - } - ] - } - ] - } - ] - ] - , "body": {"type": "var", "name": "staged output artifacts"} - } - } - ] - , [ "my objects" - , { "type": "map_union" - , "$1": - { "type": "foreach" - , "range": {"type": "var", "name": "my output artifacts"} - , "body": - { "type": "[]" - , "index": "0" - , "list": {"type": "var", "name": "_"} - } - } - } - ] - , [ "my dwarf objects" - , { "type": "if" - , "cond": - { "type": "lookup" - , "key": "USE_DEBUG_FISSION" - , "map": - { "type": "var" - , "name": "DEBUG" - , "default": {"type": "empty_map"} - } - } - , "else": {"type": "empty_map"} - , "then": - { "type": "map_union" - , "$1": - { "type": "foreach" - , "range": {"type": "var", "name": "my output artifacts"} - , "body": - { "type": "[]" - , "index": "1" - , "list": {"type": "var", "name": "_"} - } - } - } - } - ] - , [ "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": "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": "my dwarf objects"} - } - ] - } - } - } -, "lint information": - { "vars": - [ "CC" - , "CXX" - , "CFLAGS" - , "CXXFLAGS" - , "ADD_CFLAGS" - , "ADD_CXXFLAGS" - , "DEBUG" - , "pure C" - , "srcs" - , "hdrs" - , "private-hdrs" - , "compile-deps" - , "cflags-files" - , "lint-deps fieldnames" - , "deps-transition" - , "deps-fieldnames" - , "compile-args" - , "defaults-transition" - , "modified-transitions" - ] - , "imports": - { "list_provider": ["./", "..", "field_list_provider"] - , "runfiles_list": ["./", "..", "field_runfiles_list"] - , "default-TOOLCHAIN": "default-TOOLCHAIN" - , "default-NON_SYSTEM_TOOLS": "default-NON_SYSTEM_TOOLS" - , "compiler": "compiler" - , "flags": "flags" - , "add-fission-compile-flags": "add-fission-compile-flags" - } - , "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"} - ] - } - ] - , [ "compile flags" - , {"type": "CALL_EXPRESSION", "name": "add-fission-compile-flags"} - ] - , [ "include tree" - , { "type": "singleton_map" - , "key": "include" - , "value": - {"type": "TREE", "$1": {"type": "var", "name": "compile-deps"}} - } - ] - , [ "all hdrs" - , { "type": "map_union" - , "$1": - [ {"type": "var", "name": "include tree"} - , { "type": "to_subdir" - , "subdir": "work" - , "$1": - { "type": "disjoint_map_union" - , "$1": - [ {"type": "var", "name": "hdrs"} - , {"type": "var", "name": "private-hdrs"} - ] - } - } - ] - } - ] - , [ "direct-deps hdrs" - , { "type": "to_subdir" - , "subdir": "include" - , "$1": - { "type": "map_union" - , "$1": - { "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"} - } - ] - ] - , "body": - {"type": "CALL_EXPRESSION", "name": "runfiles_list"} - } - } - } - } - } - ] - , [ "own headers" - , { "type": "to_subdir" - , "subdir": "work" - , "$1": - { "type": "map_union" - , "$1": - [ {"type": "var", "name": "hdrs"} - , {"type": "var", "name": "private-hdrs"} - ] - } - } - ] - , [ "direct hdrs" - , { "type": "map_union" - , "$1": - [ {"type": "var", "name": "own headers"} - , {"type": "var", "name": "direct-deps hdrs"} - ] - } - ] - , [ "direct deps artifact names" - , {"type": "keys", "$1": {"type": "var", "name": "direct hdrs"}} - ] - , [ "hdr lint" - , { "type": "foreach" - , "range": - { "type": "++" - , "$1": - [ {"type": "keys", "$1": {"type": "var", "name": "private-hdrs"}} - , {"type": "keys", "$1": {"type": "var", "name": "hdrs"}} - ] - } - , "body": - { "type": "VALUE_NODE" - , "$1": - { "type": "RESULT" - , "artifacts": {"type": "var", "name": "all hdrs"} - , "provides": - { "type": "let*" - , "bindings": - [ [ "src" - , { "type": "join" - , "$1": ["work/", {"type": "var", "name": "_"}] - } - ] - , [ "cmd" - , { "type": "++" - , "$1": - [ [{"type": "var", "name": "COMPILER"}] - , {"type": "var", "name": "compile flags"} - , [ "-I" - , "work" - , "-isystem" - , "include" - , "-E" - , {"type": "var", "name": "src"} - ] - ] - } - ] - , ["extra outs", []] - ] - , "body": - { "type": "env" - , "vars": - ["cmd", "src", "direct deps artifact names", "extra outs"] - } - } - } - } - } - ] - , [ "src lint" - , { "type": "foreach_map" - , "var_key": "src_name" - , "var_val": "src_val" - , "range": {"type": "var", "name": "srcs"} - , "body": - { "type": "let*" - , "bindings": - [ [ "work src_name" - , { "type": "join" - , "separator": "/" - , "$1": ["work", {"type": "var", "name": "src_name"}] - } - ] - , [ "inputs" - , { "type": "map_union" - , "$1": - [ {"type": "var", "name": "all hdrs"} - , { "type": "singleton_map" - , "key": {"type": "var", "name": "work src_name"} - , "value": {"type": "var", "name": "src_val"} - } - , { "type": "var" - , "name": "cflags-files" - , "default": {"type": "empty_map"} - } - , { "type": "var" - , "name": "TOOLCHAIN" - , "default": {"type": "empty_map"} - } - ] - } - ] - , [ "out" - , { "type": "change_ending" - , "$1": {"type": "var", "name": "src_name"} - , "ending": ".o" - } - ] - , [ "work out" - , { "type": "join" - , "separator": "/" - , "$1": ["work", {"type": "var", "name": "out"}] - } - ] - , [ "dwarf out" - , { "type": "change_ending" - , "$1": {"type": "var", "name": "src_name"} - , "ending": ".dwo" - } - ] - , [ "work dwarf out" - , { "type": "join" - , "separator": "/" - , "$1": ["work", {"type": "var", "name": "dwarf out"}] - } - ] - , [ "extra outs" - , { "type": "if" - , "cond": - { "type": "lookup" - , "key": "USE_DEBUG_FISSION" - , "map": - { "type": "var" - , "name": "DEBUG" - , "default": {"type": "empty_map"} - } - } - , "then": [{"type": "var", "name": "work dwarf out"}] - , "else": [] - } - ] - , [ "cmd" - , { "type": "++" - , "$1": - [ [{"type": "var", "name": "COMPILER"}] - , {"type": "var", "name": "compile flags"} - , ["-I", "work", "-isystem", "include"] - , ["-c", {"type": "var", "name": "work src_name"}] - , ["-o", {"type": "var", "name": "work out"}] - ] - } - ] - ] - , "body": - { "type": "VALUE_NODE" - , "$1": - { "type": "RESULT" - , "artifacts": {"type": "var", "name": "inputs"} - , "provides": - { "type": "let*" - , "bindings": - [["src", {"type": "var", "name": "work src_name"}]] - , "body": - { "type": "env" - , "vars": - [ "cmd" - , "src" - , "direct deps artifact names" - , "extra outs" - ] - } - } - } - } - } - } - ] - , [ "dep lint nodes" - , { "type": "++" - , "$1": - { "type": "foreach" - , "var": "fieldname" - , "range": {"type": "var", "name": "lint-deps fieldnames"} - , "body": - { "type": "let*" - , "bindings": - [ ["provider", "lint"] - , [ "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"} - } - } - } - ] - , [ "lint nodes" - , { "type": "++" - , "$1": - [ {"type": "var", "name": "hdr lint"} - , {"type": "var", "name": "src lint"} - , {"type": "var", "name": "dep lint nodes"} - ] - } - ] - , [ "lint nodes" - , {"type": "nub_right", "$1": {"type": "var", "name": "lint nodes"}} - ] - ] - , "body": {"type": "var", "name": "lint nodes"} - } - } -, "compiler-cc": - { "vars": ["CC", "TOOLCHAIN_DIR", "NON_SYSTEM_TOOLS", "defaults-transition"] - , "imports": {"default-CC": "default-CC"} - , "expression": - { "type": "var" - , "name": "CC" - , "default": - { "type": "join" - , "$1": - { "type": "++" - , "$1": - [ { "type": "if" - , "cond": - { "type": "lookup" - , "key": "CC" - , "map": {"type": "var", "name": "NON_SYSTEM_TOOLS"} - } - , "then": ["./", {"type": "var", "name": "TOOLCHAIN_DIR"}, "/"] - } - , {"type": "CALL_EXPRESSION", "name": "default-CC"} - ] - } - } - } - } -, "compiler-cxx": - { "vars": ["CXX", "TOOLCHAIN_DIR", "NON_SYSTEM_TOOLS", "defaults-transition"] - , "imports": {"default-CXX": "default-CXX"} - , "expression": - { "type": "var" - , "name": "CXX" - , "default": - { "type": "join" - , "$1": - { "type": "++" - , "$1": - [ { "type": "if" - , "cond": - { "type": "lookup" - , "key": "CXX" - , "map": {"type": "var", "name": "NON_SYSTEM_TOOLS"} - } - , "then": ["./", {"type": "var", "name": "TOOLCHAIN_DIR"}, "/"] - } - , {"type": "CALL_EXPRESSION", "name": "default-CXX"} - ] - } - } - } - } -, "compiler": - { "vars": - [ "CC" - , "CXX" - , "pure C" - , "TOOLCHAIN_DIR" - , "NON_SYSTEM_TOOLS" - , "defaults-transition" - ] - , "imports": {"compiler-cc": "compiler-cc", "compiler-cxx": "compiler-cxx"} - , "expression": - { "type": "if" - , "cond": {"type": "var", "name": "pure C"} - , "then": {"type": "CALL_EXPRESSION", "name": "compiler-cc"} - , "else": {"type": "CALL_EXPRESSION", "name": "compiler-cxx"} - } - } -, "flags-cc": - { "vars": - [ "CFLAGS" - , "ADD_CFLAGS" - , "BUILD_POSITION_INDEPENDENT" - , "defaults-transition" - ] - , "imports": {"default-CFLAGS": "default-CFLAGS"} - , "expression": - { "type": "++" - , "$1": - [ { "type": "if" - , "cond": {"type": "var", "name": "BUILD_POSITION_INDEPENDENT"} - , "then": ["-fPIC"] - } - , { "type": "var" - , "name": "CFLAGS" - , "default": {"type": "CALL_EXPRESSION", "name": "default-CFLAGS"} - } - , {"type": "var", "name": "ADD_CFLAGS", "default": []} - ] - } - } -, "flags-cxx": - { "vars": - [ "CXXFLAGS" - , "ADD_CXXFLAGS" - , "BUILD_POSITION_INDEPENDENT" - , "defaults-transition" - ] - , "imports": {"default-CXXFLAGS": "default-CXXFLAGS"} - , "expression": - { "type": "++" - , "$1": - [ { "type": "if" - , "cond": {"type": "var", "name": "BUILD_POSITION_INDEPENDENT"} - , "then": ["-fPIC"] - } - , { "type": "var" - , "name": "CXXFLAGS" - , "default": {"type": "CALL_EXPRESSION", "name": "default-CXXFLAGS"} - } - , {"type": "var", "name": "ADD_CXXFLAGS", "default": []} - ] - } - } -, "flags": - { "vars": - [ "CFLAGS" - , "CXXFLAGS" - , "ADD_CFLAGS" - , "ADD_CXXFLAGS" - , "DEBUG" - , "BUILD_POSITION_INDEPENDENT" - , "pure C" - , "defaults-transition" - ] - , "imports": {"flags-cc": "flags-cc", "flags-cxx": "flags-cxx"} - , "expression": - { "type": "let*" - , "bindings": - [ [ "flags" - , { "type": "if" - , "cond": {"type": "var", "name": "pure C"} - , "then": {"type": "CALL_EXPRESSION", "name": "flags-cc"} - , "else": {"type": "CALL_EXPRESSION", "name": "flags-cxx"} - } - ] - ] - , "body": - { "type": "if" - , "cond": {"type": "var", "name": "flags"} - , "then": {"type": "var", "name": "flags"} - , "else": - { "type": "if" - , "cond": {"type": "var", "name": "DEBUG"} - , "then": ["-g"] - } - } - } - } -, "lib artifact": - { "doc": ["Provides the library artifact."] - , "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" - , "component-fieldnames" - , "deps-transition" - , "modified-transitions" - ] - , "imports": {"lib action": "lib action"} - , "expression": - { "type": "lookup" - , "key": "library" - , "map": {"type": "CALL_EXPRESSION", "name": "lib action"} - , "default": {"type": "empty_map"} - } - } -, "lib action": - { "doc": - [ "Run the action producing the library artifact and pass it 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" - , "component-fieldnames" - , "deps-transition" - , "modified-transitions" - ] - , "imports": - { "compiler": "compiler" - , "flags": "flags" - , "objects": "objects" - , "default-AR": "default-AR" - , "default-ARFLAGS": "default-ARFLAGS" - , "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"} - ] - } - ] - , [ "AR" - , { "type": "var" - , "name": "AR" - , "default": - { "type": "join" - , "$1": - { "type": "++" - , "$1": - [ { "type": "if" - , "cond": - { "type": "lookup" - , "key": "AR" - , "map": {"type": "var", "name": "NON_SYSTEM_TOOLS"} - } - , "then": - ["./", {"type": "var", "name": "TOOLCHAIN_DIR"}, "/"] - } - , {"type": "CALL_EXPRESSION", "name": "default-AR"} - ] - } - } - } - ] - , ["ARFLAGS", {"type": "CALL_EXPRESSION", "name": "default-ARFLAGS"}] - , [ "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"} - } - } - ] - , [ "base name" - , { "type": "if" - , "cond": {"type": "var", "name": "objects"} - , "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"}, ".a"] - } - ] - , [ "libpath" - , { "type": "if" - , "cond": {"type": "var", "name": "stage"} - , "then": - { "type": "join" - , "separator": "/" - , "$1": - [ {"type": "var", "name": "stage"} - , {"type": "var", "name": "libname"} - ] - } - , "else": {"type": "var", "name": "libname"} - } - ] - , [ "lib" - , { "type": "if" - , "cond": {"type": "var", "name": "objects"} - , "else": {"type": "empty_map"} - , "then": - { "type": "let*" - , "bindings": - [ [ "staged objects" - , { "type": "to_subdir" - , "subdir": "work" - , "$1": {"type": "var", "name": "objects"} - } - ] - , [ "staged libpath" - , { "type": "join" - , "$1": ["work/", {"type": "var", "name": "libpath"}] - } - ] - , [ "staged lib" - , { "type": "ACTION" - , "outs": [{"type": "var", "name": "staged libpath"}] - , "inputs": - { "type": "map_union" - , "$1": - [ {"type": "var", "name": "TOOLCHAIN"} - , {"type": "var", "name": "staged objects"} - ] - } - , "env": - { "type": "var" - , "name": "ENV" - , "default": {"type": "empty_map"} - } - , "cmd": - { "type": "++" - , "$1": - [ [{"type": "var", "name": "AR", "default": "ar"}] - , {"type": "var", "name": "ARFLAGS"} - , [{"type": "var", "name": "staged libpath"}] - , { "type": "keys" - , "$1": {"type": "var", "name": "staged objects"} - } - ] - } - } - ] - , [ "lib artifact" - , { "type": "lookup" - , "map": {"type": "var", "name": "staged lib"} - , "key": {"type": "var", "name": "staged libpath"} - } - ] - ] - , "body": - { "type": "singleton_map" - , "key": {"type": "var", "name": "libpath"} - , "value": {"type": "var", "name": "lib artifact"} - } - } - } - ] - ] - , "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"] - } - ] - } - } - } -, "lib result": - { "vars": - [ "CC" - , "CXX" - , "CFLAGS" - , "CXXFLAGS" - , "ADD_CFLAGS" - , "ADD_CXXFLAGS" - , "AR" - , "ENV" - , "BUILD_POSITION_INDEPENDENT" - , "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" - , "lib action": "lib 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"}] - , [ "lib action result" - , {"type": "CALL_EXPRESSION", "name": "lib 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"} - } - ] - , ["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": "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"} - ] - , [ "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": "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"} - } - ] - } - } - } - } -, "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" - , "lint" - , "dwarf-pkg" - ] - } - , { "type": "var" - , "name": "extra-provides" - , "default": {"type": "empty_map"} - } - ] - } - } - } - } -, "bin artifact": - { "doc": ["Provides the linked binary."] - , "vars": - [ "CC" - , "CXX" - , "CFLAGS" - , "CXXFLAGS" - , "LDFLAGS" - , "ADD_CFLAGS" - , "ADD_CXXFLAGS" - , "ADD_LDFLAGS" - , "ENV" - , "BUILD_POSITION_INDEPENDENT" - , "DEBUG" - , "name" - , "pure C" - , "srcs" - , "private-hdrs" - , "stage" - , "compile-deps" - , "compile-args" - , "link-deps" - , "link-args" - , "run-libs" - , "run-libs-args" - , "cflags-files" - , "ldflags-files" - , "defaults-transition" - ] - , "imports": {"bin action": "bin action"} - , "expression": - { "type": "lookup" - , "key": "binary" - , "map": {"type": "CALL_EXPRESSION", "name": "bin action"} - , "default": {"type": "empty_map"} - } - } -, "bin action": - { "doc": - [ "Run the action producing the binary artifact and pass it together with" - , "related information to consumers." - ] - , "vars": - [ "CC" - , "CXX" - , "CFLAGS" - , "CXXFLAGS" - , "LDFLAGS" - , "ADD_CFLAGS" - , "ADD_CXXFLAGS" - , "ADD_LDFLAGS" - , "ENV" - , "BUILD_POSITION_INDEPENDENT" - , "DEBUG" - , "name" - , "pure C" - , "srcs" - , "private-hdrs" - , "stage" - , "compile-deps" - , "compile-args" - , "link-deps" - , "link-args" - , "run-libs" - , "run-libs-args" - , "cflags-files" - , "ldflags-files" - , "defaults-transition" - ] - , "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": - [ ["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"}] - } - ] - } - } - } - ] - } - ] - , ["hdrs", {"type": "empty_map"}] - , ["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"} - ] - , [ "link-args" - , { "type": "nub_right" - , "$1": - { "type": "++" - , "$1": - [ {"type": "keys", "$1": {"type": "var", "name": "objects"}} - , {"type": "var", "name": "link-args"} - ] - } - } - ] - , [ "binpath" - , { "type": "if" - , "cond": {"type": "var", "name": "stage"} - , "then": - { "type": "join" - , "separator": "/" - , "$1": - [ {"type": "var", "name": "stage"} - , {"type": "var", "name": "name"} - ] - } - , "else": {"type": "var", "name": "name"} - } - ] - , [ "binpath (in work)" - , {"type": "join", "$1": ["work/", {"type": "var", "name": "binpath"}]} - ] - , ["TOOLCHAIN_DIR", "../toolchain"] - , ["COMPILER", {"type": "CALL_EXPRESSION", "name": "compiler"}] - , [ "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"}] - } - ] - } - } - } - ] - } - ] - , [ "cmd" - , { "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"} - ] - } - ] - , [ "binary (in work)" - , { "type": "ACTION" - , "outs": [{"type": "var", "name": "binpath (in work)"}] - , "inputs": - { "type": "disjoint_map_union" - , "$1": - [ {"type": "var", "name": "TOOLCHAIN"} - , { "type": "to_subdir" - , "subdir": "work" - , "$1": - { "type": "disjoint_map_union" - , "$1": - [ {"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"} - } - ] - } - } - ] - } - , "cmd": {"type": "var", "name": "cmd"} - , "cwd": "work" - , "env": {"type": "var", "name": "ENV"} - } - ] - , [ "binary" - , { "type": "singleton_map" - , "key": {"type": "var", "name": "binpath"} - , "value": - { "type": "lookup" - , "map": {"type": "var", "name": "binary (in work)"} - , "key": {"type": "var", "name": "binpath (in work)"} - } - } - ] - ] - , "body": - { "type": "map_union" - , "$1": - [ { "type": "singleton_map" - , "key": "binary" - , "value": {"type": "var", "name": "binary"} - } - , { "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"] - } - ] - } - } - } -, "bin result": - { "doc": ["Produces the binary target result."] - , "vars": - [ "CC" - , "CXX" - , "CFLAGS" - , "CXXFLAGS" - , "LDFLAGS" - , "ADD_CFLAGS" - , "ADD_CXXFLAGS" - , "ADD_LDFLAGS" - , "ENV" - , "BUILD_POSITION_INDEPENDENT" - , "DEBUG" - , "LINT" - , "name" - , "pure C" - , "srcs" - , "private-hdrs" - , "private-cflags" - , "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" - , "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": "++" - , "$1": - [ {"type": "CALL_EXPRESSION", "name": "compile-args-deps"} - , {"type": "var", "name": "private-cflags"} - ] - } - ] - , ["link-deps", {"type": "CALL_EXPRESSION", "name": "link-deps"}] - , [ "link-args" - , { "type": "nub_right" - , "$1": - { "type": "++" - , "$1": - [ {"type": "var", "name": "private-ldflags"} - , {"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"} - ] - , [ "cflags-files" - , {"type": "CALL_EXPRESSION", "name": "cflags-files-deps"} - ] - , [ "ldflags-files" - , {"type": "CALL_EXPRESSION", "name": "ldflags-files-deps"} - ] - , ["package", {"type": "singleton_map", "key": "to_bin", "value": true}] - , [ "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"} - ] - } - , "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": "compile-deps"} - ] - } - , "else": {"type": "empty_map"} - } - ] - , [ "lint" - , { "type": "if" - , "cond": {"type": "var", "name": "LINT"} - , "then": - { "type": "let*" - , "bindings": - [ ["hdrs", {"type": "empty_map"}] - , ["lint-deps fieldnames", ["private-deps"]] - ] - , "body": {"type": "CALL_EXPRESSION", "name": "lint"} - } - } - ] - , [ "bin action result" - , {"type": "CALL_EXPRESSION", "name": "bin action"} - ] - , [ "binary" - , { "type": "lookup" - , "key": "binary" - , "map": {"type": "var", "name": "bin action result"} - } - ] - , [ "dwarf objects" - , { "type": "lookup" - , "key": "dwarf objects" - , "map": {"type": "var", "name": "bin action result"} - } - ] - , [ "dwarf deps" - , { "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"} - } - } - ] - } - , "else": {"type": "empty_map"} - , "then": - { "type": "let*" - , "bindings": [["deps-provider", "dwarf-pkg"]] - , "body": {"type": "CALL_EXPRESSION", "name": "debug-deps"} - } - } - ] - , [ "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": "bin action result"} - } - ] - , [ "TOOLCHAIN_DIR" - , { "type": "lookup" - , "key": "TOOLCHAIN_DIR" - , "map": {"type": "var", "name": "bin action result"} - } - ] - , [ "NON_SYSTEM_TOOLS" - , { "type": "lookup" - , "key": "NON_SYSTEM_TOOLS" - , "map": {"type": "var", "name": "bin action result"} - } - ] - , [ "ENV" - , { "type": "lookup" - , "key": "ENV" - , "map": {"type": "var", "name": "bin action result"} - } - ] - ] - , "body": {"type": "CALL_EXPRESSION", "name": "dwarf package"} - } - , "else": {"type": "empty_map"} - } - ] - ] - , "body": - { "type": "RESULT" - , "artifacts": {"type": "var", "name": "binary"} - , "provides": - { "type": "env" - , "vars": - [ "run-libs" - , "package" - , "debug-srcs" - , "debug-hdrs" - , "lint" - , "dwarf-pkg" - ] - } - } - } - } -, "install-with-deps stage": - { "vars": - [ "pc-install-dir" - , "targets" - , "prefix" - , "flat-libs" - , "hdrs-only" - , "skip-debug-stage" - ] - , "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": - [ [ "install-stage" - , { "type": "disjoint_map_union" - , "msg": "install stages may not overlap" - , "$1": - { "type": "foreach" - , "var": "target" - , "range": {"type": "var", "name": "targets"} - , "body": - { "type": "let*" - , "bindings": - [ [ "runfiles" - , { "type": "DEP_RUNFILES" - , "dep": {"type": "var", "name": "target"} - , "default": {"type": "empty_map"} - } - ] - , [ "compile-deps" - , { "type": "DEP_PROVIDES" - , "dep": {"type": "var", "name": "target"} - , "provider": "compile-deps" - , "default": {"type": "empty_map"} - } - ] - , [ "headers" - , { "type": "disjoint_map_union" - , "msg": "headers may not overlap" - , "$1": - [ {"type": "var", "name": "runfiles"} - , {"type": "var", "name": "compile-deps"} - ] - } - ] - , [ "debug-srcs" - , { "type": "if" - , "cond": {"type": "var", "name": "skip-debug-stage"} - , "then": {"type": "empty_map"} - , "else": - { "type": "DEP_PROVIDES" - , "dep": {"type": "var", "name": "target"} - , "provider": "debug-srcs" - , "default": {"type": "empty_map"} - } - } - ] - , [ "debug-hdrs" - , { "type": "if" - , "cond": {"type": "var", "name": "skip-debug-stage"} - , "then": {"type": "empty_map"} - , "else": - { "type": "DEP_PROVIDES" - , "dep": {"type": "var", "name": "target"} - , "provider": "debug-hdrs" - , "default": {"type": "empty_map"} - } - } - ] - , [ "dwarf-pkg" - , { "type": "if" - , "cond": {"type": "var", "name": "skip-debug-stage"} - , "then": {"type": "empty_map"} - , "else": - { "type": "DEP_PROVIDES" - , "dep": {"type": "var", "name": "target"} - , "provider": "dwarf-pkg" - , "default": {"type": "empty_map"} - } - } - ] - ] - , "body": - { "type": "if" - , "cond": {"type": "var", "name": "hdrs-only"} - , "then": {"type": "var", "name": "headers"} - , "else": - { "type": "let*" - , "bindings": - [ [ "artifacts" - , { "type": "map_union" - , "$1": - [ { "type": "DEP_ARTIFACTS" - , "dep": {"type": "var", "name": "target"} - , "default": {"type": "empty_map"} - } - , {"type": "var", "name": "dwarf-pkg"} - ] - } - ] - , [ "link-deps" - , { "type": "DEP_PROVIDES" - , "dep": {"type": "var", "name": "target"} - , "provider": "link-deps" - , "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"} - , "provider": "package" - , "default": {"type": "empty_map"} - } - ] - , [ "to_bin" - , { "type": "lookup" - , "key": "to_bin" - , "map": {"type": "var", "name": "package"} - } - ] - , [ "binaries" - , { "type": "if" - , "cond": {"type": "var", "name": "to_bin"} - , "then": {"type": "var", "name": "artifacts"} - , "else": {"type": "empty_map"} - } - ] - , [ "libraries" - , { "type": "disjoint_map_union" - , "msg": "libraries may not overlap" - , "$1": - { "type": "++" - , "$1": - [ { "type": "if" - , "cond": {"type": "var", "name": "to_bin"} - , "then": [] - , "else": [{"type": "var", "name": "artifacts"}] - } - , [{"type": "var", "name": "link-deps"}] - , [{"type": "var", "name": "run-libs"}] - ] - } - } - ] - , [ "pkg-name" - , { "type": "lookup" - , "key": "name" - , "map": {"type": "var", "name": "package"} - } - ] - , [ "pkg-config" - , { "type": "if" - , "cond": {"type": "var", "name": "pkg-name"} - , "then": - { "type": "let*" - , "bindings": - [ ["pkg-prefix", {"type": "var", "name": "prefix"}] - , [ "pkg-version" - , { "type": "lookup" - , "key": "version" - , "map": {"type": "var", "name": "package"} - } - ] - , [ "pkg-cflags" - , { "type": "DEP_PROVIDES" - , "dep": {"type": "var", "name": "target"} - , "provider": "compile-args" - , "default": [] - } - ] - , [ "pkg-ldflags" - , { "type": "++" - , "$1": - [ { "type": "DEP_PROVIDES" - , "dep": {"type": "var", "name": "target"} - , "provider": "link-args" - , "default": [] - } - , { "type": "DEP_PROVIDES" - , "dep": {"type": "var", "name": "target"} - , "provider": "run-libs-args" - , "default": [] - } - ] - } - ] - , [ "pkg-flag-files" - , { "type": "map_union" - , "$1": - [ { "type": "lookup" - , "key": "cflags-files" - , "map": {"type": "var", "name": "package"} - , "default": {"type": "empty_map"} - } - , { "type": "lookup" - , "key": "ldflags-files" - , "map": {"type": "var", "name": "package"} - , "default": {"type": "empty_map"} - } - ] - } - ] - , [ "pkg-libs" - , {"type": "var", "name": "libraries"} - ] - , [ "flat-libs" - , {"type": "var", "name": "flat-libs"} - ] - ] - , "body": - { "type": "map_union" - , "$1": - [ { "type": "CALL_EXPRESSION" - , "name": "pkg-config" - } - , {"type": "var", "name": "pkg-flag-files"} - ] - } - } - , "else": {"type": "empty_map"} - } - ] - ] - , "body": - { "type": "map_union" - , "$1": - [ { "type": "to_subdir" - , "subdir": "bin" - , "flat": true - , "msg": "install binaries may not overlap" - , "$1": {"type": "var", "name": "binaries"} - } - , { "type": "to_subdir" - , "subdir": "include" - , "$1": - { "type": "map_union" - , "$1": - [ {"type": "var", "name": "headers"} - , {"type": "var", "name": "debug-hdrs"} - ] - } - } - , { "type": "to_subdir" - , "subdir": "lib" - , "flat": {"type": "var", "name": "flat-libs"} - , "msg": "install libraries may not overlap" - , "$1": {"type": "var", "name": "libraries"} - } - , { "type": "to_subdir" - , "subdir": {"type": "var", "name": "pc-install-dir"} - , "$1": {"type": "var", "name": "pkg-config"} - } - , { "type": "to_subdir" - , "subdir": "work" - , "$1": {"type": "var", "name": "debug-srcs"} - } - ] - } - } - } - } - } - } - ] - ] - , "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"} - } - } -} |