diff options
Diffstat (limited to 'CC/EXPRESSIONS')
-rw-r--r-- | CC/EXPRESSIONS | 3349 |
1 files changed, 0 insertions, 3349 deletions
diff --git a/CC/EXPRESSIONS b/CC/EXPRESSIONS deleted file mode 100644 index 97ce933..0000000 --- a/CC/EXPRESSIONS +++ /dev/null @@ -1,3349 +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-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"} - ] - } - } - , "" - ] - } - } - } - } - } -, "objects": - { "vars": - [ "COMPILER" - , "COMPILE_FLAGS" - , "ENV" - , "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" - } - , "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"} - } - } - } - ] - , [ "my objects" - , { "type": "map_union" - , "$1": - { "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"}] - } - ] - , [ "out" - , { "type": "change_ending" - , "$1": {"type": "var", "name": "src_name"} - , "ending": ".o" - } - ] - , [ "work out" - , { "type": "join" - , "separator": "/" - , "$1": ["work", {"type": "var", "name": "out"}] - } - ] - , [ "cmdline" - , { "type": "++" - , "$1": - [ [{"type": "var", "name": "COMPILER"}] - , {"type": "var", "name": "COMPILE_FLAGS"} - , ["-I", "work", "-isystem", "include"] - , ["-c", {"type": "var", "name": "work 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"} - } - ] - } - ] - , [ "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": "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 artifact" - , { "type": "map_union" - , "$1": - { "type": "foreach_map" - , "range": {"type": "var", "name": "action output"} - , "var_val": "object" - , "body": - { "type": "singleton_map" - , "key": {"type": "var", "name": "out"} - , "value": {"type": "var", "name": "object"} - } - } - } - ] - ] - , "body": {"type": "var", "name": "staged output artifact"} - } - } - } - ] - , [ "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": "disjoint_map_union" - , "msg": "Stating conflict between own objects and objects of components" - , "$1": - [ {"type": "var", "name": "my objects"} - , {"type": "var", "name": "component artifacts"} - ] - } - } - } -, "lint information": - { "vars": - [ "srcs" - , "hdrs" - , "private-hdrs" - , "compile-deps" - , "cflags-files" - , "lint-deps fieldnames" - , "deps-transition" - , "deps-fieldnames" - , "compile-args" - , "defaults-transition" - , "modified-transitions" - ] - , "imports": - { "objects": "objects" - , "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" - } - , "expression": - { "type": "let*" - , "bindings": - [ [ "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"} - ] - } - ] - , [ "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"} - ] - ] - } - ] - ] - , "body": - { "type": "env" - , "vars": ["cmd", "src", "direct deps artifact names"] - } - } - } - } - } - ] - , [ "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"}] - } - ] - , [ "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"] - } - } - } - } - } - } - ] - , [ "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" - , "BUILD_POSITION_INDEPENDENT" - , "pure C" - , "defaults-transition" - ] - , "imports": {"flags-cc": "flags-cc", "flags-cxx": "flags-cxx"} - , "expression": - { "type": "if" - , "cond": {"type": "var", "name": "pure C"} - , "then": {"type": "CALL_EXPRESSION", "name": "flags-cc"} - , "else": {"type": "CALL_EXPRESSION", "name": "flags-cxx"} - } - } -, "lib artifact": - { "vars": - [ "CC" - , "CXX" - , "CFLAGS" - , "CXXFLAGS" - , "ADD_CFLAGS" - , "ADD_CXXFLAGS" - , "AR" - , "ENV" - , "BUILD_POSITION_INDEPENDENT" - , "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", {"type": "CALL_EXPRESSION", "name": "objects"}] - , [ "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": "var", "name": "lib"} - } - } -, "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 artifact": "lib artifact" - , "debug-deps": "debug-deps" - , "lint": "lint information" - } - , "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", {"type": "CALL_EXPRESSION", "name": "lib artifact"}] - , ["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" - ] - } - , { "type": "var" - , "name": "extra-provides" - , "default": {"type": "empty_map"} - } - ] - } - } - } - } -, "shared artifact": - { "vars": - [ "CC" - , "CXX" - , "CFLAGS" - , "CXXFLAGS" - , "LDFLAGS" - , "ADD_CFLAGS" - , "ADD_CXXFLAGS" - , "ADD_LDFLAGS" - , "ENV" - , "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" - } - , "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", {"type": "CALL_EXPRESSION", "name": "objects"}] - , [ "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": "LDFLAGS"} - ] - } - } - } - ] - ] - , "body": {"type": "var", "name": "lib"} - } - } -, "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 artifact": "shared artifact" - , "debug-deps": "debug-deps" - , "lint": "lint information" - } - , "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", {"type": "CALL_EXPRESSION", "name": "shared artifact"}] - , [ "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" - ] - } - , { "type": "var" - , "name": "extra-provides" - , "default": {"type": "empty_map"} - } - ] - } - } - } - } -, "object artifacts": - { "vars": - [ "CC" - , "CXX" - , "CFLAGS" - , "CXXFLAGS" - , "ADD_CFLAGS" - , "ADD_CXXFLAGS" - , "AR" - , "ENV" - , "BUILD_POSITION_INDEPENDENT" - , "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": "CALL_EXPRESSION", "name": "objects"} - } - } -, "object result": - { "vars": - [ "CC" - , "CXX" - , "CFLAGS" - , "CXXFLAGS" - , "ADD_CFLAGS" - , "ADD_CXXFLAGS" - , "AR" - , "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" - } - , "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"}] - , ["objects", {"type": "CALL_EXPRESSION", "name": "object artifacts"}] - , ["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" - ] - } - , { "type": "var" - , "name": "extra-provides" - , "default": {"type": "empty_map"} - } - ] - } - } - } - } -, "bin artifact": - { "doc": ["Produces the binary artifact."] - , "vars": - [ "CC" - , "CXX" - , "CFLAGS" - , "CXXFLAGS" - , "LDFLAGS" - , "ADD_CFLAGS" - , "ADD_CXXFLAGS" - , "ADD_LDFLAGS" - , "ENV" - , "BUILD_POSITION_INDEPENDENT" - , "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" - } - , "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", {"type": "CALL_EXPRESSION", "name": "objects"}] - , [ "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": "LDFLAGS"} - ] - } - ] - , [ "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": "var", "name": "binary"} - } - } -, "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" - , "binary": "bin artifact" - , "debug-deps": "debug-deps" - , "lint": "lint information" - } - , "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"} - } - } - ] - ] - , "body": - { "type": "RESULT" - , "artifacts": {"type": "CALL_EXPRESSION", "name": "binary"} - , "provides": - { "type": "env" - , "vars": ["run-libs", "package", "debug-srcs", "debug-hdrs", "lint"] - } - } - } - } -, "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"} - } - } - ] - ] - , "body": - { "type": "if" - , "cond": {"type": "var", "name": "hdrs-only"} - , "then": {"type": "var", "name": "headers"} - , "else": - { "type": "let*" - , "bindings": - [ [ "artifacts" - , { "type": "DEP_ARTIFACTS" - , "dep": {"type": "var", "name": "target"} - , "default": {"type": "empty_map"} - } - ] - , [ "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"} - } - } -} |