summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/build/toolchain/linux
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/libwebrtc/build/toolchain/linux')
-rw-r--r--third_party/libwebrtc/build/toolchain/linux/BUILD.gn445
-rw-r--r--third_party/libwebrtc/build/toolchain/linux/unbundle/BUILD.gn41
-rw-r--r--third_party/libwebrtc/build/toolchain/linux/unbundle/README.md41
3 files changed, 527 insertions, 0 deletions
diff --git a/third_party/libwebrtc/build/toolchain/linux/BUILD.gn b/third_party/libwebrtc/build/toolchain/linux/BUILD.gn
new file mode 100644
index 0000000000..697247abcd
--- /dev/null
+++ b/third_party/libwebrtc/build/toolchain/linux/BUILD.gn
@@ -0,0 +1,445 @@
+# 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.
+
+import("//build/config/ozone.gni")
+import("//build/config/sysroot.gni")
+import("//build/toolchain/gcc_toolchain.gni")
+
+clang_toolchain("clang_ppc64") {
+ enable_linker_map = true
+ toolchain_args = {
+ target_cpu = "ppc64"
+ current_os = "linux"
+ }
+}
+
+clang_toolchain("clang_arm") {
+ toolprefix = "arm-linux-gnueabihf-"
+ toolchain_args = {
+ target_cpu = "arm"
+ current_os = "linux"
+ }
+}
+
+clang_toolchain("clang_arm64") {
+ toolprefix = "aarch64-linux-gnu-"
+ toolchain_args = {
+ target_cpu = "arm64"
+ current_os = "linux"
+ }
+}
+
+gcc_toolchain("arm64") {
+ toolprefix = "aarch64-linux-gnu-"
+
+ cc = "${toolprefix}gcc"
+ cxx = "${toolprefix}g++"
+
+ ar = "${toolprefix}ar"
+ ld = cxx
+ readelf = "${toolprefix}readelf"
+ nm = "${toolprefix}nm"
+
+ toolchain_args = {
+ target_cpu = "arm64"
+ current_os = "linux"
+
+ # reclient does not support gcc.
+ use_rbe = false
+ is_clang = false
+ }
+}
+
+gcc_toolchain("arm") {
+ toolprefix = "arm-linux-gnueabihf-"
+
+ cc = "${toolprefix}gcc"
+ cxx = "${toolprefix}g++"
+
+ ar = "${toolprefix}ar"
+ ld = cxx
+ readelf = "${toolprefix}readelf"
+ nm = "${toolprefix}nm"
+
+ toolchain_args = {
+ target_cpu = "arm"
+ current_os = "linux"
+
+ # reclient does not support gcc.
+ use_rbe = false
+ is_clang = false
+ }
+}
+
+clang_toolchain("clang_x86") {
+ # Output linker map files for binary size analysis.
+ enable_linker_map = true
+
+ toolchain_args = {
+ target_cpu = "x86"
+ current_os = "linux"
+ }
+}
+
+clang_toolchain("clang_x86_v8_arm") {
+ toolchain_args = {
+ target_cpu = "x86"
+ v8_target_cpu = "arm"
+ current_os = "linux"
+ }
+}
+
+clang_toolchain("clang_x86_v8_mipsel") {
+ toolchain_args = {
+ target_cpu = "x86"
+ v8_target_cpu = "mipsel"
+ current_os = "linux"
+ }
+}
+
+clang_toolchain("clang_x86_v8_mips") {
+ toolchain_args = {
+ target_cpu = "x86"
+ v8_target_cpu = "mips"
+ current_os = "linux"
+ }
+}
+
+gcc_toolchain("x86") {
+ cc = "gcc"
+ cxx = "g++"
+
+ readelf = "readelf"
+ nm = "nm"
+ ar = "ar"
+ ld = cxx
+
+ # Output linker map files for binary size analysis.
+ enable_linker_map = true
+
+ toolchain_args = {
+ target_cpu = "x86"
+ current_os = "linux"
+
+ # reclient does not support gcc.
+ use_rbe = false
+ is_clang = false
+ }
+}
+
+clang_toolchain("clang_x64") {
+ # Output linker map files for binary size analysis.
+ enable_linker_map = true
+
+ toolchain_args = {
+ target_cpu = "x64"
+ current_os = "linux"
+ }
+}
+
+clang_toolchain("clang_x64_v8_arm64") {
+ toolchain_args = {
+ target_cpu = "x64"
+ v8_target_cpu = "arm64"
+ current_os = "linux"
+ }
+}
+
+clang_toolchain("clang_x64_v8_mips64el") {
+ toolchain_args = {
+ target_cpu = "x64"
+ v8_target_cpu = "mips64el"
+ current_os = "linux"
+ }
+}
+
+clang_toolchain("clang_x64_v8_mips64") {
+ toolchain_args = {
+ target_cpu = "x64"
+ v8_target_cpu = "mips64"
+ current_os = "linux"
+ }
+}
+
+clang_toolchain("clang_x64_v8_riscv64") {
+ toolchain_args = {
+ target_cpu = "x64"
+ v8_target_cpu = "riscv64"
+ current_os = "linux"
+ }
+}
+
+clang_toolchain("clang_x64_v8_loong64") {
+ toolchain_args = {
+ target_cpu = "x64"
+ v8_target_cpu = "loong64"
+ current_os = "linux"
+ }
+}
+
+# In a LaCrOS build, this toolchain is intended to be used as an alternate
+# toolchain to build Ash-Chrome in a subdirectory.
+clang_toolchain("ash_clang_x64") {
+ toolchain_args = {
+ # This turns the toolchain into the "Linux ChromeOS" build
+ current_os = "chromeos"
+ target_os = "chromeos"
+ target_cpu = target_cpu
+
+ # This turns off all of the LaCrOS-specific flags.
+ also_build_ash_chrome = false
+ chromeos_is_browser_only = false
+ use_clang_coverage = false
+ }
+}
+
+# In an ash build, this toolchain is intended to be used as an alternate
+# toolchain to build lacros-Chrome in a subdirectory.
+clang_toolchain("lacros_clang_x64") {
+ toolchain_args = {
+ # This turns the toolchain into the "Lacros" build
+ current_os = "chromeos"
+ target_os = "chromeos"
+ target_cpu = target_cpu
+
+ # This turns on the LaCrOS-specific flag.
+ also_build_lacros_chrome = false
+ chromeos_is_browser_only = true
+ use_clang_coverage = false
+ }
+}
+
+gcc_toolchain("x64") {
+ cc = "gcc"
+ cxx = "g++"
+
+ readelf = "readelf"
+ nm = "nm"
+ ar = "ar"
+ ld = cxx
+
+ # Output linker map files for binary size analysis.
+ enable_linker_map = true
+
+ toolchain_args = {
+ target_cpu = "x64"
+ current_os = "linux"
+
+ # reclient does not support gcc.
+ use_rbe = false
+ is_clang = false
+ }
+}
+
+clang_toolchain("clang_mipsel") {
+ toolchain_args = {
+ target_cpu = "mipsel"
+ current_os = "linux"
+ }
+}
+
+clang_toolchain("clang_mips64el") {
+ toolchain_args = {
+ target_cpu = "mips64el"
+ current_os = "linux"
+ }
+}
+
+clang_toolchain("clang_mips64") {
+ toolchain_args = {
+ target_cpu = "mips64"
+ current_os = "linux"
+ }
+}
+
+gcc_toolchain("mipsel") {
+ toolprefix = "mipsel-linux-gnu-"
+
+ cc = "${toolprefix}gcc"
+ cxx = " ${toolprefix}g++"
+ ar = "${toolprefix}ar"
+ ld = cxx
+ readelf = "${toolprefix}readelf"
+ nm = "${toolprefix}nm"
+
+ toolchain_args = {
+ cc_wrapper = ""
+ target_cpu = "mipsel"
+ current_os = "linux"
+
+ # reclient does not support gcc.
+ use_rbe = false
+ is_clang = false
+ use_goma = false
+ }
+}
+
+gcc_toolchain("mips64el") {
+ toolprefix = "mips64el-linux-gnuabi64-"
+
+ cc = "${toolprefix}gcc"
+ cxx = "${toolprefix}g++"
+ ar = "${toolprefix}ar"
+ ld = cxx
+ readelf = "${toolprefix}readelf"
+ nm = "${toolprefix}nm"
+
+ toolchain_args = {
+ cc_wrapper = ""
+ target_cpu = "mips64el"
+ current_os = "linux"
+
+ # reclient does not support gcc.
+ use_rbe = false
+ is_clang = false
+ use_goma = false
+ }
+}
+
+gcc_toolchain("riscv64") {
+ toolprefix = "riscv64-linux-gnu"
+
+ cc = "${toolprefix}-gcc"
+ cxx = "${toolprefix}-g++"
+
+ readelf = "${toolprefix}-readelf"
+ nm = "${toolprefix}-nm"
+ ar = "${toolprefix}-ar"
+ ld = cxx
+
+ toolchain_args = {
+ target_cpu = "riscv64"
+ current_os = "linux"
+ is_clang = false
+ }
+}
+
+clang_toolchain("clang_s390x") {
+ toolchain_args = {
+ target_cpu = "s390x"
+ current_os = "linux"
+ is_clang = true
+ }
+}
+
+gcc_toolchain("s390x") {
+ cc = "gcc"
+ cxx = "g++"
+
+ readelf = "readelf"
+ nm = "nm"
+ ar = "ar"
+ ld = cxx
+
+ toolchain_args = {
+ target_cpu = "s390x"
+ current_os = "linux"
+
+ # reclient does not support gcc.
+ use_rbe = false
+ is_clang = false
+ }
+}
+
+#gcc_toolchain("mips64") {
+# cc = "gcc"
+# cxx = "g++"
+#
+# readelf = "readelf"
+# nm = "nm"
+# ar = "ar"
+# ld = cxx
+#
+# toolchain_args = {
+# target_cpu = "mips64"
+# current_os = "linux"
+# is_clang = false
+# }
+#}
+
+gcc_toolchain("ppc64") {
+ cc = "gcc"
+ cxx = "g++"
+
+ readelf = "readelf"
+ nm = "nm"
+ ar = "ar"
+ ld = cxx
+
+ toolchain_args = {
+ target_cpu = "ppc64"
+ current_os = "linux"
+
+ # reclient does not support gcc.
+ use_rbe = false
+ is_clang = false
+ }
+}
+
+gcc_toolchain("mips") {
+ toolprefix = "mips-linux-gnu-"
+
+ cc = "${toolprefix}gcc"
+ cxx = "${toolprefix}g++"
+
+ readelf = "${toolprefix}readelf"
+ nm = "${toolprefix}nm"
+ ar = "${toolprefix}ar"
+ ld = cxx
+
+ toolchain_args = {
+ target_cpu = "mips"
+ current_os = "linux"
+
+ # reclient does not support gcc.
+ use_rbe = false
+ is_clang = false
+ }
+}
+
+gcc_toolchain("mips64") {
+ toolprefix = "mips64-linux-gnuabi64-"
+
+ cc = "${toolprefix}gcc"
+ cxx = "${toolprefix}g++"
+
+ readelf = "${toolprefix}readelf"
+ nm = "${toolprefix}nm"
+ ar = "${toolprefix}ar"
+ ld = cxx
+
+ toolchain_args = {
+ target_cpu = "mips64"
+ current_os = "linux"
+
+ # reclient does not support gcc.
+ use_rbe = false
+ is_clang = false
+ }
+}
+
+clang_toolchain("clang_loong64") {
+ toolchain_args = {
+ target_cpu = "loong64"
+ current_os = "linux"
+ }
+}
+
+gcc_toolchain("loong64") {
+ toolprefix = "loongarch64-linux-gnu"
+
+ cc = "${toolprefix}-gcc"
+ cxx = "${toolprefix}-g++"
+
+ readelf = "${toolprefix}-readelf"
+ nm = "${toolprefix}-nm"
+ ar = "${toolprefix}-ar"
+ ld = cxx
+
+ toolchain_args = {
+ target_cpu = "loong64"
+ current_os = "linux"
+ is_clang = false
+ }
+}
diff --git a/third_party/libwebrtc/build/toolchain/linux/unbundle/BUILD.gn b/third_party/libwebrtc/build/toolchain/linux/unbundle/BUILD.gn
new file mode 100644
index 0000000000..0e20f271f0
--- /dev/null
+++ b/third_party/libwebrtc/build/toolchain/linux/unbundle/BUILD.gn
@@ -0,0 +1,41 @@
+# Copyright 2017 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")
+
+gcc_toolchain("default") {
+ cc = getenv("CC")
+ cxx = getenv("CXX")
+ ar = getenv("AR")
+ nm = getenv("NM")
+ ld = cxx
+
+ extra_cflags = getenv("CFLAGS")
+ extra_cppflags = getenv("CPPFLAGS")
+ extra_cxxflags = getenv("CXXFLAGS")
+ extra_ldflags = getenv("LDFLAGS")
+
+ toolchain_args = {
+ target_cpu = target_cpu
+ current_os = current_os
+ }
+}
+
+gcc_toolchain("host") {
+ cc = getenv("BUILD_CC")
+ cxx = getenv("BUILD_CXX")
+ ar = getenv("BUILD_AR")
+ nm = getenv("BUILD_NM")
+ ld = cxx
+
+ extra_cflags = getenv("BUILD_CFLAGS")
+ extra_cppflags = getenv("BUILD_CPPFLAGS")
+ extra_cxxflags = getenv("BUILD_CXXFLAGS")
+ extra_ldflags = getenv("BUILD_LDFLAGS")
+
+ toolchain_args = {
+ target_cpu = target_cpu
+ current_os = current_os
+ }
+}
diff --git a/third_party/libwebrtc/build/toolchain/linux/unbundle/README.md b/third_party/libwebrtc/build/toolchain/linux/unbundle/README.md
new file mode 100644
index 0000000000..17b93c9fde
--- /dev/null
+++ b/third_party/libwebrtc/build/toolchain/linux/unbundle/README.md
@@ -0,0 +1,41 @@
+# Overview
+
+This directory contains files that make it possible for Linux
+distributions to build Chromium using system toolchain.
+
+For more info on established way such builds are configured,
+please read the following:
+
+ - https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html
+
+Why do distros want CFLAGS, LDFLAGS, etc? Please read the following
+for some examples. This is not an exhaustive list.
+
+ - https://wiki.debian.org/Hardening
+ - https://wiki.ubuntu.com/DistCompilerFlags
+ - https://fedoraproject.org/wiki/Changes/Harden_All_Packages
+ - https://fedoraproject.org/wiki/Changes/Modernise_GCC_Flags
+ - https://fedoraproject.org/wiki/Packaging:Guidelines#Compiler_flags
+ - https://blog.flameeyes.eu/2010/09/are-we-done-with-ldflags/
+ - https://blog.flameeyes.eu/2008/08/flags-and-flags/
+
+# Usage
+
+Add the following to GN args:
+
+```
+custom_toolchain="//build/toolchain/linux/unbundle:default"
+host_toolchain="//build/toolchain/linux/unbundle:default"
+```
+
+See [more docs on GN](https://gn.googlesource.com/gn/+/master/docs/quick_start.md).
+
+To cross-compile (not fully tested), add the following:
+
+```
+host_toolchain="//build/toolchain/linux/unbundle:host"
+v8_snapshot_toolchain="//build/toolchain/linux/unbundle:host"
+```
+
+Note: when cross-compiling for a 32-bit target, a matching 32-bit toolchain
+may be needed.