tree: a5d9e16a2631421d280313f9e03ec2c50e51bd7f [path history] [tgz]
  1. .idea/
  2. backend.native/
  3. build-tools/
  4. cmd/
  5. codestyle/
  6. common/
  7. dependencies/
  8. dependencyPacker/
  9. endorsedLibraries/
  10. gradle/
  11. Interop/
  12. klib/
  13. konan/
  14. libclangext/
  15. licenses/
  16. llvmCoverageMappingC/
  17. llvmDebugInfoC/
  18. performance/
  19. platformLibs/
  20. runtime/
  21. samples/
  22. shared/
  23. tools/
  24. utilities/
  25. .clang-format
  26. .editorconfig
  27. .gitignore
  28. _nav_reference.yml
  29. build.gradle
  30. BUILDING_LLVM.md
  31. CHANGELOG.md
  32. COCOAPODS.md
  33. CODE_COVERAGE.md
  34. CONCURRENCY.md
  35. DEBUGGING.md
  36. DISTRO_README.md
  37. FAQ.md
  38. gradle.properties
  39. GRADLE_PLUGIN.md
  40. gradlew
  41. gradlew.bat
  42. HACKING.md
  43. IMMUTABILITY.md
  44. INTEROP.md
  45. IOS_SYMBOLICATION.md
  46. LIBRARIES.md
  47. LICENSE
  48. MULTIPLATFORM.md
  49. OBJC_INTEROP.md
  50. PLATFORM_LIBS.md
  51. README.md
  52. RELEASE_NOTES.md
kotlin-native/README.md

official project version

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.

Prerequisites:

  • install JDK for your platform, instead of JRE. The build requires tools.jar, which is not included in JRE;
  • on macOS install Xcode 11 (Xcode 12.0 is required to compile Kotlin/Native from sources)
  • on Fedora 26+ yum install ncurses-compat-libs may be needed
  • on recent Ubuntu apt install libncurses5 is needed

To compile from sources use following steps:

First, download dependencies:

./gradlew dependencies:update

Then, build the compiler and libraries:

./gradlew bundle

To build with experimental targets support compile with -Porg.jetbrains.kotlin.native.experimentalTargets.

The build can take about an hour on a Macbook Pro. To run a shorter build with only the host compiler and libraries, run:

./gradlew dist distPlatformLibs

To include Kotlin compiler in composite build and build against it, use the kotlinProjectPath project property:

./gradlew dist -PkotlinProjectPath=path/to/kotlin/project

It's possible to include in a composite build both Kotlin compiler and Kotlin/Native Shared simultaneously.

After that, you should be able to compile your programs like this:

export PATH=./dist/bin:$PATH
kotlinc hello.kt -o hello

For an optimized compilation, use -opt:

kotlinc hello.kt -o hello -opt

For tests, use:

./gradlew backend.native:tests:run

To generate interoperability stubs, create a library definition file (refer to samples/tetris/.../sdl.def), and run the cinterop tool like this:

cinterop -def lib.def

See the provided samples and INTEROP.md for more details.

The Interop tool generates a library in the .klib library format. See LIBRARIES.md for more details on this file format.