blob: 44ded33e42cf4e4b9eb2fedb920c1eeaa7af72b7 [file] [log] [blame]
Ben Murdoch097c5b22016-05-18 11:27:45 +01001# Copyright (c) 2013 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5# This header file defines the "sysroot" variable which is the absolute path
6# of the sysroot. If no sysroot applies, the variable will be an empty string.
7
8import("//build/config/chrome_build.gni")
9
10declare_args() {
11 # The absolute path of the sysroot that is applied when compiling using
12 # the target toolchain.
13 target_sysroot = ""
14 use_sysroot = true
15}
16
17if (current_os == target_os && current_cpu == target_cpu &&
18 target_sysroot != "") {
19 sysroot = target_sysroot
20} else if (is_android) {
21 import("//build/config/android/config.gni")
22 if (current_cpu == "x86") {
23 sysroot = "$android_ndk_root/$x86_android_sysroot_subdir"
24 } else if (current_cpu == "arm") {
25 sysroot = "$android_ndk_root/$arm_android_sysroot_subdir"
26 } else if (current_cpu == "mipsel") {
27 sysroot = "$android_ndk_root/$mips_android_sysroot_subdir"
28 } else if (current_cpu == "x64") {
29 sysroot = "$android_ndk_root/$x86_64_android_sysroot_subdir"
30 } else if (current_cpu == "arm64") {
31 sysroot = "$android_ndk_root/$arm64_android_sysroot_subdir"
32 } else if (current_cpu == "mips64") {
33 sysroot = "$android_ndk_root/$mips64_android_sysroot_subdir"
34 } else {
35 sysroot = ""
36 }
37} else if (is_linux && !is_chromeos && use_sysroot) {
38 # By default build against a sysroot image downloaded from Cloud Storage
39 # during gclient runhooks.
40 if (current_cpu == "x64") {
41 sysroot = "//build/linux/debian_wheezy_amd64-sysroot"
42 } else if (current_cpu == "x86") {
43 sysroot = "//build/linux/debian_wheezy_i386-sysroot"
44 } else if (current_cpu == "mipsel") {
45 sysroot = "//build/linux/debian_wheezy_mips-sysroot"
46 } else if (current_cpu == "arm") {
47 sysroot = "//build/linux/debian_wheezy_arm-sysroot"
48 } else {
49 # Any other builds don't use a sysroot.
50 sysroot = ""
51 }
52
53 if (sysroot != "") {
54 # Our sysroot images only contains gcc 4.6 headers, but chromium requires
55 # gcc 4.9. Clang is able to detect and work with the 4.6 headers while
56 # gcc is not. This check can be removed if we ever update to a more modern
57 # sysroot.
58 assert(is_clang, "sysroot images require clang (try use_sysroot=false)")
59
60 _script_arch = current_cpu
61 if (_script_arch == "x86") {
62 _script_arch = "i386"
63 } else if (_script_arch == "x64") {
64 _script_arch = "amd64"
65 }
66 assert(
67 exec_script("//build/dir_exists.py",
68 [ rebase_path(sysroot) ],
69 "string") == "True",
70 "Missing sysroot ($sysroot). To fix, run: build/linux/sysroot_scripts/install-sysroot.py --arch=$_script_arch")
71 }
72} else if (is_mac) {
73 import("//build/config/mac/mac_sdk.gni")
74 sysroot = mac_sdk_path
75} else if (is_ios) {
76 import("//build/config/ios/ios_sdk.gni")
77 sysroot = ios_sdk_path
78} else {
79 sysroot = ""
80}