linker_version_script.gni (1728B)
1 # Copyright 2018 The Chromium Authors 2 # Use of this source code is governed by a BSD-style license that can be 3 # found in the LICENSE file. 4 5 import("//chromium/build/config/android/config.gni") 6 import("//chromium/build/config/python.gni") 7 if (build_with_chromium) { 8 import("//third_party/jni_zero/jni_zero.gni") 9 } 10 11 # Generate a custom linker version script that can later be used with 12 # "-Wl,--version-script=<path>" ldflags. 13 # 14 # Variables: 15 # export_java_symbols: Optional. If true, also export all Java_* symbols 16 # exported for JNI. 17 # export_symbol_allowlist_files: Optional. List of paths to input files containing 18 # lists of symbols to export. 19 # linker_script: Path to output linker version script. 20 # 21 template("generate_linker_version_script") { 22 action_with_pydeps(target_name) { 23 forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) 24 script = "//chromium/build/android/gyp/generate_linker_version_script.py" 25 outputs = [ invoker.linker_script ] 26 inputs = [] 27 args = [ "--output=" + rebase_path(invoker.linker_script, root_build_dir) ] 28 29 if (defined(invoker.testonly) && invoker.testonly) { 30 args += [ "--export-fortesting-java-symbols" ] 31 } 32 if (enable_jni_multiplexing) { 33 args += [ "--jni-multiplexing" ] 34 } 35 36 if (defined(invoker.export_feature_registrations) && 37 invoker.export_feature_registrations) { 38 args += [ "--export-feature-registrations" ] 39 } 40 41 if (defined(invoker.export_symbol_allowlist_files)) { 42 foreach(file_, invoker.export_symbol_allowlist_files) { 43 inputs += [ file_ ] 44 args += [ 45 "--export-symbol-allowlist-file", 46 rebase_path(file_, root_build_dir), 47 ] 48 } 49 } 50 } 51 }