diff --git a/MULTIPLATFORM.md b/MULTIPLATFORM.md
deleted file mode 100644
index 3c4adf45c65..00000000000
--- a/MULTIPLATFORM.md
+++ /dev/null
@@ -1,442 +0,0 @@
-# Kotlin/Native in multiplatform projects
-
-While Kotlin/Native can be used as the only Kotlin compiler in a project, it is pretty common to combine
-Kotlin/Native with other Kotlin backends, such as Kotlin/JVM (for JVM or Android targets) or Kotlin/JS
-(for web and Node.js applications). This document describes the recommended approaches and best practices for such scenarios.
-
-Kotlin as a language provides a notion of expect/actual declarations, and Gradle in turn
-augments it with the notion of multiplatform projects (aka MPP). These two, combined together, provide a flexible
-standardized [mechanism of multiplatform development](https://kotlinlang.org/docs/reference/multiplatform.html)
-across various Kotlin flavors.
-
-Code, common amongst multiple platforms can be placed in common modules, while platform-specific code can be placed
-into platform-specific modules, and expect/actual declarations can bind them together in a developer-friendly way.
-
-Below you will find a step-by-step tutorial for creating a Kotlin multiplatform application for Android and iOS.
-
-## Creating multiplatform Android/iOS application with Kotlin
-
-To create an MPP application you have to start with clear understanding of which parts of an application are common for different
-targets, and which are specific, and then organize the module structure accordingly. For shared Kotlin code the common
-ground consists of Kotlin's standard library, which does include basic data structures and computational primitives,
-along with some expected classes with platform-specific implementation. Most frequently, such code consists of a GUI,
-input-output, cryptography, and other APIs, available on the particular platform.
-
-In this tutorial, the multiplatform application will include three parts:
-
- * An **Android application** represented by a separate Android Studio project written in Kotlin.
- * An **iOS application** represented by a separate Xcode project, written in Swift.
- * A **multiplatform library** containing the business logic of the application and used by both Android and iOS applications.
- This library can contain both platform-dependent and platform-independent code and is compiled into a `jar`-library
- for Android and in a `Framework` for iOS by Gradle.
-
-So, the multiplatform library will include three subprojects:
-
- * `common` - contains common logic for both applications
- * `ios` - contains iOS-specific code
- * `android` - contains Android-specific code
-
-### 1. Preparing a workspace
-
-Let's represent the structure described above as a directory tree. Assume that our multiplatform library is intended to
-generate different greetings on different platforms. Create the following directory structure:
-
- application/
- ├── androidApp/
- ├── iosApp/
- └── greeting/
- ├── common/
- ├── android/
- └── ios/
-
-As said above, [Gradle](https://gradle.org/) is the main build system for Kotlin so our project will use it.
-
-To install Gradle refer to [these instructions](https://gradle.org/install/). Despite being able to use the local
-Gradle installation for building a project, it's recommended to use the
-[Gradle wrapper](https://docs.gradle.org/current/userguide/gradle_wrapper.html) instead. To create the wrapper, install
-Gradle as described above, and execute `gradle wrapper` in the root directory of the project. After that you can
-use `./gradlew` to run the build instead of using your local Gradle installation.
-
-Once the wrapper is created we need to describe the project structure in Gradle terms. To do this, create
-a `settings.gradle` file in the root directory of the project and put the following snippet into it:
-
-
-
-```groovy
-include ':greeting'
-include ':greeting:common'
-include ':greeting:android'
-include ':greeting:ios'
-```
-
-
-
-Here we declare all subprojects for our `greeting` multiplatform library. All other multiplatform libraries included
-in the project also must be declared here.
-
-Note that both iOS and Android applications are not included in the root Gradle build. They are represented by
-independent builds which are managed by specific IDEs (Android Studio and Xcode). Such an approach makes working with
-these builds easier from the IDEs.
-
-As for an IDE for other parts of the project, [IntelliJ IDEA](https://www.jetbrains.com/idea/) is recommended.
-
-> Note: Kotlin/Native is not supported by IntelliJ IDEA so the only IDE to develop Kotlin/Native sub-projects is
-[CLion](https://www.jetbrains.com/clion/). But at the moment CLion has no Gradle integration. As a workaround you can
-create a CLion Cmake project from a Kotlin/Native Gradle one. Just run `./gradlew generateCMake` for this project. It
-will generate all the necessary files which are required. See
-[this](https://blog.jetbrains.com/kotlin/2017/11/kotlinnative-ide-support-preview/) blog post to learn more about
-Kotlin/Native support in CLion.
-
-For the final step create the empty `build.gradle` files in the root directory of the project and in all subprojects which are
-included in `settings.gradle`. After performing all these actions the project structure will be the following (files
-generated by the Gradle wrapper are not shown):
-
- application/
- ├── androidApp/
- ├── iosApp/
- ├── greeting/
- │ ├── android/
- │ │ └── build.gradle
- │ ├── common/
- │ │ └── build.gradle
- │ ├── ios/
- │ | └── build.gradle
- | └── build.gradle
- ├── build.gradle
- └── settings.gradle
-
-Now we have the basic structure of the project and can proceed to implement the multiplatform library.
-
-### 2. Multiplatform library
-
-We need to add buildscript dependencies to be able to use the Kotlin plugins for Gradle in our build. Open
-the `build.gradle` in the `greeting` directory and put the following snippet into it:
-
-
-
-```groovy
-// Set up a buildscript dependency on the Kotlin plugin.
-buildscript {
- // Specify a Kotlin version you need.
- ext.kotlin_version = '1.2.41'
-
- repositories {
- jcenter()
- maven { url "https://dl.bintray.com/jetbrains/kotlin-native-dependencies" }
- }
-
- // Specify all the plugins used as dependencies
- dependencies {
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
- classpath "org.jetbrains.kotlin:kotlin-native-gradle-plugin:0.7"
-
- }
-}
-
-// Set up compilation dependency repositories for all projects.
-subprojects {
- repositories {
- jcenter()
- }
-}
-```
-
-
-
-
-Now all subprojects of the library can use Kotlin plugins.
-
-#### 2.1 Common subproject
-
-The `common` subproject contains platform-independent code. To build it, add the following snippet in `common/build.gradle`:
-
-
-
-```groovy
-apply plugin: 'kotlin-platform-common'
-
-// Specify a group and a version of the library to access it in Android Studio.
-// By default the project directory name is used as an artifact name thus the full dependency
-// description will be 'org.greeting:common:1.0'
-group = 'org.greeting'
-version = 1.0
-
-dependencies {
- // Set up a compilation dependency on common Kotlin stdlib
- implementation "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version"
-}
-```
-
-
-
-Now we can write some logic available for all platforms. Create `common/src/main/kotlin/common.kt` and add some
-functionality into it:
-
-
-
-```kotlin
-// greeting/common/src/main/kotlin/common.kt
-package org.greeting
-
-expect class Platform() {
- val platform: String
-}
-
-class Greeting {
- fun greeting(): String = "Hello, ${Platform().platform}"
-}
-```
-
-
-
-Here we create a simple class using the `expect`/`actual` paradigm. Find details about platform-specific declarations
-[here](https://kotlinlang.org/docs/reference/multiplatform.html#platform-specific-declarations).
-
-#### 2.2 Android subproject
-
-The `android` subproject contains platform-dependent implementations of the `expect`-declarations we've created in the
-`common` project. We compile it into a Java library which an Android Studio project can depend on. The content
-of the `android/build.gradle` will be the following:
-
-
-
-```groovy
-apply plugin: 'kotlin-platform-jvm'
-
-// Specify a group and a version of the library to access it in Android Studio.
-// By default the project directory name is used as an artifact name thus the full dependency
-// description will be 'org.greeting:android:1.0'
-group = 'org.greeting'
-version = 1.0
-
-dependencies {
- // Specify Kotlin/JVM stdlib dependency.
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
-
- // Specify dependency on a common project for Kotlin multiplatform build.
- expectedBy project(':greeting:common')
-}
-```
-
-
-
-As mentioned above this subproject should include actual implementations of the common project's `expect`-declarations.
-Let's write an Android-specific method:
-
-
-
-```kotlin
-// greeting/android/src/main/kotlin/android.kt
-package org.greeting
-
-actual class Platform actual constructor() {
- actual val platform: String = "Android"
-}
-```
-
-
-
-#### 2.3 iOS subproject
-
-This project is compiled into an Objective-C framework using the Kotlin/Native compiler. To do this, declare a framework in
-`ios/build.gradle` and add an `expectedBy` dependency in the same manner as was done in the Android project:
-
-
-
-```groovy
-apply plugin: 'konan'
-
-// Specify targets to build the framework: iOS and iOS simulator
-konan.targets = ['ios_arm64', 'ios_x64']
-
-konanArtifacts {
- // Declare building into a framework.
- framework('Greeting') {
- // The multiplatform support is disabled by default.
- enableMultiplatform true
- }
-}
-
-dependencies {
- // Specify dependency on a common project for Kotlin multiplatform build
- expectedBy project(':greeting:common')
-}
-```
-
-
-
-As well as `android`, this project contains platform-dependent implementations of `expect`-declarations:
-
-
-
-```kotlin
-// greeting/ios/src/main/kotlin/ios.kt
-package org.greeting
-
-actual class Platform actual constructor() {
- actual val platform: String = "iOS"
-}
-```
-
-
-
-
-### 3. Android application
-
-Now we can create an Android application which will use the library we implemented in the previous step. Open Android
-Studio and create a new project in the `androidApp` directory. Android Studio will generate all the necessary files and
-directories.
-
-Kotlin/Native requires Gradle 4.7 or higher so you need to make sure that the AS project uses the correct
-Gradle version. To do this, open `androidApp/gradle/gradle-wrapper.properties` and check the `distributionUrl`
-property. Upgrade the wrapper if necessary
-(see [Gradle documentation](https://docs.gradle.org/current/userguide/gradle_wrapper.html#sec:upgrading_wrapper)).
-
-Now we only need to add a dependency on our library. There are 2 actions we need to take:
-
-1. Add dependency on the library. To do this just open `androidApp/app/build.gradle` and add the following snippet in
-the `dependencies` script block:
-
- ```
- implementation 'org.greeting:android:1.0'
- ```
-2. Include `greeting` build in the Android Studio project as a part of
-[composite build](https://docs.gradle.org/current/userguide/composite_builds.html). To do this, add the
-following line in `androidApp/settings.gradle`:
-
- ```
- includeBuild '../'
- ```
- Now dependencies of the application can be resolved in artifacts built by `greeting`. You also may publish the
- Android part of `greeting` into some Maven repo and get it from there. In this case you don't need to set up
- the composite build.
-
-> Note: Android Studio may fail to resolve declarations from the library added unless it's built. If you face such a
-> problem, build the library by executing `./gradlew greeting:android:jar` in the root directory of the project.
-
-> Alternatively you can add the multiplatform library subprojects right into the Android Studio one instead of
-> creating a composite build. To do this you need to declare them along with their directories in
-> `androidApp/settings.gradle`:
->
->
->
->```groovy
->include ':greeting'
->include ':greeting:common'
->include ':greeting:android'
->
->project(':greeting').projectDir = file('../greeting')
->project(':greeting:common').projectDir = file('../greeting/common')
->project(':greeting:android').projectDir = file('../greeting/android')
->```
->
->
->
-> Now you can declare dependencies directly on projects instead of using maven-like coordinates:
->
->
->
->```groovy
->implementation project(':greeting:android')
->```
->
->
-
-After these steps we can access our library as we would with any other Kotlin code:
-
-
-
-```kotlin
-import org.greeting.*
-
-/* ... */
-
-fun foo() {
- println(Greeting().greeting())
-}
-```
-
-
-
-
-### 4. iOS application
-
-As already mentioned above the multiplatform library can also be used in iOS applications. The general approach here is the same as
-in the case of the Android application: we create a separate Xcode project and add the library as a framework. But we need
-to make some additional steps here.
-
-Unlike Android Studio Xcode doesn't use Gradle, so we cannot just add the library as a dependency. Instead we need to
-create a new framework in the Xcode project and then replace its default build phases with a custom one which delegates
-building the framework to Gradle.
-
-To do this, perform the following steps:
-
-1. Create a new Xcode project in the root directory of your project (the `application` directory in the
-[section 1](#1-preparing-a-workspace)). Name it `iosApp` so Xcode will create the project in the directory we created
-in the section 1.
-2. Add a new framework in the project. Go to `File` -> `New` -> `Target` -> `Cocoa Touch Framework`. Specify the same
-framework name as is in `greeting/ios/build.gradle`: `Greeting`.
-3. Choose the new framework in the `Project Navigator` and open the `Build Settings` tab. Here we need to add a new build
-setting specifying what Gradle task will be executed to build the framework for one or another platform. Fortunately,
-Xcode allows us to set different values for the same build setting depending on the platform. Create a new build
-setting in the `User-defined` section and name it `KONAN_TASK`. Then specify the following values for it for different
-platforms (for both `Debug` and `Release` modes):
-
- |Platform |Value |
- |-----------------------|---------------------------------------|
- |`Any iOS simulator SDK`|`compileKonanIos_x64` |
- |`Any iOS SDK` |`compileKonanIos_arm64`|
-
- Replace `` with the name you specified in the library's `ios/build.gradle`. Use camel case, e.g.
- for our `greeting` library these tasks will be named `compileKonanGreetingIos_x64` and
- `compileKonanGreetingIos_arm64`.
-4. Add one more build setting for the framework to manage optimizations performed by the Kotlin/Native compiler. Name
-it `KONAN_ENABLE_OPTIMIZATIONS ` and set its value to `YES` for the `Release` mode and to `NO` for the `Debug` mode.
-5. Ensure that the framework is still selected in the `Project Navigator` and open the `Build phases` tab. Remove all
-the default phases except `Target Dependencies`.
-6. Add a new `Run Script` build phase and put the following code into the script field:
-
- ```
- "$SRCROOT/../gradlew" -p "$SRCROOT/../greeting/ios" "$KONAN_TASK" \
- -Pkonan.configuration.build.dir="$CONFIGURATION_BUILD_DIR" \
- -Pkonan.debugging.symbols="$DEBUGGING_SYMBOLS" \
- -Pkonan.optimizations.enable="$KONAN_ENABLE_OPTIMIZATIONS"
- ```
-
- This script executes the Gradle build to compile the multiplatform library into a framework. Let's examine this
- command in more detail.
- * `"$SRCROOT/../gradlew"` - here we invoke the Gradle wrapper located in the root directory of the project. If you
- use a local Gradle installation you need to invoke it instead of the wrapper.
- * `-p "$SRCROOT/../greeting/ios"` - specify a path to the Gradle subproject containing the framework.
- * `"$KONAN_TASK"` - specify a Gradle task to execute. The build setting created above is used here.
- * `-Pkonan.configuration.build.dir="$CONFIGURATION_BUILD_DIR"` - specify a directory provided by Xcode as an output one.
- * `-Pkonan.debugging.symbols="$DEBUGGING_SYMBOLS"` - allow Xcode to enable debugging symbols generation.
- * `-Pkonan.optimizations.enable="$KONAN_ENABLE_OPTIMIZATIONS"` - disable/enable optimizations. The build setting
- created above is used here.
-
-7. Add Kotlin sources into the framework: run `File` -> `Add files to "iosApp"...` and choose a directory with
-Kotlin sources (`greeting/ios/src` in this sample). Choose the framework created as a target to add these sources to.
-Do this for the common code of the library too.
-
-Now the framework is added and all the Kotlin API are available from Swift code (note that you need to build the
-framework in order to get code completion). Let's print our greeting:
-
-
-
-```swift
-import Greeting
-
-/* ... */
-
-func foo() {
- print(GreetingGreeting().greeting())
-}
-```
-
-
-
-### Sample
-
-A sample implementation which follows this documentation can be found [here](https://github.com/JetBrains/kotlin-mpp-example).
-You may also look at the [calculator sample](https://github.com/JetBrains/kotlin-native/tree/master/samples/calculator). It has a simpler structure (particularly both Android app
-and Kotlin/Native library are combined in a single Gradle build) but also uses the multiplatform support provided by Kotlin.
diff --git a/_nav_reference.yml b/_nav_reference.yml
index 8027fcc65e9..4312fcf765b 100644
--- a/_nav_reference.yml
+++ b/_nav_reference.yml
@@ -14,10 +14,6 @@
url: platform_libs.html
title: "Platform Libraries"
-- md: MULTIPLATFORM.md
- url: multiplatform.html
- title: "Multiplatform Projects"
-
- md: INTEROP.md
url: c_interop.html
title: "C Interop"
diff --git a/build.gradle b/build.gradle
index c89ad245af2..6425b489681 100644
--- a/build.gradle
+++ b/build.gradle
@@ -167,7 +167,7 @@ task gradlePluginJar {
dependsOn gradle.includedBuild('kotlin-native-gradle-plugin').task(':shadowJar')
}
-task gradlePluginCheck() {
+task gradlePluginCheck {
dependsOn gradle.includedBuild('kotlin-native-gradle-plugin').task(':check')
}
diff --git a/tools/kotlin-native-gradle-plugin/build.gradle b/tools/kotlin-native-gradle-plugin/build.gradle
index 2450c2793a5..9426ce77a8e 100644
--- a/tools/kotlin-native-gradle-plugin/build.gradle
+++ b/tools/kotlin-native-gradle-plugin/build.gradle
@@ -15,6 +15,8 @@
*/
import org.jetbrains.kotlin.konan.KonanVersion
+import org.jetbrains.kotlin.konan.MetaVersion
+import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
/**
* One may use bintrayUser/bintrayKey project properties or BINTRAY_USER/BINTRAY_KEY environment variables to upload
@@ -37,7 +39,7 @@ buildscript {
dependencies {
classpath "org.jetbrains.kotlin:kotlin-native-shared:$konanVersion"
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
- classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.2'
+ classpath 'com.github.jengelman.gradle.plugins:shadow:4.0.0'
}
}
@@ -53,13 +55,21 @@ apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.johnrengelman.shadow'
group = 'org.jetbrains.kotlin'
-version = KonanVersion.Companion.CURRENT.toString()
+
+if (KonanVersion.Companion.CURRENT.meta == MetaVersion.RELEASE) {
+ version = kotlinVersion
+} else {
+ version = "$kotlinVersion-native-${KonanVersion.Companion.CURRENT.toString()}"
+}
repositories {
mavenCentral()
maven {
url buildKotlinCompilerRepo
}
+ maven {
+ url kotlinCompilerRepo
+ }
}
configurations {
@@ -74,33 +84,53 @@ configurations {
dependencies {
shadow "org.jetbrains.kotlin:kotlin-stdlib:0.9.1-native"
- shadow "org.jetbrains.kotlin:kotlin-gradle-plugin:0.9.1-native"
+ // Bundle the serialization plugin into the final jar because we shade classes of the kotlin plugin
+ // while the serialization one extends them.
+ bundleDependencies "org.jetbrains.kotlin:kotlin-serialization:$kotlinVersion"
+ bundleDependencies "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
+ bundleDependencies "org.jetbrains.kotlin:kotlin-gradle-plugin-api:$kotlinVersion"
bundleDependencies "org.jetbrains.kotlin:kotlin-native-shared:$konanVersion"
testImplementation 'junit:junit:4.12'
- testImplementation "org.jetbrains.kotlin:kotlin-test:1.3.0-rc-116"
- testImplementation "org.jetbrains.kotlin:kotlin-test-junit:1.3.0-rc-116"
+ testImplementation "org.jetbrains.kotlin:kotlin-test:$buildKotlinVersion"
+ testImplementation "org.jetbrains.kotlin:kotlin-test-junit:$buildKotlinVersion"
testImplementation "org.tools4j:tools4j-spockito:1.6"
testImplementation('org.spockframework:spock-core:1.1-groovy-2.4') {
exclude module: 'groovy-all'
}
}
-jar {
- appendix = "no-shared"
-}
-
-shadowJar {
+task jar(type: ShadowJar, overwrite: true) {
+ from sourceSets.main.output
configurations = [project.configurations.bundleDependencies]
classifier = null
+ relocate('org.jetbrains.kotlinx', 'shadow.org.jetbrains.kotlinx')
+ relocate('org.jetbrains.kotlin.compilerRunner', 'shadow.org.jetbrains.kotlin.compilerRunner')
+ relocate('org.jetbrains.kotlin.gradle', 'shadow.org.jetbrains.kotlin.gradle') {
+ exclude('org.jetbrains.kotlin.gradle.plugin.experimental.**')
+ exclude('org.jetbrains.kotlin.gradle.plugin.konan.**')
+ exclude('org.jetbrains.kotlin.gradle.plugin.model.**')
+ }
+
+ exclude {
+ def path = it.relativePath.pathString
+ if (path.startsWith("META-INF/gradle-plugins") && path.endsWith(".properties")) {
+ def fileName = it.name
+ def id = fileName.take(fileName.lastIndexOf('.'))
+ return project.gradlePlugin.plugins.findByName(id) == null
+ }
+ return false
+ }
+ exclude('META-INF/services/org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar')
+ exclude('META-INF/services/org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin')
}
assemble.dependsOn shadowJar
pluginUnderTestMetadata {
- dependsOn shadowJar
- pluginClasspath = files(shadowJar.archivePath) + configurations.shadow
+ dependsOn jar
+ pluginClasspath = files(jar.archivePath) + configurations.shadow
}
test {
@@ -164,7 +194,7 @@ gradlePlugin {
plugins {
create('konan') {
id = 'konan'
- implementationClass = 'org.jetbrains.kotlin.gradle.plugin.KonanPlugin'
+ implementationClass = 'org.jetbrains.kotlin.gradle.plugin.konan.KonanPlugin'
}
create('kotlin-native') {
id = 'kotlin-native'
@@ -174,10 +204,15 @@ gradlePlugin {
id = 'kotlin-platform-native'
implementationClass = 'org.jetbrains.kotlin.gradle.plugin.experimental.plugins.KotlinPlatformNativePlugin'
}
+ // We bundle a shaded version of kotlinx-serialization plugin
+ create('kotlinx-serialization-native') {
+ id = 'kotlinx-serialization-native'
+ implementationClass = 'shadow.org.jetbrains.kotlinx.serialization.gradle.SerializationGradleSubplugin'
+ }
create('org.jetbrains.kotlin.konan') {
id = 'org.jetbrains.kotlin.konan'
- implementationClass = 'org.jetbrains.kotlin.gradle.plugin.KonanPlugin'
+ implementationClass = 'org.jetbrains.kotlin.gradle.plugin.konan.KonanPlugin'
}
create('org.jetbrains.kotlin.native') {
id = 'org.jetbrains.kotlin.native'
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/internal/AbstractKotlinNativeComponent.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/internal/AbstractKotlinNativeComponent.kt
index fc83c894919..08d83250adf 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/internal/AbstractKotlinNativeComponent.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/internal/AbstractKotlinNativeComponent.kt
@@ -38,7 +38,6 @@ import org.jetbrains.kotlin.gradle.plugin.experimental.TargetSettings
import org.jetbrains.kotlin.gradle.plugin.experimental.sourcesets.KotlinNativeSourceSetImpl
import org.jetbrains.kotlin.konan.target.HostManager
import org.jetbrains.kotlin.konan.target.KonanTarget
-import org.jetbrains.kotlin.utils.addToStdlib.assertedCast
import javax.inject.Inject
class TargetSettingsImpl(val konanTarget: KonanTarget) : Named, TargetSettings {
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/internal/cinterop/CInteropSettingsImpl.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/internal/cinterop/CInteropSettingsImpl.kt
index 67cdd8b2d16..d4e7a5b7658 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/internal/cinterop/CInteropSettingsImpl.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/internal/cinterop/CInteropSettingsImpl.kt
@@ -32,7 +32,6 @@ import org.jetbrains.kotlin.gradle.plugin.experimental.CInteropSettings
import org.jetbrains.kotlin.gradle.plugin.experimental.CInteropSettings.IncludeDirectories
import org.jetbrains.kotlin.gradle.plugin.experimental.KotlinNativeBinary
import org.jetbrains.kotlin.gradle.plugin.experimental.internal.KotlinNativeBuildType
-import org.jetbrains.kotlin.gradle.plugin.experimental.internal.KotlinNativeUsage
import org.jetbrains.kotlin.gradle.plugin.experimental.internal.getGradleOSFamily
import org.jetbrains.kotlin.konan.target.KonanTarget
import java.io.File
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/plugins/KotlinNativeBasePlugin.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/plugins/KotlinNativeBasePlugin.kt
index a3348dcf53a..73ccd4a674e 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/plugins/KotlinNativeBasePlugin.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/plugins/KotlinNativeBasePlugin.kt
@@ -20,7 +20,6 @@ import org.gradle.api.DefaultTask
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.Task
-import org.gradle.api.attributes.AttributeCompatibilityRule
import org.gradle.api.attributes.Usage
import org.gradle.api.file.RegularFileProperty
import org.gradle.api.internal.FeaturePreviews
@@ -35,12 +34,20 @@ import org.gradle.language.plugins.NativeBasePlugin
import org.gradle.nativeplatform.test.tasks.RunTestExecutable
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
-import org.jetbrains.kotlin.gradle.plugin.*
-import org.jetbrains.kotlin.gradle.plugin.experimental.*
+import org.jetbrains.kotlin.gradle.plugin.PLUGIN_CLASSPATH_CONFIGURATION_NAME
+import org.jetbrains.kotlin.gradle.plugin.SubpluginEnvironment
import org.jetbrains.kotlin.gradle.plugin.experimental.CInteropSettings
+import org.jetbrains.kotlin.gradle.plugin.experimental.KotlinNativeComponent
+import org.jetbrains.kotlin.gradle.plugin.experimental.KotlinNativeLibrary
+import org.jetbrains.kotlin.gradle.plugin.experimental.KotlinNativeTestComponent
import org.jetbrains.kotlin.gradle.plugin.experimental.internal.*
import org.jetbrains.kotlin.gradle.plugin.experimental.tasks.CInteropTask
import org.jetbrains.kotlin.gradle.plugin.experimental.tasks.KotlinNativeCompile
+import org.jetbrains.kotlin.gradle.plugin.konan.KonanPlugin
+import org.jetbrains.kotlin.gradle.plugin.konan.hasProperty
+import org.jetbrains.kotlin.gradle.plugin.konan.konanCompilerDownloadDir
+import org.jetbrains.kotlin.gradle.plugin.konan.setProperty
+import org.jetbrains.kotlin.gradle.plugin.loadKotlinVersionFromResource
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanCompilerDownloadTask
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
import org.jetbrains.kotlin.konan.target.HostManager
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/plugins/KotlinPlatformNativePlugin.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/plugins/KotlinPlatformNativePlugin.kt
index a1234838674..5a1b9a8301d 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/plugins/KotlinPlatformNativePlugin.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/plugins/KotlinPlatformNativePlugin.kt
@@ -16,8 +16,8 @@
package org.jetbrains.kotlin.gradle.plugin.experimental.plugins
+import org.gradle.api.Named
import org.gradle.api.Project
-import org.gradle.api.tasks.SourceSet
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformImplementationPluginBase
class KotlinPlatformNativePlugin : KotlinPlatformImplementationPluginBase("native") {
@@ -29,9 +29,9 @@ class KotlinPlatformNativePlugin : KotlinPlatformImplementationPluginBase("nativ
super.apply(project)
}
- override fun addCommonSourceSetToPlatformSourceSet(commonSourceSet: SourceSet, platformProject: Project) {
+ override fun addCommonSourceSetToPlatformSourceSet(commonSourceSet: Named, platformProject: Project) {
val platformSourceSet = platformProject.kotlinNativeSourceSets.findByName(commonSourceSet.name)
- val commonSources = commonSourceSet.kotlin
+ val commonSources = getKotlinSourceDirectorySetSafe(commonSourceSet)
if (platformSourceSet != null && commonSources != null) {
platformSourceSet.commonSources.from(commonSources)
} else {
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/tasks/CInteropTask.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/tasks/CInteropTask.kt
index e7e0383d6d1..01384720bb2 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/tasks/CInteropTask.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/tasks/CInteropTask.kt
@@ -20,8 +20,8 @@ import org.gradle.api.DefaultTask
import org.gradle.api.artifacts.Configuration
import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.*
-import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.experimental.internal.cinterop.CInteropSettingsImpl
+import org.jetbrains.kotlin.gradle.plugin.konan.*
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
import org.jetbrains.kotlin.konan.target.KonanTarget
import java.io.File
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/tasks/KotlinNativeCompile.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/tasks/KotlinNativeCompile.kt
index 5ffd633e757..83c87b0b208 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/tasks/KotlinNativeCompile.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/tasks/KotlinNativeCompile.kt
@@ -26,8 +26,8 @@ import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.TaskAction
import org.gradle.api.tasks.compile.AbstractCompile
-import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.experimental.internal.AbstractKotlinNativeBinary
+import org.jetbrains.kotlin.gradle.plugin.konan.*
import org.jetbrains.kotlin.gradle.tasks.CompilerPluginOptions
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
import org.jetbrains.kotlin.konan.target.CompilerOutputKind.*
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/EnvironmentVariables.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/EnvironmentVariables.kt
similarity index 97%
rename from tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/EnvironmentVariables.kt
rename to tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/EnvironmentVariables.kt
index a2a3d539361..bc207636532 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/EnvironmentVariables.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/EnvironmentVariables.kt
@@ -14,10 +14,10 @@
* limitations under the License.
*/
-package org.jetbrains.kotlin.gradle.plugin
+package org.jetbrains.kotlin.gradle.plugin.konan
import org.gradle.api.Project
-import org.jetbrains.kotlin.gradle.plugin.KonanPlugin.ProjectProperty
+import org.jetbrains.kotlin.gradle.plugin.konan.KonanPlugin.ProjectProperty
import java.io.File
/**
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanArtifactContainer.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanArtifactContainer.kt
similarity index 99%
rename from tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanArtifactContainer.kt
rename to tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanArtifactContainer.kt
index 24a1230cd19..4bea2cfab81 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanArtifactContainer.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanArtifactContainer.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.jetbrains.kotlin.gradle.plugin
+package org.jetbrains.kotlin.gradle.plugin.konan
import groovy.lang.Closure
import org.gradle.api.Action
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanBuildingConfig.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanBuildingConfig.kt
similarity index 98%
rename from tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanBuildingConfig.kt
rename to tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanBuildingConfig.kt
index cf3b03b5340..698f1c61b97 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanBuildingConfig.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanBuildingConfig.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.jetbrains.kotlin.gradle.plugin
+package org.jetbrains.kotlin.gradle.plugin.konan
import groovy.lang.Closure
import org.gradle.api.Action
@@ -28,7 +28,6 @@ import org.gradle.api.publish.maven.MavenPom
import org.gradle.internal.reflect.Instantiator
import org.gradle.util.ConfigureUtil
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanBuildingTask
-import org.jetbrains.kotlin.konan.target.HostManager
import org.jetbrains.kotlin.konan.target.KonanTarget
import java.io.File
@@ -109,7 +108,7 @@ abstract class KonanBuildingConfig(private val name_: Stri
protected fun determineOutputPlacement(target: KonanTarget): OutputPlacement {
val configurationBuildDir = project.environmentVariables.configurationBuildDir
return if (configurationBuildDir != null) {
- OutputPlacement(configurationBuildDir, name)
+ OutputPlacement(configurationBuildDir, name)
} else {
OutputPlacement(defaultBaseDir.targetSubdir(target), name)
}
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanCompileConfig.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanCompileConfig.kt
similarity index 98%
rename from tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanCompileConfig.kt
rename to tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanCompileConfig.kt
index c284c5368c4..812ba61a27f 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanCompileConfig.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanCompileConfig.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.jetbrains.kotlin.gradle.plugin
+package org.jetbrains.kotlin.gradle.plugin.konan
import groovy.lang.Closure
import org.gradle.api.Task
@@ -24,7 +24,7 @@ import org.gradle.internal.reflect.Instantiator
import org.jetbrains.kotlin.gradle.plugin.tasks.*
import org.jetbrains.kotlin.konan.target.Family
import org.jetbrains.kotlin.konan.target.KonanTarget
-import org.jetbrains.kotlin.konan.target.KonanTarget.*
+import org.jetbrains.kotlin.konan.target.KonanTarget.WASM32
import java.io.File
abstract class KonanCompileConfig(name: String,
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanInteropLibrary.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanInteropLibrary.kt
similarity index 95%
rename from tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanInteropLibrary.kt
rename to tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanInteropLibrary.kt
index bbe0e83bee3..7801e828a40 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanInteropLibrary.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanInteropLibrary.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.jetbrains.kotlin.gradle.plugin
+package org.jetbrains.kotlin.gradle.plugin.konan
import groovy.lang.Closure
import org.gradle.api.Action
@@ -23,9 +23,8 @@ import org.gradle.api.file.FileCollection
import org.gradle.api.internal.project.ProjectInternal
import org.gradle.internal.reflect.Instantiator
import org.gradle.util.ConfigureUtil
-import org.jetbrains.kotlin.gradle.plugin.KonanInteropSpec.IncludeDirectoriesSpec
+import org.jetbrains.kotlin.gradle.plugin.konan.KonanInteropSpec.IncludeDirectoriesSpec
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanInteropTask
-import org.jetbrains.kotlin.konan.target.KonanTarget
import java.io.File
open class KonanInteropLibrary(name: String,
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanLibrariesSpec.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanLibrariesSpec.kt
similarity index 99%
rename from tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanLibrariesSpec.kt
rename to tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanLibrariesSpec.kt
index 8206b6c129f..ca22cb82ac0 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanLibrariesSpec.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanLibrariesSpec.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.jetbrains.kotlin.gradle.plugin
+package org.jetbrains.kotlin.gradle.plugin.konan
import org.gradle.api.InvalidUserDataException
import org.gradle.api.Project
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanPlugin.kt
similarity index 98%
rename from tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt
rename to tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanPlugin.kt
index 6cb06d72e33..bd580cb9c2c 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanPlugin.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.jetbrains.kotlin.gradle.plugin
+package org.jetbrains.kotlin.gradle.plugin.konan
import org.gradle.api.*
import org.gradle.api.component.ComponentWithVariants
@@ -31,7 +31,7 @@ import org.gradle.api.publish.maven.internal.publication.MavenPublicationInterna
import org.gradle.language.cpp.internal.NativeVariantIdentity
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
import org.gradle.util.GradleVersion
-import org.jetbrains.kotlin.gradle.plugin.KonanPlugin.Companion.COMPILE_ALL_TASK_NAME
+import org.jetbrains.kotlin.gradle.plugin.konan.KonanPlugin.Companion.COMPILE_ALL_TASK_NAME
import org.jetbrains.kotlin.gradle.plugin.model.KonanToolingModelBuilder
import org.jetbrains.kotlin.gradle.plugin.tasks.*
import org.jetbrains.kotlin.konan.KonanVersion
@@ -297,7 +297,7 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR
private fun checkGradleVersion() = GradleVersion.current().let { current ->
check(current >= REQUIRED_GRADLE_VERSION) {
"Kotlin/Native Gradle plugin is incompatible with this version of Gradle.\n" +
- "The minimal required version is ${REQUIRED_GRADLE_VERSION}\n" +
+ "The minimal required version is $REQUIRED_GRADLE_VERSION\n" +
"Current version is ${current}"
}
}
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanSpecs.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanSpecs.kt
similarity index 97%
rename from tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanSpecs.kt
rename to tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanSpecs.kt
index f524f46a03e..8c5b2b696f4 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanSpecs.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanSpecs.kt
@@ -14,11 +14,10 @@
* limitations under the License.
*/
-package org.jetbrains.kotlin.gradle.plugin
+package org.jetbrains.kotlin.gradle.plugin.konan
import groovy.lang.Closure
import org.gradle.api.Action
-import org.gradle.api.Project
import org.gradle.api.file.FileCollection
interface KonanArtifactSpec {
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanToolRunner.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanToolRunner.kt
similarity index 99%
rename from tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanToolRunner.kt
rename to tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanToolRunner.kt
index e1aaaa9056e..89469a3788f 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanToolRunner.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanToolRunner.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.jetbrains.kotlin.gradle.plugin
+package org.jetbrains.kotlin.gradle.plugin.konan
import org.gradle.api.Named
import org.gradle.api.Project
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinNativePlatformPlugin.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KotlinNativePlatformPlugin.kt
similarity index 92%
rename from tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinNativePlatformPlugin.kt
rename to tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KotlinNativePlatformPlugin.kt
index 031ff04b678..1592d3d6df5 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinNativePlatformPlugin.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KotlinNativePlatformPlugin.kt
@@ -1,10 +1,10 @@
-package org.jetbrains.kotlin.gradle.plugin
+package org.jetbrains.kotlin.gradle.plugin.konan
-import org.gradle.api.GradleException
import org.gradle.api.Named
import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration
+import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformImplementationPluginBase
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanCompileTask
import javax.inject.Inject
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanBaseTasks.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanBaseTasks.kt
similarity index 96%
rename from tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanBaseTasks.kt
rename to tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanBaseTasks.kt
index d90ab8c56bd..162480be449 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanBaseTasks.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanBaseTasks.kt
@@ -34,12 +34,10 @@ import org.gradle.api.tasks.*
import org.gradle.language.cpp.CppBinary
import org.gradle.language.cpp.internal.DefaultUsageContext
import org.gradle.language.cpp.internal.NativeVariantIdentity
-import org.gradle.language.nativeplatform.internal.Names
import org.gradle.nativeplatform.Linkage
import org.gradle.nativeplatform.OperatingSystemFamily
import org.gradle.util.ConfigureUtil
-import org.jetbrains.kotlin.gradle.plugin.*
-import org.jetbrains.kotlin.konan.target.Family
+import org.jetbrains.kotlin.gradle.plugin.konan.*
import org.jetbrains.kotlin.konan.target.HostManager
import org.jetbrains.kotlin.konan.target.KonanTarget
import java.io.File
@@ -90,7 +88,7 @@ abstract class KonanArtifactTask: KonanTargetableTask(), KonanArtifactSpec {
protected abstract val artifactPrefix: String
@Internal get
- internal open fun init(config:KonanBuildingConfig<*>, destinationDir: File, artifactName: String, target: KonanTarget) {
+ internal open fun init(config: KonanBuildingConfig<*>, destinationDir: File, artifactName: String, target: KonanTarget) {
super.init(target)
this.destinationDir = destinationDir
this.artifactName = artifactName
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanBuildingTask.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanBuildingTask.kt
similarity index 94%
rename from tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanBuildingTask.kt
rename to tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanBuildingTask.kt
index ead0f233cbf..249590ad0d1 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanBuildingTask.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanBuildingTask.kt
@@ -19,7 +19,7 @@ package org.jetbrains.kotlin.gradle.plugin.tasks
import org.gradle.api.tasks.Console
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.TaskAction
-import org.jetbrains.kotlin.gradle.plugin.*
+import org.jetbrains.kotlin.gradle.plugin.konan.*
import org.jetbrains.kotlin.gradle.plugin.model.KonanModelArtifact
import org.jetbrains.kotlin.konan.target.KonanTarget
import java.io.File
@@ -49,7 +49,9 @@ abstract class KonanBuildingTask: KonanArtifactWithLibrariesTask(), KonanBuildin
@TaskAction
open fun run() {
destinationDir.mkdirs()
- if (dumpParameters) { dumpProperties(this) }
+ if (dumpParameters) {
+ dumpProperties(this)
+ }
toolRunner.run(buildArgs())
}
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanCompileTask.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanCompileTask.kt
similarity index 98%
rename from tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanCompileTask.kt
rename to tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanCompileTask.kt
index 15d4db185e9..89a5205a279 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanCompileTask.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanCompileTask.kt
@@ -22,13 +22,13 @@ import org.gradle.api.file.ConfigurableFileTree
import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.*
import org.gradle.process.CommandLineArgumentProvider
-import org.jetbrains.kotlin.gradle.plugin.*
+import org.jetbrains.kotlin.gradle.plugin.konan.*
import org.jetbrains.kotlin.gradle.plugin.model.KonanModelArtifact
import org.jetbrains.kotlin.gradle.plugin.model.KonanModelArtifactImpl
import org.jetbrains.kotlin.konan.library.defaultResolver
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
-import org.jetbrains.kotlin.konan.target.KonanTarget
import org.jetbrains.kotlin.konan.target.Distribution
+import org.jetbrains.kotlin.konan.target.KonanTarget
import java.io.File
/**
@@ -36,7 +36,8 @@ import java.io.File
*/
abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
- @Internal override val toolRunner = KonanCompilerRunner(project, project.konanExtension.jvmArgs)
+ @Internal override val toolRunner =
+ KonanCompilerRunner(project, project.konanExtension.jvmArgs)
abstract val produce: CompilerOutputKind
@Internal get
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanCompilerDownloadTask.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanCompilerDownloadTask.kt
similarity index 96%
rename from tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanCompilerDownloadTask.kt
rename to tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanCompilerDownloadTask.kt
index cbb92aede1b..c51cbdd9e84 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanCompilerDownloadTask.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanCompilerDownloadTask.kt
@@ -20,13 +20,11 @@ import org.gradle.api.DefaultTask
import org.gradle.api.GradleScriptException
import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.TaskAction
-import org.jetbrains.kotlin.gradle.plugin.*
+import org.jetbrains.kotlin.gradle.plugin.konan.*
import org.jetbrains.kotlin.konan.KonanVersion
import org.jetbrains.kotlin.konan.MetaVersion
import org.jetbrains.kotlin.konan.util.DependencyProcessor
import org.jetbrains.kotlin.konan.util.DependencySource
-import org.jetbrains.kotlin.konan.util.visibleName
-import java.io.File
import java.io.IOException
open class KonanCompilerDownloadTask : DefaultTask() {
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanGenerateCMakeTask.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanGenerateCMakeTask.kt
similarity index 92%
rename from tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanGenerateCMakeTask.kt
rename to tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanGenerateCMakeTask.kt
index 83a0e9cb83e..94351bf15f9 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanGenerateCMakeTask.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanGenerateCMakeTask.kt
@@ -19,10 +19,10 @@ package org.jetbrains.kotlin.gradle.plugin.tasks
import org.gradle.api.DefaultTask
import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.TaskAction
-import org.jetbrains.kotlin.gradle.plugin.KonanInteropLibrary
-import org.jetbrains.kotlin.gradle.plugin.KonanLibrary
-import org.jetbrains.kotlin.gradle.plugin.KonanProgram
-import org.jetbrains.kotlin.gradle.plugin.konanArtifactsContainer
+import org.jetbrains.kotlin.gradle.plugin.konan.KonanInteropLibrary
+import org.jetbrains.kotlin.gradle.plugin.konan.KonanLibrary
+import org.jetbrains.kotlin.gradle.plugin.konan.KonanProgram
+import org.jetbrains.kotlin.gradle.plugin.konan.konanArtifactsContainer
import org.jetbrains.kotlin.konan.target.Family
import org.jetbrains.kotlin.konan.target.HostManager
import java.io.File
@@ -51,10 +51,10 @@ open class KonanGenerateCMakeTask : DefaultTask() {
private val host = HostManager.host
private fun generateCMakeLists(
- projectName: String,
- interops: List,
- libraries: List,
- programs: List
+ projectName: String,
+ interops: List,
+ libraries: List,
+ programs: List
): String {
val cMakeCurrentListDir = "$" + "{CMAKE_CURRENT_LIST_DIR}"
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanInteropTask.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanInteropTask.kt
similarity index 95%
rename from tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanInteropTask.kt
rename to tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanInteropTask.kt
index 8d8484a1ce2..b16f83b15eb 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanInteropTask.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanInteropTask.kt
@@ -18,15 +18,13 @@ package org.jetbrains.kotlin.gradle.plugin.tasks
import groovy.lang.Closure
import org.gradle.api.Action
-import org.gradle.api.Project
import org.gradle.api.file.FileCollection
-import org.gradle.api.invocation.Gradle
import org.gradle.api.tasks.*
import org.gradle.util.ConfigureUtil
import org.gradle.workers.IsolationMode
import org.gradle.workers.WorkerExecutor
-import org.jetbrains.kotlin.gradle.plugin.*
-import org.jetbrains.kotlin.gradle.plugin.KonanInteropSpec.IncludeDirectoriesSpec
+import org.jetbrains.kotlin.gradle.plugin.konan.*
+import org.jetbrains.kotlin.gradle.plugin.konan.KonanInteropSpec.IncludeDirectoriesSpec
import org.jetbrains.kotlin.gradle.plugin.model.KonanModelArtifact
import org.jetbrains.kotlin.gradle.plugin.model.KonanModelArtifactImpl
import org.jetbrains.kotlin.konan.library.defaultResolver
@@ -43,7 +41,8 @@ import javax.inject.Inject
open class KonanInteropTask @Inject constructor(val workerExecutor: WorkerExecutor) : KonanBuildingTask(), KonanInteropSpec {
- @Internal override val toolRunner: KonanToolRunner = KonanInteropRunner(project, project.konanExtension.jvmArgs)
+ @Internal override val toolRunner: KonanToolRunner =
+ KonanInteropRunner(project, project.konanExtension.jvmArgs)
override fun init(config: KonanBuildingConfig<*>, destinationDir: File, artifactName: String, target: KonanTarget) {
super.init(config, destinationDir, artifactName, target)
@@ -203,7 +202,9 @@ open class KonanInteropTask @Inject constructor(val workerExecutor: WorkerExecut
override fun run() {
destinationDir.mkdirs()
- if (dumpParameters) { dumpProperties(this) }
+ if (dumpParameters) {
+ dumpProperties(this)
+ }
val args = buildArgs()
if (enableParallel) {
interchangeBox[this.path] = toolRunner
diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/model/KonanModelImpl.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/model/KonanModelImpl.kt
index 9499fec4ffd..c102f289a40 100644
--- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/model/KonanModelImpl.kt
+++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/model/KonanModelImpl.kt
@@ -19,13 +19,12 @@ package org.jetbrains.kotlin.gradle.plugin.model
import org.gradle.api.Project
import org.gradle.tooling.provider.model.ToolingModelBuilder
import org.jetbrains.kotlin.gradle.plugin.experimental.internal.AbstractKotlinNativeBinary
-import org.jetbrains.kotlin.gradle.plugin.konanArtifactsContainer
-import org.jetbrains.kotlin.gradle.plugin.konanExtension
-import org.jetbrains.kotlin.gradle.plugin.konanHome
+import org.jetbrains.kotlin.gradle.plugin.konan.konanArtifactsContainer
+import org.jetbrains.kotlin.gradle.plugin.konan.konanExtension
+import org.jetbrains.kotlin.gradle.plugin.konan.konanHome
import org.jetbrains.kotlin.konan.KonanVersion
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
import java.io.File
-import java.lang.IllegalStateException
object KonanToolingModelBuilder : ToolingModelBuilder {
diff --git a/tools/kotlin-native-gradle-plugin/src/main/resources/META-INF/services/shadow.org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin b/tools/kotlin-native-gradle-plugin/src/main/resources/META-INF/services/shadow.org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin
new file mode 100644
index 00000000000..dcb93c1290b
--- /dev/null
+++ b/tools/kotlin-native-gradle-plugin/src/main/resources/META-INF/services/shadow.org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin
@@ -0,0 +1,17 @@
+#
+# Copyright 2010-2017 JetBrains s.r.o.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+shadow.org.jetbrains.kotlinx.serialization.gradle.SerializationKotlinGradleSubplugin
\ No newline at end of file
diff --git a/tools/kotlin-native-gradle-plugin/src/test/kotlin/ToolingModelTests.kt b/tools/kotlin-native-gradle-plugin/src/test/kotlin/ToolingModelTests.kt
index f3f5d3db6ea..61d547a6261 100644
--- a/tools/kotlin-native-gradle-plugin/src/test/kotlin/ToolingModelTests.kt
+++ b/tools/kotlin-native-gradle-plugin/src/test/kotlin/ToolingModelTests.kt
@@ -19,8 +19,8 @@ package org.jetbrains.kotlin.gradle.plugin.test
import org.gradle.api.internal.FeaturePreviews
import org.gradle.api.internal.project.ProjectInternal
import org.gradle.testfixtures.ProjectBuilder
-import org.jetbrains.kotlin.gradle.plugin.KonanPlugin
-import org.jetbrains.kotlin.gradle.plugin.konanArtifactsContainer
+import org.jetbrains.kotlin.gradle.plugin.konan.KonanPlugin
+import org.jetbrains.kotlin.gradle.plugin.konan.konanArtifactsContainer
import org.jetbrains.kotlin.gradle.plugin.model.KonanToolingModelBuilder
import org.jetbrains.kotlin.konan.KonanVersion
import org.junit.Rule