diff options
Diffstat (limited to 'chromium/build/toolchain/linux/BUILD.gn')
-rw-r--r-- | chromium/build/toolchain/linux/BUILD.gn | 222 |
1 files changed, 58 insertions, 164 deletions
diff --git a/chromium/build/toolchain/linux/BUILD.gn b/chromium/build/toolchain/linux/BUILD.gn index ffb378beb88..dd98cb4e0e3 100644 --- a/chromium/build/toolchain/linux/BUILD.gn +++ b/chromium/build/toolchain/linux/BUILD.gn @@ -1,180 +1,74 @@ -# Copyright (c) 2013 The Chromium Authors. All rights reserved. +# Copyright 2013 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. -cc = "gcc" -cxx = "g++" -ar = "ar" -ld = cxx +import("//build/config/sysroot.gni") +import("//build/toolchain/clang.gni") +import("//build/toolchain/gcc_toolchain.gni") +import("//build/toolchain/goma.gni") -# The toolchains below all issue the same commands with some different flags. -# TODO(brettw) it would be nice to have a different way to express this without -# so much duplication. -cc_command = "$cc -MMD -MF \$out.d \$defines \$includes \$cflags \$cflags_c -c \$in -o \$out" -cxx_command = "$cxx -MMD -MF \$out.d \$defines \$includes \$cflags \$cflags_cc -c \$in -o \$out" -alink_command = "rm -f \$out && $ar rcs \$out \$in" -solink_command = "if [ ! -e \$lib -o ! -e \${lib}.TOC ]; then $ld -shared \$ldflags -o \$lib -Wl,-soname=\$soname -Wl,--whole-archive \$in \$solibs -Wl,--no-whole-archive \$libs && { readelf -d \${lib} | grep SONAME ; nm -gD -f p \${lib} | cut -f1-2 -d' '; } > \${lib}.TOC; else $ld -shared \$ldflags -o \$lib -Wl,-soname=\$soname -Wl,--whole-archive \$in \$solibs -Wl,--no-whole-archive \$libs && { readelf -d \${lib} | grep SONAME ; nm -gD -f p \${lib} | cut -f1-2 -d' '; } > \${lib}.tmp && if ! cmp -s \${lib}.tmp \${lib}.TOC; then mv \${lib}.tmp \${lib}.TOC ; fi; fi" -link_command = "$ld \$ldflags -o \$out -Wl,--start-group \$in \$solibs -Wl,--end-group \$libs" -stamp_command = "\${postbuilds}touch \$out" -copy_command = "ln -f \$in \$out 2>/dev/null || (rm -rf \$out && cp -af \$in \$out)" +gcc_toolchain("arm") { + cc = "arm-linux-gnueabi-gcc" + cxx = "arm-linux-gnueabi-g++" + ar = "arm-linux-gnueabi-ar" + ld = cxx -# ARM -------------------------------------------------------------------------- - -cc = "arm-linux-gnueabi-gcc" -cxx = "arm-linux-gnueabi-g++" -ar = "arm-linux-gnueabi-ar" -ld = cxx - -toolchain("arm") { - # Make these apply to all tools below. - lib_prefix = "-l" - lib_dir_prefix="-L" - - tool("cc") { - # cflags_pch_c - command = cc_command - description = "CC \$out" - depfile = "\$out.d" - deps = "gcc" - } - tool("cxx") { - # cflags_pch_cc - command = cxx_command - description = "CXX \$out" - depfile = "\$out.d" - deps = "gcc" - } - tool("alink") { - command = alink_command - description = "AR \$out" - } - tool("solink") { - command = solink_command - description = "SOLINK \$lib" - #pool = "link_pool" - restat = "1" - } - tool("link") { - command = link_command - description = "LINK \$out" - #pool = "link_pool" - } - tool("stamp") { - command = stamp_command - description = "STAMP \$out" - } - tool("copy") { - command = copy_command - description = "COPY \$in \$out" - } - - # When invoking this toolchain not as the default one, these args will be - # passed to the build. They are ignored when this is the default toolchain. - toolchain_args() { - cpu_arch = "arm" - } + toolchain_cpu_arch = "arm" + toolchain_os = "linux" } -# 32-bit ----------------------------------------------------------------------- +gcc_toolchain("x86") { + if (is_clang) { + if (use_clang_type_profiler) { + prefix = rebase_path("//third_party/llvm-allocated-type/Linux_ia32/bin", + root_build_dir) + } else { + prefix = rebase_path("//third_party/llvm-build/Release+Asserts/bin", + root_build_dir) + } + cc = "$prefix/clang" + cxx = "$prefix/clang++" + } else { + cc = "gcc" + cxx = "g++" + } -toolchain("32") { - # Make these apply to all tools below. - lib_prefix = "-l" - lib_dir_prefix="-L" + ar = "ar" + ld = cxx - tool("cc") { - # cflags_pch_c - command = cc_command - description = "CC \$out" - depfile = "\$out.d" - deps = "gcc" - } - tool("cxx") { - # cflags_pch_cc - command = cxx_command - description = "CXX \$out" - depfile = "\$out.d" - deps = "gcc" - } - tool("alink") { - command = alink_command - description = "AR \$out" - } - tool("solink") { - command = solink_command - description = "SOLINK \$lib" - #pool = "link_pool" - restat = "1" - } - tool("link") { - command = link_command - description = "LINK \$out" - #pool = "link_pool" - } - tool("stamp") { - command = stamp_command - description = "STAMP \$out" - } - tool("copy") { - command = copy_command - description = "COPY \$in \$out" - } + toolchain_cpu_arch = "x86" + toolchain_os = "linux" +} - # When invoking this toolchain not as the default one, these args will be - # passed to the build. They are ignored when this is the default toolchain. - toolchain_args() { - cpu_arch = "x32" +gcc_toolchain("x64") { + if (is_clang) { + if (use_clang_type_profiler) { + prefix = rebase_path("//third_party/llvm-allocated-type/Linux_x64/bin", + root_build_dir) + } else { + prefix = rebase_path("//third_party/llvm-build/Release+Asserts/bin", + root_build_dir) + } + cc = "$prefix/clang" + cxx = "$prefix/clang++" + } else { + cc = "gcc" + cxx = "g++" } -} -# 64-bit ----------------------------------------------------------------------- + ar = "ar" + ld = cxx -toolchain("64") { - # Make these apply to all tools below. - lib_prefix = "-l" - lib_dir_prefix="-L" + toolchain_cpu_arch = "x64" + toolchain_os = "linux" +} - tool("cc") { - # cflags_pch_c - command = cc_command - description = "CC \$out" - depfile = "\$out.d" - deps = "gcc" - } - tool("cxx") { - # cflags_pch_cc - command = cxx_command - description = "CXX \$out" - depfile = "\$out.d" - deps = "gcc" - } - tool("alink") { - command = alink_command - description = "AR \$out" - } - tool("solink") { - command = solink_command - description = "SOLINK \$lib" - #pool = "link_pool" - restat = "1" - } - tool("link") { - command = link_command - description = "LINK \$out" - #pool = "link_pool" - } - tool("stamp") { - command = stamp_command - description = "STAMP \$out" - } - tool("copy") { - command = copy_command - description = "COPY \$in \$out" - } +gcc_toolchain("mipsel") { + cc = "mipsel-linux-gnu-gcc" + cxx = "mipsel-linux-gnu-g++" + ar = "mipsel-linux-gnu-ar" + ld = cxx - # When invoking this toolchain not as the default one, these args will be - # passed to the build. They are ignored when this is the default toolchain. - toolchain_args() { - cpu_arch = "x64" - } + toolchain_cpu_arch = "mipsel" + toolchain_os = "linux" } |