xref: /aosp_15_r20/external/angle/build/config/sysroot.gni (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker# Copyright 2013 The Chromium Authors
2*8975f5c5SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
3*8975f5c5SAndroid Build Coastguard Worker# found in the LICENSE file.
4*8975f5c5SAndroid Build Coastguard Worker
5*8975f5c5SAndroid Build Coastguard Worker# This header file defines the "sysroot" variable which is the absolute path
6*8975f5c5SAndroid Build Coastguard Worker# of the sysroot. If no sysroot applies, the variable will be an empty string.
7*8975f5c5SAndroid Build Coastguard Worker
8*8975f5c5SAndroid Build Coastguard Workerdeclare_args() {
9*8975f5c5SAndroid Build Coastguard Worker  # The path of the sysroot that is applied when compiling using the target
10*8975f5c5SAndroid Build Coastguard Worker  # toolchain.
11*8975f5c5SAndroid Build Coastguard Worker  target_sysroot = ""
12*8975f5c5SAndroid Build Coastguard Worker
13*8975f5c5SAndroid Build Coastguard Worker  # The path to directory containing linux sysroot images.
14*8975f5c5SAndroid Build Coastguard Worker  target_sysroot_dir = "//build/linux"
15*8975f5c5SAndroid Build Coastguard Worker
16*8975f5c5SAndroid Build Coastguard Worker  # The path of the sysroot for the current toolchain. If empty, default
17*8975f5c5SAndroid Build Coastguard Worker  # sysroot is used.
18*8975f5c5SAndroid Build Coastguard Worker  sysroot = ""
19*8975f5c5SAndroid Build Coastguard Worker
20*8975f5c5SAndroid Build Coastguard Worker  # Controls default is_linux sysroot. If set to true, and sysroot
21*8975f5c5SAndroid Build Coastguard Worker  # is empty, default sysroot is calculated.
22*8975f5c5SAndroid Build Coastguard Worker  use_sysroot =
23*8975f5c5SAndroid Build Coastguard Worker      current_cpu == "x86" || current_cpu == "x64" || current_cpu == "arm" ||
24*8975f5c5SAndroid Build Coastguard Worker      current_cpu == "arm64" || current_cpu == "mipsel" ||
25*8975f5c5SAndroid Build Coastguard Worker      current_cpu == "mips64el" || (current_cpu == "riscv64" && is_android)
26*8975f5c5SAndroid Build Coastguard Worker}
27*8975f5c5SAndroid Build Coastguard Worker
28*8975f5c5SAndroid Build Coastguard Workerif (sysroot == "") {
29*8975f5c5SAndroid Build Coastguard Worker  if (current_os == target_os && current_cpu == target_cpu &&
30*8975f5c5SAndroid Build Coastguard Worker      target_sysroot != "") {
31*8975f5c5SAndroid Build Coastguard Worker    sysroot = target_sysroot
32*8975f5c5SAndroid Build Coastguard Worker  } else if (is_android) {
33*8975f5c5SAndroid Build Coastguard Worker    import("//build/config/android/config.gni")
34*8975f5c5SAndroid Build Coastguard Worker
35*8975f5c5SAndroid Build Coastguard Worker    # Android uses unified headers, and thus a single compile time sysroot
36*8975f5c5SAndroid Build Coastguard Worker    sysroot = "$android_toolchain_root/sysroot"
37*8975f5c5SAndroid Build Coastguard Worker  } else if ((is_linux || is_chromeos) && use_sysroot) {
38*8975f5c5SAndroid Build Coastguard Worker    # By default build against a sysroot image downloaded from Cloud Storage
39*8975f5c5SAndroid Build Coastguard Worker    # during gclient runhooks.
40*8975f5c5SAndroid Build Coastguard Worker    if (current_cpu == "x64") {
41*8975f5c5SAndroid Build Coastguard Worker      sysroot = "$target_sysroot_dir/debian_bullseye_amd64-sysroot"
42*8975f5c5SAndroid Build Coastguard Worker    } else if (current_cpu == "x86") {
43*8975f5c5SAndroid Build Coastguard Worker      sysroot = "$target_sysroot_dir/debian_bullseye_i386-sysroot"
44*8975f5c5SAndroid Build Coastguard Worker    } else if (current_cpu == "mipsel") {
45*8975f5c5SAndroid Build Coastguard Worker      sysroot = "$target_sysroot_dir/debian_bullseye_mipsel-sysroot"
46*8975f5c5SAndroid Build Coastguard Worker    } else if (current_cpu == "mips64el") {
47*8975f5c5SAndroid Build Coastguard Worker      sysroot = "$target_sysroot_dir/debian_bullseye_mips64el-sysroot"
48*8975f5c5SAndroid Build Coastguard Worker    } else if (current_cpu == "arm") {
49*8975f5c5SAndroid Build Coastguard Worker      sysroot = "$target_sysroot_dir/debian_bullseye_armhf-sysroot"
50*8975f5c5SAndroid Build Coastguard Worker    } else if (current_cpu == "arm64") {
51*8975f5c5SAndroid Build Coastguard Worker      sysroot = "$target_sysroot_dir/debian_bullseye_arm64-sysroot"
52*8975f5c5SAndroid Build Coastguard Worker    } else {
53*8975f5c5SAndroid Build Coastguard Worker      assert(false, "No linux sysroot for cpu: $target_cpu")
54*8975f5c5SAndroid Build Coastguard Worker    }
55*8975f5c5SAndroid Build Coastguard Worker
56*8975f5c5SAndroid Build Coastguard Worker    if (sysroot != "") {
57*8975f5c5SAndroid Build Coastguard Worker      _script_arch = current_cpu
58*8975f5c5SAndroid Build Coastguard Worker      if (_script_arch == "x86") {
59*8975f5c5SAndroid Build Coastguard Worker        _script_arch = "i386"
60*8975f5c5SAndroid Build Coastguard Worker      } else if (_script_arch == "x64") {
61*8975f5c5SAndroid Build Coastguard Worker        _script_arch = "amd64"
62*8975f5c5SAndroid Build Coastguard Worker      }
63*8975f5c5SAndroid Build Coastguard Worker      assert(
64*8975f5c5SAndroid Build Coastguard Worker          exec_script("//build/dir_exists.py",
65*8975f5c5SAndroid Build Coastguard Worker                      [ rebase_path(sysroot) ],
66*8975f5c5SAndroid Build Coastguard Worker                      "string") == "True",
67*8975f5c5SAndroid Build Coastguard Worker          "Missing sysroot ($sysroot). To fix, run: build/linux/sysroot_scripts/install-sysroot.py --arch=$_script_arch")
68*8975f5c5SAndroid Build Coastguard Worker    }
69*8975f5c5SAndroid Build Coastguard Worker  } else if (is_mac) {
70*8975f5c5SAndroid Build Coastguard Worker    import("//build/config/mac/mac_sdk.gni")
71*8975f5c5SAndroid Build Coastguard Worker    sysroot = mac_sdk_path
72*8975f5c5SAndroid Build Coastguard Worker  } else if (is_ios) {
73*8975f5c5SAndroid Build Coastguard Worker    import("//build/config/ios/ios_sdk.gni")
74*8975f5c5SAndroid Build Coastguard Worker    sysroot = ios_sdk_path
75*8975f5c5SAndroid Build Coastguard Worker  } else if (is_fuchsia) {
76*8975f5c5SAndroid Build Coastguard Worker    import("//build/config/fuchsia/gn_configs.gni")
77*8975f5c5SAndroid Build Coastguard Worker    sysroot = "${fuchsia_arch_root}/sysroot"
78*8975f5c5SAndroid Build Coastguard Worker  }
79*8975f5c5SAndroid Build Coastguard Worker}
80