| # Copyright 2023 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//third_party/jni_zero/jni_zero.gni") |
| |
| config("jni_include_dir") { |
| include_dirs = [ jni_headers_dir ] |
| } |
| |
| generate_jni("generate_jni") { |
| sources = [ |
| "java/src/org/jni_zero/JniInit.java", |
| "java/src/org/jni_zero/JniUtil.java", |
| ] |
| visibility = [ |
| ":*", |
| "//components/cronet/android/*", |
| ] |
| } |
| |
| generate_jar_jni("system_jni") { |
| classes = [ |
| "java/util/Arrays.class", |
| "java/util/Collection.class", |
| "java/util/List.class", |
| "java/util/Map.class", |
| "java/lang/Integer.class", |
| "java/lang/Long.class", |
| "java/lang/Boolean.class", |
| ] |
| visibility = [ ":*" ] |
| } |
| |
| # This is the public target that we intend others to use. |
| component("jni_zero") { |
| public = [ |
| "common_apis.h", |
| "default_conversions.h", |
| "jni_zero.h", |
| ] |
| |
| sources = [ |
| "common_apis.cc", |
| "default_conversions.cc", |
| "java_refs.cc", |
| "java_refs.h", |
| "jni_export.h", |
| "jni_methods.h", |
| "jni_wrappers.h", |
| "jni_zero.cc", |
| "jni_zero_internal.h", |
| "logging.cc", |
| "logging.h", |
| "type_conversions.h", |
| ] |
| configs += [ ":jni_include_dir" ] |
| |
| # TODO(crbug.com/40031409): Fix code that adds exit-time destructors and |
| # enable the diagnostic by removing this line. |
| configs += [ "//build/config/compiler:no_exit_time_destructors" ] |
| |
| defines = [] |
| if (enable_jni_multiplexing) { |
| defines += [ "JNI_ZERO_MULTIPLEXING_ENABLED" ] |
| } |
| if (is_robolectric) { |
| defines += [ "JNI_ZERO_IS_ROBOLECTRIC" ] |
| } |
| |
| if (is_android) { |
| libs = [ "log" ] |
| } else if (is_robolectric) { |
| public_configs = [ "//third_party/jdk:jdk" ] |
| } |
| |
| deps = [ |
| ":generate_jni($default_toolchain)", |
| ":system_jni($default_toolchain)", |
| ] |
| } |
| |
| if (enable_java_templates && is_android) { |
| import("//build/config/android/rules.gni") |
| |
| android_library("jni_zero_java") { |
| deps = [ ":generate_jni_java" ] |
| public_deps = [ ":gendeps_java" ] |
| preferred_dep = true |
| sources = [ |
| "java/src/org/jni_zero/AccessedByNative.java", |
| "java/src/org/jni_zero/CalledByNative.java", |
| "java/src/org/jni_zero/CalledByNativeForTesting.java", |
| "java/src/org/jni_zero/CalledByNativeUnchecked.java", |
| "java/src/org/jni_zero/JNINamespace.java", |
| "java/src/org/jni_zero/JniInit.java", |
| "java/src/org/jni_zero/JniTestInstancesSnapshot.java", |
| "java/src/org/jni_zero/JniType.java", |
| "java/src/org/jni_zero/JniUtil.java", |
| "java/src/org/jni_zero/NativeClassQualifiedName.java", |
| "java/src/org/jni_zero/NativeMethods.java", |
| "java/src/org/jni_zero/UsedReflectively.java", |
| ] |
| proguard_configs = [ "proguard.flags" ] |
| } |
| |
| # Classes referenced by generated code. |
| android_library("gendeps_java") { |
| sources = [ |
| "java/src/org/jni_zero/CheckDiscard.java", |
| "java/src/org/jni_zero/JniStaticTestMocker.java", |
| "java/src/org/jni_zero/JniTestInstanceHolder.java", |
| "java/src/org/jni_zero/internal/NullUnmarked.java", |
| "java/src/org/jni_zero/internal/Nullable.java", |
| ] |
| } |
| |
| group("jni_zero_tests") { |
| testonly = true |
| deps = [ |
| "//third_party/jni_zero/sample:jni_zero_sample_apk_test", |
| "//third_party/jni_zero/test:jni_zero_compile_check_apk", |
| ] |
| } |
| } |