xref: /aosp_15_r20/external/cronet/base/android/linker/BUILD.gn (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker# Copyright 2014 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard Workerimport("//build/config/android/config.gni")
6*6777b538SAndroid Build Coastguard Workerimport("//build/config/sysroot.gni")
7*6777b538SAndroid Build Coastguard Worker
8*6777b538SAndroid Build Coastguard Workerassert(is_android)
9*6777b538SAndroid Build Coastguard Worker
10*6777b538SAndroid Build Coastguard Workershared_library("chromium_android_linker") {
11*6777b538SAndroid Build Coastguard Worker  sources = [
12*6777b538SAndroid Build Coastguard Worker    "linker_jni.cc",
13*6777b538SAndroid Build Coastguard Worker    "linker_jni.h",
14*6777b538SAndroid Build Coastguard Worker    "linker_jni_onload.cc",
15*6777b538SAndroid Build Coastguard Worker    "linker_minimal_libcxx.cc",
16*6777b538SAndroid Build Coastguard Worker  ]
17*6777b538SAndroid Build Coastguard Worker
18*6777b538SAndroid Build Coastguard Worker  deps = [
19*6777b538SAndroid Build Coastguard Worker    "//build:buildflag_header_h",
20*6777b538SAndroid Build Coastguard Worker    "//third_party/jni_zero:jni_zero",
21*6777b538SAndroid Build Coastguard Worker  ]
22*6777b538SAndroid Build Coastguard Worker
23*6777b538SAndroid Build Coastguard Worker  # Export JNI symbols.
24*6777b538SAndroid Build Coastguard Worker  configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
25*6777b538SAndroid Build Coastguard Worker  configs += [ "//build/config/android:hide_all_but_jni" ]
26*6777b538SAndroid Build Coastguard Worker
27*6777b538SAndroid Build Coastguard Worker  # Disable coverage to avoid linker issue.
28*6777b538SAndroid Build Coastguard Worker  configs -= [ "//build/config/coverage:default_coverage" ]
29*6777b538SAndroid Build Coastguard Worker
30*6777b538SAndroid Build Coastguard Worker  # ThinLTO optimizations save a few bytes of binary size.
31*6777b538SAndroid Build Coastguard Worker  configs -= [ "//build/config/compiler:thinlto_optimize_default" ]
32*6777b538SAndroid Build Coastguard Worker  configs += [ "//build/config/compiler:thinlto_optimize_max" ]
33*6777b538SAndroid Build Coastguard Worker
34*6777b538SAndroid Build Coastguard Worker  # Disable orderfile instrumentation. Code in this target is in a different
35*6777b538SAndroid Build Coastguard Worker  # .so, cannot call unexported instrumentation functions from another one (link
36*6777b538SAndroid Build Coastguard Worker  # time error).
37*6777b538SAndroid Build Coastguard Worker  configs -= [ "//build/config/android:default_orderfile_instrumentation" ]
38*6777b538SAndroid Build Coastguard Worker
39*6777b538SAndroid Build Coastguard Worker  # Avoid linking libc++ and support libraries, to avoid 100 kiB of
40*6777b538SAndroid Build Coastguard Worker  # un-necessary code.
41*6777b538SAndroid Build Coastguard Worker  no_default_deps = true
42*6777b538SAndroid Build Coastguard Worker
43*6777b538SAndroid Build Coastguard Worker  # The linker is used on Android platforms that do not support GNU-style
44*6777b538SAndroid Build Coastguard Worker  # hash tables, so ensure one isn't included in it to save space (since the SysV
45*6777b538SAndroid Build Coastguard Worker  # format is always supported). It would be nice to also remove the GNU version
46*6777b538SAndroid Build Coastguard Worker  # tables, for the same reason, but a linker flag to disable them doesn't seem
47*6777b538SAndroid Build Coastguard Worker  # to exist. This saves 52 bytes on ARM.
48*6777b538SAndroid Build Coastguard Worker  ldflags = [
49*6777b538SAndroid Build Coastguard Worker    "-Wl,--hash-style=sysv",
50*6777b538SAndroid Build Coastguard Worker    "-llog",
51*6777b538SAndroid Build Coastguard Worker  ]
52*6777b538SAndroid Build Coastguard Worker}
53