Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(401)

Unified Diff: build/config/BUILDCONFIG.gn

Issue 2116183002: Land chromium-side work to clean up handling of v8_target_cpu in the GN build. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: for review Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: build/config/BUILDCONFIG.gn
diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn
index 4f3a223c32d23ab7b79007add5081deac14bdf7e..54686c28651adb45b12b85325395494c88ebf111 100644
--- a/build/config/BUILDCONFIG.gn
+++ b/build/config/BUILDCONFIG.gn
@@ -142,9 +142,45 @@ declare_args() {
# every toolchain can pass through the "global" value via toolchain_args().
host_toolchain = ""
+ # This arg is used when we want to tell the JIT-code-generating v8 code
+ # that we want to have it generate code for an architecture that is different
+ # than the architecture that v8 will actually run on, and that we will
+ # then run the code under an emulator. For example, we might run v8
+ # on x86, but generate arm code and run that under emulation.
+ #
+ # This arg is defined here rather than in the v8 project because we want
+ # some of the common architecture-specific args (like arm_float_abi or
+ # mips_arch_variant) to be set to their defaults either if the current_cpu
Michael Achenbach 2016/07/07 07:24:22 nit: For consistency, maybe write either "current_
Dirk Pranke 2016/07/07 17:28:12 Will do (using target_cpu).
+ # applies *or* if the v8_target_cpu applies.
+ v8_target_cpu = ""
+
+ # Compile for Memory Sanitizer to find uninitialized reads.
+ #
+ # TODO: This is here so that we can set a good default for v8_target_cpu
+ # when running under the sanitizer, but this is something of a layering
+ # violation and it would be nice if there was some other way to do this.
+ is_msan = false
Dirk Pranke 2016/07/07 02:42:00 I don't like this being here, but the only alterna
Michael Achenbach 2016/07/07 07:24:22 I'd find it ok if developers need to specify v8_ta
Dirk Pranke 2016/07/07 17:28:12 Ah, I thought that x64 v8 msan didn't work at all.
brettw 2016/07/07 17:56:21 I have a negative reaction to this since I spent a
Michael Achenbach 2016/07/08 06:57:11 I'm not totally sure if x64 msan would work well w
+
# DON'T ADD MORE FLAGS HERE. Read the comment above.
}
+if (v8_target_cpu == "") {
brettw 2016/07/07 17:56:21 I really think we should avoid having V8 stuff in
+ if (is_msan) {
+ # Running the V8-generated code on an ARM simulator is a powerful hack that
+ # allows the tool to see the memory accesses from JITted code. Without this
+ # flag, JS code causes false positive reports from MSan.
+ v8_target_cpu = "arm64"
+ } else {
+ v8_target_cpu = target_cpu
+ }
+}
+
+declare_args() {
Michael Achenbach 2016/07/07 07:24:22 Curiosity: Is there a semantic difference in havin
Dirk Pranke 2016/07/07 17:28:12 Generically speaking, yes. See crbug.com/542846. T
+ # This argument is declared here so that it can be overridden in
+ # toolchains. It should never be explicitly set by the user.
michaelbai 2016/07/07 18:41:26 The v8_current_cpu will show up in the result of "
+ v8_current_cpu = v8_target_cpu
+}
+
assert(!(is_debug && is_official_build), "Can't do official debug builds")
# ==============================================================================
@@ -215,10 +251,15 @@ if (target_os == "android") {
} else if (target_os == "ios") {
_default_toolchain = "//build/toolchain/mac:ios_clang_$target_cpu"
} else if (target_os == "linux") {
+ if (v8_current_cpu != current_cpu) {
+ _target_cpus = "${target_cpu}_v8_${v8_current_cpu}"
+ } else {
+ _target_cpus = target_cpu
+ }
if (is_clang) {
- _default_toolchain = "//build/toolchain/linux:clang_$target_cpu"
+ _default_toolchain = "//build/toolchain/linux:clang_${_target_cpus}"
} else {
- _default_toolchain = "//build/toolchain/linux:$target_cpu"
+ _default_toolchain = "//build/toolchain/linux:${_target_cpus}"
}
} else if (target_os == "mac") {
assert(host_os == "mac", "Mac cross-compiles are unsupported.")
« no previous file with comments | « BUILD.gn ('k') | build/config/arm.gni » ('j') | build/toolchain/linux/BUILD.gn » ('J')

Powered by Google App Engine
This is Rietveld 408576698