Use 'ARCHS' Xcode env for assembleAppleFramework task registration.
#KT-47653
This commit is contained in:
committed by
Space
parent
414e735a67
commit
68a3c5f378
+3
-3
@@ -34,7 +34,7 @@ class AppleFrameworkIT : BaseGradleIT() {
|
||||
customEnvironmentVariables = mapOf(
|
||||
"CONFIGURATION" to "debug",
|
||||
"SDK_NAME" to "iphoneos123",
|
||||
"NATIVE_ARCH" to "armv7"
|
||||
"ARCHS" to "arm64"
|
||||
)
|
||||
)
|
||||
build("assembleDebugAppleFrameworkForXcodeIosArm64", options = options) {
|
||||
@@ -73,7 +73,7 @@ class AppleFrameworkIT : BaseGradleIT() {
|
||||
customEnvironmentVariables = mapOf(
|
||||
"CONFIGURATION" to "Debug",
|
||||
"SDK_NAME" to "iphoneos",
|
||||
"NATIVE_ARCH" to "armv7",
|
||||
"ARCHS" to "arm64",
|
||||
"EXPANDED_CODE_SIGN_IDENTITY" to "-",
|
||||
"TARGET_BUILD_DIR" to "testBuildDir",
|
||||
"FRAMEWORKS_FOLDER_PATH" to "testFrameworksDir"
|
||||
@@ -106,7 +106,7 @@ class AppleFrameworkIT : BaseGradleIT() {
|
||||
customEnvironmentVariables = mapOf(
|
||||
"CONFIGURATION" to "Debug",
|
||||
"SDK_NAME" to "iphoneos",
|
||||
"NATIVE_ARCH" to "armv7"
|
||||
"ARCHS" to "arm64"
|
||||
)
|
||||
)
|
||||
build("tasks", options = options) {
|
||||
|
||||
+8
-8
@@ -14,8 +14,8 @@ internal object AppleSdk {
|
||||
|
||||
val targets: MutableSet<KonanTarget> = mutableSetOf()
|
||||
|
||||
when (platform) {
|
||||
"iphoneos" -> {
|
||||
when {
|
||||
platform.startsWith("iphoneos") -> {
|
||||
targets.addAll(archs.map { arch ->
|
||||
when (arch) {
|
||||
"arm64", "arm64e" -> KonanTarget.IOS_ARM64
|
||||
@@ -24,7 +24,7 @@ internal object AppleSdk {
|
||||
}
|
||||
})
|
||||
}
|
||||
"iphonesimulator" -> {
|
||||
platform.startsWith("iphonesimulator") -> {
|
||||
targets.addAll(archs.map { arch ->
|
||||
when (arch) {
|
||||
"arm64", "arm64e" -> KonanTarget.IOS_SIMULATOR_ARM64
|
||||
@@ -33,7 +33,7 @@ internal object AppleSdk {
|
||||
}
|
||||
})
|
||||
}
|
||||
"watchos" -> {
|
||||
platform.startsWith("watchos") -> {
|
||||
targets.addAll(archs.map { arch ->
|
||||
when (arch) {
|
||||
"armv7k" -> KonanTarget.WATCHOS_ARM32
|
||||
@@ -42,7 +42,7 @@ internal object AppleSdk {
|
||||
}
|
||||
})
|
||||
}
|
||||
"watchsimulator" -> {
|
||||
platform.startsWith("watchsimulator") -> {
|
||||
targets.addAll(archs.map { arch ->
|
||||
when (arch) {
|
||||
"arm64", "arm64e" -> KonanTarget.WATCHOS_SIMULATOR_ARM64
|
||||
@@ -52,7 +52,7 @@ internal object AppleSdk {
|
||||
}
|
||||
})
|
||||
}
|
||||
"appletvos" -> {
|
||||
platform.startsWith("appletvos") -> {
|
||||
targets.addAll(archs.map { arch ->
|
||||
when (arch) {
|
||||
"arm64", "arm64e" -> KonanTarget.TVOS_ARM64
|
||||
@@ -60,7 +60,7 @@ internal object AppleSdk {
|
||||
}
|
||||
})
|
||||
}
|
||||
"appletvsimulator" -> {
|
||||
platform.startsWith("appletvsimulator") -> {
|
||||
targets.addAll(archs.map { arch ->
|
||||
when (arch) {
|
||||
"arm64", "arm64e" -> KonanTarget.TVOS_SIMULATOR_ARM64
|
||||
@@ -69,7 +69,7 @@ internal object AppleSdk {
|
||||
}
|
||||
})
|
||||
}
|
||||
"macosx" -> {
|
||||
platform.startsWith("macosx") -> {
|
||||
targets.addAll(archs.map { arch ->
|
||||
when (arch) {
|
||||
"arm64" -> KonanTarget.MACOS_ARM64
|
||||
|
||||
+21
-13
@@ -34,13 +34,12 @@ private object XcodeEnvironment {
|
||||
?: System.getenv("KOTLIN_FRAMEWORK_BUILD_TYPE")?.toNativeBuildType()
|
||||
}
|
||||
|
||||
val target: KonanTarget?
|
||||
get() {
|
||||
val sdk = System.getenv("SDK_NAME") ?: return null
|
||||
val arch = System.getenv("NATIVE_ARCH") ?: return null
|
||||
val nativeTargets = AppleSdk.defineNativeTargets(sdk, listOf(arch))
|
||||
|
||||
return nativeTargets.firstOrNull()
|
||||
val targets: List<KonanTarget>
|
||||
get() {
|
||||
val sdk = System.getenv("SDK_NAME") ?: return emptyList()
|
||||
val archs = System.getenv("ARCHS")?.split(" ") ?: return emptyList()
|
||||
return AppleSdk.defineNativeTargets(sdk, archs)
|
||||
}
|
||||
|
||||
val frameworkSearchDir: File?
|
||||
@@ -63,6 +62,15 @@ private object XcodeEnvironment {
|
||||
private fun Project.registerAssembleAppleFrameworkTask(framework: Framework): TaskProvider<Copy>? {
|
||||
if (!framework.konanTarget.family.isAppleFamily || !framework.konanTarget.enabledOnCurrentHost) return null
|
||||
|
||||
val envTargets = XcodeEnvironment.targets
|
||||
if (envTargets.size > 1) {
|
||||
logger.debug(
|
||||
"Unable to register assemble Apple framework task because " +
|
||||
"'ARCHS' contains more than one value."
|
||||
)
|
||||
return null
|
||||
}
|
||||
|
||||
val frameworkBuildType = framework.buildType
|
||||
val frameworkTarget = framework.target
|
||||
val frameworkTaskName = lowerCamelCaseName(
|
||||
@@ -74,7 +82,7 @@ private fun Project.registerAssembleAppleFrameworkTask(framework: Framework): Ta
|
||||
)
|
||||
|
||||
val envBuildType = XcodeEnvironment.buildType
|
||||
val envTarget = XcodeEnvironment.target
|
||||
val envTarget = envTargets.firstOrNull()
|
||||
val envFrameworkSearchDir = XcodeEnvironment.frameworkSearchDir
|
||||
|
||||
if (envBuildType == null || envTarget == null || envFrameworkSearchDir == null) {
|
||||
@@ -87,7 +95,7 @@ private fun Project.registerAssembleAppleFrameworkTask(framework: Framework): Ta
|
||||
} else {
|
||||
logger.debug(
|
||||
"Not registering $frameworkTaskName, since not called from Xcode " +
|
||||
"('SDK_NAME' and 'CONFIGURATION' not provided)"
|
||||
"('SDK_NAME', 'ARCHS' and 'CONFIGURATION' not provided)"
|
||||
)
|
||||
}
|
||||
return null
|
||||
@@ -108,22 +116,22 @@ internal fun Project.registerEmbedAndSignAppleFrameworkTask(framework: Framework
|
||||
val assembleTask = registerAssembleAppleFrameworkTask(framework) ?: return
|
||||
|
||||
val envBuildType = XcodeEnvironment.buildType
|
||||
val envTarget = XcodeEnvironment.target
|
||||
val envTargets = XcodeEnvironment.targets
|
||||
val envEmbeddedFrameworksDir = XcodeEnvironment.embeddedFrameworksDir
|
||||
val envFrameworkSearchDir = XcodeEnvironment.frameworkSearchDir
|
||||
val envSign = XcodeEnvironment.sign
|
||||
|
||||
val frameworkTaskName = lowerCamelCaseName("embedAndSign", framework.namePrefix, "AppleFrameworkForXcode")
|
||||
|
||||
if (envBuildType == null || envTarget == null || envEmbeddedFrameworksDir == null || envFrameworkSearchDir == null) {
|
||||
if (envBuildType == null || envTargets.isEmpty() || envEmbeddedFrameworksDir == null || envFrameworkSearchDir == null) {
|
||||
logger.debug(
|
||||
"Not registering $frameworkTaskName, since not called from Xcode " +
|
||||
"('SDK_NAME', 'CONFIGURATION', 'TARGET_BUILD_DIR' and 'FRAMEWORKS_FOLDER_PATH' not provided)"
|
||||
"('SDK_NAME', 'CONFIGURATION', 'TARGET_BUILD_DIR', 'ARCHS' and 'FRAMEWORKS_FOLDER_PATH' not provided)"
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
if (framework.buildType != envBuildType || framework.konanTarget != envTarget) return
|
||||
if (framework.buildType != envBuildType || !envTargets.contains(framework.konanTarget)) return
|
||||
|
||||
registerTask<Copy>(frameworkTaskName) { task ->
|
||||
task.group = "build"
|
||||
@@ -132,7 +140,7 @@ internal fun Project.registerEmbedAndSignAppleFrameworkTask(framework: Framework
|
||||
task.dependsOn(assembleTask)
|
||||
task.inputs.apply {
|
||||
property("type", envBuildType)
|
||||
property("target", envTarget)
|
||||
property("targets", envTargets)
|
||||
property("embeddedFrameworksDir", envEmbeddedFrameworksDir)
|
||||
property("sign", envSign)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user