In Kotlin/Native 1.3.30 EAP1 an ability to build
a static ObjC framework has been added. This patch
adds support for this feature in the kotlin-multiplatform
plugin.
This patch adds a separate Gradle plugin allowing
a user to import Kotlin/Native modules in Cocoapods
projects and use Cocoapods dependencies in Kotlin
code via cinterop.
The plugin when applied does the following things:
1. Add a framework binary for each supported (iOS
or macOS) platform in the project.
2. Add a Cocoapods extension allowing one to configure
Cocoapods dependencies of the project.
3. Create cinterop tasks for each dependency from the
previous point. The tasks are added for main
compilations of each supported platform.
4. Add a task to generate a podspec-file which includes
the framework from the point 1, script to
build it and dependencies from the point 2.
So the Cocoapods import procedure is the following:
1. A user runs `./gradlew generatePodspec`. The plugin
creates a podspec-file with all dependencies.
2. The user adds a dependency on this podspec in his Podfile
and runs `pod install`. Cocoapods downloads dependencies
and configures user's XCode project.
3. The user runs XCode build. XCode builds dependencies and then
runs Gradle build. Gradle performs interop processing and
builds the Kotlin framework. Compiler options and header
search paths are passed in the Gradle from XCode environment
variables. After that the final application is built by XCode.
Issue #KT-30269 Fixed
Earlier we used to have two methods: cinterops(Container.() -> Unit) and
cinterops(Action<Container>). It's OK for Groovy DSL but causes resolution
ambiguity in Kotlin DSL. This patch removes the first overload to avoid
this situation. The second overload still can be called in Kotlin DSL
as `cinterops { ... }`.
In 1.3.20 a new binaries DSL was introduced. This
patch deprecates old DSL methods used for binary
configuration in 1.3.0 and 1.3.1x.
Issue #KT-29998 Fixed
Earlier we added interop libraries built for a main compilation
in dependencies of a corresponding test compilation. But we didn't
add them in dependencies of interop libraries built for the test
compilation. It caused cinterop failures when the test compilation
has interop libraries. This patch fixes it by adding main interop
libraries in dependencies of test ones.
Also earlier interop libraries of test compilations were
unintentionally added in apiElements and publication. This patch
fixes this issue too.
Issue #KT-30290 Fixed
Print a warning with an instruction on how to fix this. Don't warn about
different versions and duplicate plugins in composite build.
Issue #KT-30276 Fixed
The 'java' plugin doesn't expect the 'api' configuration to exist (it
is only introduced by the 'java-library' plugin) and doesn't map it
to the compile scope when publishing with the legacy 'maven' plugin.
This commit adds the missing conf2ScopeMapping for 'api' -> 'compile'
This is needed to ensure that POMs of single-platform Kotlin projects
depending on MPP libraries contain dependencies (Maven coordinates)
of the platform-specific modules of the libraries.
The mechanism and rationale are the same as in KT-28482
Issue #KT-27059 Fixed
This covers the cases when a user knows what they do and doesn't want
anything to do any changes to the POMs, e.g. they want to manually
replace all of the dependencies, so they need the original dependencies.
Remove resulting redeclarations and finish the split in files below:
- from KotlinTargetConfigurator.kt
- to KotlinNativeTaretConfigurator.kt
- from mpp\kotlinTargets.kt
- to mpp\KotlinAndroidTarget.kt
- to mpp\KotlinNativeTarget.kt
- to mpp\KotlinWithJavaTarget.kt
- from mpp\kotlinTargetPresets.kt
- to mpp\KotlinAndroidTargetPreset.kt
- to mpp\KotlinNativeTargetPreset.kt
- to mpp\KotlinJsTargetPreset.kt
- to mpp\KotlinJvmTargetPreset.kt
- to mpp\KotlinJvmWithJavaTargetPreset.kt
- to mpp\KotlinMetadataTargetPreset.kt
- from mpp\kotlinCompilations.kt
- to mpp\KotlinCommonCompilation.kt
- to mpp\KotlinJvmCompilation.kt
- to mpp\KotlinJvmAndroidCompilation.kt
- to mpp\KotlinJsCompilation.kt
- to mpp\KotlinNativeCompilation.kt
- to mpp\KotlinWithJavaCompilation.kt
- from mpp\KotlinCompilationFactory.kt
- to mpp\KotlinJsCompilationFactory.kt
- to mpp\KotlinJvmCompilationFactory.kt
- to mpp\KotlinJvmAndroidCompilationFactory.kt
- to mpp\KotlinNativeCompilationFactory.kt
- to mpp\KotlinWithJavaCompilationFactory.kt
- from mpp\kotlinCompilationOutputs.kt
- to mpp\KotlinWithJavaCompilationOutput.kt
- from KotlinTargetConfigurator.kt
- to KotlinNativeTaretConfigurator.kt
- from mpp\kotlinTargets.kt
- to mpp\KotlinAndroidTarget.kt
- to mpp\KotlinNativeTarget.kt
- to mpp\KotlinWithJavaTarget.kt
- from mpp\kotlinTargetPresets.kt
- to mpp\KotlinAndroidTargetPreset.kt
- to mpp\KotlinNativeTargetPreset.kt
- to mpp\KotlinJsTargetPreset.kt
- to mpp\KotlinJvmTargetPreset.kt
- to mpp\KotlinJvmWithJavaTargetPreset.kt
- to mpp\KotlinMetadataTargetPreset.kt
- from mpp\kotlinCompilations.kt
- to mpp\KotlinCommonCompilation.kt
- to mpp\KotlinJvmCompilation.kt
- to mpp\KotlinJvmAndroidCompilation.kt
- to mpp\KotlinJsCompilation.kt
- to mpp\KotlinNativeCompilation.kt
- to mpp\KotlinWithJavaCompilation.kt
- from mpp\KotlinCompilationFactory.kt
- to mpp\KotlinJsCompilationFactory.kt
- to mpp\KotlinJvmCompilationFactory.kt
- to mpp\KotlinJvmAndroidCompilationFactory.kt
- to mpp\KotlinNativeCompilationFactory.kt
- to mpp\KotlinWithJavaCompilationFactory.kt
- from mpp\kotlinCompilationOutputs.kt
- to mpp\KotlinWithJavaCompilationOutput.kt
This commit moves the temporary files back to their original paths.
- from KotlinTargetConfigurator.kt
- to KotlinNativeTaretConfigurator.kt
- from mpp\kotlinTargets.kt
- to mpp\KotlinAndroidTarget.kt
- to mpp\KotlinNativeTarget.kt
- to mpp\KotlinWithJavaTarget.kt
- from mpp\kotlinTargetPresets.kt
- to mpp\KotlinAndroidTargetPreset.kt
- to mpp\KotlinNativeTargetPreset.kt
- to mpp\KotlinJsTargetPreset.kt
- to mpp\KotlinJvmTargetPreset.kt
- to mpp\KotlinJvmWithJavaTargetPreset.kt
- to mpp\KotlinMetadataTargetPreset.kt
- from mpp\kotlinCompilations.kt
- to mpp\KotlinCommonCompilation.kt
- to mpp\KotlinJvmCompilation.kt
- to mpp\KotlinJvmAndroidCompilation.kt
- to mpp\KotlinJsCompilation.kt
- to mpp\KotlinNativeCompilation.kt
- to mpp\KotlinWithJavaCompilation.kt
- from mpp\KotlinCompilationFactory.kt
- to mpp\KotlinJsCompilationFactory.kt
- to mpp\KotlinJvmCompilationFactory.kt
- to mpp\KotlinJvmAndroidCompilationFactory.kt
- to mpp\KotlinNativeCompilationFactory.kt
- to mpp\KotlinWithJavaCompilationFactory.kt
- from mpp\kotlinCompilationOutputs.kt
- to mpp\KotlinWithJavaCompilationOutput.kt
This commit moves the original files to
temporary files suffixed with '.git_split_tmp'
- from KotlinTargetConfigurator.kt
- to KotlinNativeTaretConfigurator.kt
- from mpp\kotlinTargets.kt
- to mpp\KotlinAndroidTarget.kt
- to mpp\KotlinNativeTarget.kt
- to mpp\KotlinWithJavaTarget.kt
- from mpp\kotlinTargetPresets.kt
- to mpp\KotlinAndroidTargetPreset.kt
- to mpp\KotlinNativeTargetPreset.kt
- to mpp\KotlinJsTargetPreset.kt
- to mpp\KotlinJvmTargetPreset.kt
- to mpp\KotlinJvmWithJavaTargetPreset.kt
- to mpp\KotlinMetadataTargetPreset.kt
- from mpp\kotlinCompilations.kt
- to mpp\KotlinCommonCompilation.kt
- to mpp\KotlinJvmCompilation.kt
- to mpp\KotlinJvmAndroidCompilation.kt
- to mpp\KotlinJsCompilation.kt
- to mpp\KotlinNativeCompilation.kt
- to mpp\KotlinWithJavaCompilation.kt
- from mpp\KotlinCompilationFactory.kt
- to mpp\KotlinJsCompilationFactory.kt
- to mpp\KotlinJvmCompilationFactory.kt
- to mpp\KotlinJvmAndroidCompilationFactory.kt
- to mpp\KotlinNativeCompilationFactory.kt
- to mpp\KotlinWithJavaCompilationFactory.kt
- from mpp\kotlinCompilationOutputs.kt
- to mpp\KotlinWithJavaCompilationOutput.kt
This commit moves:
mpp\kotlinTargetPresets.kt -> mpp\KotlinMetadataTargetPreset.kt
mpp\kotlinCompilations.kt -> mpp\KotlinWithJavaCompilation.kt
- from KotlinTargetConfigurator.kt
- to KotlinNativeTaretConfigurator.kt
- from mpp\kotlinTargets.kt
- to mpp\KotlinAndroidTarget.kt
- to mpp\KotlinNativeTarget.kt
- to mpp\KotlinWithJavaTarget.kt
- from mpp\kotlinTargetPresets.kt
- to mpp\KotlinAndroidTargetPreset.kt
- to mpp\KotlinNativeTargetPreset.kt
- to mpp\KotlinJsTargetPreset.kt
- to mpp\KotlinJvmTargetPreset.kt
- to mpp\KotlinJvmWithJavaTargetPreset.kt
- to mpp\KotlinMetadataTargetPreset.kt
- from mpp\kotlinCompilations.kt
- to mpp\KotlinCommonCompilation.kt
- to mpp\KotlinJvmCompilation.kt
- to mpp\KotlinJvmAndroidCompilation.kt
- to mpp\KotlinJsCompilation.kt
- to mpp\KotlinNativeCompilation.kt
- to mpp\KotlinWithJavaCompilation.kt
- from mpp\KotlinCompilationFactory.kt
- to mpp\KotlinJsCompilationFactory.kt
- to mpp\KotlinJvmCompilationFactory.kt
- to mpp\KotlinJvmAndroidCompilationFactory.kt
- to mpp\KotlinNativeCompilationFactory.kt
- to mpp\KotlinWithJavaCompilationFactory.kt
- from mpp\kotlinCompilationOutputs.kt
- to mpp\KotlinWithJavaCompilationOutput.kt
This commit moves:
mpp\kotlinTargetPresets.kt -> mpp\KotlinJvmWithJavaTargetPreset.kt
mpp\kotlinCompilations.kt -> mpp\KotlinNativeCompilation.kt
mpp\KotlinCompilationFactory.kt -> mpp\KotlinWithJavaCompilationFactory.kt
- from KotlinTargetConfigurator.kt
- to KotlinNativeTaretConfigurator.kt
- from mpp\kotlinTargets.kt
- to mpp\KotlinAndroidTarget.kt
- to mpp\KotlinNativeTarget.kt
- to mpp\KotlinWithJavaTarget.kt
- from mpp\kotlinTargetPresets.kt
- to mpp\KotlinAndroidTargetPreset.kt
- to mpp\KotlinNativeTargetPreset.kt
- to mpp\KotlinJsTargetPreset.kt
- to mpp\KotlinJvmTargetPreset.kt
- to mpp\KotlinJvmWithJavaTargetPreset.kt
- to mpp\KotlinMetadataTargetPreset.kt
- from mpp\kotlinCompilations.kt
- to mpp\KotlinCommonCompilation.kt
- to mpp\KotlinJvmCompilation.kt
- to mpp\KotlinJvmAndroidCompilation.kt
- to mpp\KotlinJsCompilation.kt
- to mpp\KotlinNativeCompilation.kt
- to mpp\KotlinWithJavaCompilation.kt
- from mpp\KotlinCompilationFactory.kt
- to mpp\KotlinJsCompilationFactory.kt
- to mpp\KotlinJvmCompilationFactory.kt
- to mpp\KotlinJvmAndroidCompilationFactory.kt
- to mpp\KotlinNativeCompilationFactory.kt
- to mpp\KotlinWithJavaCompilationFactory.kt
- from mpp\kotlinCompilationOutputs.kt
- to mpp\KotlinWithJavaCompilationOutput.kt
This commit moves:
mpp\kotlinTargetPresets.kt -> mpp\KotlinJvmTargetPreset.kt
mpp\kotlinCompilations.kt -> mpp\KotlinJsCompilation.kt
mpp\KotlinCompilationFactory.kt -> mpp\KotlinNativeCompilationFactory.kt
- from KotlinTargetConfigurator.kt
- to KotlinNativeTaretConfigurator.kt
- from mpp\kotlinTargets.kt
- to mpp\KotlinAndroidTarget.kt
- to mpp\KotlinNativeTarget.kt
- to mpp\KotlinWithJavaTarget.kt
- from mpp\kotlinTargetPresets.kt
- to mpp\KotlinAndroidTargetPreset.kt
- to mpp\KotlinNativeTargetPreset.kt
- to mpp\KotlinJsTargetPreset.kt
- to mpp\KotlinJvmTargetPreset.kt
- to mpp\KotlinJvmWithJavaTargetPreset.kt
- to mpp\KotlinMetadataTargetPreset.kt
- from mpp\kotlinCompilations.kt
- to mpp\KotlinCommonCompilation.kt
- to mpp\KotlinJvmCompilation.kt
- to mpp\KotlinJvmAndroidCompilation.kt
- to mpp\KotlinJsCompilation.kt
- to mpp\KotlinNativeCompilation.kt
- to mpp\KotlinWithJavaCompilation.kt
- from mpp\KotlinCompilationFactory.kt
- to mpp\KotlinJsCompilationFactory.kt
- to mpp\KotlinJvmCompilationFactory.kt
- to mpp\KotlinJvmAndroidCompilationFactory.kt
- to mpp\KotlinNativeCompilationFactory.kt
- to mpp\KotlinWithJavaCompilationFactory.kt
- from mpp\kotlinCompilationOutputs.kt
- to mpp\KotlinWithJavaCompilationOutput.kt
This commit moves:
mpp\kotlinTargets.kt -> mpp\KotlinWithJavaTarget.kt
mpp\kotlinTargetPresets.kt -> mpp\KotlinJsTargetPreset.kt
mpp\kotlinCompilations.kt -> mpp\KotlinJvmAndroidCompilation.kt
mpp\KotlinCompilationFactory.kt -> mpp\KotlinJvmAndroidCompilationFactory.kt
- from KotlinTargetConfigurator.kt
- to KotlinNativeTaretConfigurator.kt
- from mpp\kotlinTargets.kt
- to mpp\KotlinAndroidTarget.kt
- to mpp\KotlinNativeTarget.kt
- to mpp\KotlinWithJavaTarget.kt
- from mpp\kotlinTargetPresets.kt
- to mpp\KotlinAndroidTargetPreset.kt
- to mpp\KotlinNativeTargetPreset.kt
- to mpp\KotlinJsTargetPreset.kt
- to mpp\KotlinJvmTargetPreset.kt
- to mpp\KotlinJvmWithJavaTargetPreset.kt
- to mpp\KotlinMetadataTargetPreset.kt
- from mpp\kotlinCompilations.kt
- to mpp\KotlinCommonCompilation.kt
- to mpp\KotlinJvmCompilation.kt
- to mpp\KotlinJvmAndroidCompilation.kt
- to mpp\KotlinJsCompilation.kt
- to mpp\KotlinNativeCompilation.kt
- to mpp\KotlinWithJavaCompilation.kt
- from mpp\KotlinCompilationFactory.kt
- to mpp\KotlinJsCompilationFactory.kt
- to mpp\KotlinJvmCompilationFactory.kt
- to mpp\KotlinJvmAndroidCompilationFactory.kt
- to mpp\KotlinNativeCompilationFactory.kt
- to mpp\KotlinWithJavaCompilationFactory.kt
- from mpp\kotlinCompilationOutputs.kt
- to mpp\KotlinWithJavaCompilationOutput.kt
This commit moves:
mpp\kotlinTargets.kt -> mpp\KotlinNativeTarget.kt
mpp\kotlinTargetPresets.kt -> mpp\KotlinNativeTargetPreset.kt
mpp\kotlinCompilations.kt -> mpp\KotlinJvmCompilation.kt
mpp\KotlinCompilationFactory.kt -> mpp\KotlinJvmCompilationFactory.kt
- from KotlinTargetConfigurator.kt
- to KotlinNativeTaretConfigurator.kt
- from mpp\kotlinTargets.kt
- to mpp\KotlinAndroidTarget.kt
- to mpp\KotlinNativeTarget.kt
- to mpp\KotlinWithJavaTarget.kt
- from mpp\kotlinTargetPresets.kt
- to mpp\KotlinAndroidTargetPreset.kt
- to mpp\KotlinNativeTargetPreset.kt
- to mpp\KotlinJsTargetPreset.kt
- to mpp\KotlinJvmTargetPreset.kt
- to mpp\KotlinJvmWithJavaTargetPreset.kt
- to mpp\KotlinMetadataTargetPreset.kt
- from mpp\kotlinCompilations.kt
- to mpp\KotlinCommonCompilation.kt
- to mpp\KotlinJvmCompilation.kt
- to mpp\KotlinJvmAndroidCompilation.kt
- to mpp\KotlinJsCompilation.kt
- to mpp\KotlinNativeCompilation.kt
- to mpp\KotlinWithJavaCompilation.kt
- from mpp\KotlinCompilationFactory.kt
- to mpp\KotlinJsCompilationFactory.kt
- to mpp\KotlinJvmCompilationFactory.kt
- to mpp\KotlinJvmAndroidCompilationFactory.kt
- to mpp\KotlinNativeCompilationFactory.kt
- to mpp\KotlinWithJavaCompilationFactory.kt
- from mpp\kotlinCompilationOutputs.kt
- to mpp\KotlinWithJavaCompilationOutput.kt
This commit moves:
KotlinTargetConfigurator.kt -> KotlinNativeTaretConfigurator.kt
mpp\kotlinTargets.kt -> mpp\KotlinAndroidTarget.kt
mpp\kotlinTargetPresets.kt -> mpp\KotlinAndroidTargetPreset.kt
mpp\kotlinCompilations.kt -> mpp\KotlinCommonCompilation.kt
mpp\KotlinCompilationFactory.kt -> mpp\KotlinJsCompilationFactory.kt
mpp\kotlinCompilationOutputs.kt -> mpp\KotlinWithJavaCompilationOutput.kt