[readme] Add multiplatform support description into readme.

This commit is contained in:
Ilya Matveev
2018-02-05 21:00:09 +07:00
committed by ilmat192
parent 4693563195
commit c455064ca2
2 changed files with 62 additions and 2 deletions
+61 -1
View File
@@ -218,6 +218,41 @@ and set dependencies between building tasks.
}
```
## Multiplatform build
Kotlin/Native, as well as Kotlin/JVM and Kotlin/JS, supports multiplatform projects. Such a support is included in the
Kotlin/Native Gradle plugin by default and there is no need to apply additional plugins to use it. By default
multiplatform support is turned off, and could be enabled with the `enableMultiplatform` DSL method:
apply 'konan'
konanArtifacts {
program('foo') {
enableMultiplatform true
}
}
The Gradle plugin adds an `expectedBy` dependency configuration that is used to specify a dependency from Kotlin/Native
project to a common project:
apply 'konan'
dependencies {
expectedBy project('commonProject')
}
When a common project is added as an `expectedBy` dependency, all the artifacts with the multiplatform support enabled
will use it's `main` source set as a common module. One may specify a custom source set for each artifact using the
`commonSourceSet` DSL method. In this case the multiplatform support will be also enabled for this artifact.
konanArtifacts {
program('foo') {
commonSourceSet 'customSourceSet'
}
}
See more about multiplatform projects [here](https://kotlinlang.org/docs/reference/multiplatform.html).
## Tasks
The Kotlin/Native plugin creates the following tasks:
@@ -243,6 +278,8 @@ for each an artifact defined in a `konanArtifacts` block. Such a task may have d
|`enableOptimizations`|`boolean` |Are the optimizations enabled |
|`enableAssertions `|`boolean` |Is the assertion support enabled |
|`measureTime `|`boolean` |Does the compiler print phase time |
|`enableMultiplatform`|`boolean` |Is multiplatform support enabled for this artifact |
|`commonSourceSet` |`String` |Name of a source set used as a common module |
##### Properties available for a cinterop task (task building an interoperability library):
@@ -359,7 +396,7 @@ tables below.
// Language and API version.
konan.languageVersion = 'version'
konan.apiVersion = 'version'
konanArtifacts {
// Targets to build this artifact for (optional, override the konan.targets list)
program('foo', targets: ['android_arm32', 'android_arm64']) {
@@ -532,3 +569,26 @@ tables below.
}
}
## Multiplatform DSL
apply plugin: 'konan'
// In this example common code is located in 'bar' source set of ':common' project.
konanArtifacts {
// All the artifact types except interop libraries may use common modules.
program('foo') {
// All artifact settings described above are available here.
// Enable multiplatform support for this artifact.
enableMultiplatform true
// Set a custom name for a source set used as a common module.
commonSourceSet 'bar'
}
}
dependencies {
// Use the ':foo' project as a common project for multiplatform build.
expectedBy project(':common')
}
@@ -121,7 +121,7 @@ processResources {
from(file("$rootBuildDirectory/utilities/env_blacklist"))
}
// TODO: Get rid of manual pom generation
// TODO: Get rid of manual pom generation.
publishing {
publications {
gradlePlugin(MavenPublication) {