Index: build/toolchain/concurrent_links.gni |
diff --git a/build/toolchain/concurrent_links.gni b/build/toolchain/concurrent_links.gni |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9705255b4d48a30725b489bada9666c6caa8a8b5 |
--- /dev/null |
+++ b/build/toolchain/concurrent_links.gni |
@@ -0,0 +1,31 @@ |
+# Copyright 2016 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+# This file should only be imported from files that define toolchains. |
+# There's no way to enforce this exactly, but all toolchains are processed |
+# in the context of the default_toolchain, so we can at least check for that. |
+assert(current_toolchain == default_toolchain) |
+ |
+import("//build/config/sanitizers/sanitizers.gni") |
+import("//build/toolchain/toolchain.gni") |
+ |
+declare_args() { |
+ # Limit the number of concurrent links; we often want to run fewer |
+ # links at once than we do compiles, because linking is memory-intensive. |
+ # The default to use varies by platform and by the amount of memory |
+ # available, so we call out to a script to get the right value. |
+ concurrent_links = -1 |
+} |
+ |
+if (concurrent_links == -1) { |
+ if (allow_posix_link_time_opt || is_cfi) { |
+ _args = [ "--lto" ] |
+ } else { |
+ _args = [] |
+ } |
+ |
+ # TODO(crbug.com/617429) Pass more build configuration info to the script |
+ # so that we can compute better values. |
+ concurrent_links = exec_script("get_concurrent_links.py", _args, "value") |
+} |