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