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(
|
customEnvironmentVariables = mapOf(
|
||||||
"CONFIGURATION" to "debug",
|
"CONFIGURATION" to "debug",
|
||||||
"SDK_NAME" to "iphoneos123",
|
"SDK_NAME" to "iphoneos123",
|
||||||
"NATIVE_ARCH" to "armv7"
|
"ARCHS" to "arm64"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
build("assembleDebugAppleFrameworkForXcodeIosArm64", options = options) {
|
build("assembleDebugAppleFrameworkForXcodeIosArm64", options = options) {
|
||||||
@@ -73,7 +73,7 @@ class AppleFrameworkIT : BaseGradleIT() {
|
|||||||
customEnvironmentVariables = mapOf(
|
customEnvironmentVariables = mapOf(
|
||||||
"CONFIGURATION" to "Debug",
|
"CONFIGURATION" to "Debug",
|
||||||
"SDK_NAME" to "iphoneos",
|
"SDK_NAME" to "iphoneos",
|
||||||
"NATIVE_ARCH" to "armv7",
|
"ARCHS" to "arm64",
|
||||||
"EXPANDED_CODE_SIGN_IDENTITY" to "-",
|
"EXPANDED_CODE_SIGN_IDENTITY" to "-",
|
||||||
"TARGET_BUILD_DIR" to "testBuildDir",
|
"TARGET_BUILD_DIR" to "testBuildDir",
|
||||||
"FRAMEWORKS_FOLDER_PATH" to "testFrameworksDir"
|
"FRAMEWORKS_FOLDER_PATH" to "testFrameworksDir"
|
||||||
@@ -106,7 +106,7 @@ class AppleFrameworkIT : BaseGradleIT() {
|
|||||||
customEnvironmentVariables = mapOf(
|
customEnvironmentVariables = mapOf(
|
||||||
"CONFIGURATION" to "Debug",
|
"CONFIGURATION" to "Debug",
|
||||||
"SDK_NAME" to "iphoneos",
|
"SDK_NAME" to "iphoneos",
|
||||||
"NATIVE_ARCH" to "armv7"
|
"ARCHS" to "arm64"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
build("tasks", options = options) {
|
build("tasks", options = options) {
|
||||||
|
|||||||
+8
-8
@@ -14,8 +14,8 @@ internal object AppleSdk {
|
|||||||
|
|
||||||
val targets: MutableSet<KonanTarget> = mutableSetOf()
|
val targets: MutableSet<KonanTarget> = mutableSetOf()
|
||||||
|
|
||||||
when (platform) {
|
when {
|
||||||
"iphoneos" -> {
|
platform.startsWith("iphoneos") -> {
|
||||||
targets.addAll(archs.map { arch ->
|
targets.addAll(archs.map { arch ->
|
||||||
when (arch) {
|
when (arch) {
|
||||||
"arm64", "arm64e" -> KonanTarget.IOS_ARM64
|
"arm64", "arm64e" -> KonanTarget.IOS_ARM64
|
||||||
@@ -24,7 +24,7 @@ internal object AppleSdk {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
"iphonesimulator" -> {
|
platform.startsWith("iphonesimulator") -> {
|
||||||
targets.addAll(archs.map { arch ->
|
targets.addAll(archs.map { arch ->
|
||||||
when (arch) {
|
when (arch) {
|
||||||
"arm64", "arm64e" -> KonanTarget.IOS_SIMULATOR_ARM64
|
"arm64", "arm64e" -> KonanTarget.IOS_SIMULATOR_ARM64
|
||||||
@@ -33,7 +33,7 @@ internal object AppleSdk {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
"watchos" -> {
|
platform.startsWith("watchos") -> {
|
||||||
targets.addAll(archs.map { arch ->
|
targets.addAll(archs.map { arch ->
|
||||||
when (arch) {
|
when (arch) {
|
||||||
"armv7k" -> KonanTarget.WATCHOS_ARM32
|
"armv7k" -> KonanTarget.WATCHOS_ARM32
|
||||||
@@ -42,7 +42,7 @@ internal object AppleSdk {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
"watchsimulator" -> {
|
platform.startsWith("watchsimulator") -> {
|
||||||
targets.addAll(archs.map { arch ->
|
targets.addAll(archs.map { arch ->
|
||||||
when (arch) {
|
when (arch) {
|
||||||
"arm64", "arm64e" -> KonanTarget.WATCHOS_SIMULATOR_ARM64
|
"arm64", "arm64e" -> KonanTarget.WATCHOS_SIMULATOR_ARM64
|
||||||
@@ -52,7 +52,7 @@ internal object AppleSdk {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
"appletvos" -> {
|
platform.startsWith("appletvos") -> {
|
||||||
targets.addAll(archs.map { arch ->
|
targets.addAll(archs.map { arch ->
|
||||||
when (arch) {
|
when (arch) {
|
||||||
"arm64", "arm64e" -> KonanTarget.TVOS_ARM64
|
"arm64", "arm64e" -> KonanTarget.TVOS_ARM64
|
||||||
@@ -60,7 +60,7 @@ internal object AppleSdk {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
"appletvsimulator" -> {
|
platform.startsWith("appletvsimulator") -> {
|
||||||
targets.addAll(archs.map { arch ->
|
targets.addAll(archs.map { arch ->
|
||||||
when (arch) {
|
when (arch) {
|
||||||
"arm64", "arm64e" -> KonanTarget.TVOS_SIMULATOR_ARM64
|
"arm64", "arm64e" -> KonanTarget.TVOS_SIMULATOR_ARM64
|
||||||
@@ -69,7 +69,7 @@ internal object AppleSdk {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
"macosx" -> {
|
platform.startsWith("macosx") -> {
|
||||||
targets.addAll(archs.map { arch ->
|
targets.addAll(archs.map { arch ->
|
||||||
when (arch) {
|
when (arch) {
|
||||||
"arm64" -> KonanTarget.MACOS_ARM64
|
"arm64" -> KonanTarget.MACOS_ARM64
|
||||||
|
|||||||
+21
-13
@@ -34,13 +34,12 @@ private object XcodeEnvironment {
|
|||||||
?: System.getenv("KOTLIN_FRAMEWORK_BUILD_TYPE")?.toNativeBuildType()
|
?: 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?
|
val frameworkSearchDir: File?
|
||||||
@@ -63,6 +62,15 @@ private object XcodeEnvironment {
|
|||||||
private fun Project.registerAssembleAppleFrameworkTask(framework: Framework): TaskProvider<Copy>? {
|
private fun Project.registerAssembleAppleFrameworkTask(framework: Framework): TaskProvider<Copy>? {
|
||||||
if (!framework.konanTarget.family.isAppleFamily || !framework.konanTarget.enabledOnCurrentHost) return null
|
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 frameworkBuildType = framework.buildType
|
||||||
val frameworkTarget = framework.target
|
val frameworkTarget = framework.target
|
||||||
val frameworkTaskName = lowerCamelCaseName(
|
val frameworkTaskName = lowerCamelCaseName(
|
||||||
@@ -74,7 +82,7 @@ private fun Project.registerAssembleAppleFrameworkTask(framework: Framework): Ta
|
|||||||
)
|
)
|
||||||
|
|
||||||
val envBuildType = XcodeEnvironment.buildType
|
val envBuildType = XcodeEnvironment.buildType
|
||||||
val envTarget = XcodeEnvironment.target
|
val envTarget = envTargets.firstOrNull()
|
||||||
val envFrameworkSearchDir = XcodeEnvironment.frameworkSearchDir
|
val envFrameworkSearchDir = XcodeEnvironment.frameworkSearchDir
|
||||||
|
|
||||||
if (envBuildType == null || envTarget == null || envFrameworkSearchDir == null) {
|
if (envBuildType == null || envTarget == null || envFrameworkSearchDir == null) {
|
||||||
@@ -87,7 +95,7 @@ private fun Project.registerAssembleAppleFrameworkTask(framework: Framework): Ta
|
|||||||
} else {
|
} else {
|
||||||
logger.debug(
|
logger.debug(
|
||||||
"Not registering $frameworkTaskName, since not called from Xcode " +
|
"Not registering $frameworkTaskName, since not called from Xcode " +
|
||||||
"('SDK_NAME' and 'CONFIGURATION' not provided)"
|
"('SDK_NAME', 'ARCHS' and 'CONFIGURATION' not provided)"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
return null
|
return null
|
||||||
@@ -108,22 +116,22 @@ internal fun Project.registerEmbedAndSignAppleFrameworkTask(framework: Framework
|
|||||||
val assembleTask = registerAssembleAppleFrameworkTask(framework) ?: return
|
val assembleTask = registerAssembleAppleFrameworkTask(framework) ?: return
|
||||||
|
|
||||||
val envBuildType = XcodeEnvironment.buildType
|
val envBuildType = XcodeEnvironment.buildType
|
||||||
val envTarget = XcodeEnvironment.target
|
val envTargets = XcodeEnvironment.targets
|
||||||
val envEmbeddedFrameworksDir = XcodeEnvironment.embeddedFrameworksDir
|
val envEmbeddedFrameworksDir = XcodeEnvironment.embeddedFrameworksDir
|
||||||
val envFrameworkSearchDir = XcodeEnvironment.frameworkSearchDir
|
val envFrameworkSearchDir = XcodeEnvironment.frameworkSearchDir
|
||||||
val envSign = XcodeEnvironment.sign
|
val envSign = XcodeEnvironment.sign
|
||||||
|
|
||||||
val frameworkTaskName = lowerCamelCaseName("embedAndSign", framework.namePrefix, "AppleFrameworkForXcode")
|
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(
|
logger.debug(
|
||||||
"Not registering $frameworkTaskName, since not called from Xcode " +
|
"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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (framework.buildType != envBuildType || framework.konanTarget != envTarget) return
|
if (framework.buildType != envBuildType || !envTargets.contains(framework.konanTarget)) return
|
||||||
|
|
||||||
registerTask<Copy>(frameworkTaskName) { task ->
|
registerTask<Copy>(frameworkTaskName) { task ->
|
||||||
task.group = "build"
|
task.group = "build"
|
||||||
@@ -132,7 +140,7 @@ internal fun Project.registerEmbedAndSignAppleFrameworkTask(framework: Framework
|
|||||||
task.dependsOn(assembleTask)
|
task.dependsOn(assembleTask)
|
||||||
task.inputs.apply {
|
task.inputs.apply {
|
||||||
property("type", envBuildType)
|
property("type", envBuildType)
|
||||||
property("target", envTarget)
|
property("targets", envTargets)
|
||||||
property("embeddedFrameworksDir", envEmbeddedFrameworksDir)
|
property("embeddedFrameworksDir", envEmbeddedFrameworksDir)
|
||||||
property("sign", envSign)
|
property("sign", envSign)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user