# Copyright 2014 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. import("//build/toolchain/gcc_toolchain.gni") # CrOS builds must cross-compile on a Linux host for the actual CrOS # device target. There are many different CrOS devices so the build # system provides configuration variables that permit a CrOS build to # control the cross-compilation tool chain. However, requiring such # fine-grain specification is tedious for build-bots and developers. # Consequently, the CrOS build system defaults to a convenience # compilation mode where the compilation host is also the build target. # # Chrome can be compiled in this way with the gn variable: # # target_os = "chromeos" # # To perform a board-specific build, first obtain the correct system # root (http://goo.gl/aFB4XH) for the board. Then configure GN to use it # by setting appropriate cross-compilation variables. # # For example, to compile a Chrome source tree in /g/src for an # auron_paine CrOS device with the system root cached in /g/.cros_cache, # the following GN arguments must be provided to configure # cross-compilation with Goma acceleration. (NB: additional variables # will be necessary to successfully compile a working CrOS Chrome. See # the definition of GYP_DEFINES inside a sysroot shell.) # # goma_dir = "/g/.cros_cache/common/goma+2" # target_sysroot= /g/.cros_cache/chrome-sdk/tarballs/auron_paine+7644.0.0+sysroot_chromeos-base_chromeos-chrome.tar.xz" # cros_target_cc = "x86_64-cros-linux-gnu-gcc -B/g/.cros_cache/chrome-sdk/tarballs/auron_paine+7657.0.0+target_toolchain/usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.25.51-gold" # cros_target_cxx = "x86_64-cros-linux-gnu-g++ -B/g/.cros_cache/chrome-sdk/tarballs/auron_paine+7657.0.0+target_toolchain/usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.25.51-gold" # cros_target_ar = "x86_64-cros-linux-gnu-gcc-ar" # target_cpu = "x64" declare_args() { # These must be specified for a board-specific build. cros_target_cc = "" cros_target_cxx = "" cros_target_ar = "" } clang_toolchain("clang_target") { toolchain_cpu = target_cpu toolchain_os = "linux" } gcc_toolchain("target") { # These defaults permit building on a Linux host as described above. cc = "gcc" cxx = "g++" ar = "ar" # But to build for a specific board, the cros_* args will need to be defined. if (cros_target_cc != "") { cc = "${cros_target_cc}" } if (cros_target_cxx != "") { cxx = "${cros_target_cxx}" } if (cros_target_ar != "") { ar = "${cros_target_ar}" } ld = cxx toolchain_cpu = target_cpu toolchain_os = "linux" is_clang = is_clang cc_wrapper = "" }