|  | # Copyright (c) 2013 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 header file defines the "sysroot" variable which is the absolute path | 
|  | # of the sysroot. If no sysroot applies, the variable will be an empty string. | 
|  |  | 
|  | import("//build/config/chrome_build.gni") | 
|  |  | 
|  | declare_args() { | 
|  | # The absolute path of the sysroot that is applied when compiling using | 
|  | # the target toolchain. | 
|  | target_sysroot = "" | 
|  |  | 
|  | # The absolute path to directory containing linux sysroot images | 
|  | target_sysroot_dir = "//build/linux" | 
|  |  | 
|  | use_sysroot = current_cpu == "x86" || current_cpu == "x64" || | 
|  | current_cpu == "arm" || current_cpu == "arm64" || | 
|  | current_cpu == "mipsel" || current_cpu == "mips64el" | 
|  | } | 
|  |  | 
|  | if (current_os == target_os && current_cpu == target_cpu && | 
|  | target_sysroot != "") { | 
|  | sysroot = target_sysroot | 
|  | } else if (is_android) { | 
|  | import("//build/config/android/config.gni") | 
|  |  | 
|  | # Android uses unified headers, and thus a single compile time sysroot | 
|  | sysroot = "$android_ndk_root/sysroot" | 
|  | } else if (is_linux && use_sysroot) { | 
|  | # By default build against a sysroot image downloaded from Cloud Storage | 
|  | # during gclient runhooks. | 
|  | if (current_cpu == "x64") { | 
|  | sysroot = "$target_sysroot_dir/debian_sid_amd64-sysroot" | 
|  | } else if (current_cpu == "x86") { | 
|  | sysroot = "$target_sysroot_dir/debian_sid_i386-sysroot" | 
|  | } else if (current_cpu == "mipsel") { | 
|  | sysroot = "$target_sysroot_dir/debian_sid_mips-sysroot" | 
|  | } else if (current_cpu == "mips64el") { | 
|  | sysroot = "$target_sysroot_dir/debian_sid_mips64el-sysroot" | 
|  | } else if (current_cpu == "arm") { | 
|  | sysroot = "$target_sysroot_dir/debian_sid_arm-sysroot" | 
|  | } else if (current_cpu == "arm64") { | 
|  | sysroot = "$target_sysroot_dir/debian_sid_arm64-sysroot" | 
|  | } else { | 
|  | assert(false, "No linux sysroot for cpu: $target_cpu") | 
|  | } | 
|  |  | 
|  | if (sysroot != "") { | 
|  | _script_arch = current_cpu | 
|  | if (_script_arch == "x86") { | 
|  | _script_arch = "i386" | 
|  | } else if (_script_arch == "x64") { | 
|  | _script_arch = "amd64" | 
|  | } | 
|  | assert( | 
|  | exec_script("//build/dir_exists.py", | 
|  | [ rebase_path(sysroot) ], | 
|  | "string") == "True", | 
|  | "Missing sysroot ($sysroot). To fix, run: build/linux/sysroot_scripts/install-sysroot.py --arch=$_script_arch") | 
|  | } | 
|  | } else if (is_mac) { | 
|  | import("//build/config/mac/mac_sdk.gni") | 
|  | sysroot = mac_sdk_path | 
|  | } else if (is_ios) { | 
|  | import("//build/config/ios/ios_sdk.gni") | 
|  | sysroot = ios_sdk_path | 
|  | } else if (is_fuchsia) { | 
|  | import("//build/config/fuchsia/config.gni") | 
|  | if (current_cpu == "arm64") { | 
|  | sysroot = fuchsia_sdk + "/sysroot/aarch64-fuchsia" | 
|  | } else if (current_cpu == "x64") { | 
|  | sysroot = fuchsia_sdk + "/sysroot/x86_64-fuchsia" | 
|  | } else { | 
|  | sysroot = "" | 
|  | } | 
|  | } else { | 
|  | sysroot = "" | 
|  | } | 
|  |  | 
|  | if (is_android) { | 
|  | # Android uses unified headers in NDK r16 and later, meaning that the | 
|  | # compile time sysroot and link time sysroot are different | 
|  | link_sysroot = sysroot | 
|  | if (current_cpu == "arm") { | 
|  | link_sysroot = "$android_ndk_root/$arm_android_sysroot_subdir" | 
|  | } else if (current_cpu == "arm64") { | 
|  | link_sysroot = "$android_ndk_root/$arm64_android_sysroot_subdir" | 
|  | } else if (current_cpu == "x86") { | 
|  | link_sysroot = "$android_ndk_root/$x86_android_sysroot_subdir" | 
|  | } else if (current_cpu == "x64") { | 
|  | link_sysroot = "$android_ndk_root/$x86_64_android_sysroot_subdir" | 
|  | } else if (current_cpu == "mipsel") { | 
|  | link_sysroot = "$android_ndk_root/$mips_android_sysroot_subdir" | 
|  | } else if (current_cpu == "mips64el") { | 
|  | link_sysroot = "$android_ndk_root/$mips64_android_sysroot_subdir" | 
|  | } else { | 
|  | assert(false, "No android link sysroot for cpu: $target_cpu") | 
|  | } | 
|  | } else { | 
|  | link_sysroot = sysroot | 
|  | } |