Initial kotlin support
Allow java libraries to specify .kt sources, precompile them with kotlin, and then pass them in the classpath to javac. Bug: 65219535 Test: java_test.go Change-Id: Ife22b6ef82ced9ec26a9e5392b2dadacbb16546f
This commit is contained in:
@@ -50,6 +50,22 @@ var (
|
||||
},
|
||||
"javacFlags", "sourcepath", "bootClasspath", "classpath", "outDir", "annoDir", "javaVersion")
|
||||
|
||||
kotlinc = pctx.AndroidGomaStaticRule("kotlinc",
|
||||
blueprint.RuleParams{
|
||||
// TODO(ccross): kotlinc doesn't support @ file for arguments, which will limit the
|
||||
// maximum number of input files, especially on darwin.
|
||||
Command: `rm -rf "$outDir" && mkdir -p "$outDir" && ` +
|
||||
`${config.KotlincCmd} $classpath $kotlincFlags ` +
|
||||
`-jvm-target $javaVersion -d $outDir $in && ` +
|
||||
`${config.SoongZipCmd} -jar -o $out -C $outDir -D $outDir`,
|
||||
CommandDeps: []string{
|
||||
"${config.KotlincCmd}",
|
||||
"${config.KotlinCompilerJar}",
|
||||
"${config.SoongZipCmd}",
|
||||
},
|
||||
},
|
||||
"kotlincFlags", "classpath", "outDir", "javaVersion")
|
||||
|
||||
errorprone = pctx.AndroidStaticRule("errorprone",
|
||||
blueprint.RuleParams{
|
||||
Command: `rm -rf "$outDir" "$annoDir" && mkdir -p "$outDir" "$annoDir" && ` +
|
||||
@@ -131,10 +147,36 @@ type javaBuilderFlags struct {
|
||||
aidlFlags string
|
||||
javaVersion string
|
||||
|
||||
kotlincFlags string
|
||||
kotlincClasspath classpath
|
||||
|
||||
protoFlags string
|
||||
protoOutFlag string
|
||||
}
|
||||
|
||||
func TransformKotlinToClasses(ctx android.ModuleContext, outputFile android.WritablePath,
|
||||
srcFiles android.Paths, srcJars classpath,
|
||||
flags javaBuilderFlags) {
|
||||
|
||||
classDir := android.PathForModuleOut(ctx, "classes-kt")
|
||||
|
||||
inputs := append(android.Paths(nil), srcFiles...)
|
||||
inputs = append(inputs, srcJars...)
|
||||
|
||||
ctx.ModuleBuild(pctx, android.ModuleBuildParams{
|
||||
Rule: kotlinc,
|
||||
Description: "kotlinc",
|
||||
Output: outputFile,
|
||||
Inputs: inputs,
|
||||
Args: map[string]string{
|
||||
"classpath": flags.kotlincClasspath.JavaClasspath(),
|
||||
"kotlincFlags": flags.kotlincFlags,
|
||||
"outDir": classDir.String(),
|
||||
"javaVersion": flags.javaVersion,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func TransformJavaToClasses(ctx android.ModuleContext, outputFile android.WritablePath,
|
||||
srcFiles android.Paths, srcJars classpath,
|
||||
flags javaBuilderFlags, deps android.Paths) {
|
||||
|
Reference in New Issue
Block a user