diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/SearchPathResolver.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/SearchPathResolver.kt index 1a28635cb18..32815eb60e0 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/SearchPathResolver.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/SearchPathResolver.kt @@ -43,7 +43,7 @@ fun SearchPathResolver.resolveImmediateLibraries(libraryNames: List, noDefaultLibs: Boolean = false, removeDuplicates: Boolean = true): List { - val defaultLibraries = defaultLinks(noStdLib, noDefaultLibs).map { + val defaultLibraries = defaultLinks(nostdlib = noStdLib, noDefaultLibs = noDefaultLibs).map { LibraryReaderImpl(it, abiVersion, target, isDefaultLink = true) } @@ -82,7 +82,14 @@ fun SearchPathResolver.resolveLibrariesRecursive(libraryNames: List, noStdLib: Boolean = false, noDefaultLibs: Boolean = false): List { return resolveLibrariesRecursive( - resolveImmediateLibraries(libraryNames, target, abiVersion, noStdLib, noDefaultLibs, true), + resolveImmediateLibraries( + libraryNames = libraryNames, + target = target, + abiVersion = abiVersion, + noStdLib = noStdLib, + noDefaultLibs = noDefaultLibs, + removeDuplicates = true + ), target, abiVersion ) } diff --git a/klib/src/platform/android/android.def b/klib/src/platform/android/android.def index 431fc33a6d4..81f93786779 100644 --- a/klib/src/platform/android/android.def +++ b/klib/src/platform/android/android.def @@ -1,3 +1,4 @@ +depends = posix package = platform.android headers = jni.h android/api-level.h android/asset_manager.h android/asset_manager_jni.h android/bitmap.h \ android/configuration.h android/dlext.h android/input.h android/keycodes.h android/log.h \ @@ -5,6 +6,8 @@ headers = jni.h android/api-level.h android/asset_manager.h android/asset_manage android/obb.h android/rect.h android/sensor.h android/storage_manager.h android/tts.h \ android/window.h +headerFilter = ** + linkerOpts = -landroid -llog -ljnigraphics --- diff --git a/klib/src/platform/android/egl.def b/klib/src/platform/android/egl.def index 1156eac2cc7..be095f0806a 100644 --- a/klib/src/platform/android/egl.def +++ b/klib/src/platform/android/egl.def @@ -1,3 +1,5 @@ +depends = glesCommon posix package = platform.egl headers = EGL/egl.h EGL/eglext.h EGL/eglplatform.h +headerFilter = EGL/** linkerOpts = -lEGL \ No newline at end of file diff --git a/klib/src/platform/android/gles.def b/klib/src/platform/android/gles.def index cc8d8040f9e..e1700b20b0d 100644 --- a/klib/src/platform/android/gles.def +++ b/klib/src/platform/android/gles.def @@ -1,3 +1,5 @@ +depends = glesCommon posix package = platform.gles headers = GLES/gl.h GLES/glext.h GLES/glplatform.h +headerFilter = GLES/** linkerOpts = -lGLESv1_CM \ No newline at end of file diff --git a/klib/src/platform/android/gles2.def b/klib/src/platform/android/gles2.def index 8ee244700e6..3a542ccbd41 100644 --- a/klib/src/platform/android/gles2.def +++ b/klib/src/platform/android/gles2.def @@ -1,3 +1,5 @@ +depends = glesCommon posix package = platform.gles2 headers = GLES2/gl2.h GLES2/gl2ext.h GLES2/gl2platform.h +headerFilter = GLES2/** linkerOpts = -lGLESv2 diff --git a/klib/src/platform/android/gles3.def b/klib/src/platform/android/gles3.def index a02a01eaa1e..579b3b30a55 100644 --- a/klib/src/platform/android/gles3.def +++ b/klib/src/platform/android/gles3.def @@ -1,3 +1,5 @@ +depends = glesCommon posix package = platform.gles3 headers = GLES3/gl3.h GLES3/gl3ext.h GLES3/gl3platform.h +headerFilter = GLES3/** linkerOpts = -lGLESv3 \ No newline at end of file diff --git a/klib/src/platform/android/glesCommon.def b/klib/src/platform/android/glesCommon.def new file mode 100644 index 00000000000..c4ded0d28ae --- /dev/null +++ b/klib/src/platform/android/glesCommon.def @@ -0,0 +1,4 @@ +depends = posix +package = platform.glescommon +headers = KHR/khrplatform.h +headerFilter = KHR/** diff --git a/klib/src/platform/android/linux.def b/klib/src/platform/android/linux.def index 610d7939890..e5e78fbd390 100644 --- a/klib/src/platform/android/linux.def +++ b/klib/src/platform/android/linux.def @@ -1,22 +1,14 @@ +depends = posix package = platform.linux headers = byteswap.h elf.h endian.h features.h lastlog.h link.h \ - malloc.h mntent.h nsswitch.h pathconf.h termio.h thread_db.h time64.h \ + malloc.h mntent.h nsswitch.h pathconf.h termio.h thread_db.h \ uchar.h util.h \ sys/epoll.h sys/inotify.h sys/klog.h sys/sendfile.h \ sys/sysconf.h sys/sysinfo.h sys/utime.h \ net/if_ether.h net/if_packet.h netinet/ether.h netinet/in6.h netpacket/packet.h +headers.android_arm32 = time64.h + +headerFilter = ** + linkerOpts = -ldl - ---- -// cinterop -target android_arm32 -def klib/src/platform/android/posix.def -o platform.posix.klib - -// Wrapper to access errno variable. -static int posix_errno() { - return errno; -} - -// Wrapper to access h_errno variable. -static int posix_h_errno() { - return h_errno; -} \ No newline at end of file diff --git a/klib/src/platform/android/media.def b/klib/src/platform/android/media.def index 18a58b473ae..5e18f888a55 100644 --- a/klib/src/platform/android/media.def +++ b/klib/src/platform/android/media.def @@ -1,4 +1,6 @@ +depends = android posix package = platform.media headers = media/NdkMediaCodec.h media/NdkMediaCrypto.h media/NdkMediaDrm.h media/NdkMediaError.h \ media/NdkMediaExtractor.h media/NdkMediaFormat.h media/NdkMediaMuxer.h +headerFilter = media/** linkerOpts = -lmediandk \ No newline at end of file diff --git a/klib/src/platform/android/omxal.def b/klib/src/platform/android/omxal.def index 0da3070c701..5aaaac2cd76 100644 --- a/klib/src/platform/android/omxal.def +++ b/klib/src/platform/android/omxal.def @@ -1,3 +1,5 @@ +depends = posix package = platform.omxal headers = OMXAL/OpenMAXAL.h OMXAL/OpenMAXAL_Android.h OMXAL/OpenMAXAL_Platform.h +headerFilter = OMXAL/** linkerOpts = -lOpenMAXAL \ No newline at end of file diff --git a/klib/src/platform/android/posix.def b/klib/src/platform/android/posix.def index 1eef4fc000b..2ac1cddd744 100644 --- a/klib/src/platform/android/posix.def +++ b/klib/src/platform/android/posix.def @@ -1,3 +1,4 @@ +depends = package = platform.posix headers = alloca.h ar.h assert.h complex.h dirent.h dlfcn.h err.h errno.h fcntl.h \ fenv.h fnmatch.h fts.h ftw.h getopt.h grp.h inttypes.h libgen.h limits.h \ diff --git a/klib/src/platform/android/sles.def b/klib/src/platform/android/sles.def index 7fc4864795a..d5ec2583343 100644 --- a/klib/src/platform/android/sles.def +++ b/klib/src/platform/android/sles.def @@ -1,4 +1,6 @@ +depends = posix package = platform.sles headers = SLES//OpenSLES.h SLES/OpenSLES_Android.h SLES/OpenSLES_AndroidConfiguration.h \ SLES/OpenSLES_AndroidMetadata.h SLES/OpenSLES_Platform.h -linkerOpts = -lOpenSLES \ No newline at end of file +headerFilter = SLES/** +linkerOpts = -lOpenSLES diff --git a/klib/src/platform/android/zlib.def b/klib/src/platform/android/zlib.def index 46ed691d1a3..bd6628a356d 100644 --- a/klib/src/platform/android/zlib.def +++ b/klib/src/platform/android/zlib.def @@ -1,3 +1,5 @@ +depends = posix package = platform.zlib headers = zconf.h zlib.h +headerFilter = ** linkerOpts = -lz diff --git a/utilities/src/main/kotlin/org/jetbrains/kotlin/cli/utilities/main.kt b/utilities/src/main/kotlin/org/jetbrains/kotlin/cli/utilities/main.kt index 21325e4bb38..18475d8e49e 100644 --- a/utilities/src/main/kotlin/org/jetbrains/kotlin/cli/utilities/main.kt +++ b/utilities/src/main/kotlin/org/jetbrains/kotlin/cli/utilities/main.kt @@ -27,8 +27,10 @@ import org.jetbrains.kotlin.cli.bc.main as konancMain import org.jetbrains.kotlin.native.interop.gen.jvm.interop import org.jetbrains.kotlin.cli.klib.main as klibMain +private val NODEFAULTLIBS = "-nodefaultlibs" + fun invokeCinterop(args: Array) { - val cinteropArgFilter = listOf("-nodefaultlibs") + val cinteropArgFilter = listOf(NODEFAULTLIBS) var outputFileName = "nativelib" var target = "host" @@ -46,7 +48,7 @@ fun invokeCinterop(args: Array) { libraries.addIfNotNull(nextArg) if (arg == "-r" || arg == "-repo") repos.addIfNotNull(nextArg) - if (arg == "-nodefaultlibs") + if (arg == NODEFAULTLIBS) noDefaultLibs = true } @@ -94,7 +96,9 @@ fun invokeCinterop(args: Array) { "-o", outputFileName, "-target", target, "-manifest", manifest.path - ) + cinteropArgsToCompiler + libraries.flatMap { listOf("-library", it) } + repos.flatMap { listOf("-repo", it) } + ) + cinteropArgsToCompiler + libraries.flatMap { listOf("-library", it) } + repos.flatMap { listOf("-repo", it) } + + if (noDefaultLibs) arrayOf(NODEFAULTLIBS) else emptyArray() + konancMain(konancArgs) }