Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(312)

Unified Diff: build/config/android/BUILD.gn

Issue 2023703002: Beginning work on GN build (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Really add //build. Add dart_bootstrap rule. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/config/allocator.gni ('k') | build/config/android/OWNERS » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/config/android/BUILD.gn
diff --git a/build/config/android/BUILD.gn b/build/config/android/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..883b82ffd556614636b586fe9a12a019921c4b1c
--- /dev/null
+++ b/build/config/android/BUILD.gn
@@ -0,0 +1,194 @@
+# 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/sanitizers/sanitizers.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",
+ ]
+
+ if (is_clang) {
+ rebased_android_toolchain_root =
+ rebase_path(android_toolchain_root, root_build_dir)
+ assert(rebased_android_toolchain_root != "") # Mark as used.
+ if (current_cpu == "mipsel") {
+ cflags += [
+ # TODO(gordanac) Enable integrated-as.
+ "-no-integrated-as",
+ "-B${rebased_android_toolchain_root}/bin", # Else /usr/bin/as gets picked up.
+ ]
+ }
+ } else {
+ # Clang doesn't support these flags.
+ cflags += [ "-finline-limit=64" ]
+ }
+
+ ldflags = [
+ "-Wl,--build-id=sha1",
+ "-Wl,--no-undefined",
+
+ # Don't allow visible symbols from libgcc or libc++ to be
+ # re-exported.
+ "-Wl,--exclude-libs=libgcc.a",
+ "-Wl,--exclude-libs=libc++_static.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",
+ ]
+
+ if (is_clang) {
+ if (current_cpu == "arm") {
+ abi_target = "arm-linux-androideabi"
+ } else if (current_cpu == "x86") {
+ abi_target = "i686-linux-androideabi"
+ } else if (current_cpu == "arm64") {
+ # Place holder for arm64 support, not tested.
+ # TODO: Enable clang support for Android Arm64. http://crbug.com/539781
+ abi_target = "aarch64-linux-android"
+ } else if (current_cpu == "x64") {
+ # Place holder for x64 support, not tested.
+ # TODO: Enable clang support for Android x64. http://crbug.com/539781
+ abi_target = "x86_64-linux-androideabi"
+ } else if (current_cpu == "mipsel") {
+ abi_target = "mipsel-linux-android"
+ } else if (current_cpu == "mips64el") {
+ # Place holder for mips64 support, not tested.
+ abi_target = "mips64el-linux-androideabi"
+ } else {
+ assert(false, "Architecture not supported")
+ }
+ cflags += [ "--target=$abi_target" ]
+ ldflags += [ "--target=$abi_target" ]
+ }
+
+ # 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") {
+ # NOTE: The libc++ header include paths below are specified in cflags_cc
+ # rather than include_dirs because they need to come after include_dirs.
+ # Think of them like system headers, but don't use '-isystem' because the
+ # arm-linux-androideabi-4.4.3 toolchain (circa Gingerbread) will exhibit
+ # strange errors. The include ordering here is important; change with
+ # caution.
+ cflags_cc = [
+ "-isystem" +
+ rebase_path("$android_libcpp_root/libcxx/include", root_build_dir),
+ "-isystem" + rebase_path(
+ "$android_ndk_root/sources/cxx-stl/llvm-libc++abi/libcxxabi/include",
+ root_build_dir),
+ "-isystem" +
+ rebase_path("$android_ndk_root/sources/android/support/include",
+ root_build_dir),
+ ]
+
+ defines = [ "__GNU_SOURCE=1" ] # Necessary for clone().
+ ldflags = [ "-nostdlib" ]
+ lib_dirs = [ android_libcpp_lib_dir ]
+
+ # The libc++ runtime library (must come first).
+ # ASan needs to dynamically link to libc++ even in static builds so
+ # that it can interpose operator new.
+ if (is_component_build || is_asan) {
+ libs = [ "c++_shared" ]
+ } else {
+ libs = [ "c++_static" ]
+ }
+
+ # Manually link the libgcc.a that the cross compiler uses. This is
+ # absolute because the linker will look inside the sysroot if it's not.
+ libs += [
+ rebase_path(android_libgcc_file),
+ "c",
+ ]
+
+ # Clang with libc++ does not require an explicit atomic library reference.
+ if (!is_clang) {
+ libs += [ "atomic" ]
+ }
+
+ if (is_clang) {
+ # Work around incompatibilities between bionic and clang headers.
+ defines += [
+ "__compiler_offsetof=__builtin_offsetof",
+ "nan=__builtin_nan",
+ ]
+ }
+
+ # TODO(jdduke) Re-enable on mips after resolving linking
+ # issues with libc++ (crbug.com/456380).
+ if (current_cpu != "mipsel" && current_cpu != "mips64el") {
+ ldflags += [ "-Wl,--warn-shared-textrel" ]
+ }
+}
+
+config("executable_config") {
+ cflags = [ "-fPIE" ]
+ asmflags = [ "-fPIE" ]
+ ldflags = [ "-pie" ]
+}
+
+config("hide_native_jni_exports") {
+ ldflags = [ "-Wl,--version-script=" +
+ rebase_path("//build/android/android_no_jni_exports.lst") ]
+}
+
+# Instrumentation -------------------------------------------------------------
+#
+# The BUILDCONFIG file sets the "default_cygprofile_instrumentation" config on
+# targets by default. You can override whether the cygprofile instrumentation is
+# used on a per-target basis:
+#
+# configs -= [ "//build/config/android:default_cygprofile_instrumentation" ]
+# configs += [ "//build/config/android:no_cygprofile_instrumentation" ]
+
+config("default_cygprofile_instrumentation") {
+ if (use_order_profiling) {
+ configs = [ ":cygprofile_instrumentation" ]
+ } else {
+ configs = [ ":no_cygprofile_instrumentation" ]
+ }
+}
+
+config("cygprofile_instrumentation") {
+ defines = [ "CYGPROFILE_INSTRUMENTATION=1" ]
+ cflags = [ "-finstrument-functions" ]
+
+ if (!is_clang) {
+ cflags += [
+ # Allow mmx intrinsics to inline, so that the compiler can expand the intrinsics.
+ "-finstrument-functions-exclude-file-list=mmintrin.h",
+
+ # Avoid errors with current NDK:
+ # "third_party/android_tools/ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/include/arm_neon.h:3426:3: error: argument must be a constant"
+ "-finstrument-functions-exclude-file-list=arm_neon.h",
+ ]
+ }
+}
+
+config("no_cygprofile_instrumentation") {
+}
« no previous file with comments | « build/config/allocator.gni ('k') | build/config/android/OWNERS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698