diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2024-08-07 10:16:00 +0200 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2024-08-07 10:47:29 +0200 |
commit | d7d742d1687dd198abd9624d6fe2fc76b7d6a745 (patch) | |
tree | 7fa65cd19fe6aa2b961539a3a0ec2fad6bd0f00e | |
parent | 4acf0aa7031836abbb53f9a7816b6a55bab6fcd6 (diff) | |
download | justbuild-d7d742d1687dd198abd9624d6fe2fc76b7d6a745.tar.gz |
Add field to ["CC", "defaults"] to specify arguments for ar
... instead of hard-coding ["cqs"].
-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 ab7c9224..39f87432 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"]} @@ -922,6 +943,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" @@ -973,6 +995,7 @@ } } ] + , ["ARFLAGS", {"type": "CALL_EXPRESSION", "name": "default-ARFLAGS"}] , [ "ENV" , { "type": "map_union" , "$1": @@ -1078,10 +1101,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 af9ad920..93407ac7 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\"." @@ -113,6 +119,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"] @@ -155,6 +162,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" @@ -350,6 +365,7 @@ , "CXXFLAGS" , "LDFLAGS" , "AR" + , "ARFLAGS" , "PATH" , "ENV" , "TOOLCHAIN" |