diff options
author | Donald Duo Zhao <deltazulu@google.com> | 2023-02-21 18:37:32 -0800 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2023-02-21 18:38:14 -0800 |
commit | 55e5e64165c8f6a9f0d6f391f1d3c70e2cee449a (patch) | |
tree | df57a1aa455fbd91e3da9889fea537e85319e7ba | |
parent | 9ed5cc8e024f2442e384bda35f515509177dbe38 (diff) | |
download | bazelbuild-kotlin-rules-55e5e64165c8f6a9f0d6f391f1d3c70e2cee449a.tar.gz |
NONE
PiperOrigin-RevId: 511361114
-rw-r--r-- | kotlin/common.bzl | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/kotlin/common.bzl b/kotlin/common.bzl index a5f24b1..7433aba 100644 --- a/kotlin/common.bzl +++ b/kotlin/common.bzl @@ -865,9 +865,10 @@ def _kt_jvm_library( java_native_headers_jar = javac_java_info.outputs.native_headers if kt_srcs: - if pre_processed_processors and java_syncer.srcjars: - java_gensrcjar = java_syncer.srcjars[0] + if pre_processed_processors: + java_gensrcjar = kt_codegen_processing_env["java_info_genearted_source_jar"] java_genjar = javac_out + else: java_gensrcjar = kapt_outputs.srcjar java_genjar = _derive_gen_class_jar(ctx, kt_toolchain, kapt_outputs.manifest, javac_out, java_srcs) @@ -1080,6 +1081,36 @@ def _collect_proguard_specs( order = "preorder", ) +def _gen_java_info_genearted_class_jar(ctx, kt_toolchain, input_jars, srcjars): + output_jar = ctx.actions.declare_file(ctx.label.name + "_java_info_genearted_class_jar.jar") + + input_jars = depset(input_jars) + transformer_env_files = depset(srcjars) + + transformer_entry_point = "com.google.devtools.jar.transformation.ClassFileSelectorBySourceFile" + transformer_jars = kt_toolchain.class_file_selector_by_source_file[JavaInfo].transitive_runtime_jars + jar_transformer = kt_toolchain.jar_transformer[DefaultInfo].files_to_run + + args = ctx.actions.args() + args.add_joined("--input_jars", input_jars, join_with = ",") + args.add_joined("--transformer_jars", transformer_jars, join_with = ",") + args.add("--transformer_entry_point", transformer_entry_point) + args.add_all("--transformer_env_files", transformer_env_files) + args.add("--result", output_jar) + ctx.actions.run( + inputs = depset(transitive = [ + input_jars, + transformer_jars, + transformer_env_files, + ]), + outputs = [output_jar], + arguments = [args], + progress_message = "Transforming into %s" % output_jar.short_path, + mnemonic = "JarTransformer", + executable = jar_transformer, + ) + return output_jar + def _collect_providers(provider, deps): """Collects the requested provider from the given list of deps.""" return [dep[provider] for dep in deps if provider in dep] |