Commit Graph

213 Commits

Author SHA1 Message Date
sebastian.sellmair d4dc6a3d71 [kpm] Introduce GradleKpm* naming convention (2/2)
All Gradle specific kpm entities shall be disambiguated by using
the `GradleKpm` prefix. For example `MyEntity` shall now be called
`GradleKpmMyEntity` and a subclass would be called like
`GradleKpmSpecialMyEntity`
2022-05-25 13:15:43 +00:00
sebastian.sellmair dcd47a89dd [kpm] Introduce GradleKpm* naming convention (1/2)
All Gradle specific kpm entities shall be disambiguated by using
the `GradleKpm` prefix. For example `MyEntity` shall now be called
`GradleKpmMyEntity` and a subclass would be called like
`GradleKpmSpecialMyEntity`
2022-05-25 13:15:42 +00:00
sebastian.sellmair e55f00c3d9 [kpm] Introduce Kpm* naming convention (2/2)
All Kpm owned entities shall be disambiguated by using the `Kpm` prefix
E.g. MyEntity has to be called KpmMyEntity and a subclass is called
KpmSpecialMyEntity
2022-05-25 13:15:41 +00:00
sebastian.sellmair 71677ad455 [kpm] Introduce Kpm* naming convention (1/2)
All Kpm owned entities shall be disambiguated by using the `Kpm` prefix
E.g. MyEntity has to be called KpmMyEntity and a subclass is called
KpmSpecialMyEntity
2022-05-25 13:15:40 +00:00
sebastian.sellmair 4f4f749c08 [kpm] Replace KotlinExternalModelContainer with new Extras implementation
This newly introduced `Extras` shall present a more generic mechanism
of attaching data of a given type to any entity.
2022-05-23 14:40:49 +00:00
Yahor Berdnikau 92df5cd67f Revert usage of NormalizeLineEndings
This annotation causes wrong UP-TO-DATE checks leading to unexpected
build failures.

^KT-52313 Fixed
2022-05-09 11:15:38 +00:00
Simon Ogorodnik 58885a1b07 KT-52217 Rename 'use-fir' to 'use-k2', update message 2022-04-28 15:42:42 +00:00
konstantin.tskhovrebov 3085f6bacf Extract kotlin artifacts public API. 2022-04-21 08:32:27 +00:00
Alexander Udalov 2e515f3945 Prohibit JVM target 1.6
But still compile stdlib, reflect, kotlin.test and scripting runtimes
with JVM target 1.6 to simplify migration from Kotlin 1.6 to 1.7.

 #KT-45165 Fixed
2022-04-19 22:54:40 +02:00
Yahor Berdnikau 6ed0efedd3 Add workaround for Gradle dependency resolution error
Gradle throws unexpected error on dependency resolution without
this workaround.

Related to KT-51837
2022-04-19 15:38:33 +02:00
Yahor Berdnikau 5b45ea9bc9 Introduce KotlinBasePlugin
This interface is a top-level interface for all Kotlin plugins.
Additionally it provides 'pluginVersion' property allowing to get
current applied plugin version

^KT-50869 Fixed
^KT-48008 Fixed
2022-04-14 16:15:42 +00:00
Ivan Gavrilovic ca193a89d2 [Gradle] Add APIs that allow AGP to configure Kotlin compilation
Add APIs that describe tasks, so that AGP can configure them. This
change all adds support to *Config objects to support configuring
tasks when there is no access to internal KGP objects.

^KT-50869 In Progress
2022-04-14 16:15:42 +00:00
Ivan Gavrilovic 46cb4902e1 [Gradle] Move more task inputs to properties
... move more configuration logic to TaskConfigAction classes. This is
to avoid directly accessing tasks to configure them. The TaskConfigAction
objects should eventually have access to all information that is required
to configure the task, and they should compute the final values of
all properties.

This will also allow 3P plugins to configure Kotlin tasks, without
the need to create KGP internal objects.

^KT-50869 In Progress
2022-04-14 16:15:41 +00:00
Yahor Berdnikau 437592ac2a Migrate kotlin-gradle-plugin-api module to variants
^KT-49227 In Progress
2022-04-04 20:37:59 +02:00
Yahor Berdnikau ebb292849f Remove experimental.coroutines DSL
And 'kotlin.coroutines' property as well.

^KT-50494 Fixed
2022-04-04 15:11:46 +00:00
Yahor Berdnikau bc066e1863 Set minimal supported AGP version to 3.6.4
^KT-51342 Fixed
2022-04-04 07:32:53 +00:00
Udi Cohen c9d2f40b95 Rename params show/dumpProcessorTimings to show/dumpProcessorStats
^KT-51132 Fixed
2022-03-25 18:54:02 +00:00
Victor Petukhov 25a06bdc56 [Compiler CLI] Make language version description not in capital letters
^KT-51673 Fixed
2022-03-22 13:41:46 +00:00
sebastian.sellmair 1a5fc84080 [KPM] Implement initial kpm/idea dependency resolution
^KT-51386 Verification Pending
2022-03-17 15:39:46 +00:00
sebastian.sellmair 14046b81ff Replace transitiveClosure (commonizer-api) with closure (tooling-core) 2022-03-09 13:17:06 +00:00
Yahor Berdnikau cb474f9b43 Remove 'jdkHome' option from Gradle options
Toolchain feature is replaced it.

^KT-46541 Fixed
2022-02-28 10:08:50 +00:00
Mikhail Glukhikh 53d6ac24e5 Switch kotlin version to 1.7
* Change 1.6 to 1.7 constants
* Fix SAFE_CALL_WILL_CHANGE_NULLABILITY for testData
* Change EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_WARNING to EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_ERROR
* Change NON_EXHAUSTIVE_WHEN_STATEMENT to NO_ELSE_IN_WHEN
* Fix testData for SafeCallsAreAlwaysNullable
* Change T -> T & Any in test dumps
* Change INVALID_CHARACTERS_NATIVE_WARNING -> INVALID_CHARACTERS_NATIVE_ERROR
* TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_WARNING -> TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR
2022-02-25 11:46:27 +00:00
Yahor Berdnikau 1d2796d491 Update Gradle plugins publishing setup
Simplifies and make it aligned with official documentation, which
removes some old workarounds. Additionally, it enables publication of
Gradle metadata file, which is required for plugin variants feature
support.

Instead of using 'gradleApi()' as Gradle API dependency, which provides
build current Gradle version api, now setup is using
"dev.gradleplugins:gradle-api" artifacts with specific Gradle version.
This allows to have more fine-grained Gradle support for removed apis.

^KT-49227 In Progress
2022-02-22 12:35:01 +00:00
Yahor Berdnikau 9d0d26e15d Restore 'KotlinGradleSubplugin' as marker interface.
This avoids build failure in 'buildSrc' module with 'kotlin-dsl' applied
with 'ClassNotFound' exception.

^KT-51378 Fixed
2022-02-21 09:42:23 +00:00
sebastian.sellmair e91785ba39 [KPM] Implement initial IdeaKotlinProjectModelBuilder
- Introduce `kotlin-gradle-plugin-idea` module that allows
to share models between the IDE and KGP

- Add `kotlin-gradle-plugin-idea` to the RuntimePublicAPITest to
ensure binary compatibility

^KT-51262
2022-02-17 20:19:12 +00:00
Yahor Berdnikau 4143df1c8f Remove 'KotlinGradleSubplugin'
^KT-48831 Fixed
2022-02-17 10:40:03 +00:00
Alexander Likhachev aba495f63c [Gradle] Remove deprecated experimental annotation methods & properties
#KT-47763 Fixed
2022-02-16 08:27:46 +00:00
Svyatoslav Scherbina d0a26d1d85 [Gradle, Native] Enable embeddable compiler jar by default
For Kotlin/Native compilations, apply generic (backend-agnostic)
compiler plugin artifacts instead of Native-specific ones by default.

`kotlin.native.useEmbeddableCompilerJar=false` project property allows
switching to the previous legacy behaviour. This flag will be removed
in a future release.

^KT-48595 Fixed
2022-02-15 14:35:56 +00:00
Yahor Berdnikau ff3a08de6e Cleanup JVM toolchain implementation
Remove support for <Gradle 6.7 and fix extension method to accept
'JavaToolchainSpec' instead of 'Any'.

^KT-47924 Fixed
2022-02-15 09:36:31 +00:00
Alexander Udalov 7952e8b28f Add JVM target bytecode version 18
#KT-51309 Fixed
2022-02-14 21:21:57 +01:00
Sergey Igushkin 7048cc3139 KT-MR-5666 Revert removal of default impl for relatedConfigurationNames 2022-02-14 15:05:14 +00:00
Sergey Igushkin 8676685ebc Adjust KPM publication for legacy model publication requirements 2022-02-14 15:04:58 +00:00
Sergey Igushkin 3f49217cc9 Prepare intermediate layer of model mapping in Kotlin compilations
Extract all logic and internal model that may be different in different
modes to a separate entity called "compilation details"
2022-02-14 15:04:54 +00:00
Yahor Berdnikau 52a21a4e1a Remove 'noStdlib' from Gradle options
^KT-49011 Fixed
2022-01-31 17:28:13 +01:00
Yahor Berdnikau 27e449cd56 Remove 'useIR' from Gradle options
^KT-49011 In Progress
2022-01-31 17:28:13 +01:00
sebastian.sellmair 96ec6466c7 [KPM] Implement 'transitiveRuntimeOnly' dependency configuration 2022-01-26 21:51:57 +00:00
Ivan Gavrilovic d85be5f259 [Gradle] Add CompilerPluginConfig to API
Add a convenient way to specify Kotlin compiler
plugin options with the CompilePluginConfig,
which is added to the -api subproject.

^KT-50869 In Progress
2022-01-21 22:53:54 +03:00
Ivan Gavrilovic c93594331b [Gradle] Move some of the DSL to the API module
DSL exposed in the build scripts in effectively
an API, so this change moves it to the kotlin-gradle-plugin-api
subproject.

^KT-50869 In Progress
2022-01-21 16:57:23 +03:00
Alexander Udalov 9a9a8f1999 Restore support of language version 1.3
#KT-50251 Fixed

(cherry picked from commit a0004ed03adc9f50f26c8b11d178afcc2abf2a9c)
2021-12-28 13:21:18 +01:00
Nikolay Krasko a74c68c70a Regenerate gradle options 2021-12-15 19:18:53 +03:00
sebastian.sellmair 2a43199287 [Gradle][KPM] Split fragment specific configurations from KotlinDependencyConfigurations 2021-12-07 21:38:59 +00:00
sebastian.sellmair d7df56a390 [Gradle][KPM] Minor: Cleanup imports, remove unused code and add documentation 2021-12-07 21:38:59 +00:00
sebastian.sellmair 444b88e438 [Gradle][KPM] Reference Configurations directly
Configurations are not registered/created lazily which makes
referencing NamedDomainObjectProvider over Configurations unnecessary
for now.
2021-12-07 21:38:58 +00:00
sebastian.sellmair 1fb723f844 [Gradle][KPM] Split fragment factories into composable entities
This compasability will ensure that external target authors
(AGP) are able to reuse most of KPM code whilst allowing a lot of
customizability.
2021-12-07 21:38:56 +00:00
sebastian.sellmair 6129d920c7 [Gradle][KPM] Implement IdeFragmentDependency(&Resolver)
This apis are expected to be called reflectively during
Gradle/Ide import of KPM projects.
2021-12-07 17:53:22 +00:00
Alexander Likhachev e9c8135dfa [Gradle] Add Gradle & task property to set compiler execution strategy
#KT-49299 Fixed
2021-10-22 09:57:54 +00:00
Sergey Igushkin a474e8a00b KT-49189: fix project(...) dependencies on MPP from pure-Java consumers
* Don't set the localToProject attribute anymore, as it prevents proper
  disambiguation if not set properly on all configurations, while all
  the intentionally-public configurations
  should already have the same value.

* Disambiguate o.j.k.platform.type Android vs JVM preferring JVM, as
  Android should have other attributes which make pure-Android consumers
  match the Android MPP variants.

* With Gradle 7.0+, set the attribute
  `org.gradle.api.attributes.java.TargetJvmEnvironment` on the JVM &
  Android elements configurations, which helps pure-Android consumers
  to match the Android, not JVM variants. This fixes KT-30961 for
  Gradle 7.0+ and AGP 7.0+

Issues: KT-49189, KT-30961
2021-10-21 10:17:52 +00:00
Yan Zhulanow 46b94a4757 Pill: Include certain modules into the BASE variant 2021-10-19 19:55:06 +03:00
Dmitry Savvinov 50050154d3 [gradle, mpp] Change how outputs of associated compilations are handled 2021-10-06 17:10:17 +03:00
Ilya Gorbunov ec5c06238d Split language and api version lifetimes, restore apiVersion 1.3 support
KT-49007
2021-09-29 21:46:53 +03:00