diff options
author | Oliver Reiche <oliver.reiche@huawei.com> | 2023-11-16 16:41:38 +0100 |
---|---|---|
committer | Oliver Reiche <oliver.reiche@huawei.com> | 2023-11-20 16:01:56 +0100 |
commit | a513b2e823dc6a2e37ae1fad6924b3d5c34dabf0 (patch) | |
tree | 14aea175d8ddad8625b59fc9e4b200332674857b | |
parent | d414173d43fb4e8e6660752ba8b30cd5310f8789 (diff) | |
download | rules-cc-a513b2e823dc6a2e37ae1fad6924b3d5c34dabf0.tar.gz |
rules: Fix flag inheritance
... which should accumulate values from all base targets
unless the flag type (CFLAGS, CXXFLAGS, or LDFLAGS) is
explicity overwritten by the inheritor.
-rw-r--r-- | CC/EXPRESSIONS | 13 | ||||
-rw-r--r-- | CC/RULES | 11 | ||||
-rw-r--r-- | CC/proto/RULES | 7 | ||||
-rw-r--r-- | patch/RULES | 5 |
4 files changed, 23 insertions, 13 deletions
diff --git a/CC/EXPRESSIONS b/CC/EXPRESSIONS index 6b7b842..24a2cff 100644 --- a/CC/EXPRESSIONS +++ b/CC/EXPRESSIONS @@ -153,6 +153,19 @@ , "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"] @@ -75,6 +75,7 @@ , "config_vars": ["ARCH", "HOST_ARCH", "TARGET_ARCH"] , "imports": { "base-provides": "defaults-base-provides" + , "base-provides-++": "defaults-base-provides-++" , "base-provides-list": "defaults-base-provides-list" , "artifacts_list": ["./", "..", "field_artifacts_list"] , "nub_left": ["", "nub_left"] @@ -119,7 +120,7 @@ , { "type": "if" , "cond": {"type": "var", "name": "CFLAGS"} , "then": {"type": "var", "name": "CFLAGS"} - , "else": {"type": "CALL_EXPRESSION", "name": "base-provides"} + , "else": {"type": "CALL_EXPRESSION", "name": "base-provides-++"} } ] , ["provider", "CXXFLAGS"] @@ -127,7 +128,7 @@ , { "type": "if" , "cond": {"type": "var", "name": "CXXFLAGS"} , "then": {"type": "var", "name": "CXXFLAGS"} - , "else": {"type": "CALL_EXPRESSION", "name": "base-provides"} + , "else": {"type": "CALL_EXPRESSION", "name": "base-provides-++"} } ] , ["provider", "LDFLAGS"] @@ -135,7 +136,7 @@ , { "type": "if" , "cond": {"type": "var", "name": "LDFLAGS"} , "then": {"type": "var", "name": "LDFLAGS"} - , "else": {"type": "CALL_EXPRESSION", "name": "base-provides"} + , "else": {"type": "CALL_EXPRESSION", "name": "base-provides-++"} } ] , ["provider", "AR"] @@ -151,9 +152,7 @@ , { "type": "++" , "$1": [ {"type": "var", "name": "PATH"} - , { "type": "++" - , "$1": {"type": "CALL_EXPRESSION", "name": "base-provides-list"} - } + , {"type": "CALL_EXPRESSION", "name": "base-provides-++"} ] } ] diff --git a/CC/proto/RULES b/CC/proto/RULES index 4ffc73b..2fc0346 100644 --- a/CC/proto/RULES +++ b/CC/proto/RULES @@ -56,6 +56,7 @@ } , "imports": { "base-provides": ["./", "..", "defaults-base-provides"] + , "base-provides-++": ["./", "..", "defaults-base-provides-++"] , "base-provides-list": ["./", "..", "defaults-base-provides-list"] , "artifacts_list": ["", "field_artifacts_list"] , "nub_left": ["", "nub_left"] @@ -89,7 +90,7 @@ , { "type": "if" , "cond": {"type": "var", "name": "LDFLAGS"} , "then": {"type": "var", "name": "LDFLAGS"} - , "else": {"type": "CALL_EXPRESSION", "name": "base-provides"} + , "else": {"type": "CALL_EXPRESSION", "name": "base-provides-++"} } ] , ["provider", "GRPC_PLUGIN"] @@ -105,9 +106,7 @@ , { "type": "++" , "$1": [ {"type": "var", "name": "PATH"} - , { "type": "++" - , "$1": {"type": "CALL_EXPRESSION", "name": "base-provides-list"} - } + , {"type": "CALL_EXPRESSION", "name": "base-provides-++"} ] } ] diff --git a/patch/RULES b/patch/RULES index f57094a..446f842 100644 --- a/patch/RULES +++ b/patch/RULES @@ -29,6 +29,7 @@ , "config_vars": ["ARCH", "HOST_ARCH"] , "imports": { "base-provides": ["CC", "defaults-base-provides"] + , "base-provides-++": ["CC", "defaults-base-provides-++"] , "base-provides-list": ["CC", "defaults-base-provides-list"] , "artifacts_list": ["", "field_artifacts_list"] , "nub_left": ["", "nub_left"] @@ -54,9 +55,7 @@ , { "type": "++" , "$1": [ {"type": "var", "name": "PATH"} - , { "type": "++" - , "$1": {"type": "CALL_EXPRESSION", "name": "base-provides-list"} - } + , {"type": "CALL_EXPRESSION", "name": "base-provides-++"} ] } ] |