From f5eecdd5475bdc4541c80588eacf5f8a0d65f126 Mon Sep 17 00:00:00 2001 From: Ilya Matveev Date: Thu, 6 Sep 2018 21:03:36 +0700 Subject: [PATCH] Support custom entry points for native binaries --- .../testProject/new-mpp-lib-and-app/sample-app/build.gradle | 1 + .../sample-app/src/linux64Main/kotlin/linux64App.kt | 2 ++ .../sample-app/src/macos64Main/kotlin/macos64App.kt | 2 ++ .../sample-app/src/mingw64Main/kotlin/mingw64App.kt | 2 ++ .../sample-app/src/wasm32Main/kotlin/wasm32App.kt | 2 ++ .../jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt | 3 +++ .../org/jetbrains/kotlin/gradle/tasks/KotlinNativeTasks.kt | 4 ++++ 7 files changed, 16 insertions(+) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app/build.gradle index 5c5829b7b33..ceccb5bab3d 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app/build.gradle @@ -65,6 +65,7 @@ kotlin { configure([wasm32, linux64, mingw64, macos64]) { compilations.main.outputKinds += org.jetbrains.kotlin.gradle.plugin.mpp.NativeOutputKind.EXECUTABLE + compilations.main.entryPoint = "com.example.app.native.main" } } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app/src/linux64Main/kotlin/linux64App.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app/src/linux64Main/kotlin/linux64App.kt index 7a4a64cc0be..3cd5661ab64 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app/src/linux64Main/kotlin/linux64App.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app/src/linux64Main/kotlin/linux64App.kt @@ -3,6 +3,8 @@ * that can be found in the license/LICENSE.txt file. */ +package com.example.app.native + import com.example.lib.* fun main(args: Array) { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app/src/macos64Main/kotlin/macos64App.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app/src/macos64Main/kotlin/macos64App.kt index 7a4a64cc0be..3cd5661ab64 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app/src/macos64Main/kotlin/macos64App.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app/src/macos64Main/kotlin/macos64App.kt @@ -3,6 +3,8 @@ * that can be found in the license/LICENSE.txt file. */ +package com.example.app.native + import com.example.lib.* fun main(args: Array) { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app/src/mingw64Main/kotlin/mingw64App.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app/src/mingw64Main/kotlin/mingw64App.kt index 7a4a64cc0be..3cd5661ab64 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app/src/mingw64Main/kotlin/mingw64App.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app/src/mingw64Main/kotlin/mingw64App.kt @@ -3,6 +3,8 @@ * that can be found in the license/LICENSE.txt file. */ +package com.example.app.native + import com.example.lib.* fun main(args: Array) { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app/src/wasm32Main/kotlin/wasm32App.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app/src/wasm32Main/kotlin/wasm32App.kt index 7a4a64cc0be..3cd5661ab64 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app/src/wasm32Main/kotlin/wasm32App.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app/src/wasm32Main/kotlin/wasm32App.kt @@ -3,6 +3,8 @@ * that can be found in the license/LICENSE.txt file. */ +package com.example.app.native + import com.example.lib.* fun main(args: Array) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt index 2d8b7018cc5..fcf9b91a0d0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt @@ -319,6 +319,9 @@ class KotlinNativeCompilation( }.toMutableList() } + var entryPoint: String? = null + fun entryPoint(value: String) { entryPoint = value } + // Naming override val compileDependencyConfigurationName: String diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinNativeTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinNativeTasks.kt index 82ac2445f7c..db85f72ced9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinNativeTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinNativeTasks.kt @@ -77,6 +77,9 @@ open class KotlinNativeCompile : AbstractCompile() { val target: String @Input get() = compilation.target.konanTarget.name + val entryPoint: String? + @Optional @Input get() = compilation.entryPoint + val additionalCompilerOptions: Collection @Input get() = compilation.extraOpts @@ -174,6 +177,7 @@ open class KotlinNativeCompile : AbstractCompile() { addArg("-target", target) addArg("-p", outputKind.name.toLowerCase()) + addArgIfNotNull("-entry", entryPoint) add("-Xmulti-platform")