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