Loading java/base.go +17 −0 Original line number Diff line number Diff line Loading @@ -643,6 +643,11 @@ func (j *Module) deps(ctx android.BottomUpMutatorContext) { } else if j.shouldInstrumentStatic(ctx) { ctx.AddVariationDependencies(nil, staticLibTag, "jacocoagent") } if j.useCompose() { ctx.AddVariationDependencies(ctx.Config().BuildOSCommonTarget.Variations(), kotlinPluginTag, "androidx.compose.compiler_compiler-hosted") } } func hasSrcExt(srcs []string, ext string) bool { Loading Loading @@ -911,6 +916,12 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) { if ctx.Device() { kotlincFlags = append(kotlincFlags, "-no-jdk") } for _, plugin := range deps.kotlinPlugins { kotlincFlags = append(kotlincFlags, "-Xplugin="+plugin.String()) } flags.kotlincDeps = append(flags.kotlincDeps, deps.kotlinPlugins...) if len(kotlincFlags) > 0 { // optimization. ctx.Variable(pctx, "kotlincFlags", strings.Join(kotlincFlags, " ")) Loading Loading @@ -1325,6 +1336,10 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) { j.outputFile = outputFile.WithoutRel() } func (j *Module) useCompose() bool { return android.InList("androidx.compose.runtime_runtime", j.properties.Static_libs) } // Returns a copy of the supplied flags, but with all the errorprone-related // fields copied to the regular build's fields. func enableErrorproneFlags(flags javaBuilderFlags) javaBuilderFlags { Loading Loading @@ -1755,6 +1770,8 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps { deps.kotlinStdlib = append(deps.kotlinStdlib, dep.HeaderJars...) case kotlinAnnotationsTag: deps.kotlinAnnotations = dep.HeaderJars case kotlinPluginTag: deps.kotlinPlugins = append(deps.kotlinPlugins, dep.ImplementationAndResourcesJars...) case syspropPublicStubDepTag: // This is a sysprop implementation library, forward the JavaInfoProvider from // the corresponding sysprop public stub library as SyspropPublicStubInfoProvider. Loading java/builder.go +1 −0 Original line number Diff line number Diff line Loading @@ -263,6 +263,7 @@ type javaBuilderFlags struct { kotlincFlags string kotlincClasspath classpath kotlincDeps android.Paths proto android.ProtoFlags } Loading java/java.go +2 −0 Original line number Diff line number Diff line Loading @@ -286,6 +286,7 @@ var ( frameworkResTag = dependencyTag{name: "framework-res"} kotlinStdlibTag = dependencyTag{name: "kotlin-stdlib"} kotlinAnnotationsTag = dependencyTag{name: "kotlin-annotations"} kotlinPluginTag = dependencyTag{name: "kotlin-plugin"} proguardRaiseTag = dependencyTag{name: "proguard-raise"} certificateTag = dependencyTag{name: "certificate"} instrumentationForTag = dependencyTag{name: "instrumentation_for"} Loading Loading @@ -380,6 +381,7 @@ type deps struct { aidlPreprocess android.OptionalPath kotlinStdlib android.Paths kotlinAnnotations android.Paths kotlinPlugins android.Paths disableTurbine bool } Loading java/kotlin.go +1 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,7 @@ func kotlinCompile(ctx android.ModuleContext, outputFile android.WritablePath, var deps android.Paths deps = append(deps, flags.kotlincClasspath...) deps = append(deps, flags.kotlincDeps...) deps = append(deps, srcJars...) deps = append(deps, commonSrcFiles...) Loading java/kotlin_test.go +43 −0 Original line number Diff line number Diff line Loading @@ -281,3 +281,46 @@ func TestKaptEncodeFlags(t *testing.T) { }) } } func TestKotlinCompose(t *testing.T) { result := android.GroupFixturePreparers( PrepareForTestWithJavaDefaultModules, ).RunTestWithBp(t, ` java_library { name: "androidx.compose.runtime_runtime", } java_library_host { name: "androidx.compose.compiler_compiler-hosted", } java_library { name: "withcompose", srcs: ["a.kt"], static_libs: ["androidx.compose.runtime_runtime"], } java_library { name: "nocompose", srcs: ["a.kt"], } `) buildOS := result.Config.BuildOS.String() composeCompiler := result.ModuleForTests("androidx.compose.compiler_compiler-hosted", buildOS+"_common").Rule("combineJar").Output withCompose := result.ModuleForTests("withcompose", "android_common") noCompose := result.ModuleForTests("nocompose", "android_common") android.AssertStringListContains(t, "missing compose compiler dependency", withCompose.Rule("kotlinc").Implicits.Strings(), composeCompiler.String()) android.AssertStringDoesContain(t, "missing compose compiler plugin", withCompose.VariablesForTestsRelativeToTop()["kotlincFlags"], "-Xplugin="+composeCompiler.String()) android.AssertStringListDoesNotContain(t, "unexpected compose compiler dependency", noCompose.Rule("kotlinc").Implicits.Strings(), composeCompiler.String()) android.AssertStringDoesNotContain(t, "unexpected compose compiler plugin", noCompose.VariablesForTestsRelativeToTop()["kotlincFlags"], "-Xplugin="+composeCompiler.String()) } Loading
java/base.go +17 −0 Original line number Diff line number Diff line Loading @@ -643,6 +643,11 @@ func (j *Module) deps(ctx android.BottomUpMutatorContext) { } else if j.shouldInstrumentStatic(ctx) { ctx.AddVariationDependencies(nil, staticLibTag, "jacocoagent") } if j.useCompose() { ctx.AddVariationDependencies(ctx.Config().BuildOSCommonTarget.Variations(), kotlinPluginTag, "androidx.compose.compiler_compiler-hosted") } } func hasSrcExt(srcs []string, ext string) bool { Loading Loading @@ -911,6 +916,12 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) { if ctx.Device() { kotlincFlags = append(kotlincFlags, "-no-jdk") } for _, plugin := range deps.kotlinPlugins { kotlincFlags = append(kotlincFlags, "-Xplugin="+plugin.String()) } flags.kotlincDeps = append(flags.kotlincDeps, deps.kotlinPlugins...) if len(kotlincFlags) > 0 { // optimization. ctx.Variable(pctx, "kotlincFlags", strings.Join(kotlincFlags, " ")) Loading Loading @@ -1325,6 +1336,10 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) { j.outputFile = outputFile.WithoutRel() } func (j *Module) useCompose() bool { return android.InList("androidx.compose.runtime_runtime", j.properties.Static_libs) } // Returns a copy of the supplied flags, but with all the errorprone-related // fields copied to the regular build's fields. func enableErrorproneFlags(flags javaBuilderFlags) javaBuilderFlags { Loading Loading @@ -1755,6 +1770,8 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps { deps.kotlinStdlib = append(deps.kotlinStdlib, dep.HeaderJars...) case kotlinAnnotationsTag: deps.kotlinAnnotations = dep.HeaderJars case kotlinPluginTag: deps.kotlinPlugins = append(deps.kotlinPlugins, dep.ImplementationAndResourcesJars...) case syspropPublicStubDepTag: // This is a sysprop implementation library, forward the JavaInfoProvider from // the corresponding sysprop public stub library as SyspropPublicStubInfoProvider. Loading
java/builder.go +1 −0 Original line number Diff line number Diff line Loading @@ -263,6 +263,7 @@ type javaBuilderFlags struct { kotlincFlags string kotlincClasspath classpath kotlincDeps android.Paths proto android.ProtoFlags } Loading
java/java.go +2 −0 Original line number Diff line number Diff line Loading @@ -286,6 +286,7 @@ var ( frameworkResTag = dependencyTag{name: "framework-res"} kotlinStdlibTag = dependencyTag{name: "kotlin-stdlib"} kotlinAnnotationsTag = dependencyTag{name: "kotlin-annotations"} kotlinPluginTag = dependencyTag{name: "kotlin-plugin"} proguardRaiseTag = dependencyTag{name: "proguard-raise"} certificateTag = dependencyTag{name: "certificate"} instrumentationForTag = dependencyTag{name: "instrumentation_for"} Loading Loading @@ -380,6 +381,7 @@ type deps struct { aidlPreprocess android.OptionalPath kotlinStdlib android.Paths kotlinAnnotations android.Paths kotlinPlugins android.Paths disableTurbine bool } Loading
java/kotlin.go +1 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,7 @@ func kotlinCompile(ctx android.ModuleContext, outputFile android.WritablePath, var deps android.Paths deps = append(deps, flags.kotlincClasspath...) deps = append(deps, flags.kotlincDeps...) deps = append(deps, srcJars...) deps = append(deps, commonSrcFiles...) Loading
java/kotlin_test.go +43 −0 Original line number Diff line number Diff line Loading @@ -281,3 +281,46 @@ func TestKaptEncodeFlags(t *testing.T) { }) } } func TestKotlinCompose(t *testing.T) { result := android.GroupFixturePreparers( PrepareForTestWithJavaDefaultModules, ).RunTestWithBp(t, ` java_library { name: "androidx.compose.runtime_runtime", } java_library_host { name: "androidx.compose.compiler_compiler-hosted", } java_library { name: "withcompose", srcs: ["a.kt"], static_libs: ["androidx.compose.runtime_runtime"], } java_library { name: "nocompose", srcs: ["a.kt"], } `) buildOS := result.Config.BuildOS.String() composeCompiler := result.ModuleForTests("androidx.compose.compiler_compiler-hosted", buildOS+"_common").Rule("combineJar").Output withCompose := result.ModuleForTests("withcompose", "android_common") noCompose := result.ModuleForTests("nocompose", "android_common") android.AssertStringListContains(t, "missing compose compiler dependency", withCompose.Rule("kotlinc").Implicits.Strings(), composeCompiler.String()) android.AssertStringDoesContain(t, "missing compose compiler plugin", withCompose.VariablesForTestsRelativeToTop()["kotlincFlags"], "-Xplugin="+composeCompiler.String()) android.AssertStringListDoesNotContain(t, "unexpected compose compiler dependency", noCompose.Rule("kotlinc").Implicits.Strings(), composeCompiler.String()) android.AssertStringDoesNotContain(t, "unexpected compose compiler plugin", noCompose.VariablesForTestsRelativeToTop()["kotlincFlags"], "-Xplugin="+composeCompiler.String()) }