summaryrefslogtreecommitdiff
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
commit7f72f33c498ba39f5f4900642b63ec6e89c471e6 (patch)
tree5e54e249640337422fc4b87d0213ee72a427320c
parent16d5cf721477348c77b7735160d257fbd522323f (diff)
downloadrules-cc-7f72f33c498ba39f5f4900642b63ec6e89c471e6.tar.gz
defaults: 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/EXPRESSIONS13
-rw-r--r--CC/RULES11
-rw-r--r--CC/foreign/RULES5
-rw-r--r--CC/proto/RULES7
-rw-r--r--patch/RULES5
5 files changed, 25 insertions, 16 deletions
diff --git a/CC/EXPRESSIONS b/CC/EXPRESSIONS
index 1f57fcd..c4a3e34 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"]
diff --git a/CC/RULES b/CC/RULES
index c6426b1..230c397 100644
--- a/CC/RULES
+++ b/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"]
@@ -121,7 +122,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"]
@@ -129,7 +130,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"]
@@ -137,7 +138,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"]
@@ -153,9 +154,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/foreign/RULES b/CC/foreign/RULES
index 6a48f1d..935d477 100644
--- a/CC/foreign/RULES
+++ b/CC/foreign/RULES
@@ -28,6 +28,7 @@
, "config_vars": ["ARCH", "HOST_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"]
@@ -62,9 +63,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 8108161..65b8a7a 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"]
@@ -91,7 +92,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"]
@@ -107,9 +108,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-++"}
]
}
]