diff --git a/python-multiplatform-gradle-plugin/src/main/kotlin/python/multiplatform/gradle/CPythonIncludeDirectories.kt b/python-multiplatform-gradle-plugin/src/main/kotlin/python/multiplatform/gradle/CPythonIncludeDirectories.kt index 009e0916..5b486239 100644 --- a/python-multiplatform-gradle-plugin/src/main/kotlin/python/multiplatform/gradle/CPythonIncludeDirectories.kt +++ b/python-multiplatform-gradle-plugin/src/main/kotlin/python/multiplatform/gradle/CPythonIncludeDirectories.kt @@ -53,7 +53,9 @@ object CPythonIncludeLayout { "$dir/python/include/python$tag" } in androidTargets -> "$target/prefix/include/python$tag" - else -> "ios/Python.xcframework/$target/include/python$tag" + // The framework's own Headers, which is also what the library's iOS cinterop reads: the + // 3.15 iOS support archive no longer ships `/include/python3.15` beside it (#313). + else -> "ios/Python.xcframework/$target/Python.framework/Headers" } } diff --git a/python-multiplatform-gradle-plugin/src/test/kotlin/python/multiplatform/gradle/CPythonIncludeDirectoriesTest.kt b/python-multiplatform-gradle-plugin/src/test/kotlin/python/multiplatform/gradle/CPythonIncludeDirectoriesTest.kt index 971905c6..b7b19954 100644 --- a/python-multiplatform-gradle-plugin/src/test/kotlin/python/multiplatform/gradle/CPythonIncludeDirectoriesTest.kt +++ b/python-multiplatform-gradle-plugin/src/test/kotlin/python/multiplatform/gradle/CPythonIncludeDirectoriesTest.kt @@ -22,8 +22,13 @@ class CPythonIncludeDirectoriesTest { assertEquals("linux-x86_64-freethreaded/python/include/python3.14t", l.relativePath("linux-x86_64", CPythonFlavour.FREE_THREADED, version)) assertEquals("windows-x86_64/python/include", l.relativePath("windows-x86_64", CPythonFlavour.GIL, version)) assertEquals("windows-x86_64-freethreaded/python/include", l.relativePath("windows-x86_64", CPythonFlavour.FREE_THREADED, version)) + // #313: the 3.15 iOS archive has headers only inside the framework. + assertEquals("ios/Python.xcframework/ios-arm64/Python.framework/Headers", l.relativePath("ios-arm64", CPythonFlavour.GIL, version)) + assertEquals( + "ios/Python.xcframework/ios-arm64_x86_64-simulator/Python.framework/Headers", + l.relativePath("ios-arm64_x86_64-simulator", CPythonFlavour.GIL, version), + ) assertEquals("android-aarch64/prefix/include/python3.14", l.relativePath("android-aarch64", CPythonFlavour.GIL, version)) - assertEquals("ios/Python.xcframework/ios-arm64/include/python3.14", l.relativePath("ios-arm64", CPythonFlavour.GIL, version)) } @Test