diff --git a/kotlin-native/konan/konan.properties b/kotlin-native/konan/konan.properties index 6c96ef4250b..3865b89c04a 100644 --- a/kotlin-native/konan/konan.properties +++ b/kotlin-native/konan/konan.properties @@ -422,6 +422,11 @@ gccToolchain.linux_arm32_hfp = target-gcc-toolchain-3-linux-x86-64 targetToolchain.linux_x64-linux_arm32_hfp = target-gcc-toolchain-3-linux-x86-64/x86_64-unknown-linux-gnu targetToolchain.mingw_x64-linux_arm32_hfp = msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 targetToolchain.macos_x64-linux_arm32_hfp = $llvmHome.macos_x64 + +# TODO: We might use docker on Windows or macOS. +emulatorDependency.linux_x64-linux_arm32_hfp = qemu-arm-static-5.1.0-linux-2 +emulatorExecutable.linux_x64-linux_arm32_hfp = qemu-arm-static-5.1.0-linux-2/qemu-arm + dependencies.linux_x64-linux_arm32_hfp = \ target-gcc-toolchain-3-linux-x86-64 \ target-sysroot-2-raspberrypi \ @@ -467,6 +472,10 @@ gccToolchain.linux_arm64 = target-gcc-toolchain-3-linux-x86-64 targetToolchain.linux_x64-linux_arm64 = target-gcc-toolchain-3-linux-x86-64/x86_64-unknown-linux-gnu targetToolchain.mingw_x64-linux_arm64 = msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 targetToolchain.macos_x64-linux_arm64 = $llvmHome.macos_x64 + +emulatorDependency.linux_x64-linux_arm64 = qemu-aarch64-static-5.1.0-linux-2 +emulatorExecutable.linux_x64-linux_arm64 = qemu-aarch64-static-5.1.0-linux-2/qemu-aarch64 + dependencies.linux_x64-linux_arm64 = \ target-gcc-toolchain-3-linux-x86-64 \ target-sysroot-1-linux-glibc-arm64 \ @@ -509,6 +518,10 @@ runtimeDefinitions.linux_arm64 = USE_GCC_UNWIND=1 KONAN_LINUX=1 KONAN_ARM64=1 \ gccToolchain.linux_mips32 = target-gcc-toolchain-3-linux-x86-64 targetToolchain.linux_x64-linux_mips32 = target-gcc-toolchain-2-linux-mips/x86_64-unknown-linux-gnu + +emulatorDependency.linux_x64-linux_mips32 = qemu-mips-static-5.1.0-linux-2 +emulatorExecutable.linux_x64-linux_mips32 = qemu-mips-static-5.1.0-linux-2/qemu-mips + dependencies.linux_x64-linux_mips32 = \ target-gcc-toolchain-2-linux-mips \ target-gcc-toolchain-3-linux-x86-64 \ @@ -541,6 +554,10 @@ runtimeDefinitions.linux_mips32 = USE_GCC_UNWIND=1 KONAN_LINUX=1 KONAN_MIPS32=1 gccToolchain.linux_mipsel32 = target-gcc-toolchain-3-linux-x86-64 targetToolchain.linux_x64-linux_mipsel32 = target-gcc-toolchain-2-linux-mips/x86_64-unknown-linux-gnu + +emulatorDependency.linux_x64-linux_mipsel32 = qemu-mipsel-static-5.1.0-linux-2 +emulatorExecutable.linux_x64-linux_mipsel32 = qemu-mipsel-static-5.1.0-linux-2/qemu-mipsel + dependencies.linux_x64-linux_mipsel32 = \ target-gcc-toolchain-2-linux-mips \ target-gcc-toolchain-3-linux-x86-64 \ @@ -792,4 +809,4 @@ runtimeDefinitions.wasm32 = KONAN_WASM=1 KONAN_NO_FFI=1 KONAN_NO_THREADS=1 \ KONAN_INTERNAL_NOW=1 KONAN_NO_MEMMEM KONAN_NO_CTORS_SECTION=1 # The version of Kotlin/Native compiler -compilerVersion=@compilerVersion@ \ No newline at end of file +compilerVersion=1.5-dev \ No newline at end of file diff --git a/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/Configurables.kt b/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/Configurables.kt index fb12b1ad11d..467d927ed81 100644 --- a/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/Configurables.kt +++ b/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/Configurables.kt @@ -63,6 +63,15 @@ interface Configurables : TargetableExternalStorage { val runtimeDefinitions get() = targetList("runtimeDefinitions") } +interface ConfigurablesWithEmulator : Configurables { + val emulatorDependency get() = hostTargetString("emulatorDependency") + // TODO: We need to find a way to represent absolute path in properties. + // In case of QEMU, absolute path to dynamic linker should be specified. + val emulatorExecutable get() = hostTargetString("emulatorExecutable") + + val absoluteEmulatorExecutable get() = absolute(emulatorExecutable) +} + interface TargetableConfigurables : Configurables { val targetArg get() = targetString("quadruple") } diff --git a/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/ConfigurablesImpl.kt b/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/ConfigurablesImpl.kt index cbee682e97d..a0406e12c81 100644 --- a/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/ConfigurablesImpl.kt +++ b/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/ConfigurablesImpl.kt @@ -19,7 +19,10 @@ package org.jetbrains.kotlin.konan.target import org.jetbrains.kotlin.konan.properties.* class GccConfigurablesImpl(target: KonanTarget, properties: Properties, baseDir: String?) - : GccConfigurables, KonanPropertiesLoader(target, properties, baseDir) + : GccConfigurables, KonanPropertiesLoader(target, properties, baseDir), ConfigurablesWithEmulator { + override val dependencies: List + get() = super.dependencies + listOfNotNull(emulatorDependency) + } class AndroidConfigurablesImpl(target: KonanTarget, properties: Properties, baseDir: String?) : AndroidConfigurables, KonanPropertiesLoader(target, properties, baseDir)