diff options
-rw-r--r-- | rules/CC/EXPRESSIONS | 30 | ||||
-rw-r--r-- | rules/CC/RULES | 16 |
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" |