aboutsummaryrefslogtreecommitdiff
path: root/java/kotlin.go
Commit message (Collapse)AuthorAgeFilesLines
* Enable restat for kapt stubs rulesColin Cross2023-09-201-1/+2
| | | | | | | | | | | 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
* Delete the javac/classes directory after zipping itColin Cross2023-07-271-1/+1
| | | | | | | | | | | | | 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
* Support multiple filters in zipsyncZi Wang2023-06-141-1/+1
| | | | | | | | | Also applied this feature to kotlinc since it needs both java and kt files. Test: local test and presubmits Bug: 287071909 Change-Id: I28c725b03115aef47055448cb75412980015da15
* Use the current java version for -jvm-targetCole Faust2022-06-281-3/+2
| | | | | | | | | | | | | | | | | 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
* Add missing dependency on compose plugin in kapt rulesColin Cross2022-05-021-0/+1
| | | | | | | | | | 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
* Revert "Use kapt stubs for kotlin header jar for javac"Isaac Chiou2022-04-061-3/+3
| | | | | | | | | This reverts commit c6ef4853704080b1340170c5c30046cc4dacd418. Reason for revert: Multiple systemui presubmits are broken due to this change Bug: 228262695 Change-Id: I1efed519c49d8d0583815c7bf2b3801bf0ba12fa
* Use kapt stubs for kotlin header jar for javacColin Cross2022-04-041-3/+3
| | | | | | | | | | | | | | | | 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
* Enable kotlin's jvm-abi-gen plugin to generate header jarsColin Cross2022-04-041-13/+21
| | | | | | | | | | | | | | | | | | | 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
* Use turbine instead of kapt for kotlin annotation processorsColin Cross2022-03-251-10/+15
| | | | | | | | | | | | | | 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
* Prevent kotlinc from reading /tmp/build.txtColin Cross2022-03-181-2/+4
| | | | | | | | | | | | | 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
* Enable compose kotlinc plugin when depending on the compose runtimeColin Cross2021-09-201-0/+1
| | | | | | | | | 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
* Silence kotlinc JDK9 warningsColin Cross2021-03-311-4/+5
| | | | | | | | Silence the "Illegal reflective access" warning from kotlinc tracked by https://youtrack.jetbrains.com/issue/KT-43704 Test: m SystemUI Change-Id: I98eaf530c69cc4d3cefe09f5feab54c764352912
* Add explicit rspfile argument to RuleBuilderCommand.FlagWithRspFileInputListColin Cross2021-03-161-1/+3
| | | | | | | | | | 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
* Pass pctx and ctx to NewRuleBuilderColin Cross2020-12-011-2/+2
| | | | | | | | | | | 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
* Support kotlin multiplatform sourcesColin Cross2020-07-061-15/+49
| | | | | | | | Add a common_srcs property and propagate it to the module.xml file passed to kotlinc. Test: m checkbuild Change-Id: Ief768bafb943513c9ffbc01e829abc078f0a72bc
* Move gen-kotlin-build-file.sh to pythonColin Cross2020-06-261-4/+8
| | | | | | | | 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
* Fix annotation processors in kotlin modules that generate resourcesColin Cross2020-06-181-8/+13
| | | | | | | | | | | 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
* Repeat kapt processor argument for multiple processorsColin Cross2020-04-221-2/+5
| | | | | | | | | | | | | | | 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
* Add support for experimentally enabling RBE support on specific rules.Ramy Medhat2020-01-281-2/+2
| | | | | | | | 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
* Fix turbine classpath argumentsColin Cross2019-11-071-1/+1
| | | | | | | | | 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
* Run non-RBE supported actions in the local pool when USE_RBE is set.Ramy Medhat2019-11-051-2/+2
| | | | | | Bug: 143938974 Test: ran CTS build at -j500 successfully. Change-Id: I55074bd67308cd716972e24fb56a20bc393d5d9d
* Make javaVersion an enumColin Cross2019-10-281-2/+2
| | | | | | | | Remove the hardcoded checks against "1.9" by making javaVersion an enum and implementing javaVersion.usesJavaModules(). Test: TestClasspath Change-Id: I559eeb1f45880bb8177269c6d977ee4dfbadce57
* Add another jar used by kotlincDan Willemsen2019-06-131-0/+1
| | | | | | Bug: 130111713 Test: treehugger Change-Id: If25be6047625cec4ed9802142876cfd8e9ccd3eb
* Don't hide *.kotlin_module in turbine dependenciesColin Cross2019-05-081-4/+14
| | | | | | | | | | | | | | | | 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
* Zip boot imageColin Cross2019-04-111-3/+5
| | | | | | | Create a zip file containing the zipped boot image files. Test: m out/soong/sailfish/dex_bootjars/boot.zip Change-Id: I1b08c9aca962a5999585cbe9e665693ef4558524
* Add extra used dependenciesDan Willemsen2019-04-091-0/+5
| | | | | | | | | Found while executing the build actions remotely. Bug: 130111713 Test: treehugger Test: run actions remotely with given dependencies, they pass. Change-Id: I2bff8fb8ccf50fde446d6bcef0f1dca9b2974b4b
* Clean up srcjar directories after each ruleColin Cross2019-01-251-2/+4
| | | | | | | | The srcjar directories just confuse people looking for generated files, clean them up after each rule. Test: m checkbuild Change-Id: If712ce7d4922619fd8420ae8f89830fe7824114d
* Fix kotlin annotation processing after java_pluginColin Cross2019-01-231-1/+1
| | | | | | | | | | | | 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
* Replace annotation_processors with pluginsColin Cross2019-01-231-1/+9
| | | | | | | | | | | | | | | | | 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
* Pass annotation processors to kotlincColin Cross2019-01-221-5/+102
| | | | | | | | | | 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
* Move kotlin to it's own fileColin Cross2019-01-221-0/+71
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