| # Copyright 2016 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| LOCAL_MOJO_ROOT := $(call my-dir) |
| |
| JNI_GENERATOR_TOOL := \ |
| $(LOCAL_MOJO_ROOT)/base/android/jni_generator/jni_generator.py |
| |
| generated_sources_dir := $(local-generated-sources-dir) |
| generated_files := |
| |
| # $(1): a single Java file |
| define generate-jni-header |
| |
| java_file := $(1) |
| local_path := $(LOCAL_PATH) |
| target_path := $(generated_sources_dir)/jni |
| gen_h := $$(target_path)/$$(basename $$(notdir $$(java_file)))_jni.h |
| |
| $$(gen_h) : PRIVATE_PATH := $$(local_path) |
| $$(gen_h) : PRIVATE_TARGET := $$(target_path) |
| $$(gen_h) : PRIVATE_CUSTOM_TOOL = \ |
| (cd $$(PRIVATE_PATH) && \ |
| python $$(abspath $$(JNI_GENERATOR_TOOL)) \ |
| --input_file=$$(subst $$(PRIVATE_PATH)/,,$$<) \ |
| --output_dir=$$(abspath $$(PRIVATE_TARGET)) \ |
| --includes base/android/jni_generator/jni_generator_helper.h \ |
| --ptr_type long \ |
| --native_exports_optional) |
| $$(gen_h) : $$(local_path)/$$(java_file) $$(JNI_GENERATOR_TOOL) |
| $$(transform-generated-source) |
| |
| generated_files += $$(gen_h) |
| |
| endef # define generate-jni-header |
| |
| # Build each file separately since the build command needs to be done per-file. |
| $(foreach file,$(LOCAL_JAVA_JNI_FILES),$(eval $(call generate-jni-header,$(file)))) |
| |
| # Add the generated sources to the C includes. |
| LOCAL_C_INCLUDES += $(generated_sources_dir) |
| |
| # LOCAL_GENERATED_SOURCES will filter out anything that's not a C/C++ source |
| # file, but still add the files as dependencies of the other files in the |
| # module. |
| LOCAL_GENERATED_SOURCES += $(generated_files) |