| 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..2d7e8a3c81d190bee85f9c2c9519520383a3ca4c 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`:
|
| +
|
| +```
|
| +declare_args() {
|
| + # Applies only to toolchains targeting target_cpu.
|
| + sysroot = ""
|
| +}
|
| +
|
| +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" ]
|
| + }
|
| + # Compares current_cpu with target_cpu to see whether current_toolchain
|
| + # has the same architecture as target_toolchain.
|
| + if (sysroot != "" && current_cpu == target_cpu) {
|
| + cflags = [
|
| + "-isysroot",
|
| + sysroot,
|
| + ]
|
| + }
|
| +}
|
| +```
|
| +
|
| ## As a //build/config or //build/toolchain author
|
|
|
| As described in
|
|
|