Skip to content

Commit

Permalink
KTOR-3248 Build Ktor on Apple Silicon (#2664)
Browse files Browse the repository at this point in the history
Co-authored-by: hfhbd <hfhbd@users.noreply.github.com>
  • Loading branch information
hfhbd and hfhbd committed Nov 30, 2021
1 parent b8f18e4 commit c6fbcff
Show file tree
Hide file tree
Showing 11 changed files with 51 additions and 20 deletions.
6 changes: 6 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -206,3 +206,9 @@ if (docs != null) {
pluginsMapConfiguration.set(mapOf)
}
}

// https://youtrack.jetbrains.com/issue/KT-49109
rootProject.plugins.withType<org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin> {
val nodeM1Version = "16.0.0"
rootProject.the<org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension>().nodeVersion = nodeM1Version
}
11 changes: 6 additions & 5 deletions buildSrc/src/main/kotlin/IdeUtils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@ import org.jetbrains.kotlin.gradle.dsl.*
import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.konan.target.*

fun KotlinMultiplatformExtension.createIdeaTarget(name: String): KotlinNativeTarget = when {
HostManager.hostIsLinux -> linuxX64(name)
HostManager.hostIsMac -> macosX64(name)
HostManager.hostIsMingw -> mingwX64(name)
else -> error("Unknown target")
fun KotlinMultiplatformExtension.createIdeaTarget(name: String): KotlinNativeTarget = when (HostManager.host) {
is KonanTarget.LINUX_X64 -> linuxX64(name)
is KonanTarget.MACOS_X64 -> macosX64(name)
is KonanTarget.MACOS_ARM64 -> macosArm64(name)
is KonanTarget.MINGW_X64 -> mingwX64(name)
else -> error("Unsupported target ${HostManager.host}")
}
5 changes: 5 additions & 0 deletions buildSrc/src/main/kotlin/JvmConfig.kt
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,11 @@ fun Project.configureJvm() {
api("junit:junit:$junit_version")

implementation("org.jetbrains.kotlinx:kotlinx-coroutines-debug:$coroutines_version")

// https://github.com/Kotlin/kotlinx.coroutines/issues/3001
val jna_version = "5.9.0"
api("net.java.dev.jna:jna:$jna_version")
api("net.java.dev.jna:jna-platform:$jna_version")
}
}
}
Expand Down
5 changes: 1 addition & 4 deletions buildSrc/src/main/kotlin/NativeUtils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@
* Copyright 2014-2021 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
*/

import org.gradle.api.*
import org.gradle.api.publish.maven.tasks.*
import org.gradle.api.publish.tasks.*
import org.gradle.kotlin.dsl.*
import org.jetbrains.kotlin.gradle.dsl.*
import org.jetbrains.kotlin.gradle.plugin.mpp.*

Expand Down Expand Up @@ -37,6 +33,7 @@ fun KotlinMultiplatformExtension.darwinTargets(): Set<KotlinNativeTarget> = setO

fun KotlinMultiplatformExtension.desktopTargets(): Set<KotlinNativeTarget> = setOf(
macosX64(),
macosArm64(),
linuxX64(),
mingwX64()
)
Expand Down
6 changes: 0 additions & 6 deletions ktor-client/ktor-client-core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,4 @@ kotlin.sourceSets {
api(project(":ktor-client:ktor-client-mock"))
}
}

val jvmTest by getting {
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-debug:$coroutines_version")
}
}
}
2 changes: 2 additions & 0 deletions ktor-client/ktor-client-curl/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ kotlin {
targets.apply {
val current = listOf(
getByName("macosX64"),
getByName("macosArm64"),
getByName("linuxX64"),
getByName("mingwX64")
)
Expand All @@ -25,6 +26,7 @@ kotlin {
)
} else {
listOf(
"/usr/bin/curl",
"/opt/homebrew/opt/curl/include/curl",
"/opt/local/include/curl",
"/usr/local/include/curl",
Expand Down
11 changes: 6 additions & 5 deletions ktor-client/ktor-client-curl/desktop/interop/libcurl.def
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package = libcurl
headers = curl.h
headerFilter = *
linkerOpts.osx = -L/opt/local/lib -L/usr/local/opt/curl/lib -lcurl
compilerOpts.osx = -I/opt/local/include/curl -I/usr/local/include/curl -I/usr/include/curl -I/usr/local/Cellar/curl/7.62.0/include/curl -I/usr/local/Cellar/curl/7.63.0/include/curl -I/usr/local/Cellar/curl/7.65.3/include/curl -I/usr/local/Cellar/curl/7.66.0/include/curl -I/opt/homebrew/opt/curl/include/curl
linkerOpts.linux = -L/usr/lib64 -L/usr/lib/x86_64-linux-gnu -lcurl
compilerOpts.linux = -I/usr/include/curl -I/usr/include/x86_64-linux-gnu/curl
linkerOpts.mingw_x64 = -LC:/msys64/mingw64/lib -LC:/Tools/msys64/mingw64/lib -LC:/Tools/msys2/mingw64/lib -lcurl
linkerOpts.osx = -L/opt/local/lib -L/usr/local/opt/curl/lib -lcurl -L/opt/homebrew/opt/curl/include/curl
compilerOpts.osx = -I/opt/local/include/curl -I/usr/bin/curl -I/usr/local/include/curl -I/usr/include/curl -I/usr/local/Cellar/curl/7.62.0/include/curl -I/usr/local/Cellar/curl/7.63.0/include/curl -I/usr/local/Cellar/curl/7.65.3/include/curl -I/usr/local/Cellar/curl/7.66.0/include/curl -I/opt/homebrew/opt/curl/include/curl
linkerOpts.linux = -L/usr/lib64 -L/usr/lib/x86_64-linux-gnu -lcurl -L/opt/homebrew/opt/curl/include/curl
compilerOpts.linux = -I/usr/include/curl -I/usr/include/x86_64-linux-gnu/curl -I/opt/homebrew/opt/curl/include/curl
linkerOpts.mingw_x64 = -LC:/msys64/mingw64/lib -LC:/Tools/msys64/mingw64/lib -LC:/Tools/msys2/mingw64/lib -lcurl -L/opt/homebrew/opt/curl/include/curl
compilerOpts.mingw_x64 = -I/usr/include/curl -I/usr/include/x86_64-linux-gnu/curl -I/opt/homebrew/opt/curl/include/curl
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/*
* Copyright 2014-2021 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
*/

package io.ktor.client.engine.curl

import kotlinx.cinterop.*
import libcurl.*

internal actual fun curlInitBridge(): Int = curl_global_init(CURL_GLOBAL_ALL.convert()).convert()
5 changes: 5 additions & 0 deletions ktor-client/ktor-client-tests/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,11 @@ kotlin.sourceSets {
api("junit:junit:$junit_version")
api("org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-debug:$coroutines_version")

// https://github.com/Kotlin/kotlinx.coroutines/issues/3001
val jna_version = "5.9.0"
api("net.java.dev.jna:jna:$jna_version")
api("net.java.dev.jna:jna-platform:$jna_version")
}
}

Expand Down
5 changes: 5 additions & 0 deletions ktor-server/ktor-server-test-host/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ kotlin.sourceSets {

api("junit:junit:$junit_version")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-debug:$coroutines_version")

// https://github.com/Kotlin/kotlinx.coroutines/issues/3001
val jna_version = "5.9.0"
api("net.java.dev.jna:jna:$jna_version")
api("net.java.dev.jna:jna-platform:$jna_version")
}
}

Expand Down
5 changes: 5 additions & 0 deletions ktor-server/ktor-server-test-suites/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ kotlin.sourceSets {
implementation(kotlin("test-junit"))

implementation("org.jetbrains.kotlinx:kotlinx-coroutines-debug:$coroutines_version")

// https://github.com/Kotlin/kotlinx.coroutines/issues/3001
val jna_version = "5.9.0"
api("net.java.dev.jna:jna:$jna_version")
api("net.java.dev.jna:jna-platform:$jna_version")
}
}
val jvmTest by getting {
Expand Down

0 comments on commit c6fbcff

Please sign in to comment.