diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/binaryen/BinaryenPlatform.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/binaryen/BinaryenPlatform.kt index 06537cee257..eb2532e8163 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/binaryen/BinaryenPlatform.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/binaryen/BinaryenPlatform.kt @@ -22,9 +22,20 @@ internal object BinaryenPlatform { } } - const val X64 = "64" - const val X86 = "86" + const val ARM64 = "arm64" + const val X64 = "x86_64" + const val X86 = "x86_86" val architecture: String - get() = if (property("os.arch").contains("64")) X64 else X86 + get() { + val arch = property("os.arch") + return when { + arch == "aarch64" -> ARM64 + arch.contains("64") -> X64 + else -> X86 + } + } + + val platform: String + get() = "$architecture-$name" } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/binaryen/BinaryenRootExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/binaryen/BinaryenRootExtension.kt index 4c7dc05ebd4..efb5511988f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/binaryen/BinaryenRootExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/binaryen/BinaryenRootExtension.kt @@ -11,7 +11,6 @@ import org.gradle.api.tasks.TaskProvider import org.jetbrains.kotlin.gradle.internal.ConfigurationPhaseAware import org.jetbrains.kotlin.gradle.logging.kotlinInfo import org.jetbrains.kotlin.gradle.tasks.internal.CleanableStore -import java.io.File import java.io.Serializable import java.net.URL @@ -32,9 +31,7 @@ open class BinaryenRootExtension(@Transient val rootProject: Project) : Configur get() = rootProject.tasks.withType(Copy::class.java).named(BinaryenRootPlugin.INSTALL_TASK_NAME) override fun finalizeConfiguration(): BinaryenEnv { - val platform = BinaryenPlatform.name - val architecture = BinaryenPlatform.architecture - val requiredVersionName = "binaryen-version_$version-x86_$architecture-$platform" + val requiredVersionName = "binaryen-version_$version-${BinaryenPlatform.platform}" val requiredZipName = "$requiredVersionName.tar.gz" val cleanableStore = CleanableStore[installationPath.absolutePath] val targetPath = cleanableStore[requiredVersionName].use() diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/d8/D8Platform.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/d8/D8Platform.kt index a16edf3e008..19a80f5dd7a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/d8/D8Platform.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/d8/D8Platform.kt @@ -11,20 +11,37 @@ internal object D8Platform { const val LINUX = "linux" const val DARWIN = "mac" - val name: String = run { - val name = property("os.name").toLowerCase() - when { - name.contains("windows") -> WIN - name.contains("mac") -> DARWIN - name.contains("linux") -> LINUX - name.contains("freebsd") -> LINUX - else -> throw IllegalArgumentException("Unsupported OS: $name") + val name: String + get() { + val osName = property("os.name").toLowerCase() + return when { + osName.contains("windows") -> WIN + osName.contains("mac") -> DARWIN + osName.contains("linux") -> LINUX + osName.contains("freebsd") -> LINUX + else -> throw IllegalArgumentException("Unsupported OS: $osName") + } } - } + const val ARM64 = "arm64" const val X64 = "64" const val X86 = "86" val architecture: String - get() = if (property("os.arch").contains("64")) X64 else X86 -} + get() { + val arch = property("os.arch") + return when { + arch == "aarch64" -> ARM64 + arch.contains("64") -> X64 + else -> X86 + } + } + + val platform: String + get() = when (val architecture = D8Platform.architecture) { + ARM64 -> "$name-$ARM64" + X64 -> name + X64 + X86 -> name + X86 + else -> error("Unexpected platform architecture $architecture") + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/d8/D8RootExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/d8/D8RootExtension.kt index 486a61fda9c..df5a6294a70 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/d8/D8RootExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/d8/D8RootExtension.kt @@ -32,11 +32,7 @@ open class D8RootExtension(@Transient val rootProject: Project) : ConfigurationP get() = rootProject.tasks.withType(Copy::class.java).named(D8RootPlugin.INSTALL_TASK_NAME) override fun finalizeConfiguration(): D8Env { - val platform = D8Platform.name - val architecture = D8Platform.architecture - val d8osString = platform + architecture - - val requiredVersionName = "v8-$d8osString-$edition-$version" + val requiredVersionName = "v8-${D8Platform.platform}-$edition-$version" val requiredZipName = "$requiredVersionName.zip" val cleanableStore = CleanableStore[installationPath.absolutePath] val targetPath = cleanableStore[requiredVersionName].use()