# 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)
