diff --git a/experiments/Interop/Indexer/src/main/kotlin/clang/Clang.def b/experiments/Interop/Indexer/src/main/kotlin/clang/Clang.def index 0bdc0bb86ba..6156817f404 100644 --- a/experiments/Interop/Indexer/src/main/kotlin/clang/Clang.def +++ b/experiments/Interop/Indexer/src/main/kotlin/clang/Clang.def @@ -2,13 +2,13 @@ libName = clangbridge headers = clang-c/Index.h -compiler = cc +compiler = clang -compilerOpts = -std=c99 -I/usr/local/Cellar/llvm/3.8.1/include -fPIC +compilerOpts = -std=c99 -fPIC -linker = cc +linker = clang linkerOpts = -fPIC \ - -L/usr/local/Cellar/llvm/3.8.1/lib -lclang + -lclang excludedFunctions = \ No newline at end of file diff --git a/experiments/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/main.kt b/experiments/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/main.kt index e250227f8bc..fa569384a44 100644 --- a/experiments/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/main.kt +++ b/experiments/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/main.kt @@ -7,6 +7,8 @@ import java.util.* import kotlin.system.exitProcess fun main(args: Array) { + val llvmInstallPath = System.getProperty("llvmInstallPath")!! + val ktSrcRoot = args[0] val ktGenRoot = args[1] val nativeLibsDir = args[2] @@ -59,7 +61,7 @@ fun main(args: Array) { val javaHome = System.getProperty("java.home") val compilerArgsForJniIncludes = listOf("", "linux", "darwin").map { "-I$javaHome/../include/$it" }.toTypedArray() - val compilerCmd = arrayOf(compiler, *compilerOpts.toTypedArray(), + val compilerCmd = arrayOf("$llvmInstallPath/bin/$compiler", *compilerOpts.toTypedArray(), *compilerArgsForJniIncludes, "-c", outCFile.path, "-o", outOFile.path) @@ -78,7 +80,7 @@ fun main(args: Array) { val outLib = nativeLibsDir + "/" + System.mapLibraryName(libName) - val linkerCmd = arrayOf(linker, *linkerOpts, outOFile.path, "-shared", "-o", outLib, + val linkerCmd = arrayOf("$llvmInstallPath/bin/$linker", *linkerOpts, outOFile.path, "-shared", "-o", outLib, "-Wl,-flat_namespace,-undefined,dynamic_lookup") println(linkerCmd.joinToString(" ")) diff --git a/experiments/InteropExample/build.gradle b/experiments/InteropExample/build.gradle index bc10e15d947..c787447c284 100644 --- a/experiments/InteropExample/build.gradle +++ b/experiments/InteropExample/build.gradle @@ -22,4 +22,10 @@ dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" } +genInteropStubs { + // these variables will be passed to native toolchain used by stub generator: + environment 'CPATH' : "$llvmInstallPath/include" + environment 'LIBRARY_PATH' : "$llvmInstallPath/lib" +} + mainClassName = 'MainKt' diff --git a/experiments/InteropExample/src/main/kotlin/llvm/LLVM.def b/experiments/InteropExample/src/main/kotlin/llvm/LLVM.def index 6b38a4e8596..978549441d8 100644 --- a/experiments/InteropExample/src/main/kotlin/llvm/LLVM.def +++ b/experiments/InteropExample/src/main/kotlin/llvm/LLVM.def @@ -3,27 +3,27 @@ libName = llvmbridge headers = llvm-c/Core.h llvm-c/ExecutionEngine.h llvm-c/Target.h llvm-c/Analysis.h llvm-c/BitWriter.h -compiler = cc +compiler = clang -compilerOpts = -std=c99 -I/opt/local/libexec/llvm-3.8/include -fPIC \ +compilerOpts = -std=c99 -fPIC \ -Wall -W -Wno-unused-parameter -Wwrite-strings -Wmissing-field-initializers \ -pedantic -Wno-long-long -Wcovered-switch-default -Wdelete-non-virtual-dtor \ -DNDEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -linker = c++ +linker = clang++ linkerOpts = -stdlib=libc++ -fPIC -fvisibility-inlines-hidden \ -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers \ -pedantic -Wno-long-long -Wcovered-switch-default -Wnon-virtual-dtor -Wdelete-non-virtual-dtor \ -std=c++11 \ -DNDEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS \ - -L/opt/local/libexec/llvm-3.8/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names \ + -Wl,-search_paths_first -Wl,-headerpad_max_install_names \ -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMSelectionDAG -lLLVMAsmPrinter \ -lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMInterpreter \ -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMInstrumentation -lLLVMProfileData -lLLVMTransformUtils \ -lLLVMBitWriter -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMRuntimeDyld -lLLVMObject -lLLVMMCParser \ -lLLVMBitReader -lLLVMMC -lLLVMCore -lLLVMSupport -lcurses -lpthread -lz -lm \ - -L/opt/local/lib -lffi + -lffi excludedFunctions = diff --git a/experiments/buildSrc/src/main/groovy/org/jetbrains/kotlin/NativeInteropPlugin.groovy b/experiments/buildSrc/src/main/groovy/org/jetbrains/kotlin/NativeInteropPlugin.groovy index da6e325b5d2..06d94e5fa6e 100644 --- a/experiments/buildSrc/src/main/groovy/org/jetbrains/kotlin/NativeInteropPlugin.groovy +++ b/experiments/buildSrc/src/main/groovy/org/jetbrains/kotlin/NativeInteropPlugin.groovy @@ -29,6 +29,7 @@ class NativeInteropPlugin implements Plugin { main = "org.jetbrains.kotlin.native.interop.gen.jvm.MainKt" args = [srcDir, generatedSrcDir, nativeLibsDir] systemProperties "java.library.path" : new File(prj.findProject(":Interop:Indexer").buildDir, "nativelibs") + systemProperties "llvmInstallPath" : prj.llvmInstallPath environment "LIBCLANG_DISABLE_CRASH_RECOVERY": "1" environment "DYLD_LIBRARY_PATH": "${prj.llvmInstallPath}/lib" diff --git a/experiments/translator-bc/build.gradle b/experiments/translator-bc/build.gradle index 3a68118ad86..60c23f8cbca 100644 --- a/experiments/translator-bc/build.gradle +++ b/experiments/translator-bc/build.gradle @@ -42,3 +42,8 @@ sourceSets { main.java.srcDirs += 'src/main/kotlin' } +genInteropStubs { + environment 'CPATH' : "$llvmInstallPath/include" + environment 'LIBRARY_PATH' : "$llvmInstallPath/lib" +} + diff --git a/experiments/translator-bc/src/main/kotlin/org/jetbrains/kotlin/native/llvm/LLVM.def b/experiments/translator-bc/src/main/kotlin/org/jetbrains/kotlin/native/llvm/LLVM.def index 6b38a4e8596..978549441d8 100644 --- a/experiments/translator-bc/src/main/kotlin/org/jetbrains/kotlin/native/llvm/LLVM.def +++ b/experiments/translator-bc/src/main/kotlin/org/jetbrains/kotlin/native/llvm/LLVM.def @@ -3,27 +3,27 @@ libName = llvmbridge headers = llvm-c/Core.h llvm-c/ExecutionEngine.h llvm-c/Target.h llvm-c/Analysis.h llvm-c/BitWriter.h -compiler = cc +compiler = clang -compilerOpts = -std=c99 -I/opt/local/libexec/llvm-3.8/include -fPIC \ +compilerOpts = -std=c99 -fPIC \ -Wall -W -Wno-unused-parameter -Wwrite-strings -Wmissing-field-initializers \ -pedantic -Wno-long-long -Wcovered-switch-default -Wdelete-non-virtual-dtor \ -DNDEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -linker = c++ +linker = clang++ linkerOpts = -stdlib=libc++ -fPIC -fvisibility-inlines-hidden \ -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers \ -pedantic -Wno-long-long -Wcovered-switch-default -Wnon-virtual-dtor -Wdelete-non-virtual-dtor \ -std=c++11 \ -DNDEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS \ - -L/opt/local/libexec/llvm-3.8/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names \ + -Wl,-search_paths_first -Wl,-headerpad_max_install_names \ -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMSelectionDAG -lLLVMAsmPrinter \ -lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMInterpreter \ -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMInstrumentation -lLLVMProfileData -lLLVMTransformUtils \ -lLLVMBitWriter -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMRuntimeDyld -lLLVMObject -lLLVMMCParser \ -lLLVMBitReader -lLLVMMC -lLLVMCore -lLLVMSupport -lcurses -lpthread -lz -lm \ - -L/opt/local/lib -lffi + -lffi excludedFunctions =