summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/build/config/android/BUILD.gn
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/libwebrtc/build/config/android/BUILD.gn')
-rw-r--r--third_party/libwebrtc/build/config/android/BUILD.gn161
1 files changed, 161 insertions, 0 deletions
diff --git a/third_party/libwebrtc/build/config/android/BUILD.gn b/third_party/libwebrtc/build/config/android/BUILD.gn
new file mode 100644
index 0000000000..a77a628be4
--- /dev/null
+++ b/third_party/libwebrtc/build/config/android/BUILD.gn
@@ -0,0 +1,161 @@
+# 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/config/android/config.gni")
+import("//build/config/c++/c++.gni")
+import("//build/config/compiler/compiler.gni")
+import("//build/config/sanitizers/sanitizers.gni")
+
+if (current_toolchain == default_toolchain) {
+ import("//build/toolchain/concurrent_links.gni")
+}
+
+assert(is_android)
+
+# This is included by reference in the //build/config/compiler config that
+# is applied to all targets. It is here to separate out the logic that is
+# Android-only.
+config("compiler") {
+ cflags = [
+ "-ffunction-sections",
+ "-fno-short-enums",
+ ]
+ defines = [
+ "ANDROID",
+
+ # The NDK has these things, but doesn't define the constants to say that it
+ # does. Define them here instead.
+ "HAVE_SYS_UIO_H",
+
+ # Forces full rebuilds on NDK rolls. To rebuild everything when NDK version
+ # stays the same, increment the suffix number.
+ "ANDROID_NDK_VERSION_ROLL=${android_ndk_version}_1",
+ ]
+
+ if (target_cpu == "mips64el") {
+ cflags += [
+ # Have to force IAS for mips64.
+ "-fintegrated-as",
+ ]
+ }
+
+ ldflags = [
+ # Don't allow visible symbols from libgcc or libc++ to be
+ # re-exported.
+ "-Wl,--exclude-libs=libgcc.a",
+
+ # Don't allow visible symbols from libraries that contain
+ # assembly code with symbols that aren't hidden properly.
+ # http://crbug.com/448386
+ "-Wl,--exclude-libs=libvpx_assembly_arm.a",
+ ]
+
+ # TODO(crbug.com/1184398): Move to compiler-rt when we are ready.
+ ldflags += [ "--rtlib=libgcc" ]
+ if (target_cpu == "arm64") {
+ # For outline atomics on AArch64 (can't pass this unconditionally
+ # due to unused flag warning on other targets).
+ cflags += [ "--rtlib=libgcc" ]
+ if (arm_control_flow_integrity == "standard") {
+ cflags += [ "-mbranch-protection=standard" ]
+ }
+ }
+
+ # $compile_api_level corresponds to the API level used for the sysroot path
+ # calculation in //build/config/android/config.gni
+ if (android_64bit_target_cpu) {
+ compile_api_level = android64_ndk_api_level
+ } else {
+ compile_api_level = android32_ndk_api_level
+ }
+
+ cflags += [ "--target=$android_abi_target$compile_api_level" ]
+ ldflags += [ "--target=$android_abi_target$compile_api_level" ]
+
+ # Assign any flags set for the C compiler to asmflags so that they are sent
+ # to the assembler.
+ asmflags = cflags
+}
+
+# This is included by reference in the //build/config/compiler:runtime_library
+# config that is applied to all targets. It is here to separate out the logic
+# that is Android-only. Please see that target for advice on what should go in
+# :runtime_library vs. :compiler.
+config("runtime_library") {
+ # Let the linker find libgcc.a.
+ ldflags = [ "--gcc-toolchain=" +
+ rebase_path(android_toolchain_root, root_build_dir) ]
+
+ libs = []
+
+ # On 64-bit platforms, the only symbols provided by libandroid_support.a are
+ # strto{d,f,l,ul}_l. These symbols are not used by our libc++, and newer NDKs
+ # don't provide a libandroid_support.a on 64-bit platforms, so we only depend
+ # on this library on 32-bit platforms.
+ if (target_cpu == "arm" || target_cpu == "x86") {
+ libs += [ "android_support" ]
+ }
+
+ # arm builds of libc++ starting in NDK r12 depend on unwind.
+ if (target_cpu == "arm") {
+ libs += [ "unwind" ]
+ }
+
+ if (target_cpu == "arm" && arm_version == 6) {
+ libs += [ "atomic" ]
+ }
+
+ if (target_cpu == "mipsel") {
+ libs += [ "atomic" ]
+ }
+
+ # TODO(jdduke) Re-enable on mips after resolving linking
+ # issues with libc++ (crbug.com/456380).
+ if (target_cpu != "mipsel" && target_cpu != "mips64el") {
+ ldflags += [ "-Wl,--warn-shared-textrel" ]
+ }
+}
+
+config("hide_all_but_jni_onload") {
+ ldflags = [ "-Wl,--version-script=" + rebase_path(
+ "//build/android/android_only_explicit_jni_exports.lst",
+ root_build_dir) ]
+}
+
+config("hide_all_but_jni") {
+ ldflags = [ "-Wl,--version-script=" +
+ rebase_path("//build/android/android_only_jni_exports.lst",
+ root_build_dir) ]
+}
+
+config("lld_pack_relocations") {
+ ldflags = [ "-Wl,--pack-dyn-relocs=android" ]
+}
+
+# Used for instrumented build to generate the orderfile.
+config("default_orderfile_instrumentation") {
+ if (use_order_profiling) {
+ cflags = [ "-finstrument-function-entry-bare" ]
+ if (use_thin_lto) {
+ # TODO(pcc): This should not be necessary. Remove once
+ # https://reviews.llvm.org/D50016 lands and gets rolled in.
+ ldflags = [ "-Wl,-u,__cyg_profile_func_enter_bare" ]
+ }
+ }
+}
+
+if (current_toolchain == default_toolchain) {
+ pool("goma_javac_pool") {
+ # Override action_pool when goma is enabled for javac.
+ depth = 10000
+ }
+
+ # When defined, this pool should be used instead of link_pool for command
+ # that need 1-2GB of RAM. https://crbug.com/1078460
+ if (defined(java_cmd_pool_size)) {
+ pool("java_cmd_pool") {
+ depth = java_cmd_pool_size
+ }
+ }
+}