Commit Graph

123 Commits

Author SHA1 Message Date
Sergey Igushkin aebca19fd7 Fix resolving an MPP dependency in custom configurations (KT-32239)
In the `KotlinPlatformType` disambiguation rule, don't prefer `common`
when there's a `jvm` or an `androidJvm` variant, as this would conflict
with disambiguation rules created by the other plugins, such as Gradle's
`java` which will choose `org.gradle.usage=java-api` and lead to
ambiguity.

Issue #KT-32239 Fixed
2020-07-14 13:09:22 +04:00
Sergey Igushkin 1f5fa5eb7c Add back empty stub implementations of KotlinGradleSubplugin (KT-39809)
* If a KotlinGradleSubplugin implements
 KotlinCompilerPluginSupportPlugin, don't apply it as a legacy plugin

* Add the legacy KotlinGradleSubplugin implementations back so that
 when there's JAR hell with META-INF/services in the old artifacts
 pointing to the classes, loading the plugins with ServiceLoader (legacy
 implementation) from the new artifacts would not fail.

* There's a corner case for plugins not in kotlin-gradle-plugin
 If a newer and older version of such a subplugin is used with an older
 version of the Kotlin Gradle plugin, the latter will find the META-INF
 entries and will try to load the subplugins from the new version. With
 the original fix for KT-39809, this would result in silently ignored
 empty stub implementations.

 Given that the Kotlin Gradle plugin can now check if a subplugin
 supports the new API, it's OK to keep the old entries and make the
 stub implementations throw a build error when called, so that improper
 plugin versions are not ignored and are clearly reported.

 Note that this is only necessary for the subplugins not bundled in the
 kotlin-gradle-plugin module, as those will always be in sync with the
 Kotlin version.

Issue #KT-39809 Fixed
2020-06-30 12:51:51 +03:00
Sergey Igushkin f7b660b573 (minor) Fixes for review KT-MR-1290 2020-06-19 17:31:51 +03:00
Sergey Igushkin 96ed30a449 Introduce new API for Kotlin compiler support Gradle plugins
The old API was too specific for the Kotlin internal use cases and
leaked some abstractions due to the missing target-compilation project
model. One of such leaking abstractions was the Gradle tasks being
exposed to the subplugin, which required the tasks to instantiate
in order for the subplugin to apply. This violated task configuration
avoidance, so the old API could never work in compliance with TCA.

Introduce the new KotlinCompilerPluginSupportPlugin API that uses the
compilations instead of the tasks and is TCA-compliant.
2020-06-19 17:30:05 +03:00
Sergey Igushkin f4e4baa253 Add TaskProvider property for Kotlin compile tasks in compilations 2020-06-19 17:28:37 +03:00
Ilya Goncharov 9f45ef8df5 [Gradle, JS] Rename DEFAULT_GENERATE_EXTERNALS 2020-06-16 11:57:30 +03:00
Ilya Goncharov f285a31a5a [Gradle, JS] Make default generate kotlin externals as false 2020-06-16 11:57:30 +03:00
Ilya Goncharov 6316949e36 [Gradle, JS] Rename generateKotlinExternals on generateExternals 2020-06-16 11:57:30 +03:00
Vyacheslav Gerasimov b85b733e42 Build: Remove explicit legacy maven plugin application 2020-06-14 20:31:25 +03:00
Ilya Goncharov 890da492fb [Gradle, JS] Fix grammar in methods for JS import 2020-06-03 12:04:20 +03:00
Andrey Uskov 44f16eac2e Fixed resolution of dependencies on js libraries compiled in both mode
#KT-39213 Fixed
2020-06-02 12:52:13 +03:00
Ilya Goncharov c6e23ffa3b [Gradle, JS] Move npm declarations to KotlinDependencyHandler
KT-38331
2020-05-18 17:41:49 +03:00
Ilya Goncharov 830555aa8b [Gradle, JS] generateKotlinExternals option in dsl functions
KT-38331
2020-05-18 17:41:47 +03:00
Ilya Goncharov 52214e9093 [Gradle, JS] Add deprecation on npm with name only
#KT-38683 fixed
2020-05-18 17:41:46 +03:00
Ilya Goncharov efe70da594 [Gradle, JS] KotlinDependencyHandler extends from KotlinNpmDependencyHandler to provide these functions in interface
#KT-38683 fixed
2020-05-18 17:41:45 +03:00
Ilya Goncharov 4fb1e4614d [Gradle, JS] Remove deprecated npm dependency with org
#KT-38683 fixed
#KT-38994 fixed
2020-05-18 17:41:45 +03:00
Ilya Goncharov 2378d9ba0a [Gradle, JS] Remove copypaste on directoryNpmDependency
#KT-38683 fixed
2020-05-18 17:41:45 +03:00
Ilya Goncharov 28b0bfd40c [Gradle, JS] Remove possibility to declare npm dependency w/o version
#KT-38683 fixed
2020-05-18 17:41:45 +03:00
subroh0508 abf942b928 [Gradle, JS]Add optionalNpm methods 2020-05-07 10:21:51 +03:00
subroh0508 121897133e [Gradle, JS]Delete peerNpm method used by file argument 2020-05-07 10:21:51 +03:00
subroh0508 231324d119 [Gradle, JS]Add peerNpm method for peerDependencies to KotlinDependencyHandler 2020-05-07 10:21:51 +03:00
subroh0508 3e2feac4ea [Gradle, JS]Add devNpm method for devDependencies to KotlinDependencyHandler 2020-05-07 10:21:51 +03:00
Andrey Uskov 96887d6e9f Fixed import of JS source sets with Both mode
Added flag indicating that source set naming contract is violated. In this case disambiguition classifier is ignored in IDE.
#KT-37562 Fixed
2020-04-29 13:01:21 +03:00
Ilya Goncharov 9e4c1ee4e8 [Gradle, JS] Add explanation comment on compiler type in KotlinJsCompilerTypeHolder 2020-04-23 18:43:19 +03:00
Ilya Goncharov 9a3bf54d9d [Gradle, JS] Add compiler type values on extension type
#KT-38519 fixed
2020-04-23 18:09:49 +03:00
Ilya Goncharov ac11bc6710 [Gradle, JS] Remove copypaste in js compiler argument
#KT-38485 fixed
2020-04-22 16:34:14 +03:00
Ilya Goncharov 8e282e8aad [Gradle, JS] Change byArgument on byArgumentOrNull
#KT-38485 fixed
2020-04-22 16:33:41 +03:00
Dmitriy Dolovov 28cb9d4e13 Gradle: Remove redundant dependency on 'kotlin-native-utils' artifact 2020-04-01 11:46:49 +07:00
Ilya Goncharov f6ef96a34c [Gradle, JS] KT-37207 Leave constructor NpmDependency once 2020-03-30 10:46:34 +03:00
Ilya Goncharov 8cefa09528 [Gradle, JS] KT-37207 Add possibility to add npm dependency to directory 2020-03-30 10:46:33 +03:00
Ilya Goncharov 068d547375 [Gradle, JS] UpperCased KotlinJsCompilerType 2020-02-21 13:14:36 +03:00
Ilya Goncharov 9acd98071e [Gradle, JS] Divide KotlinJsCompilerAttribute 2020-02-21 13:14:36 +03:00
Ilya Goncharov 203ca018e5 [Gradle, JS] Rename public KotlinJsCompilerType 2020-02-20 19:32:34 +03:00
Ilya Goncharov 3d30598774 [Gradle, JS] Js compiler type in interface 2020-02-20 19:32:33 +03:00
Ilya Goncharov ecb89ad259 [Gradle, JS] Disambiguation classifier consider single platform plugin 2020-02-20 19:32:32 +03:00
Ilya Goncharov 185f7419d5 [Gradle, JS] Refactor with remove copypaste 2020-02-20 19:32:32 +03:00
Ilya Goncharov 1bebcd398e [Gradle, JS] Move JsCompilerType to Gradle Plugin API 2020-02-20 19:32:31 +03:00
Pavel Kirpichenkov a5d201e263 Exclude unsupported language versions from gradle options
^KT-36146 Fixed
2020-02-05 20:15:17 +03:00
Dmitriy Dolovov 9594b8db42 Rename Kotlin/Native modules for uniformity 2020-01-29 20:30:46 +07:00
Sergey Igushkin 970ee4539b Common klib support in the Kotlin Gradle plugin (KT-32677)
Refactor the Kotlin/Native compilations and tasks to support
Kotlin/Native-shared source sets compilation within the metadata target.

Provide the feature flag kotlin.mpp.enableCommonKlibs that enables
the following behavior:
* compilation of Kotlin/Native-shared source sets to a klib using
the Kotlin/Native compiler.
* compilation of common source sets (not just Kotlin/Native) into a
klib rather than *.kotlin_metadata

Issue #KT-32677 Fixed
2020-01-24 19:00:44 +03:00
Dmitriy Novozhilov 76b3964e96 Update testdata according to change compiler version to 1.4 2020-01-17 10:33:50 +03:00
Ilya Goncharov ad09492eb0 [Gradle, JS] Migrate on only name-version npm dependencies
#KT-32179 fixed
2019-11-26 16:05:17 +03:00
Alexander Udalov f248e4a2ee Update CLI test data and Gradle option descriptions 2019-10-25 19:26:20 +02:00
Ilya Matveev 9ab2b928bc Gradle, native: Add a DSL shortcut for iOS, watchsOS and tvOS
This patch adds a group of shortcut DSL methods allowing a user to
create simulator and device targets for Apple platforms along with
corresponding common source set(s) in one command. iOS, tvOS and
watchOS targets are supported.

Issue #KT-33856 fixed
2019-10-11 17:40:57 +03:00
Louis CAD 45ab07654e Use receiver syntax for lambda execution (#2508) 2019-10-08 14:34:55 +03:00
Sergey Igushkin 0456220f7a Fix issues found in KOTLIN-CR-3233 2019-09-25 15:46:05 +03:00
Sergey Igushkin c4d9c4cee4 Group associated compilations into modules with a single module name
As associated compilations will see internals of each other, they now
need to share the module name for the compiler to be able to correctly
generate calls to the internals.

Move `moduleName` to `KotlinCompilation`.

Group associate compilations into modules in a DSU-like way, use a
single module name for all of the compilations grouped into a module.
2019-09-25 15:46:04 +03:00
Sergey Igushkin 94fd5c2884 Implement source sets visibility inference via associate compilations
Add non-public API for the IDE to query additional visible source sets
for each source set.
Implement visibility inference via associate compilation links.
Implement visibility requirements for source sets and requirements
satisfaction checks in Gradle build.
2019-09-25 15:46:04 +03:00
Sergey Igushkin 8c1c687e92 Implement associate compilations, KT-34009
Partial implementation of the associate compilations proposal. A
compilation can now contain links to other compilation that it compiles
against. This links will replace ad-hoc inter-compilation dependencies.

Issue #KT-34009 Fixed
2019-09-25 15:46:04 +03:00
Sergey Igushkin 9f0c5675bd Introduce execution & test run API, KT-32679
* KotlinExecution
* KotlinExecutionSource
* KotlinTestRun
* Aggregating executions and execution sources
* KotlinTargetWithTests

* Add a `testableTargets` extension
* Make some Kotlin/Native targets testable (this requires
  having a separate preset type for them)
* Implement test runs encapsulating the tests for all
  existing testable targets by refactoring their
  TargetConfigurator classes

Issue #KT-32679 Fixed
2019-09-25 15:46:01 +03:00