summaryrefslogtreecommitdiff
path: root/rules
diff options
context:
space:
mode:
authorOliver Reiche <oliver.reiche@huawei.com>2023-11-16 16:41:38 +0100
committerOliver Reiche <oliver.reiche@huawei.com>2023-11-20 16:01:56 +0100
commit3a1a1e855fee6f74e14c1626cdf84efe119936c3 (patch)
tree43be80553cafc2ee66a3e2236d6c22a03ce9e453 /rules
parent670eec4953f923b2ee6c00edccd6fbad66bd0641 (diff)
downloadjustbuild-3a1a1e855fee6f74e14c1626cdf84efe119936c3.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.
Diffstat (limited to 'rules')
-rw-r--r--rules/CC/EXPRESSIONS13
-rw-r--r--rules/CC/RULES11
-rw-r--r--rules/CC/proto/RULES7
-rw-r--r--rules/patch/RULES5
4 files changed, 23 insertions, 13 deletions
diff --git a/rules/CC/EXPRESSIONS b/rules/CC/EXPRESSIONS
index 6b7b842e..24a2cfff 100644
--- a/rules/CC/EXPRESSIONS
+++ b/rules/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"]
diff --git a/rules/CC/RULES b/rules/CC/RULES
index bea41d27..0c5021c2 100644
--- a/rules/CC/RULES
+++ b/rules/CC/RULES
@@ -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/rules/CC/proto/RULES b/rules/CC/proto/RULES
index 4ffc73b2..2fc03466 100644
--- a/rules/CC/proto/RULES
+++ b/rules/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/rules/patch/RULES b/rules/patch/RULES
index f57094a5..446f8428 100644
--- a/rules/patch/RULES
+++ b/rules/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-++"}
]
}
]