From a580af3a8cb677cd8b9b8695f8c7648dce96ab0b Mon Sep 17 00:00:00 2001 From: Vasily Levchenko Date: Wed, 5 Oct 2016 09:47:24 +0300 Subject: [PATCH] StubGenerator: detecting default os for case when traget os isn't set --- .../kotlin/native/interop/gen/jvm/main.kt | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/main.kt b/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/main.kt index b31422a929e..c81260852b4 100644 --- a/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/main.kt +++ b/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/main.kt @@ -1,8 +1,10 @@ package org.jetbrains.kotlin.native.interop.gen.jvm +import kotlin_native.interop.Ref.to import org.jetbrains.kotlin.native.interop.indexer.NativeIndex import org.jetbrains.kotlin.native.interop.indexer.buildNativeIndex import java.io.File +import java.lang.IllegalArgumentException import java.util.* import kotlin.system.exitProcess @@ -12,12 +14,31 @@ fun main(args: Array) { val ktGenRoot = args[0] val nativeLibsDir = args[1] val ktSrcRoots = args.drop(2) + // TODO: remove OSX defaults. + val substitutions = mapOf( + "arch" to (System.getenv("TARGET_ARCH") ?: "x86-64"), + "os" to (System.getenv("TARGET_OS") ?: detectHost()) + ) + ktSrcRoots.forEach { ktSrcRoot -> val defFiles = File(ktSrcRoot).walk().filter { it.name.endsWith(".def") } defFiles.forEach { defFile -> - processDefFile(ktSrcRoot, defFile, ktGenRoot, nativeLibsDir, llvmInstallPath) + processDefFile(ktSrcRoot, defFile, ktGenRoot, nativeLibsDir, llvmInstallPath, substitutions) + } + } +} + +private fun detectHost():String { + val os =System.getProperty("os.name") + when (os) { + "Linux" -> return "linux" + "Windows" -> return "win" + "Mac OS X" -> return "osx" + "FreeBSD" -> return "freebsd" + else -> { + throw IllegalArgumentException("we don't know ${os} value") } } } @@ -42,16 +63,11 @@ private fun substitute(properties: Properties, substitutions: Map) { val config = Properties() defFile.bufferedReader().use { reader -> config.load(reader) } - // TODO: remove OSX defaults. - val substitutions = mapOf( - "arch" to (System.getenv("TARGET_ARCH") ?: "x86-64"), - "os" to (System.getenv("TARGET_OS") ?: "osx") - ) substitute(config, substitutions) val headerFiles = config.getProperty("headers").split(' ')