Fix names, samples (#426)
This commit is contained in:
+10
-13
@@ -1,17 +1,17 @@
|
|||||||
# Kotlin N interoperability #
|
# _Kotlin/Native_ interoperability #
|
||||||
|
|
||||||
## Introduction ##
|
## Introduction ##
|
||||||
|
|
||||||
_Kotlin N_ follows general tradition of Kotlin to provide excellent
|
_Kotlin/Native_ follows general tradition of Kotlin to provide excellent
|
||||||
existing platform software interoperability. In case of native platform
|
existing platform software interoperability. In case of native platform
|
||||||
most important interoperability target is a C library. Thus _Kotlin N_
|
most important interoperability target is a C library. Thus _Kotlin/Native_
|
||||||
comes with an `interop` tool, which could be used to quickly generate
|
comes with an `cinterop` tool, which could be used to quickly generate
|
||||||
everything needed to interact with an external library.
|
everything needed to interact with an external library.
|
||||||
|
|
||||||
Following workflow is expected when interacting with the native library.
|
Following workflow is expected when interacting with the native library.
|
||||||
* create `.def` file describing what to include into bindings
|
* create `.def` file describing what to include into bindings
|
||||||
* use `interop` tool to produce Kotlin bindings
|
* use `cinterop` tool to produce Kotlin bindings
|
||||||
* run _Kotlin N_ compiler on an application to produce the final executable
|
* run _Kotlin/Native_ compiler on an application to produce the final executable
|
||||||
|
|
||||||
Interoperability tool analyses C headers and produces "natural" mapping of
|
Interoperability tool analyses C headers and produces "natural" mapping of
|
||||||
types, function and constants into the Kotlin world. Generated stubs can be
|
types, function and constants into the Kotlin world. Generated stubs can be
|
||||||
@@ -24,7 +24,7 @@ Build the dependencies and the compiler (see `README.md`).
|
|||||||
Prepare stubs for the system sockets library:
|
Prepare stubs for the system sockets library:
|
||||||
|
|
||||||
cd samples/socket
|
cd samples/socket
|
||||||
../../dist/bin/interop -def:sockets.def -o:sockets.kt.bc
|
../../dist/bin/cinterop -def:sockets.def -o:sockets.kt.bc
|
||||||
|
|
||||||
Compile the echo server:
|
Compile the echo server:
|
||||||
|
|
||||||
@@ -45,9 +45,6 @@ Test the server by conecting to it, for example with telnet:
|
|||||||
|
|
||||||
Write something to console and watch server echoing it back.
|
Write something to console and watch server echoing it back.
|
||||||
|
|
||||||
~~Quit telnet by pressing ctrl+] ctrl+D~~
|
|
||||||
|
|
||||||
|
|
||||||
## Creating bindings for a new library ##
|
## Creating bindings for a new library ##
|
||||||
|
|
||||||
To create bindings for a new library, start by creating `.def` file.
|
To create bindings for a new library, start by creating `.def` file.
|
||||||
@@ -57,14 +54,14 @@ Structurally it's a simple property file, looking like this:
|
|||||||
header = zlib.h
|
header = zlib.h
|
||||||
compilerOpts = -std=c99
|
compilerOpts = -std=c99
|
||||||
|
|
||||||
Then run interop tool with something like (note that for host libraries not included
|
Then run `cinterop` tool with something like (note that for host libraries not included
|
||||||
in sysroot search paths for headers may be needed):
|
in sysroot search paths for headers may be needed):
|
||||||
|
|
||||||
interop -def:zlib.def -copt:-I/opt/local/include -o:zlib.kt.bc
|
cinterop -def:zlib.def -copt:-I/opt/local/include -o:zlib.kt.bc
|
||||||
|
|
||||||
This command will produce `zlib.kt.bc` compiled library and
|
This command will produce `zlib.kt.bc` compiled library and
|
||||||
`zlib.kt.bc-build/kotlin` directory containing Kotlin source code for the library.
|
`zlib.kt.bc-build/kotlin` directory containing Kotlin source code for the library.
|
||||||
|
``
|
||||||
If behavior for certain platform shall be modified, one may use format like
|
If behavior for certain platform shall be modified, one may use format like
|
||||||
`compilerOpts.osx` or `compilerOpts.linux` to provide platform-specific values
|
`compilerOpts.osx` or `compilerOpts.linux` to provide platform-specific values
|
||||||
to options.
|
to options.
|
||||||
|
|||||||
+3
-2
@@ -1352,8 +1352,9 @@ class StubGenerator(
|
|||||||
if (entryPoint != null) {
|
if (entryPoint != null) {
|
||||||
out("extern int Konan_main(int argc, char** argv);")
|
out("extern int Konan_main(int argc, char** argv);")
|
||||||
out("")
|
out("")
|
||||||
out("int $entryPoint(int argc, char** argv) {")
|
out("__attribute__((__used__))")
|
||||||
out(" return Konan_main(argc, argv);")
|
out("int $entryPoint(int argc, char** argv) {")
|
||||||
|
out(" return Konan_main(argc, argv);")
|
||||||
out("}")
|
out("}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
# Kotlin N #
|
# Kotlin/Native #
|
||||||
|
|
||||||
Kotlin Native backend, codenamed _Kotlin N_, is a LLVM backend for the Kotlin
|
_Kotlin/Native_ is a LLVM backend for the Kotlin compiler, runtime
|
||||||
compiler, runtime implementation and native code generation facility
|
implementation and native code generation facility using LLVM toolchain.
|
||||||
using LLVM toolchain.
|
|
||||||
|
|
||||||
_Kotlin N_ is primarily designed to allow compilation for platforms where
|
_Kotlin/Native_ is primarily designed to allow compilation for platforms where
|
||||||
virtual machines are not desirable or possible (such as iOS, embedded targets),
|
virtual machines are not desirable or possible (such as iOS, embedded targets),
|
||||||
or where developer is willing to produce reasonably-sized self-contained program
|
or where developer is willing to produce reasonably-sized self-contained program
|
||||||
without need to ship an additional execution runtime.
|
without need to ship an additional execution runtime.
|
||||||
@@ -38,8 +37,8 @@ For some tests, use:
|
|||||||
./gradlew backend.native:tests:run
|
./gradlew backend.native:tests:run
|
||||||
|
|
||||||
To generate interoperability stubs create library definition file
|
To generate interoperability stubs create library definition file
|
||||||
(take a look on `samples/tetris/tetris.sdl`) and run `interop` tool like this:
|
(take a look on `samples/tetris/tetris.sdl`) and run `cinterop` tool like this:
|
||||||
|
|
||||||
interop -def:lib.def
|
cinterop -def:lib.def
|
||||||
|
|
||||||
See provided samples and `INTEROP.md` for more details.
|
See provided samples and `INTEROP.md` for more details.
|
||||||
+13
-11
@@ -2,23 +2,23 @@
|
|||||||
|
|
||||||
## Introduction ##
|
## Introduction ##
|
||||||
|
|
||||||
Kotlin Native backend, codenamed _Kotlin N_, is a LLVM backend for the Kotlin
|
_Kotlin/Native_, is a LLVM backend for the Kotlin compiler.
|
||||||
compiler. It consists of a native code generation facility using the LLVM toolchain
|
It consists of a native code generation facility using the LLVM toolchain
|
||||||
and a native runtime implementation.
|
and a native runtime implementation.
|
||||||
|
|
||||||
_Kotlin N_ is primarily designed to allow compilation for platforms where
|
_Kotlin/Native_ is primarily designed to allow compilation for platforms where
|
||||||
virtual machines are not desirable or possible (such as iOS, embedded targets),
|
virtual machines are not desirable or possible (such as iOS, embedded targets),
|
||||||
or where the developer needs to produce a reasonably-sized self-contained program
|
or where the developer needs to produce a reasonably-sized self-contained program
|
||||||
that doesn't require an additional execution runtime.
|
that doesn't require an additional execution runtime.
|
||||||
|
|
||||||
## Supported platforms ##
|
## Supported platforms ##
|
||||||
|
|
||||||
_Kotlin N_ compiler produces mostly portable (modulo pointer size and target
|
_Kotlin/Native_ compiler produces mostly portable (modulo pointer size and target
|
||||||
triplet) LLVM bitcode, and as such can easily support any platform, as long as there's a LLVM
|
triplet) LLVM bitcode, and as such can easily support any platform, as long as there's a LLVM
|
||||||
codegenerator for the platform.
|
codegenerator for the platform.
|
||||||
However, as actual producing of the native code requires a platform linker and some
|
However, as actual producing of the native code requires a platform linker and some
|
||||||
basic runtime shipped with the translator, we only support a subset of all possible
|
basic runtime shipped with the translator, we only support a subset of all possible
|
||||||
target platforms. Currently _Kotlin N_ is being shipped and tested with support for
|
target platforms. Currently _Kotlin/Native_ is being shipped and tested with support for
|
||||||
the following platforms:
|
the following platforms:
|
||||||
|
|
||||||
* Mac OS X 10.10 and later (x86-64)
|
* Mac OS X 10.10 and later (x86-64)
|
||||||
@@ -32,20 +32,22 @@ the following platforms:
|
|||||||
|
|
||||||
## Compatibility and features ##
|
## Compatibility and features ##
|
||||||
|
|
||||||
|
To run _Kotlin/Native_ JDK8 or later for the host platform has to be installed.
|
||||||
|
|
||||||
The language and library version supported by this EAP release mostly match Kotlin 1.1.
|
The language and library version supported by this EAP release mostly match Kotlin 1.1.
|
||||||
However, there are certain limitations, see section [Known Limitations](#limitations).
|
However, there are certain limitations, see section [Known Limitations](#limitations).
|
||||||
|
|
||||||
Currently _Kotlin N_ uses reference counting based memory management scheme with cycles
|
Currently _Kotlin/Native_ uses reference counting based memory management scheme with cycles
|
||||||
garbage collection algorithm. Multiple threads could be used, but no objects shared
|
garbage collection algorithm. Multiple threads could be used, but no objects shared
|
||||||
between threads are allowed.
|
between threads are allowed.
|
||||||
|
|
||||||
_Kotlin N_ provides efficient interoperability with libraries written in C, and supports
|
_Kotlin/Native_ provides efficient interoperability with libraries written in C, and supports
|
||||||
automatic generation of Kotlin bindings from a C header file.
|
automatic generation of Kotlin bindings from a C header file.
|
||||||
See samples coming with the distribution.
|
See samples coming with the distribution.
|
||||||
|
|
||||||
## Getting Started ##
|
## Getting Started ##
|
||||||
|
|
||||||
Download Kotlin N distribution and unpack it. You can run command line compiler with
|
Download _Kotlin/Native_ distribution and unpack it. You can run command line compiler with
|
||||||
|
|
||||||
bin/kotlinc <some_file>.kt <dir_with_kt_files> -o <executable>.kexe
|
bin/kotlinc <some_file>.kt <dir_with_kt_files> -o <executable>.kexe
|
||||||
|
|
||||||
@@ -61,12 +63,12 @@ For documentation on C interoperability stubs see INTEROP.md.
|
|||||||
|
|
||||||
*** DO NOT USE THIS PREVIEW RELEASE FOR ANY PERFORMANCE ANALYSIS ***
|
*** DO NOT USE THIS PREVIEW RELEASE FOR ANY PERFORMANCE ANALYSIS ***
|
||||||
|
|
||||||
This is purely a technology preview of Kotlin N technology, and is not yet tuned
|
This is purely a technology preview of _Kotlin/Native_ technology, and is not yet tuned
|
||||||
for benchmarking and competitive analysis of any kind.
|
for benchmarking and competitive analysis of any kind.
|
||||||
|
|
||||||
### Standard Library ###
|
### Standard Library ###
|
||||||
|
|
||||||
The standard library in Kotlin N is known to be incomplete and doesn't include
|
The standard library in _Kotlin/Native_ is known to be incomplete and doesn't include
|
||||||
certain methods available in standard library of Kotlin.
|
certain methods available in standard library of Kotlin.
|
||||||
|
|
||||||
### Coroutines ###
|
### Coroutines ###
|
||||||
@@ -81,5 +83,5 @@ Notice that property delegation (including lazy properties) *does* work.
|
|||||||
### Microsoft Windows support ###
|
### Microsoft Windows support ###
|
||||||
|
|
||||||
Due to significant difference in exception handling model on MS Windows and
|
Due to significant difference in exception handling model on MS Windows and
|
||||||
other LLVM targets, current _Kotlin N_ may not produce executables working on
|
other LLVM targets, current _Kotlin/Native_ may not produce executables working on
|
||||||
MS Windows. This situation could be improved in upcoming releases.
|
MS Windows. This situation could be improved in upcoming releases.
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ declare -a java_args
|
|||||||
declare -a interop_args
|
declare -a interop_args
|
||||||
|
|
||||||
OUTPUT_FILE_NAME=nativelib.kt.bc
|
OUTPUT_FILE_NAME=nativelib.kt.bc
|
||||||
|
TARGET=host
|
||||||
|
|
||||||
while [ $# -gt 0 ]; do
|
while [ $# -gt 0 ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
@@ -40,6 +41,10 @@ while [ $# -gt 0 ]; do
|
|||||||
OUTPUT_FILE_NAME="${1:3}"
|
OUTPUT_FILE_NAME="${1:3}"
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
-target:*)
|
||||||
|
TARGET="${1:8}"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
interop_args=("${interop_args[@]}" "$1")
|
interop_args=("${interop_args[@]}" "$1")
|
||||||
shift
|
shift
|
||||||
@@ -47,7 +52,6 @@ while [ $# -gt 0 ]; do
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
findHome() {
|
findHome() {
|
||||||
local source="${BASH_SOURCE[0]}"
|
local source="${BASH_SOURCE[0]}"
|
||||||
while [ -h "$source" ] ; do
|
while [ -h "$source" ] ; do
|
||||||
@@ -87,11 +91,11 @@ $JAVACMD $JAVA_OPTS ${java_args[@]} \
|
|||||||
-cp $INTEROP_CLASSPATH \
|
-cp $INTEROP_CLASSPATH \
|
||||||
$INTEROP_TOOL \
|
$INTEROP_TOOL \
|
||||||
"$GENERATED_ARG" "$NATIVES_ARG" "$CSTUBSNAME_ARG" \
|
"$GENERATED_ARG" "$NATIVES_ARG" "$CSTUBSNAME_ARG" \
|
||||||
$FLAVOR_ARG "${interop_args[@]}" \
|
$FLAVOR_ARG -target:$TARGET "${interop_args[@]}" \
|
||||||
|| exit 1
|
|| exit 1
|
||||||
|
|
||||||
# Stubs may be rather big, so we may need more heap space.
|
# Stubs may be rather big, so we may need more heap space.
|
||||||
XMX_ARG=-J-Xmx3G
|
XMX_ARG=-J-Xmx3G
|
||||||
|
|
||||||
$KONAN_HOME/bin/konanc $XMX_ARG "$GENERATED_DIR" -nolink -nativelibrary "$NATIVES_DIR/$CSTUBSNAME.bc" \
|
$KONAN_HOME/bin/konanc $XMX_ARG "$GENERATED_DIR" -nolink -nativelibrary "$NATIVES_DIR/$CSTUBSNAME.bc" \
|
||||||
-o "$OUTPUT_FILE_NAME"
|
-o "$OUTPUT_FILE_NAME" -target "$TARGET"
|
||||||
@@ -18,5 +18,5 @@ LINKER_ARGS=${!var}
|
|||||||
var=COMPILER_ARGS_${TARGET}
|
var=COMPILER_ARGS_${TARGET}
|
||||||
COMPILER_ARGS=${!var} # add -opt for an optimized build.
|
COMPILER_ARGS=${!var} # add -opt for an optimized build.
|
||||||
|
|
||||||
interop -def:$DIR/stdio.def -copt:"$CFLAGS" -target:$TARGET -o:stdio.kt.bc || exit 1
|
cinterop -def:$DIR/stdio.def -copt:"$CFLAGS" -target:$TARGET -o:stdio.kt.bc || exit 1
|
||||||
konanc $COMPILER_ARGS -target $TARGET $DIR/CsvParser.kt -library stdio.kt.bc -o CsvParser.kexe || exit 1
|
konanc $COMPILER_ARGS -target $TARGET $DIR/CsvParser.kt -library stdio.kt.bc -o CsvParser.kexe || exit 1
|
||||||
|
|||||||
@@ -23,5 +23,5 @@ LINKER_ARGS=${!var}
|
|||||||
var=COMPILER_ARGS_${TARGET}
|
var=COMPILER_ARGS_${TARGET}
|
||||||
COMPILER_ARGS=${!var} # add -opt for an optimized build.
|
COMPILER_ARGS=${!var} # add -opt for an optimized build.
|
||||||
|
|
||||||
interop -copt:$CFLAGS -def:$DIR/libgit2.def -target:$TARGET -o:libgit2.kt.bc || exit 1
|
cinterop -copt:$CFLAGS -def:$DIR/libgit2.def -target:$TARGET -o:libgit2.kt.bc || exit 1
|
||||||
konanc -target $TARGET src -library libgit2.kt.bc -linkerArgs "$LINKER_ARGS" -o GitChurn.kexe || exit 1
|
konanc -target $TARGET src -library libgit2.kt.bc -linkerArgs "$LINKER_ARGS" -o GitChurn.kexe || exit 1
|
||||||
|
|||||||
@@ -5,6 +5,6 @@ To build use `./build.sh` script without arguments (or specify `TARGET` variable
|
|||||||
|
|
||||||
To run use
|
To run use
|
||||||
|
|
||||||
./Curl.kexe https://jetbrains.com
|
./Curl.kexe https://www.jetbrains.com
|
||||||
|
|
||||||
It will perform HTTP get and print out the data obtained.
|
It will perform HTTP get and print out the data obtained.
|
||||||
|
|||||||
@@ -23,5 +23,5 @@ LINKER_ARGS=${!var}
|
|||||||
var=COMPILER_ARGS_${TARGET}
|
var=COMPILER_ARGS_${TARGET}
|
||||||
COMPILER_ARGS=${!var} # add -opt for an optimized build.
|
COMPILER_ARGS=${!var} # add -opt for an optimized build.
|
||||||
|
|
||||||
interop -copt:"$CFLAGS" -copt:-I. -def:$DIR/libcurl.def -target:$TARGET || exit 1
|
cinterop -copt:"$CFLAGS" -copt:-I. -def:$DIR/libcurl.def -target:$TARGET -o:libcurl.bc || exit 1
|
||||||
konanc -target $TARGET src libcurl -nativelibrary libcurlstubs.bc -linkerArgs "$LINKER_ARGS" -o Curl.kexe || exit 1
|
konanc -target $TARGET src -library libcurl.bc -linkerArgs "$LINKER_ARGS" -o Curl.kexe || exit 1
|
||||||
|
|||||||
@@ -21,5 +21,5 @@ LINKER_ARGS=${!var}
|
|||||||
var=COMPILER_ARGS_${TARGET}
|
var=COMPILER_ARGS_${TARGET}
|
||||||
COMPILER_ARGS=${!var} # add -opt for an optimized build.
|
COMPILER_ARGS=${!var} # add -opt for an optimized build.
|
||||||
|
|
||||||
interop -def:$DIR/opengl.def -target:$TARGET -o:opengl.kt.bc || exit 1
|
cinterop -def:$DIR/opengl.def -target:$TARGET -o:opengl.kt.bc || exit 1
|
||||||
konanc -target $TARGET $DIR/OpenGlTeapot.kt -library opengl.kt.bc -linkerArgs "$LINKER_ARGS" -o OpenGlTeapot.kexe || exit 1
|
konanc -target $TARGET $DIR/OpenGlTeapot.kt -library opengl.kt.bc -linkerArgs "$LINKER_ARGS" -o OpenGlTeapot.kexe || exit 1
|
||||||
|
|||||||
@@ -18,5 +18,5 @@ LINKER_ARGS=${!var}
|
|||||||
var=COMPILER_ARGS_${TARGET}
|
var=COMPILER_ARGS_${TARGET}
|
||||||
COMPILER_ARGS=${!var} # add -opt for an optimized build.
|
COMPILER_ARGS=${!var} # add -opt for an optimized build.
|
||||||
|
|
||||||
interop -def:$DIR/sockets.def -copt:"$CFLAGS" -target:$TARGET -o:sockets.kt.bc || exit 1
|
cinterop -def:$DIR/sockets.def -copt:"$CFLAGS" -target:$TARGET -o:sockets.kt.bc || exit 1
|
||||||
konanc $COMPILER_ARGS -target $TARGET $DIR/EchoServer.kt -library sockets.kt.bc -o EchoServer.kexe || exit 1
|
konanc $COMPILER_ARGS -target $TARGET $DIR/EchoServer.kt -library sockets.kt.bc -o EchoServer.kexe || exit 1
|
||||||
|
|||||||
@@ -927,7 +927,7 @@ class SDL_Visualizer(val width: Int, val height: Int): GameFieldVisualizer, User
|
|||||||
SDL_SCANCODE_LEFT -> commands.add(UserCommand.LEFT)
|
SDL_SCANCODE_LEFT -> commands.add(UserCommand.LEFT)
|
||||||
SDL_SCANCODE_RIGHT -> commands.add(UserCommand.RIGHT)
|
SDL_SCANCODE_RIGHT -> commands.add(UserCommand.RIGHT)
|
||||||
SDL_SCANCODE_DOWN -> commands.add(UserCommand.DOWN)
|
SDL_SCANCODE_DOWN -> commands.add(UserCommand.DOWN)
|
||||||
SDL_SCANCODE_Z -> commands.add(UserCommand.ROTATE)
|
SDL_SCANCODE_Z, SDL_SCANCODE_SPACE -> commands.add(UserCommand.ROTATE)
|
||||||
SDL_SCANCODE_UP -> commands.add(UserCommand.DROP)
|
SDL_SCANCODE_UP -> commands.add(UserCommand.DROP)
|
||||||
SDL_SCANCODE_ESCAPE -> commands.add(UserCommand.EXIT)
|
SDL_SCANCODE_ESCAPE -> commands.add(UserCommand.EXIT)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ PATH=../../dist/bin:../../bin:$PATH
|
|||||||
DIR=.
|
DIR=.
|
||||||
DEPS=$(dirname `type -p konanc`)/../dependencies
|
DEPS=$(dirname `type -p konanc`)/../dependencies
|
||||||
|
|
||||||
CFLAGS_macbook=-I/Library/Frameworks/SDL2.framework/Headers
|
CFLAGS_macbook=-I$HOME/Library/Frameworks/SDL2.framework/Headers
|
||||||
LINKER_ARGS_macbook="-F /Library/Frameworks -framework SDL2"
|
LINKER_ARGS_macbook="-F $HOME/Library/Frameworks -framework SDL2"
|
||||||
COMPILER_ARGS_macbook=
|
COMPILER_ARGS_macbook=
|
||||||
CFLAGS_macbook=-I/opt/local/include/SDL2
|
#CFLAGS_macbook=-I/opt/local/include/SDL2
|
||||||
LINKER_ARGS_macbook="-L/opt/local/lib -lSDL2"
|
#LINKER_ARGS_macbook="-L/opt/local/lib -lSDL2"
|
||||||
|
|
||||||
CFLAGS_linux=-I/usr/include/SDL2
|
CFLAGS_linux=-I/usr/include/SDL2
|
||||||
LINKER_ARGS_linux="-L/usr/lib/x86_64-linux-gnu -lSDL2"
|
LINKER_ARGS_linux="-L/usr/lib/x86_64-linux-gnu -lSDL2"
|
||||||
@@ -39,6 +39,6 @@ LINKER_ARGS=${!var}
|
|||||||
var=COMPILER_ARGS_${TARGET}
|
var=COMPILER_ARGS_${TARGET}
|
||||||
COMPILER_ARGS=${!var} # add -opt for an optimized build.
|
COMPILER_ARGS=${!var} # add -opt for an optimized build.
|
||||||
|
|
||||||
interop -def:$DIR/sdl.def -copt:"$CFLAGS" -target:$TARGET -o:sdl.kt.bc || exit 1
|
cinterop -def:$DIR/sdl.def -copt:"$CFLAGS" -target:$TARGET -o:sdl.kt.bc || exit 1
|
||||||
konanc $COMPILER_ARGS -target $TARGET $DIR/Tetris.kt -library sdl.kt.bc -linkerArgs "$LINKER_ARGS" -o Tetris.kexe || exit 1
|
konanc $COMPILER_ARGS -target $TARGET $DIR/Tetris.kt -library sdl.kt.bc -linkerArgs "$LINKER_ARGS" -o Tetris.kexe || exit 1
|
||||||
#strip Tetris.kexe
|
#strip Tetris.kexe
|
||||||
|
|||||||
Reference in New Issue
Block a user