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