summaryrefslogtreecommitdiff
path: root/java/kotlin.go
AgeCommit message (Collapse)Author
2023-09-20Enable restat for kapt stubs rules Colin Cross
The output of the kapt stubs rules only change when the public interface of a kotlin class changes, which makes them a good candidate for restat. This will prevent some unnecessary reruns of turbine annotation processing. Bug: 297356926 Test: builds Change-Id: I39bd63284fd37058f69a0a3dace1ea5f4f50e8b5
2023-07-27Delete the javac/classes directory after zipping it Colin Cross
javac produces a directory containing class files, which is then zipped with soong_zip into a jar file. The class files are never used outside of the rule, so delete them after zipping them. This should save 19 GB of disk space in checkbuilds. Do the same for kotlinc/classes directories for consistency. Bug: 293352015 Test: treehugger Change-Id: Id1e889cfbee47eab552a5bb27134fa4b3b4c4d14
2023-06-14Support multiple filters in zipsync Zi Wang
Also applied this feature to kotlinc since it needs both java and kt files. Test: local test and presubmits Bug: 287071909 Change-Id: I28c725b03115aef47055448cb75412980015da15
2022-06-28Use the current java version for -jvm-target Cole Faust
This is a partial revert of aosp/541879. In that cl, the kotlin jvm version was always set to 1.8 because that's what the kotlin complier supported at the time, but now it supports more versions: $ ./external/kotlinc/bin/kotlinc -jvm-target foo error: unknown JVM target version: foo Supported versions: 1.6, 1.8, 9, 10, 11, 12, 13, 14, 15, 16, 17 Bug: 69160377 Bug: 236431222 Test: Treehugger Change-Id: I273e0b4d1f484013889e17c60bc1b299a3f975a1
2022-05-02Add missing dependency on compose plugin in kapt rules Colin Cross
The kapt rule uses kotlincFlags but was not using kotlincDeps, causing the rule to get the -Xplugin argument on the compose compiler plugin jar, but not have a dependency on it. Bug: 231222079 Test: TestKotlinCompose Change-Id: I4c2cf30fb7d8cad4eededa29f67f4ffd459caa41
2022-04-06Revert "Use kapt stubs for kotlin header jar for javac" Isaac Chiou
This reverts commit c6ef4853704080b1340170c5c30046cc4dacd418. Reason for revert: Multiple systemui presubmits are broken due to this change Bug: 228262695 Change-Id: I1efed519c49d8d0583815c7bf2b3801bf0ba12fa
2022-04-04Use kapt stubs for kotlin header jar for javac Colin Cross
When compling kotlin code with annotation processors we are generating java stubs for the kotlin sources using kapt, and parsing them in turbine when running the annotation processors. Passing --output to turbine will also compile the stubs into a header jar that can be used as a dependency to javac, allowing the javac and kotlinc rules to run in parallel. The turbine-apt header jar can't be used as the header jar for downstream modules as it doesn't contain the kotlin metadata needed by kotlinc rules, so the kotlinc gen-jvm-abi plugin output is still used for the module's final header jar. Test: TestKapt Bug: 222095735 Change-Id: I82d0900f3dc30f3e3ebd7cab0693dfe741d9b955
2022-04-04Enable kotlin's jvm-abi-gen plugin to generate header jars Colin Cross
Kotlin's jvm-abi-gen plugin can generate header jars similar to the turbine output for java sources, which can be used to avoid recompiling downstream modules when the ABI hasn't changed. Unlike turbine, the plugin runs as part of the main kotlinc invocation, so it doesn't allow the downstream modules to start compiling any sooner. A future possible optimization is to use turbine to compile the kapt stubs, at least for the kotlin+annotation processor modules that already generate them, which would allow compiling downstream modules before invoking kotlinc or javac, as well as invoking kotlinc and javac in parallel with each other. Bug: 222095735 Test: TestKotlin Test: m SystemUI Change-Id: Ib1bb2ecea47c851a108a26f9ed4f827f289d1321
2022-03-25Use turbine instead of kapt for kotlin annotation processors Colin Cross
Follow Bazel by using turbine instead of kapt to run annotation processors. This still requires using kapt to generate java stubs of kotlin soruces, then uses turbine to run annotation processors on the java stubs and any java sources to generate sources and resources, and passes the annotation processor generated sources to kotlinc and javac. Bug: 225013372 Test: m checkbuild Test: TestKapt Change-Id: I9c6fc496a9fba64658bb062538bc5f7b9478b07a
2022-03-18Prevent kotlinc from reading /tmp/build.txt Colin Cross
Pass -Didea.plugins.compatible.build=999.SNAPSHOT to kotlinc and kapt to prevent it from reading /tmp/build.txt and failing with an obscure exception: exception: java.lang.ExceptionInInitializerError at com.intellij.openapi.util.BuildNumber.currentVersion(BuildNumber.java:297) ... Bug: 222162908 Test: m metalava with /tmp/build.txt present Change-Id: I5faced4a2e94561ce3aa37bfaacf5bd7d988a4f0
2021-09-20Enable compose kotlinc plugin when depending on the compose runtime Colin Cross
When a module depends on the compose runtime add a -Xplugin argument to the kotlinc flags that enables the compose compiler plugin. Bug: 196351110 Test: TestKotlinCompose Change-Id: I423a3c4d12df42804a24b672a40a165bc8dd165f
2021-03-31Silence kotlinc JDK9 warnings Colin Cross
Silence the "Illegal reflective access" warning from kotlinc tracked by https://youtrack.jetbrains.com/issue/KT-43704 Test: m SystemUI Change-Id: I98eaf530c69cc4d3cefe09f5feab54c764352912
2021-03-16Add explicit rspfile argument to RuleBuilderCommand.FlagWithRspFileInputList Colin Cross
Using $out.rsp as the rsp file adds extra complexity around keeping the $ unescaped. Make callers to FlagWithRspFileInputList provide an explicit path for the rsp file instead. Bug: 182612695 Test: rule_builder_test.go Change-Id: I3f531d80c1efa8a9d09aac0a63790c5b11a9f0c6
2020-12-01Pass pctx and ctx to NewRuleBuilder Colin Cross
Enable the RuleBuilder and RuleBuilderCommand methods to access the BuilderContext by passing it to NewRuleBuilder instead of RuleBuilder.Build. Test: genrule_test.go Test: rule_builder_test.go Test: m checkbuild Change-Id: I63e6597e19167393876dc2259d6f521363b7dabc
2020-07-06Support kotlin multiplatform sources Colin Cross
Add a common_srcs property and propagate it to the module.xml file passed to kotlinc. Test: m checkbuild Change-Id: Ief768bafb943513c9ffbc01e829abc078f0a72bc
2020-06-26Move gen-kotlin-build-file.sh to python Colin Cross
Kotlin common multiplatform sources support will require more complexity in gen-kotlin-build-file.sh, move it to python instead. Test: m checkbuild Change-Id: I02312160ad781877f1fec971168331c0dcecf136
2020-06-18Fix annotation processors in kotlin modules that generate resources Colin Cross
The kapt rule was only keeping the generated sources, and not the generated classes directory. The generated classes directory will contain resources generated by the annotation processor and needs to be added to the final jar. Test: m ApiFinder Bug: 153485543 Change-Id: I89197d0afcb1eee011c01aa400f9977e66f43768
2020-04-22Repeat kapt processor argument for multiple processors Colin Cross
kapt claims to support a comma separated list of annotation processors, but it errors if multiple annotation processors are given. Surrounding the the list with {} does not error, but it also doesn't even warn if the second element in the list is garbage, so it may not be running the second processor. Repeat the processor argument for each annotation processor class instead. Bug: 154736649 Test: TestKapt Test: m checkbuild Change-Id: I4c7c161dbf867d7fba1aaf16fd5e502647e3f682
2020-01-28Add support for experimentally enabling RBE support on specific rules. Ramy Medhat
This CL adds RBE support to javac, r8, and d8 rules which is only enabled if respective environment variables are set. Test: an aosp_crosshatch build with and without the new variables. Change-Id: Ic82f3627944f6a5ee7b9f3228170c2709b1bfcb8
2019-11-07Fix turbine classpath arguments Colin Cross
We were passing "--classpath foo.jar --classpath bar.jar" to turbine, it now wants (and may always have expected?) "--classpath foo.jar bar.jar". Test: m checkbuild Change-Id: Ib7e0ca64a34e236110f7b785d6a0fb51ed75567e
2019-11-05Run non-RBE supported actions in the local pool when USE_RBE is set. Ramy Medhat
Bug: 143938974 Test: ran CTS build at -j500 successfully. Change-Id: I55074bd67308cd716972e24fb56a20bc393d5d9d
2019-10-28Make javaVersion an enum Colin Cross
Remove the hardcoded checks against "1.9" by making javaVersion an enum and implementing javaVersion.usesJavaModules(). Test: TestClasspath Change-Id: I559eeb1f45880bb8177269c6d977ee4dfbadce57
2019-06-13Add another jar used by kotlinc Dan Willemsen
Bug: 130111713 Test: treehugger Change-Id: If25be6047625cec4ed9802142876cfd8e9ccd3eb
2019-05-08Don't hide *.kotlin_module in turbine dependencies Colin Cross
The jars containing the merged header classes from transitive static dependencies were stripping all of META-INF/. Kotlin puts metadata in META-INF that is used to map the package to the static class that contains the package-level functions. This also exposed that the metadata in META-INF is always called "name.kotlin_module", so a library that contains kotlin files with a dependency that also contains kotlin files would shade the metadata file. Use a unique name instead. Fixes: 131709692 Test: m checkbuild Change-Id: I5cd276e563206e37c4c0d90fe9f346e9396f88c0
2019-04-11Zip boot image Colin Cross
Create a zip file containing the zipped boot image files. Test: m out/soong/sailfish/dex_bootjars/boot.zip Change-Id: I1b08c9aca962a5999585cbe9e665693ef4558524
2019-04-09Add extra used dependencies Dan Willemsen
Found while executing the build actions remotely. Bug: 130111713 Test: treehugger Test: run actions remotely with given dependencies, they pass. Change-Id: I2bff8fb8ccf50fde446d6bcef0f1dca9b2974b4b
2019-01-25Clean up srcjar directories after each rule Colin Cross
The srcjar directories just confuse people looking for generated files, clean them up after each rule. Test: m checkbuild Change-Id: If712ce7d4922619fd8420ae8f89830fe7824114d
2019-01-23Fix kotlin annotation processing after java_plugin Colin Cross
I37c1e80eba71ae2d6a06199fb102194a51994989 broke kotlin annotation processing with a typo in the processors flag to kapt and by passing -processor to javac with an empty processorpath. Bug: 77284273 Bug: 122251693 Test: kotlin_test.go Test: m checkbuild Change-Id: I17c45d5b3f9df089231af5d2930646ad0e6bf9be
2019-01-23Replace annotation_processors with plugins Colin Cross
Follow bazel's modules for annotation processors by introducing a java_plugin module type that can contain extra metadata about the annotation processor, the processor class and a flag to specify if the annotation processor is compatible with the turbine optimization. Deprecate the annotation_processors property, which took a list of java_library_host modules, in favor of the plugins property, which takes a list of java_plugin modules. The annotation_processors property will be removed once all uses have been replaced with plugins. Bug: 77284273 Test: plugin_test.go Test: m caliper Change-Id: I37c1e80eba71ae2d6a06199fb102194a51994989
2019-01-22Pass annotation processors to kotlinc Colin Cross
Enable the kotlin-annotation-processing plugin and pass annotation processors to it. Bug: 122251693 Test: m checkbuild Test: TestKapt in kotlin_test.go Change-Id: I841df454beaaa7edd263eea714ca0d958a03c9de
2019-01-22Move kotlin to it's own file Colin Cross
kapt is going to make kotlin a little more complicated, move the rules and tests to their own files. Bug: 122251693 Test: m checkbuild Change-Id: Ieed78b97995ced210b710bd50c357514cc8e3bc6