Use more correct paths in interop stubs generator

*   Use absolute paths to C sources and artifacts because stub generator
    changes working directory when running clang.
*   Do not change working directory when running without def file.
This commit is contained in:
Svyatoslav Scherbina
2017-04-17 12:23:08 +03:00
committed by SvyatoslavScherbina
parent bb8f04ab87
commit 2b98f9bce6
@@ -354,20 +354,21 @@ private fun processLib(konanHome: String,
}
}
val workDir = defFile?.absoluteFile?.parentFile ?: File(System.getProperty("java.io.tmpdir"))
val workDir = defFile?.absoluteFile?.parentFile ?: File(userDir)
if (flavor == KotlinPlatform.JVM) {
val outOFile = createTempFile(suffix = ".o")
val compilerCmd = arrayOf("$llvmInstallPath/bin/$compiler", *gen.libraryForCStubs.compilerArgs.toTypedArray(),
"-c", outCFile.path, "-o", outOFile.path)
"-c", outCFile.absolutePath, "-o", outOFile.absolutePath)
runCmd(compilerCmd, workDir, verbose)
val outLib = nativeLibsDir + "/" + System.mapLibraryName(libName)
val outLib = File(nativeLibsDir, System.mapLibraryName(libName))
val linkerCmd = arrayOf("$llvmInstallPath/bin/$linker", *linkerOpts, outOFile.path, "-shared", "-o", outLib,
val linkerCmd = arrayOf("$llvmInstallPath/bin/$linker", *linkerOpts, outOFile.absolutePath, "-shared",
"-o", outLib.absolutePath,
"-Wl,-flat_namespace,-undefined,dynamic_lookup")
runCmd(linkerCmd, workDir, verbose)
@@ -375,9 +376,9 @@ private fun processLib(konanHome: String,
outOFile.delete()
} else if (flavor == KotlinPlatform.NATIVE) {
val outBcName = libName + ".bc"
val outLib = nativeLibsDir + "/" + outBcName
val outLib = File(nativeLibsDir, outBcName)
val compilerCmd = arrayOf("$llvmInstallPath/bin/$compiler", *gen.libraryForCStubs.compilerArgs.toTypedArray(),
"-emit-llvm", "-c", outCFile.path, "-o", outLib)
"-emit-llvm", "-c", outCFile.absolutePath, "-o", outLib.absolutePath)
runCmd(compilerCmd, workDir, verbose)
}