summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CC/EXPRESSIONS33
-rw-r--r--CC/RULES32
-rw-r--r--CC/TARGETS1
-rw-r--r--CC/test/RULES10
4 files changed, 74 insertions, 2 deletions
diff --git a/CC/EXPRESSIONS b/CC/EXPRESSIONS
index 7beac0a..7db6e9a 100644
--- a/CC/EXPRESSIONS
+++ b/CC/EXPRESSIONS
@@ -82,6 +82,21 @@
, "body": {"type": "CALL_EXPRESSION", "name": "list_provider"}
}
}
+, "default-LDFLAGS":
+ { "vars": ["defaults-transition"]
+ , "imports": {"list_provider": ["./", "..", "field_list_provider"]}
+ , "expression":
+ { "type": "let*"
+ , "bindings":
+ [ ["fieldname", "defaults"]
+ , ["provider", "LDFLAGS"]
+ , [ "transition"
+ , {"type": "var", "name": "defaults-transition", "default": null}
+ ]
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "list_provider"}
+ }
+ }
, "default-ENV":
{ "vars": ["defaults-transition"]
, "imports": {"provider_list": ["./", "..", "field_provider_list"]}
@@ -667,8 +682,10 @@
, "CXX"
, "CFLAGS"
, "CXXFLAGS"
+ , "LDFLAGS"
, "ADD_CFLAGS"
, "ADD_CXXFLAGS"
+ , "ADD_LDFLAGS"
, "ENV"
, "name"
, "pure C"
@@ -686,6 +703,7 @@
, "flags": "flags"
, "objects": "objects"
, "default-ENV": "default-ENV"
+ , "default-LDFLAGS": "default-LDFLAGS"
}
, "expression":
{ "type": "let*"
@@ -699,6 +717,18 @@
]
}
]
+ , [ "LDFLAGS"
+ , { "type": "++"
+ , "$1":
+ [ { "type": "var"
+ , "name": "LDFLAGS"
+ , "default":
+ {"type": "CALL_EXPRESSION", "name": "default-LDFLAGS"}
+ }
+ , {"type": "var", "name": "ADD_LDFLAGS", "default": []}
+ ]
+ }
+ ]
, [ "ENV"
, { "type": "map_union"
, "$1":
@@ -759,6 +789,7 @@
, {"type": "var", "name": "binpath"}
]
, {"type": "var", "name": "COMPILE_FLAGS"}
+ , {"type": "var", "name": "LDFLAGS"}
, {"type": "var", "name": "link-args"}
]
}
@@ -776,8 +807,10 @@
, "CXX"
, "CFLAGS"
, "CXXFLAGS"
+ , "LDFLAGS"
, "ADD_CFLAGS"
, "ADD_CXXFLAGS"
+ , "ADD_LDFLAGS"
, "ENV"
, "name"
, "pure C"
diff --git a/CC/RULES b/CC/RULES
index 3bfd200..9577f4d 100644
--- a/CC/RULES
+++ b/CC/RULES
@@ -12,8 +12,10 @@
, "CXX"
, "CFLAGS"
, "CXXFLAGS"
+ , "LDFLAGS"
, "ADD_CFLAGS"
, "ADD_CXXFLAGS"
+ , "ADD_LDFLAGS"
, "AR"
, "PATH"
]
@@ -25,6 +27,7 @@
, ["CXX", {"type": "FIELD", "name": "CXX"}]
, ["CFLAGS", {"type": "FIELD", "name": "CFLAGS"}]
, ["CXXFLAGS", {"type": "FIELD", "name": "CXXFLAGS"}]
+ , ["LDFLAGS", {"type": "FIELD", "name": "LDFLAGS"}]
, ["AR", {"type": "FIELD", "name": "AR"}]
, ["PATH", {"type": "FIELD", "name": "PATH"}]
, ["provider", "CC"]
@@ -99,12 +102,20 @@
]
}
]
+ , [ "LDFLAGS"
+ , { "type": "++"
+ , "$1":
+ [ {"type": "var", "name": "LDFLAGS"}
+ , {"type": "FIELD", "name": "ADD_LDFLAGS"}
+ ]
+ }
+ ]
]
, "body":
{ "type": "RESULT"
, "provides":
{ "type": "env"
- , "vars": ["CC", "CXX", "CFLAGS", "CXXFLAGS", "AR", "ENV"]
+ , "vars": ["CC", "CXX", "CFLAGS", "CXXFLAGS", "LDFLAGS", "AR", "ENV"]
}
}
}
@@ -336,7 +347,16 @@
, "private-ldflags"
]
, "config_vars":
- ["CC", "CXX", "CFLAGS", "CXXFLAGS", "ADD_CFLAGS", "ADD_CXXFLAGS", "ENV"]
+ [ "CC"
+ , "CXX"
+ , "CFLAGS"
+ , "CXXFLAGS"
+ , "LDFLAGS"
+ , "ADD_CFLAGS"
+ , "ADD_CXXFLAGS"
+ , "ADD_LDFLAGS"
+ , "ENV"
+ ]
, "implicit": {"defaults": ["defaults"]}
, "field_doc":
{ "name": ["The name of the binary"]
@@ -383,6 +403,10 @@
[ "The flags for CXX to be used instead of the default ones"
, "taken from the [\"CC\", \"defaults\"] target"
]
+ , "LDFLAGS":
+ [ "The linker flags do be used instead of the default ones"
+ , "taken from the [\"CC\", \"defaults\"] target"
+ ]
, "ADD_CFLAGS":
[ "The flags to add to the default ones for CC"
, "taken from the [\"CC\", \"defaults\"] target"
@@ -391,6 +415,10 @@
[ "The flags to add to the default ones for CXX"
, "taken from the [\"CC\", \"defaults\"] target"
]
+ , "ADD_LDFLAGS":
+ [ "The linker flags to add to the default ones"
+ , "taken from the [\"CC\", \"defaults\"] target"
+ ]
, "ENV": ["The environment for any action generated."]
}
, "artifacts_doc": ["The final binary, staged to the given directory"]
diff --git a/CC/TARGETS b/CC/TARGETS
index 2da456b..8860e8b 100644
--- a/CC/TARGETS
+++ b/CC/TARGETS
@@ -4,6 +4,7 @@
, "CXX": ["c++"]
, "CFLAGS": []
, "CXXFLAGS": []
+ , "LDFLAGS": []
, "AR": ["ar"]
, "PATH": ["/bin", "/usr/bin"]
}
diff --git a/CC/test/RULES b/CC/test/RULES
index 3821339..8269b9f 100644
--- a/CC/test/RULES
+++ b/CC/test/RULES
@@ -18,8 +18,10 @@
, "CXX"
, "CFLAGS"
, "CXXFLAGS"
+ , "LDFLAGS"
, "ADD_CFLAGS"
, "ADD_CXXFLAGS"
+ , "ADD_LDFLAGS"
, "ENV"
, "TEST_ENV"
, "CC_TEST_LAUNCHER"
@@ -65,6 +67,10 @@
[ "The flags for CXX to be used instead of the default ones"
, "taken from the [\"CC\", \"defaults\"] target"
]
+ , "LDFLAGS":
+ [ "The linker flags do be used instead of the default ones"
+ , "taken from the [\"CC\", \"defaults\"] target"
+ ]
, "ADD_CFLAGS":
[ "The flags to add to the default ones for CC"
, "taken from the [\"CC\", \"defaults\"] target"
@@ -73,6 +79,10 @@
[ "The flags to add to the default ones for CXX"
, "taken from the [\"CC\", \"defaults\"] target"
]
+ , "ADD_LDFLAGS":
+ [ "The linker flags to add to the default ones"
+ , "taken from the [\"CC\", \"defaults\"] target"
+ ]
, "ENV": ["The environment for any action generated."]
, "TEST_ENV": ["The environment for executing the test runner."]
, "CC_TEST_LAUNCHER":