Added a short notice PLATFORM_LIBS.md.
This commit is contained in:
committed by
alexander-gorshenev
parent
629cbd8eed
commit
97f666e643
@@ -0,0 +1,70 @@
|
|||||||
|
# Platform libraries
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
To provide access to user's native operating system services,
|
||||||
|
`Kotlin/Native` distribution includes a set of prebuilt libraries specific to
|
||||||
|
each target. We call them **Platform Libraries**.
|
||||||
|
|
||||||
|
### POSIX bindings
|
||||||
|
|
||||||
|
For all `Unix` or `Windows` based targets (including `Android` and
|
||||||
|
`iPhone`) we provide the `posix` platform lib. It contains bindings
|
||||||
|
to platform's implementation of `POSIX` standard.
|
||||||
|
|
||||||
|
To use the library just
|
||||||
|
|
||||||
|
import platform.posix.*
|
||||||
|
|
||||||
|
The only target for which it is not available is [WebAssembly](https://en.wikipedia.org/wiki/WebAssembly).
|
||||||
|
|
||||||
|
Note that the content of `platform.posix` is NOT identical on
|
||||||
|
different platforms, in the same way as different `POSIX` implementations
|
||||||
|
are a little different.
|
||||||
|
|
||||||
|
### OS specific libraries
|
||||||
|
|
||||||
|
We've gone a little further and provided access to more specific
|
||||||
|
native OS services. One needs to import the proper packages
|
||||||
|
on each of the platform. Choose what matches your target platform:
|
||||||
|
|
||||||
|
import platform.osx.*
|
||||||
|
|
||||||
|
import platform.linux.*
|
||||||
|
|
||||||
|
import platform.windows.*
|
||||||
|
|
||||||
|
import platform.android.*
|
||||||
|
|
||||||
|
import platform.ios.*
|
||||||
|
|
||||||
|
### Popular native libraries
|
||||||
|
|
||||||
|
There are many more platform libraries available for host and
|
||||||
|
cross-compilation targets. `Kotlin/Native` distribution provides access to
|
||||||
|
`OpenGL`, `SDL`, `zlib` and other popular native libraries on
|
||||||
|
applicable platforms.
|
||||||
|
|
||||||
|
On Apple platforms `objc` library is provided for interoperability with [Objective-C](https://en.wikipedia.org/wiki/Objective-C).
|
||||||
|
|
||||||
|
Inspect the contents of `dist/klib/platform/$target` of the distribution for the details.
|
||||||
|
|
||||||
|
## Availability by default
|
||||||
|
|
||||||
|
The packages from platfrom libraries are available by default. No
|
||||||
|
special link flags need to be specified to use them. `Kotlin/Native`
|
||||||
|
compiler automatically detects which of the platform libraries have
|
||||||
|
been accessed and automatically links the needed libraries.
|
||||||
|
|
||||||
|
On the other hand, the platform libs in the distribution are merely
|
||||||
|
just wrappers and bindings to the native libraries. That means the
|
||||||
|
native libraries themselves (`.so`, `.a`, `.dylib`, `.dll` etc)
|
||||||
|
should be installed on the machine.
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
`Kotlin/Native` installation provides a wide spectrum of examples
|
||||||
|
demonstrating the use of platform libraries.
|
||||||
|
See [samples](https://github.com/JetBrains/kotlin-native/tree/master/samples) for details.
|
||||||
|
|
||||||
|
|
||||||
@@ -366,6 +366,7 @@ task bundle(type: (isWindows()) ? Zip : Tar) {
|
|||||||
include 'INTEROP.md'
|
include 'INTEROP.md'
|
||||||
include 'RELEASE_NOTES.md'
|
include 'RELEASE_NOTES.md'
|
||||||
include 'GRADLE_PLUGIN.md'
|
include 'GRADLE_PLUGIN.md'
|
||||||
|
include 'PLATFORM_LIBS.md'
|
||||||
exclude '**/gradle.properties'
|
exclude '**/gradle.properties'
|
||||||
exclude '**/settings.gradle'
|
exclude '**/settings.gradle'
|
||||||
exclude '**/build'
|
exclude '**/build'
|
||||||
|
|||||||
Reference in New Issue
Block a user