# -*- Python -*-

load(
    "//tensorflow:tensorflow.bzl",
    "tf_binary_additional_srcs",
)

# Generate Java wrapper classes for all registered core operations and package
# them into a single source archive (.srcjar).
#
# For example:
#  tf_java_op_gen_srcjar("gen_sources", ":gen_tool", "my.package")
#
# will create a genrule named "gen_sources" that generates source files under
#     ops/src/main/java/my/package/**/*.java
#
# and then archive those source files into
#     ops/gen_sources.srcjar
#
def tf_java_op_gen_srcjar(
        name,
        gen_tool,
        base_package,
        api_def_srcs = [],
        out_dir = "ops/",
        out_src_dir = "src/main/java/",
        visibility = ["//tensorflow/java:__pkg__"]):
    gen_cmds = ["rm -rf $(@D)"]  # Always start from fresh when generating source files
    srcs = api_def_srcs[:]

    if not api_def_srcs:
        api_def_args_str = ","
    else:
        api_def_args = []
        for api_def_src in api_def_srcs:
            # Add directory of the first ApiDef source to args.
            # We are assuming all ApiDefs in a single api_def_src are in the
            # same directory.
            api_def_args.append(
                "$$(dirname $$(echo $(locations " + api_def_src +
                ") | cut -d\" \" -f1))",
            )
        api_def_args_str = ",".join(api_def_args)

    gen_cmds += ["$(location " + gen_tool + ")" +
                 " --output_dir=$(@D)/" + out_src_dir +
                 " --base_package=" + base_package +
                 " --api_dirs=" + api_def_args_str]

    # Generate a source archive containing generated code for these ops.
    gen_srcjar = out_dir + name + ".srcjar"
    gen_cmds += ["$(location @local_jdk//:jar) cMf $(location :" + gen_srcjar + ") -C $(@D) src"]

    native.genrule(
        name = name,
        srcs = srcs,
        outs = [gen_srcjar],
        tools = [
            "@local_jdk//:jar",
            "@local_jdk//:jdk",
            gen_tool,
        ] + tf_binary_additional_srcs(),
        cmd = " && ".join(gen_cmds),
    )

# -*- Python -*-

load(
    "//tensorflow:tensorflow.bzl",
    "tf_binary_additional_srcs",
)

# Generate Java wrapper classes for all registered core operations and package
# them into a single source archive (.srcjar).
#
# For example:
#  tf_java_op_gen_srcjar("gen_sources", ":gen_tool", "my.package")
#
# will create a genrule named "gen_sources" that generates source files under
#     ops/src/main/java/my/package/**/*.java
#
# and then archive those source files into
#     ops/gen_sources.srcjar
#
def tf_java_op_gen_srcjar(
        name,
        gen_tool,
        base_package,
        api_def_srcs = [],
        out_dir = "ops/",
        out_src_dir = "src/main/java/",
        visibility = ["//tensorflow/java:__pkg__"]):
    gen_cmds = ["rm -rf $(@D)"]  # Always start from fresh when generating source files
    srcs = api_def_srcs[:]

    if not api_def_srcs:
        api_def_args_str = ","
    else:
        api_def_args = []
        for api_def_src in api_def_srcs:
            # Add directory of the first ApiDef source to args.
            # We are assuming all ApiDefs in a single api_def_src are in the
            # same directory.
            api_def_args.append(
                "$$(dirname $$(echo $(locations " + api_def_src +
                ") | cut -d\" \" -f1))",
            )
        api_def_args_str = ",".join(api_def_args)

    gen_cmds += ["$(location " + gen_tool + ")" +
                 " --output_dir=$(@D)/" + out_src_dir +
                 " --base_package=" + base_package +
                 " --api_dirs=" + api_def_args_str]

    # Generate a source archive containing generated code for these ops.
    gen_srcjar = out_dir + name + ".srcjar"
    gen_cmds += ["$(location @bazel_tools//tools/jdk:current_java_runtime) cMf $(location :" + gen_srcjar + ") -C $(@D) src"]

    native.genrule(
        name = name,
        srcs = srcs,
        outs = [gen_srcjar],
        tools = [
            "@bazel_tools//tools/jdk:current_java_runtime",
            gen_tool,
        ] + tf_binary_additional_srcs(),
        cmd = " && ".join(gen_cmds),
    )

Use current_java_runtime instead of local_jdk.