summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rules/CC/EXPRESSIONS30
-rw-r--r--rules/CC/RULES16
2 files changed, 42 insertions, 4 deletions
diff --git a/rules/CC/EXPRESSIONS b/rules/CC/EXPRESSIONS
index 9c64cff..b3b07fe 100644
--- a/rules/CC/EXPRESSIONS
+++ b/rules/CC/EXPRESSIONS
@@ -61,6 +61,27 @@
, "body": {"type": "var", "name": "AR"}
}
}
+, "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"]}
@@ -1179,6 +1200,7 @@
, "flags": "flags"
, "objects": "objects"
, "default-AR": "default-AR"
+ , "default-ARFLAGS": "default-ARFLAGS"
, "default-ENV": "default-ENV"
, "default-PATH": "default-PATH"
, "default-TOOLCHAIN": "default-TOOLCHAIN"
@@ -1230,6 +1252,7 @@
}
}
]
+ , ["ARFLAGS", {"type": "CALL_EXPRESSION", "name": "default-ARFLAGS"}]
, [ "ENV"
, { "type": "map_union"
, "$1":
@@ -1335,10 +1358,9 @@
, "cmd":
{ "type": "++"
, "$1":
- [ [ {"type": "var", "name": "AR", "default": "ar"}
- , "cqs"
- , {"type": "var", "name": "staged libpath"}
- ]
+ [ [{"type": "var", "name": "AR", "default": "ar"}]
+ , {"type": "var", "name": "ARFLAGS"}
+ , [{"type": "var", "name": "staged libpath"}]
, { "type": "keys"
, "$1": {"type": "var", "name": "staged objects"}
}
diff --git a/rules/CC/RULES b/rules/CC/RULES
index 0a69375..f6f7272 100644
--- a/rules/CC/RULES
+++ b/rules/CC/RULES
@@ -13,6 +13,7 @@
, "CFLAGS"
, "CXXFLAGS"
, "LDFLAGS"
+ , "ARFLAGS"
, "ADD_COMPILE_FLAGS"
, "ADD_CFLAGS"
, "ADD_CXXFLAGS"
@@ -57,6 +58,11 @@
[ "Linker flags for linking the final CC library. Specifying this field"
, "overwrites values from \"base\"."
]
+ , "ARFLAGS":
+ [ "Arguments to tell the archiver to create an archive with the specified"
+ , "object files. If the \"ARFLAGS\" specified in the defaults target are"
+ , "empty, the rules will use [\"cqs\"]."
+ ]
, "ADD_COMPILE_FLAGS":
[ "Additional compilation flags for C and C++. Specifying this field"
, "extends values from \"base\" for both, \"CFLAGS\" and \"CXXFLAGS\"."
@@ -115,6 +121,7 @@
, ["CFLAGS", {"type": "FIELD", "name": "CFLAGS"}]
, ["CXXFLAGS", {"type": "FIELD", "name": "CXXFLAGS"}]
, ["LDFLAGS", {"type": "FIELD", "name": "LDFLAGS"}]
+ , ["ARFLAGS", {"type": "FIELD", "name": "ARFLAGS"}]
, ["AR", {"type": "FIELD", "name": "AR"}]
, ["PATH", {"type": "FIELD", "name": "PATH"}]
, ["provider", "CC"]
@@ -157,6 +164,14 @@
, "else": {"type": "CALL_EXPRESSION", "name": "base-provides-++"}
}
]
+ , ["provider", "ARFLAGS"]
+ , [ "ARFLAGS"
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "ARFLAGS"}
+ , "then": {"type": "var", "name": "ARFLAGS"}
+ , "else": {"type": "CALL_EXPRESSION", "name": "base-provides-++"}
+ }
+ ]
, ["provider", "AR"]
, [ "AR"
, { "type": "if"
@@ -356,6 +371,7 @@
, "CXXFLAGS"
, "LDFLAGS"
, "AR"
+ , "ARFLAGS"
, "PATH"
, "ENV"
, "TOOLCHAIN"