From c409192b9745d23ce2ebae679c7afbc7b63b0c26 Mon Sep 17 00:00:00 2001 From: Sergey Bogolepov Date: Wed, 19 Aug 2020 14:23:39 +0700 Subject: [PATCH] [KT-40584] Refactor LLVM dependency processing Currently, Kotlin/Native is tightly tied to a single predefined LLVM distribution that is used by developers as well as users. We want to separate distribution into two (smaller for users and bigger for devs) and also provide a way for users to use their own LLVM distribution (e.g. system one). This commit adds this user-dev separation, yet without actual update of distributions. --- konan/konan.properties | 91 +++++++------------ .../kotlin/konan/target/KonanProperties.kt | 17 +++- .../kotlin/konan/target/TargetProperties.kt | 12 +-- 3 files changed, 53 insertions(+), 67 deletions(-) diff --git a/konan/konan.properties b/konan/konan.properties index 75bae991d0f..e932f1421d9 100644 --- a/konan/konan.properties +++ b/konan/konan.properties @@ -35,14 +35,28 @@ homeDependencyCache = .konan/cache # Appendix that is used for smaller version of LLVM distributions. reducedLlvmAppendix = compact +predefinedLlvmDistributions = \ + clang-llvm-8.0.0-linux-x86-64 \ + msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 \ + clang-llvm-apple-8.0.0-darwin-macos + +llvm.linux_x64.dev = clang-llvm-8.0.0-linux-x86-64 +llvm.linux_x64.user = clang-llvm-8.0.0-linux-x86-64 + +llvm.mingw_x64.dev = msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 +llvm.mingw_x64.user = msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 + +llvm.macos_x64.dev = clang-llvm-apple-8.0.0-darwin-macos +llvm.macos_x64.user = clang-llvm-apple-8.0.0-darwin-macos + clangDebugFlags = -O0 llvmVersion.linux_x64 = 8.0.0 llvmVersion.mingw_x64 = 8.0.1 -# We follow Apple versioning convention here. llvmVersion.macos_x64 = 8.0.0 # Mac OS X. -llvmHome.macos_x64 = clang-llvm-apple-8.0.0-darwin-macos +# Can be an absolute path instead of predefined value. +llvmHome.macos_x64 = $llvm.macos_x64.dev targetToolchain.macos_x64 = target-toolchain-xcode_11_5-macos_x64 libffiDir.macos_x64 = libffi-3.2.1-3-darwin-macos additionalToolsDir.macos_x64 = xcode-addon-xcode_11_5-macos_x64 @@ -66,8 +80,7 @@ osVersionMinFlagClang.macos_x64 = -mmacosx-version-min osVersionMin.macos_x64 = 10.11 dependencies.macos_x64 = \ libffi-3.2.1-3-darwin-macos \ - lldb-2-macos \ - clang-llvm-apple-8.0.0-darwin-macos + lldb-2-macos target-sysroot-xcode_11_5-macos_x64.default = \ remote:internal @@ -82,8 +95,7 @@ xcode-addon-xcode_11_5-macos_x64.default = \ # Apple's 32-bit iOS. targetToolchain.macos_x64-ios_arm32 = target-toolchain-xcode_11_5-macos_x64 dependencies.macos_x64-ios_arm32 = \ - libffi-3.2.1-3-darwin-macos \ - clang-llvm-apple-8.0.0-darwin-macos + libffi-3.2.1-3-darwin-macos target-sysroot-xcode_11_5-ios_arm32.default = \ remote:internal @@ -108,8 +120,7 @@ osVersionMin.ios_arm32 = 9.0 # Apple's 64-bit iOS. targetToolchain.macos_x64-ios_arm64 = target-toolchain-xcode_11_5-macos_x64 dependencies.macos_x64-ios_arm64 = \ - libffi-3.2.1-3-darwin-macos \ - clang-llvm-apple-8.0.0-darwin-macos + libffi-3.2.1-3-darwin-macos target-sysroot-xcode_11_5-ios_arm64.default = \ remote:internal @@ -137,8 +148,7 @@ osVersionMin.ios_arm64 = 9.0 # Apple's iOS simulator. targetToolchain.macos_x64-ios_x64 = target-toolchain-xcode_11_5-macos_x64 dependencies.macos_x64-ios_x64 = \ - libffi-3.2.1-3-darwin-macos \ - clang-llvm-apple-8.0.0-darwin-macos + libffi-3.2.1-3-darwin-macos target-sysroot-xcode_11_5-ios_x64.default = \ remote:internal @@ -163,8 +173,7 @@ osVersionMin.ios_x64 = 9.0 # Apple's tvOS simulator. targetToolchain.macos_x64-tvos_x64 = target-toolchain-xcode_11_5-macos_x64 dependencies.macos_x64-tvos_x64 = \ - libffi-3.2.1-3-darwin-macos \ - clang-llvm-apple-8.0.0-darwin-macos + libffi-3.2.1-3-darwin-macos target-sysroot-xcode_11_5-tvos_x64.default = \ remote:internal @@ -189,8 +198,7 @@ osVersionMin.tvos_x64 = 9.0 # Apple's 64-bit tvOS. targetToolchain.macos_x64-tvos_arm64 = target-toolchain-xcode_11_5-macos_x64 dependencies.macos_x64-tvos_arm64 = \ - libffi-3.2.1-3-darwin-macos \ - clang-llvm-apple-8.0.0-darwin-macos + libffi-3.2.1-3-darwin-macos target-sysroot-xcode_11_5-tvos_arm64.default = \ remote:internal @@ -215,8 +223,7 @@ osVersionMin.tvos_arm64 = 9.0 # watchOS armv7k targetToolchain.macos_x64-watchos_arm32 = target-toolchain-xcode_11_5-macos_x64 dependencies.macos_x64-watchos_arm32 = \ - libffi-3.2.1-3-darwin-macos \ - clang-llvm-apple-8.0.0-darwin-macos + libffi-3.2.1-3-darwin-macos target-sysroot-xcode_11_5-watchos_arm32.default = \ remote:internal @@ -241,8 +248,7 @@ osVersionMin.watchos_arm32 = 5.0 # watchOS arm64_32 targetToolchain.macos_x64-watchos_arm64 = target-toolchain-xcode_11_5-macos_x64 dependencies.macos_x64-watchos_arm64 = \ - libffi-3.2.1-3-darwin-macos \ - clang-llvm-apple-8.0.0-darwin-macos + libffi-3.2.1-3-darwin-macos target-sysroot-xcode_11_5-watchos_arm64.default = \ remote:internal @@ -268,8 +274,7 @@ osVersionMin.watchos_arm64 = 5.0 # Apple's watchOS i386 simulator. targetToolchain.macos_x64-watchos_x86 = target-toolchain-xcode_11_5-macos_x64 dependencies.macos_x64-watchos_x86 = \ - libffi-3.2.1-3-darwin-macos \ - clang-llvm-apple-8.0.0-darwin-macos + libffi-3.2.1-3-darwin-macos target-sysroot-xcode_11_5-watchos_x86.default = \ remote:internal @@ -296,13 +301,12 @@ osVersionMinFlagClang.watchos_x86 = -mwatchos-simulator-version-min osVersionMin.watchos_x86 = 5.0 # Linux x86-64. -llvmHome.linux_x64 = clang-llvm-8.0.0-linux-x86-64 +llvmHome.linux_x64 = $llvm.linux_x64.dev libffiDir.linux_x64 = libffi-3.2.1-2-linux-x86-64 gccToolchain.linux_x64 = target-gcc-toolchain-3-linux-x86-64 targetToolchain.linux_x64 = target-gcc-toolchain-3-linux-x86-64/x86_64-unknown-linux-gnu dependencies.linux_x64 = \ - clang-llvm-8.0.0-linux-x86-64 \ target-gcc-toolchain-3-linux-x86-64 \ libffi-3.2.1-2-linux-x86-64 \ lldb-2-linux @@ -310,14 +314,12 @@ dependencies.linux_x64 = \ gccToolchain.mingw_x64 = target-gcc-toolchain-3-linux-x86-64 targetToolchain.mingw_x64-linux_x64 = msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 dependencies.mingw_x64-linux_x64 = \ - msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 \ libffi-3.2.1-mingw-w64-x86-64 \ target-gcc-toolchain-3-linux-x86-64 gccToolchain.macos_x64 = target-gcc-toolchain-3-linux-x86-64 -targetToolchain.macos_x64-linux_x64 = clang-llvm-apple-8.0.0-darwin-macos +targetToolchain.macos_x64-linux_x64 = $llvmHome.macos_x64 dependencies.macos_x64-linux_x64 = \ - clang-llvm-apple-8.0.0-darwin-macos \ libffi-3.2.1-3-darwin-macos \ target-gcc-toolchain-3-linux-x86-64 @@ -342,19 +344,16 @@ abiSpecificLibraries.linux_x64 = ../lib64 lib64 usr/lib64 # Raspberry Pi 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 = clang-llvm-apple-8.0.0-darwin-macos +targetToolchain.macos_x64-linux_arm32_hfp = $llvmHome.macos_x64 dependencies.linux_x64-linux_arm32_hfp = \ - clang-llvm-8.0.0-linux-x86-64 \ target-gcc-toolchain-3-linux-x86-64 \ target-sysroot-2-raspberrypi \ libffi-3.2.1-2-linux-x86-64 dependencies.mingw_x64-linux_arm32_hfp = \ - msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 \ libffi-3.2.1-mingw-w64-x86-64 \ target-gcc-toolchain-3-linux-x86-64 \ target-sysroot-2-raspberrypi dependencies.macos_x64-linux_arm32_hfp = \ - clang-llvm-apple-8.0.0-darwin-macos \ libffi-3.2.1-3-darwin-macos \ target-gcc-toolchain-3-linux-x86-64 \ target-sysroot-2-raspberrypi @@ -384,19 +383,16 @@ abiSpecificLibraries.linux_arm32_hfp = \ # Linux arm64 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 = clang-llvm-apple-8.0.0-darwin-macos +targetToolchain.macos_x64-linux_arm64 = $llvmHome.macos_x64 dependencies.linux_x64-linux_arm64 = \ - clang-llvm-8.0.0-linux-x86-64 \ target-gcc-toolchain-3-linux-x86-64 \ target-sysroot-1-linux-glibc-arm64 \ libffi-3.2.1-2-linux-x86-64 dependencies.mingw_x64-linux_arm64 = \ - msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 \ libffi-3.2.1-mingw-w64-x86-64 \ target-gcc-toolchain-3-linux-x86-64 \ target-sysroot-1-linux-glibc-arm64 dependencies.macos_x64-linux_arm64 = \ - clang-llvm-apple-8.0.0-darwin-macos \ libffi-3.2.1-3-darwin-macos \ target-gcc-toolchain-3-linux-x86-64 \ target-sysroot-1-linux-glibc-arm64 @@ -426,7 +422,6 @@ abiSpecificLibraries.linux_arm64 = \ # MIPS targetToolchain.linux_x64-linux_mips32 = target-gcc-toolchain-2-linux-mips/x86_64-unknown-linux-gnu dependencies.linux_x64-linux_mips32 = \ - clang-llvm-8.0.0-linux-x86-64 \ target-gcc-toolchain-2-linux-mips \ target-gcc-toolchain-3-linux-x86-64 \ target-sysroot-2-mips \ @@ -453,7 +448,6 @@ abiSpecificLibraries.linux_mips32 = # MIPSel targetToolchain.linux_x64-linux_mipsel32 = target-gcc-toolchain-2-linux-mips/x86_64-unknown-linux-gnu dependencies.linux_x64-linux_mipsel32 = \ - clang-llvm-8.0.0-linux-x86-64 \ target-gcc-toolchain-2-linux-mips \ target-gcc-toolchain-3-linux-x86-64 \ target-sysroot-2-mipsel \ @@ -479,19 +473,16 @@ abiSpecificLibraries.linux_mipsel32 = # Android ARM32, based on NDK for android-21. targetToolchain.macos_x64-android_arm32 = target-toolchain-2-osx-android_ndk dependencies.macos_x64-android_arm32 = \ - clang-llvm-apple-8.0.0-darwin-macos \ target-sysroot-1-android_ndk \ target-toolchain-2-osx-android_ndk \ libffi-3.2.1-3-darwin-macos targetToolchain.linux_x64-android_arm32 = target-toolchain-2-linux-android_ndk dependencies.linux_x64-android_arm32 = \ - clang-llvm-8.0.0-linux-x86-64 \ target-sysroot-1-android_ndk \ target-toolchain-2-linux-android_ndk \ libffi-3.2.1-2-linux-x86-64 targetToolchain.mingw_x64-android_arm32 = target-toolchain-2-windows-android_ndk dependencies.mingw_x64-android_arm32 = \ - msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 \ target-sysroot-1-android_ndk \ target-toolchain-2-windows-android_ndk \ libffi-3.2.1-mingw-w64-x86-64 @@ -507,19 +498,16 @@ linkerKonanFlags.android_arm32 = -lm -lc++_static -lc++abi -landroid -llog -lato # Android ARM64, based on NDK. targetToolchain.macos_x64-android_arm64 = target-toolchain-2-osx-android_ndk dependencies.macos_x64-android_arm64 = \ - clang-llvm-apple-8.0.0-darwin-macos \ target-sysroot-1-android_ndk \ target-toolchain-2-osx-android_ndk \ libffi-3.2.1-3-darwin-macos targetToolchain.linux_x64-android_arm64 = target-toolchain-2-linux-android_ndk dependencies.linux_x64-android_arm64 = \ - clang-llvm-8.0.0-linux-x86-64 \ target-sysroot-1-android_ndk \ target-toolchain-2-linux-android_ndk \ libffi-3.2.1-2-linux-x86-64 targetToolchain.mingw_x64-android_arm64 = target-toolchain-2-windows-android_ndk dependencies.mingw_x64-android_arm64 = \ - msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 \ target-sysroot-1-android_ndk \ target-toolchain-2-windows-android_ndk \ libffi-3.2.1-mingw-w64-x86-64 @@ -535,19 +523,16 @@ linkerNoDebugFlags.android_arm64 = -Wl,-S # Android X86, based on NDK. targetToolchain.macos_x64-android_x86 = target-toolchain-2-osx-android_ndk dependencies.macos_x64-android_x86 = \ - clang-llvm-apple-8.0.0-darwin-macos \ target-sysroot-1-android_ndk \ target-toolchain-2-osx-android_ndk \ libffi-3.2.1-3-darwin-macos targetToolchain.linux_x64-android_x86 = target-toolchain-2-linux-android_ndk dependencies.linux_x64-android_x86 = \ - clang-llvm-8.0.0-linux-x86-64 \ target-sysroot-1-android_ndk \ target-toolchain-2-linux-android_ndk \ libffi-3.2.1-2-linux-x86-64 targetToolchain.mingw_x64-android_x86 = target-toolchain-2-windows-android_ndk dependencies.mingw_x64-android_x86 = \ - msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 \ target-sysroot-1-android_ndk \ target-toolchain-2-windows-android_ndk \ libffi-3.2.1-mingw-w64-x86-64 @@ -568,19 +553,16 @@ linkerNoDebugFlags.android_x86 = -Wl,-S # Android X64, based on NDK. targetToolchain.macos_x64-android_x64 = target-toolchain-2-osx-android_ndk dependencies.macos_x64-android_x64 = \ - clang-llvm-apple-8.0.0-darwin-macos \ target-sysroot-1-android_ndk \ target-toolchain-2-osx-android_ndk \ libffi-3.2.1-3-darwin-macos targetToolchain.linux_x64-android_x64 = target-toolchain-2-linux-android_ndk dependencies.linux_x64-android_x64 = \ - clang-llvm-8.0.0-linux-x86-64 \ target-sysroot-1-android_ndk \ target-toolchain-2-linux-android_ndk \ libffi-3.2.1-2-linux-x86-64 targetToolchain.mingw_x64-android_x64 = target-toolchain-2-windows-android_ndk dependencies.mingw_x64-android_x64 = \ - msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 \ target-sysroot-1-android_ndk \ target-toolchain-2-windows-android_ndk \ libffi-3.2.1-mingw-w64-x86-64 @@ -595,23 +577,18 @@ linkerNoDebugFlags.android_x64 = -Wl,-S # Windows x86-64, based on mingw-w64. -llvmHome.mingw_x64 = msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 +llvmHome.mingw_x64 = $llvm.mingw_x64.dev targetToolchain.mingw_x64 = msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 libffiDir.mingw_x64 = libffi-3.2.1-mingw-w64-x86-64 targetToolchain.linux_x64-mingw_x64 = msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 targetToolchain.macos_x64-mingw_x64 = msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 dependencies.mingw_x64 = \ - msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 \ libffi-3.2.1-mingw-w64-x86-64 \ lldb-2-windows dependencies.linux_x64-mingw_x64 = \ - msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 \ - clang-llvm-8.0.0-linux-x86-64 \ libffi-3.2.1-2-linux-x86-64 dependencies.macos_x64-mingw_x64 = \ - msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 \ - clang-llvm-apple-8.0.0-darwin-macos \ libffi-3.2.1-3-darwin-macos quadruple.mingw_x64 = x86_64-w64-mingw32 @@ -634,17 +611,14 @@ linkerOptimizationFlags.mingw_x64 = -Wl,--gc-sections targetToolchain.mingw_x64-mingw_x86 = msys2-mingw-w64-i686-clang-llvm-lld-compiler_rt-8.0.1 dependencies.mingw_x64-mingw_x86 = \ msys2-mingw-w64-i686-clang-llvm-lld-compiler_rt-8.0.1 \ - msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 \ libffi-3.2.1-mingw-w64-x86-64 targetToolchain.linux_x64-mingw_x86 = msys2-mingw-w64-i686-clang-llvm-lld-compiler_rt-8.0.1 targetToolchain.macos_x64-mingw_x86 = msys2-mingw-w64-i686-clang-llvm-lld-compiler_rt-8.0.1 dependencies.linux_x64-mingw_x86 = \ msys2-mingw-w64-i686-clang-llvm-lld-compiler_rt-8.0.1 \ - clang-llvm-8.0.0-linux-x86-64 \ libffi-3.2.1-2-linux-x86-64 dependencies.macos_x64-mingw_x86 = \ msys2-mingw-w64-i686-clang-llvm-lld-compiler_rt-8.0.1 \ - clang-llvm-apple-8.0.0-darwin-macos \ libffi-3.2.1-3-darwin-macos quadruple.mingw_x86 = i686-w64-mingw32 @@ -671,21 +645,18 @@ linkerOptimizationFlags.mingw_x86 = -Wl,--gc-sections targetToolchain.macos_x64-wasm32 = target-toolchain-3-macos-wasm dependencies.macos_x64-wasm32 = \ libffi-3.2.1-3-darwin-macos \ - clang-llvm-apple-8.0.0-darwin-macos \ target-sysroot-4-embedded \ target-toolchain-3-macos-wasm targetToolchain.linux_x64-wasm32 = target-toolchain-2-linux-wasm dependencies.linux_x64-wasm32 = \ libffi-3.2.1-2-linux-x86-64 \ - clang-llvm-8.0.0-linux-x86-64 \ target-sysroot-4-embedded \ target-toolchain-2-linux-wasm targetToolchain.mingw_x64-wasm32 = target-toolchain-2-mingw-wasm dependencies.mingw_x64-wasm32 = \ libffi-3.2.1-mingw-w64-x86-64 \ - msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 \ target-sysroot-4-embedded \ target-toolchain-2-mingw-wasm @@ -699,4 +670,4 @@ clangDebugFlags.wasm32 = -O0 lld.wasm32 = --allow-undefined --no-entry --global-base=0 --no-threads --export-dynamic # The version of Kotlin/Native compiler -compilerVersion=@compilerVersion@ +compilerVersion=@compilerVersion@ \ No newline at end of file diff --git a/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/KonanProperties.kt b/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/KonanProperties.kt index 262cfc94405..00cc0f2d22c 100644 --- a/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/KonanProperties.kt +++ b/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/KonanProperties.kt @@ -38,12 +38,27 @@ abstract class KonanPropertiesLoader(override val target: KonanTarget, val properties: Properties, private val baseDir: String? = null, private val host: KonanTarget = HostManager.host) : Configurables { - open val dependencies get() = hostTargetList("dependencies") + private val predefinedLlvmDistributions: Set = + properties.propertyList("predefinedLlvmDistributions").toSet() + + private fun llvmDependencies(): List { + // Store into variable to avoid repeated resolve. + val llvmHome = llvmHome + ?: error("Undefined LLVM home!") + return when (llvmHome) { + in predefinedLlvmDistributions -> llvmHome + else -> null + }.let(::listOfNotNull) + } + + open val dependencies: List + get() = hostTargetList("dependencies") + llvmDependencies() override fun downloadDependencies() { dependencyProcessor!!.run() } + // TODO: We may want to add caching to avoid repeated resolve. override fun targetString(key: String): String? = properties.targetString(key, target) override fun targetList(key: String): List diff --git a/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/TargetProperties.kt b/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/TargetProperties.kt index 09983514390..8fcc91e3f08 100644 --- a/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/TargetProperties.kt +++ b/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/TargetProperties.kt @@ -19,19 +19,19 @@ package org.jetbrains.kotlin.konan.properties import org.jetbrains.kotlin.konan.target.* fun Properties.hostString(name: String, host: KonanTarget): String? - = this.propertyString(name, host.name) + = this.resolvablePropertyString(name, host.name) fun Properties.hostList(name: String, host: KonanTarget): List - = this.propertyList(name, host.name) + = this.resolvablePropertyList(name, host.name) fun Properties.targetString(name: String, target: KonanTarget): String? - = this.propertyString(name, target.name) + = this.resolvablePropertyString(name, target.name) fun Properties.targetList(name: String, target: KonanTarget): List - = this.propertyList(name, target.name) + = this.resolvablePropertyList(name, target.name) fun Properties.hostTargetString(name: String, target: KonanTarget, host: KonanTarget): String? - = this.propertyString(name, hostTargetSuffix(host, target)) + = this.resolvablePropertyString(name, hostTargetSuffix(host, target)) fun Properties.hostTargetList(name: String, target: KonanTarget, host: KonanTarget): List - = this.propertyList(name, hostTargetSuffix(host, target)) \ No newline at end of file + = this.resolvablePropertyList(name, hostTargetSuffix(host, target)) \ No newline at end of file