[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()
|
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
|
// paths
|
||||||
|
|
||||||
private fun CompiledProject.url() = externalSources().resolve("url")
|
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.Action
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
|
import org.gradle.api.provider.ListProperty
|
||||||
import org.gradle.api.provider.Property
|
import org.gradle.api.provider.Property
|
||||||
import org.gradle.util.ConfigureUtil
|
import org.gradle.util.ConfigureUtil
|
||||||
import org.jetbrains.kotlin.gradle.plugin.CInteropSettings
|
import org.jetbrains.kotlin.gradle.plugin.CInteropSettings
|
||||||
@@ -62,13 +63,28 @@ open class DefaultCInteropSettings @Inject constructor(
|
|||||||
|
|
||||||
var defFile: File
|
var defFile: File
|
||||||
get() = defFileProperty.get()
|
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 compilerOpts = mutableListOf<String>()
|
||||||
val linkerOpts = 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()
|
val includeDirs = DefaultIncludeDirectories()
|
||||||
var headers: FileCollection = project.files()
|
var headers: FileCollection = project.files()
|
||||||
@@ -80,7 +96,7 @@ open class DefaultCInteropSettings @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun packageName(value: String) {
|
override fun packageName(value: String) {
|
||||||
packageName = value
|
_packageNameProp.set(value)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun header(file: Any) = headers(file)
|
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(vararg values: Any) = extraOpts(values.toList())
|
||||||
override fun extraOpts(values: List<Any>) {
|
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,
|
private val name: String,
|
||||||
@get:Input var moduleName: String,
|
@get:Input var moduleName: String,
|
||||||
@get:Optional @get:Input var version: String? = null,
|
@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 {
|
) : Named {
|
||||||
@Input
|
@Input
|
||||||
override fun getName(): String = name
|
override fun getName(): String = name
|
||||||
|
|||||||
+5
-3
@@ -239,9 +239,11 @@ open class KotlinCocoapodsPlugin : Plugin<Project> {
|
|||||||
|
|
||||||
interopTask.dependsOn(defTask)
|
interopTask.dependsOn(defTask)
|
||||||
|
|
||||||
interop.defFileProperty.set(defTask.map { it.outputFile })
|
with(interop) {
|
||||||
interop.packageName = "cocoapods.${pod.moduleName}"
|
defFileProperty.set(defTask.map { it.outputFile })
|
||||||
|
_packageNameProp.set(project.provider { pod.packageName })
|
||||||
|
_extraOptsProp.addAll(project.provider { pod.extraOpts })
|
||||||
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
isAvailableToProduceSynthetic
|
isAvailableToProduceSynthetic
|
||||||
|
|||||||
+5
-2
@@ -14,6 +14,7 @@ import org.gradle.api.file.ConfigurableFileCollection
|
|||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
import org.gradle.api.file.FileTree
|
import org.gradle.api.file.FileTree
|
||||||
import org.gradle.api.logging.Logger
|
import org.gradle.api.logging.Logger
|
||||||
|
import org.gradle.api.provider.ListProperty
|
||||||
import org.gradle.api.provider.Property
|
import org.gradle.api.provider.Property
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
import org.gradle.api.tasks.*
|
import org.gradle.api.tasks.*
|
||||||
@@ -559,7 +560,8 @@ open class KotlinNativeLink : AbstractKotlinNativeCompile<KotlinCommonToolOption
|
|||||||
when (embedBitcode) {
|
when (embedBitcode) {
|
||||||
Framework.BitcodeEmbeddingMode.MARKER -> add("-Xembed-bitcode-marker")
|
Framework.BitcodeEmbeddingMode.MARKER -> add("-Xembed-bitcode-marker")
|
||||||
Framework.BitcodeEmbeddingMode.BITCODE -> add("-Xembed-bitcode")
|
Framework.BitcodeEmbeddingMode.BITCODE -> add("-Xembed-bitcode")
|
||||||
else -> { /* Do nothing. */ }
|
else -> { /* Do nothing. */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
linkerOpts.forEach {
|
linkerOpts.forEach {
|
||||||
addArg("-linker-option", it)
|
addArg("-linker-option", it)
|
||||||
@@ -585,7 +587,8 @@ open class KotlinNativeLink : AbstractKotlinNativeCompile<KotlinCommonToolOption
|
|||||||
listOf("-Xinclude=${intermediateLibrary.get().absolutePath}")
|
listOf("-Xinclude=${intermediateLibrary.get().absolutePath}")
|
||||||
|
|
||||||
@get:Internal
|
@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() {
|
private fun validatedExportedLibraries() {
|
||||||
val exportConfiguration = exportLibraries as? Configuration ?: return
|
val exportConfiguration = exportLibraries as? Configuration ?: return
|
||||||
|
|||||||
Reference in New Issue
Block a user