Move all the code to apply Kotlin bootstrap into settings script plugin which does following: - configures based either on the repo root 'local.properties' or on the root project gradle properties or on the repo root 'gradle.properties' current type of bootstrap - automatically adds Kotlin bootstrap repository with exclusive content, so bootstrap dependencies will not be by mistake downloaded from other repository - automatically forces all Kotlin plugins applied in the build to use bootstrap version This script should be applied only in project settings.gradle and then it does all the configuration by itself.
Kotlin/Native
Kotlin/Native is an LLVM backend for the Kotlin compiler, runtime implementation, and native code generation facility using the LLVM toolchain.
Kotlin/Native is primarily designed to allow compilation for platforms where virtual machines are not desirable or possible (such as iOS or embedded targets), or where a developer is willing to produce a reasonably-sized self-contained program without the need to ship an additional execution runtime.
Using published Kotlin/Native versions
The most complete experience with Kotlin/Native can be achieved by using Gradle, IntelliJ IDEA or Android Studio with KMM plugin if you target iOS.
If you are interested in using Kotlin/Native for iOS, then Kotlin Multiplatform Mobile portal might be useful for you.
Command line compiler is also available.
More information can be found in the overviews of Kotlin/Native and Kotlin Multiplatform.
On macOS Kotlin/Native requires Xcode 12.5 or newer.
Contributing
You can contribute to Kotlin/Native in many ways. See the relevant page on the website.
See also the general contribution guidelines for this repository.
Building from source
Prerequisites:
- configure Kotlin build as specified in main readme
- at the root directory of the repository,
create
local.propertiesfile withkotlin.native.enabled=trueline - macOS: Xcode 14.0 or newer
- Linux: glibc 2.23 or newer
- Windows:
- Microsoft C++ build tools for Visual Studio 2019 14.29 or newer
- Windows SDK 10.0.18362.0 or newer
The commands below should be run from either repository root or this (kotlin-native/) directory.
For the latter, :kotlin-native: task name prefix can be omitted.
To compile the basic compiler distribution from sources, run following command:
./gradlew :kotlin-native:dist
It will build compiler and stdlib for host target, without platform libraries.
To get platform libraries, add distPlatformLibs task, e.g.
./gradlew :kotlin-native:dist :kotlin-native:distPlatformLibs
To run the full build:
./gradlew :kotlin-native:bundle
This will produce compiler and libraries for all supported targets. The full build can take about an hour on a Macbook Pro.
After any of the commands above, ./dist will contain Kotlin/Native distribution.
You can use it like a distribution of
command-line compiler.
Or configure Gradle to use it -- just add the following line to
gradle.properties in your Gradle project:
kotlin.native.home=/path/to/kotlin/kotlin-native/dist
To compile your programs with command-line compiler, use:
./dist/bin/kotlinc-native hello.kt -o hello
For an optimized compilation, use -opt:
./dist/bin/kotlinc-native hello.kt -o hello -opt
Interoperability
To import a C or Objective-C library, use ./dist/bin/cinterop tool.
See the documentation for more details.
Running tests
For tests, use ./gradlew :native:native.tests:codegenBoxTest and ./gradlew :kotlin-native:backend.native:tests:run.
For more details see Testing.
More tips and tricks
More tips and tricks that might be useful when developing or debugging Kotlin/Native can be found in HACKING.md