summaryrefslogtreecommitdiff
path: root/java/kotlin.go
AgeCommit message (Collapse)Author
2022-10-28Use the current java version for -jvm-targetCole 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-03Add missing dependency on compose plugin in kapt rulesColin 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 (cherry picked from commit 08b0a1cd795a3a30d45ef8ff9f52f6b58fc45304) Merged-In: 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 javacColin 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 jarsColin 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 processorsColin 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.txtColin 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 runtimeColin 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 warningsColin 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.FlagWithRspFileInputListColin 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 NewRuleBuilderColin 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 sourcesColin 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 pythonColin 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 resourcesColin 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 processorsColin 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 argumentsColin 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 enumColin 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 kotlincDan Willemsen
Bug: 130111713 Test: treehugger Change-Id: If25be6047625cec4ed9802142876cfd8e9ccd3eb
2019-05-08Don't hide *.kotlin_module in turbine dependenciesColin 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 imageColin 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 dependenciesDan 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 ruleColin 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_pluginColin 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 pluginsColin 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 kotlincColin 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 fileColin 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