Index: tools/gn/docs/cross_compiles.md |
diff --git a/tools/gn/docs/cross_compiles.md b/tools/gn/docs/cross_compiles.md |
index 68d9bcb8570a3b623bb35ad0b1ecc2f426a64807..36f01db7523b2e0c62e10a59c1ae93527d423493 100644 |
--- a/tools/gn/docs/cross_compiles.md |
+++ b/tools/gn/docs/cross_compiles.md |
@@ -73,11 +73,42 @@ which target\_arch is requested; the values are constant across all |
toolchains. You can do similar things for the `host_cpu` and `host_os` |
variables, but should generally never need to. |
+For the default toolchain, `target_cpu` and `current_cpu` are the same. For a |
+secondary toolchain, `current_cpu` is set based on the toolchain definition |
+and `target_cpu` remains the same. When writing rules, **`current_cpu` should |
+be used rather than `target_cpu` most of the time**. |
+ |
By default, dependencies listed in the `deps` variable of a rule use the |
same (currently active) toolchain. You may specify a different toolchain |
using the `foo(bar)` label notation as described in |
[GNLanguage#Labels](language.md#Labels). |
+Here's an example of when to use `target_cpu` vs `current_cpu`: |
+ |
+``` |
+config("my_config") { |
+ # Uses current_cpu because compile flags are toolchain-dependent. |
+ if (current_cpu == "arm") { |
+ defines = [ "CPU_IS_32_BIT" ] |
+ } else { |
+ defines = [ "CPU_IS_64_BIT" ] |
+ } |
+} |
+ |
+group("fat_bundle") { |
agrieve
2016/06/08 17:43:56
hmm, actually, I don't think this example is corre
|
+ deps = [ |
+ ":shared_library", |
+ ] |
+ # Uses target_cpu because 64 bit devices require both 64 bit and 32 bit |
+ # libraries, but 32 bit devices require only 32 bit libraries. |
+ if (target_cpu == "arm64") { |
+ deps += [ |
+ ":shared_library(//build/toolchain/android:arm)", |
+ ] |
+ } |
+} |
+``` |
+ |
## As a //build/config or //build/toolchain author |
As described in |