diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index 2c3128856ad..0bbc8f65f29 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -3882,6 +3882,38 @@ if (isAppleTarget(project)) { }*.absolutePath } + task testObjCExportStatic(type: FrameworkTest) { + final String frameworkName = 'KtStatic' + final String frameworkArtifactName = 'Kt' + testName = "ObjCExportStatic" + frameworkNames = [frameworkName] + frameworkArtifactNames = [frameworkArtifactName] + + codesign = false + + final String dir = "$testOutputFramework/$testName" + + konanArtifacts { + framework(frameworkName, targets: [target.name]) { + srcDir 'objcexport' + baseDir dir + + if (!useCustomDist) { + dependsOn ":${target.name}CrossDistRuntime", ':commonDistRuntime', ':distCompiler' + } + + extraOpts "-Xembed-bitcode-marker" + extraOpts "-Xstatic-framework" + extraOpts project.globalTestArgs + + artifactName frameworkArtifactName + } + } + swiftSources = fileTree('objcexport') { + include '*.swift' + }*.absolutePath + } + task testValuesGenericsFramework(type: FrameworkTest) { final String frameworkName = 'ValuesGenerics' testName = frameworkName diff --git a/build-tools/src/main/kotlin/org/jetbrains/kotlin/ExecutorService.kt b/build-tools/src/main/kotlin/org/jetbrains/kotlin/ExecutorService.kt index 9877c3895d9..9b650d7662b 100644 --- a/build-tools/src/main/kotlin/org/jetbrains/kotlin/ExecutorService.kt +++ b/build-tools/src/main/kotlin/org/jetbrains/kotlin/ExecutorService.kt @@ -503,7 +503,7 @@ fun KonanTestExecutable.configureXcodeBuild() { // Create a Frameworks folder inside the build dir. it += "mkdir -p \"\$TARGET_BUILD_DIR/\$FRAMEWORKS_FOLDER_PATH\"" // Copy each framework to the Frameworks dir. - it += frameworkNames.map { name -> + it += frameworkArtifactNames.map { name -> "cp -r \"$testOutput/$testName/${project.testTarget.name}/$name.framework\" " + "\"\$TARGET_BUILD_DIR/\$FRAMEWORKS_FOLDER_PATH/$name.framework\"" } diff --git a/build-tools/src/main/kotlin/org/jetbrains/kotlin/FrameworkTest.kt b/build-tools/src/main/kotlin/org/jetbrains/kotlin/FrameworkTest.kt index 2d62c08a57c..fff23fd5fda 100644 --- a/build-tools/src/main/kotlin/org/jetbrains/kotlin/FrameworkTest.kt +++ b/build-tools/src/main/kotlin/org/jetbrains/kotlin/FrameworkTest.kt @@ -32,9 +32,15 @@ open class FrameworkTest : DefaultTask(), KonanTestExecutable { @Input lateinit var frameworkNames: List + @Input + lateinit var frameworkArtifactNames: List + @Input var fullBitcode: Boolean = false + @Input + var codesign: Boolean = true + val testOutput: String = project.testOutputFramework override val executable: String @@ -57,6 +63,11 @@ open class FrameworkTest : DefaultTask(), KonanTestExecutable { } check(::testName.isInitialized) { "Test name should be set" } check(::frameworkNames.isInitialized) { "Framework names should be set" } + + if (!::frameworkArtifactNames.isInitialized) { + frameworkArtifactNames = frameworkNames + } + frameworkNames.forEach { frameworkName -> val compileTask = project.tasks.getByName("compileKonan$frameworkName") doBeforeBuild?.let { compileTask.doFirst(it) } @@ -71,11 +82,11 @@ open class FrameworkTest : DefaultTask(), KonanTestExecutable { private fun buildTestExecutable() { val frameworkParentDirPath = "$testOutput/$testName/${project.testTarget.name}" - frameworkNames.forEach { frameworkName -> + frameworkArtifactNames.forEach { frameworkName -> val frameworkPath = "$frameworkParentDirPath/$frameworkName.framework" val frameworkBinaryPath = "$frameworkPath/$frameworkName" validateBitcodeEmbedding(frameworkBinaryPath) - codesign(project, frameworkPath) + if (codesign) codesign(project, frameworkPath) } // create a test provider and get main entry point