[Gradle, Cocoapods] Custom packageName and extraOpts for pods cinterop
#KT-40999 Fixed
This commit is contained in:
+32
@@ -674,6 +674,38 @@ class CocoaPodsIT : BaseGradleIT() {
|
||||
project.testImportWithAsserts()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testCustomPackageName() {
|
||||
with(project.gradleBuildScript()) {
|
||||
addPod("AFNetworking", "packageName = \"AFNetworking\"")
|
||||
}
|
||||
with(project) {
|
||||
File(projectDir, "src/iosMain/kotlin/A.kt").modify {
|
||||
it.replace(
|
||||
"fun foo() {", """
|
||||
import AFNetworking
|
||||
fun foo() {
|
||||
""".trimIndent()
|
||||
)
|
||||
it.replace("println(\"hi!\")", "println(AFNetworking.AFNetworkingReachabilityNotificationStatusItem)")
|
||||
}
|
||||
|
||||
testWithWrapper("assemble")
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testCinteropExtraOpts() {
|
||||
with(project.gradleBuildScript()) {
|
||||
addPod("AFNetworking", "extraOpts = listOf(\"-help\")")
|
||||
}
|
||||
|
||||
project.build("wrapper", "cinteropAFNetworkingIOS") {
|
||||
assertSuccessful()
|
||||
assertContains("Usage: cinterop options_list")
|
||||
}
|
||||
}
|
||||
|
||||
// paths
|
||||
|
||||
private fun CompiledProject.url() = externalSources().resolve("url")
|
||||
|
||||
+21
-5
@@ -10,6 +10,7 @@ import groovy.lang.Closure
|
||||
import org.gradle.api.Action
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.gradle.api.provider.ListProperty
|
||||
import org.gradle.api.provider.Property
|
||||
import org.gradle.util.ConfigureUtil
|
||||
import org.jetbrains.kotlin.gradle.plugin.CInteropSettings
|
||||
@@ -62,13 +63,28 @@ open class DefaultCInteropSettings @Inject constructor(
|
||||
|
||||
var defFile: File
|
||||
get() = defFileProperty.get()
|
||||
set(value) { defFileProperty.set(value) }
|
||||
set(value) {
|
||||
defFileProperty.set(value)
|
||||
}
|
||||
|
||||
var packageName: String? = null
|
||||
var packageName: String?
|
||||
get() = _packageNameProp.orNull
|
||||
set(value) {
|
||||
_packageNameProp.set(value)
|
||||
}
|
||||
|
||||
internal val _packageNameProp: Property<String> = project.objects.property(String::class.java)
|
||||
|
||||
val compilerOpts = mutableListOf<String>()
|
||||
val linkerOpts = mutableListOf<String>()
|
||||
val extraOpts = mutableListOf<String>()
|
||||
var extraOpts: List<String>
|
||||
get() = _extraOptsProp.get()
|
||||
set(value) {
|
||||
_extraOptsProp = project.objects.listProperty(String::class.java)
|
||||
extraOpts(value)
|
||||
}
|
||||
|
||||
internal var _extraOptsProp: ListProperty<String> = project.objects.listProperty(String::class.java)
|
||||
|
||||
val includeDirs = DefaultIncludeDirectories()
|
||||
var headers: FileCollection = project.files()
|
||||
@@ -80,7 +96,7 @@ open class DefaultCInteropSettings @Inject constructor(
|
||||
}
|
||||
|
||||
override fun packageName(value: String) {
|
||||
packageName = value
|
||||
_packageNameProp.set(value)
|
||||
}
|
||||
|
||||
override fun header(file: Any) = headers(file)
|
||||
@@ -106,6 +122,6 @@ open class DefaultCInteropSettings @Inject constructor(
|
||||
|
||||
override fun extraOpts(vararg values: Any) = extraOpts(values.toList())
|
||||
override fun extraOpts(values: List<Any>) {
|
||||
extraOpts.addAll(values.map { it.toString() })
|
||||
_extraOptsProp.addAll(project.provider { values.map { it.toString() } })
|
||||
}
|
||||
}
|
||||
|
||||
+3
-1
@@ -186,7 +186,9 @@ open class CocoapodsExtension(private val project: Project) {
|
||||
private val name: String,
|
||||
@get:Input var moduleName: String,
|
||||
@get:Optional @get:Input var version: String? = null,
|
||||
@get:Optional @get:Nested var source: PodLocation? = null
|
||||
@get:Optional @get:Nested var source: PodLocation? = null,
|
||||
@get:Internal var extraOpts: List<String> = listOf(),
|
||||
@get:Internal var packageName: String = "cocoapods.$moduleName"
|
||||
) : Named {
|
||||
@Input
|
||||
override fun getName(): String = name
|
||||
|
||||
+5
-3
@@ -239,9 +239,11 @@ open class KotlinCocoapodsPlugin : Plugin<Project> {
|
||||
|
||||
interopTask.dependsOn(defTask)
|
||||
|
||||
interop.defFileProperty.set(defTask.map { it.outputFile })
|
||||
interop.packageName = "cocoapods.${pod.moduleName}"
|
||||
|
||||
with(interop) {
|
||||
defFileProperty.set(defTask.map { it.outputFile })
|
||||
_packageNameProp.set(project.provider { pod.packageName })
|
||||
_extraOptsProp.addAll(project.provider { pod.extraOpts })
|
||||
}
|
||||
|
||||
if (
|
||||
isAvailableToProduceSynthetic
|
||||
|
||||
+5
-2
@@ -14,6 +14,7 @@ import org.gradle.api.file.ConfigurableFileCollection
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.gradle.api.file.FileTree
|
||||
import org.gradle.api.logging.Logger
|
||||
import org.gradle.api.provider.ListProperty
|
||||
import org.gradle.api.provider.Property
|
||||
import org.gradle.api.provider.Provider
|
||||
import org.gradle.api.tasks.*
|
||||
@@ -559,7 +560,8 @@ open class KotlinNativeLink : AbstractKotlinNativeCompile<KotlinCommonToolOption
|
||||
when (embedBitcode) {
|
||||
Framework.BitcodeEmbeddingMode.MARKER -> add("-Xembed-bitcode-marker")
|
||||
Framework.BitcodeEmbeddingMode.BITCODE -> add("-Xembed-bitcode")
|
||||
else -> { /* Do nothing. */ }
|
||||
else -> { /* Do nothing. */
|
||||
}
|
||||
}
|
||||
linkerOpts.forEach {
|
||||
addArg("-linker-option", it)
|
||||
@@ -585,7 +587,8 @@ open class KotlinNativeLink : AbstractKotlinNativeCompile<KotlinCommonToolOption
|
||||
listOf("-Xinclude=${intermediateLibrary.get().absolutePath}")
|
||||
|
||||
@get:Internal
|
||||
val apiFilesProvider = compilation.map {project.configurations.getByName(it.apiConfigurationName).files.filterKlibsPassedToCompiler(project)}
|
||||
val apiFilesProvider =
|
||||
compilation.map { project.configurations.getByName(it.apiConfigurationName).files.filterKlibsPassedToCompiler(project) }
|
||||
|
||||
private fun validatedExportedLibraries() {
|
||||
val exportConfiguration = exportLibraries as? Configuration ?: return
|
||||
|
||||
Reference in New Issue
Block a user