-
Notifications
You must be signed in to change notification settings - Fork 10.6k
Open
Labels
AndroidPlatform: AndroidPlatform: Androidc++ interopFeature: Interoperability with C++Feature: Interoperability with C++task
Description
Description
The Swift SDK for Android only supports the latest LTS NDK, which is now NDK 27d. However, we should make sure the latest stable NDK, now 29, is also working, in preparation for the next LTS NDK being released.
I just tried using the official CI script to build with NDK 29 and I'm seeing C++ interop compilation errors for the first time, when trying to build CxxStdlib.o:
[1793/2251][ 79%][4788.025s] Compiling /home/build-user/build/swift-project/Ninja-Release/swift-linux-x86_64/stdlib/public/Cxx/std//ANDROID/aarch64/CxxStdlib.o
FAILED: stdlib/public/Cxx/std/ANDROID/aarch64/CxxStdlib.o /home/build-user/build/swift-project/Ninja-Release/swift-linux-x86_64/stdlib/public/Cxx/std/ANDROID/aarch64/CxxStdlib.o
cd /home/build-user/build/swift-project/Ninja-Release/swift-linux-x86_64/stdlib/public/Cxx/std && /home/build-user/build/swift-project/cmake-linux-x86_64/bin/cmake -E make_directory /home/build-user/build/swift-project/Ninja-Release/swift-linux-x86_64/stdlib/public/Cxx/std/ANDROID/aarch64 && /home/build-user/build/swift-project/cmake-linux-x86_64/bin/cmake -E env PYTHONIOENCODING=UTF8 LD_LIBRARY_PATH=/usr/local/swift/lib/swift/linux /usr/bin/python3.12 /source/swift-project/swift/utils/line-directive @/home/build-user/build/swift-project/Ninja-Release/swift-linux-x86_64/stdlib/public/Cxx/std/5b258c27ce8b90a75dfad006a0053b49e299d8f2.txt -- /home/build-user/build/swift-project/Ninja-Release/swift-linux-x86_64/./bin/swiftc -c -sdk /home/build-user/build/ndk/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/sysroot -target aarch64-unknown-linux-android -resource-dir /home/build-user/build/swift-project/Ninja-Release/swift-linux-x86_64/./lib/swift -O -D SWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY -D SWIFT_ENABLE_EXPERIMENTAL_DISTRIBUTED -D SWIFT_ENABLE_EXPERIMENTAL_DIFFERENTIABLE_PROGRAMMING -D SWIFT_ENABLE_EXPERIMENTAL_STRING_PROCESSING -D SWIFT_ENABLE_EXPERIMENTAL_OBSERVATION -D SWIFT_ENABLE_SYNCHRONIZATION -D SWIFT_ENABLE_VOLATILE -D SWIFT_RUNTIME_OS_VERSIONING -D SWIFT_STDLIB_ENABLE_UNICODE_DATA -D SWIFT_STDLIB_ENABLE_VECTOR_TYPES -D SWIFT_STDLIB_HAS_COMMANDLINE -D SWIFT_STDLIB_HAS_STDIN -D SWIFT_STDLIB_HAS_ENVIRON -Xcc -DSWIFT_STDLIB_HAS_ENVIRON -D SWIFT_CONCURRENCY_USES_DISPATCH -D SWIFT_STDLIB_OVERRIDABLE_RETAIN_RELEASE -D SWIFT_THREADING_PTHREADS -static -tools-directory /home/build-user/build/swift-project/Ninja-Release/llvm-linux-x86_64/./bin -module-cache-path /home/build-user/build/swift-project/Ninja-Release/swift-linux-x86_64/./module-cache -no-link-objc-runtime -enable-library-evolution -library-level api -Xfrontend -require-explicit-availability=ignore -Xfrontend -enforce-exclusivity=unchecked -D SWIFT_ENABLE_REFLECTION -module-name CxxStdlib -swift-version 5 -Xfrontend -empty-abi-descriptor -runtime-compatibility-version none -disable-autolinking-runtime-compatibility-dynamic-replacements -Xfrontend -disable-autolinking-runtime-compatibility-concurrency -Xfrontend -disable-objc-interop -enable-experimental-feature NoncopyableGenerics2 -enable-experimental-feature SuppressedAssociatedTypes -enable-experimental-feature SE427NoInferenceOnExtension -enable-experimental-feature NonescapableTypes -enable-experimental-feature LifetimeDependence -enable-experimental-feature InoutLifetimeDependence -enable-experimental-feature LifetimeDependenceMutableAccessors -enable-upcoming-feature MemberImportVisibility -cxx-interoperability-mode=default -Xfrontend -module-interface-preserve-types-as-written -enable-experimental-feature AssumeResilientCxxTypes -enable-experimental-feature Lifetimes -enable-experimental-feature AllowUnsafeAttribute -strict-memory-safety -disable-upcoming-feature MemberImportVisibility -warn-implicit-overrides -Xfrontend -enable-lexical-lifetimes=false -Xfrontend -disable-implicit-concurrency-module-import -Xfrontend -disable-implicit-string-processing-module-import -Xfrontend -prespecialize-generic-metadata -Xfrontend -define-availability -Xfrontend SwiftStdlib\ 9999:macOS\ 9999,\ iOS\ 9999,\ watchOS\ 9999,\ tvOS\ 9999 -Xfrontend -define-availability -Xfrontend StdlibDeploymentTarget\ 9999:macOS\ 9999,\ iOS\ 9999,\ watchOS\ 9999,\ tvOS\ 9999 -Xfrontend -define-availability -Xfrontend SwiftStdlib\ 5.0:macOS\ 10.14.4,\ iOS\ 12.2,\ watchOS\ 5.2,\ tvOS\ 12.2 -Xfrontend -define-availability -Xfrontend StdlibDeploymentTarget\ 5.0:macOS\ 10.14.4,\ iOS\ 12.2,\ watchOS\ 5.2,\ tvOS\ 12.2 -Xfrontend -define-availability -Xfrontend SwiftStdlib\ 5.1:macOS\ 10.15,\ iOS\ 13.0,\ watchOS\ 6.0,\ tvOS\ 13.0 -Xfrontend -define-availability -Xfrontend StdlibDeploymentTarget\ 5.1:macOS\ 10.15,\ iOS\ 13.0,\ watchOS\ 6.0,\ tvOS\ 13.0 -Xfrontend -define-availability -Xfrontend SwiftStdlib\ 5.2:macOS\ 10.15.4,\ iOS\ 13.4,\ watchOS\ 6.2,\ tvOS\ 13.4 -Xfrontend -define-availability -Xfrontend StdlibDeploymentTarget\ 5.2:macOS\ 10.15.4,\ iOS\ 13.4,\ watchOS\ 6.2,\ tvOS\ 13.4 -Xfrontend -define-availability -Xfrontend SwiftStdlib\ 5.3:macOS\ 11.0,\ iOS\ 14.0,\ watchOS\ 7.0,\ tvOS\ 14.0 -Xfrontend -define-availability -Xfrontend StdlibDeploymentTarget\ 5.3:macOS\ 11.0,\ iOS\ 14.0,\ watchOS\ 7.0,\ tvOS\ 14.0 -Xfrontend -define-availability -Xfrontend SwiftStdlib\ 5.4:macOS\ 11.3,\ iOS\ 14.5,\ watchOS\ 7.4,\ tvOS\ 14.5 -Xfrontend -define-availability -Xfrontend StdlibDeploymentTarget\ 5.4:macOS\ 11.3,\ iOS\ 14.5,\ watchOS\ 7.4,\ tvOS\ 14.5 -Xfrontend -define-availability -Xfrontend SwiftStdlib\ 5.5:macOS\ 12.0,\ iOS\ 15.0,\ watchOS\ 8.0,\ tvOS\ 15.0 -Xfrontend -define-availability -Xfrontend StdlibDeploymentTarget\ 5.5:macOS\ 12.0,\ iOS\ 15.0,\ watchOS\ 8.0,\ tvOS\ 15.0 -Xfrontend -define-availability -Xfrontend SwiftStdlib\ 5.6:macOS\ 12.3,\ iOS\ 15.4,\ watchOS\ 8.5,\ tvOS\ 15.4 -Xfrontend -define-availability -Xfrontend StdlibDeploymentTarget\ 5.6:macOS\ 12.3,\ iOS\ 15.4,\ watchOS\ 8.5,\ tvOS\ 15.4 -Xfrontend -define-availability -Xfrontend SwiftStdlib\ 5.7:macOS\ 13.0,\ iOS\ 16.0,\ watchOS\ 9.0,\ tvOS\ 16.0 -Xfrontend -define-availability -Xfrontend StdlibDeploymentTarget\ 5.7:macOS\ 13.0,\ iOS\ 16.0,\ watchOS\ 9.0,\ tvOS\ 16.0 -Xfrontend -define-availability -Xfrontend SwiftStdlib\ 5.8:macOS\ 13.3,\ iOS\ 16.4,\ watchOS\ 9.4,\ tvOS\ 16.4 -Xfrontend -define-availability -Xfrontend StdlibDeploymentTarget\ 5.8:macOS\ 13.3,\ iOS\ 16.4,\ watchOS\ 9.4,\ tvOS\ 16.4 -Xfrontend -define-availability -Xfrontend SwiftStdlib\ 5.9:macOS\ 14.0,\ iOS\ 17.0,\ watchOS\ 10.0,\ tvOS\ 17.0 -Xfrontend -define-availability -Xfrontend StdlibDeploymentTarget\ 5.9:macOS\ 14.0,\ iOS\ 17.0,\ watchOS\ 10.0,\ tvOS\ 17.0 -Xfrontend -define-availability -Xfrontend SwiftStdlib\ 5.10:macOS\ 14.4,\ iOS\ 17.4,\ watchOS\ 10.4,\ tvOS\ 17.4,\ visionOS\ 1.1 -Xfrontend -define-availability -Xfrontend StdlibDeploymentTarget\ 5.10:macOS\ 14.4,\ iOS\ 17.4,\ watchOS\ 10.4,\ tvOS\ 17.4,\ visionOS\ 1.1 -Xfrontend -define-availability -Xfrontend SwiftStdlib\ 6.0:macOS\ 15.0,\ iOS\ 18.0,\ watchOS\ 11.0,\ tvOS\ 18.0,\ visionOS\ 2.0 -Xfrontend -define-availability -Xfrontend StdlibDeploymentTarget\ 6.0:macOS\ 15.0,\ iOS\ 18.0,\ watchOS\ 11.0,\ tvOS\ 18.0,\ visionOS\ 2.0 -Xfrontend -define-availability -Xfrontend SwiftStdlib\ 6.1:macOS\ 15.4,\ iOS\ 18.4,\ watchOS\ 11.4,\ tvOS\ 18.4,\ visionOS\ 2.4 -Xfrontend -define-availability -Xfrontend StdlibDeploymentTarget\ 6.1:macOS\ 15.4,\ iOS\ 18.4,\ watchOS\ 11.4,\ tvOS\ 18.4,\ visionOS\ 2.4 -Xfrontend -define-availability -Xfrontend SwiftStdlib\ 6.2:macOS\ 26.0,\ iOS\ 26.0,\ watchOS\ 26.0,\ tvOS\ 26.0,\ visionOS\ 26.0 -Xfrontend -define-availability -Xfrontend StdlibDeploymentTarget\ 6.2:macOS\ 26.0,\ iOS\ 26.0,\ watchOS\ 26.0,\ tvOS\ 26.0,\ visionOS\ 26.0 -Xfrontend -define-availability -Xfrontend SwiftStdlib\ 6.3:macOS\ 9999,\ iOS\ 9999,\ watchOS\ 9999,\ tvOS\ 9999,\ visionOS\ 9999 -Xfrontend -define-availability -Xfrontend StdlibDeploymentTarget\ 6.3:macOS\ 9999,\ iOS\ 9999,\ watchOS\ 9999,\ tvOS\ 9999,\ visionOS\ 9999 -Xfrontend -define-availability -Xfrontend SwiftCompatibilitySpan\ 5.0:macOS\ 10.14.4,\ iOS\ 12.2,\ watchOS\ 5.2,\ tvOS\ 12.2,\ visionOS\ 1.0 -Xfrontend -define-availability -Xfrontend SwiftCompatibilitySpan\ 6.2:macOS\ 26.0,\ iOS\ 26.0,\ watchOS\ 26.0,\ tvOS\ 26.0,\ visionOS\ 26.0 -Xfrontend -target-min-inlining-version -Xfrontend min -whole-module-optimization -color-diagnostics -parse-as-library -resource-dir /home/build-user/build/swift-project/Ninja-Release/swift-linux-x86_64/./lib/swift -I /home/build-user/build/swift-project/Ninja-Release/swift-linux-x86_64/./lib/swift/android -o /home/build-user/build/swift-project/Ninja-Release/swift-linux-x86_64/stdlib/public/Cxx/std//ANDROID/aarch64/CxxStdlib.o @/home/build-user/build/swift-project/Ninja-Release/swift-linux-x86_64/stdlib/public/Cxx/std/5b258c27ce8b90a75dfad006a0053b49e299d8f2.txt
/home/build-user/build/ndk/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/wchar.h:141:39: error: redefinition of '__libcpp_wcschr'
139 | # if defined(__cplusplus) && !defined(_LIBCPP_WCHAR_H_HAS_CONST_OVERLOADS) && defined(_LIBCPP_PREFERRED_OVERLOAD)
140 | extern "C++" {
141 | inline _LIBCPP_HIDE_FROM_ABI wchar_t* __libcpp_wcschr(const wchar_t* __s, wchar_t __c) {
| |- error: redefinition of '__libcpp_wcschr'
| `- note: previous definition is here
142 | return (wchar_t*)wcschr(__s, __c);
143 | }
I can't make head or tails of this error, @egorzhdan or @hnrklssn, any idea?
Additional information
I'm building the latest Nov. 3 trunk snapshot tag using NDK 29.
Metadata
Metadata
Assignees
Labels
AndroidPlatform: AndroidPlatform: Androidc++ interopFeature: Interoperability with C++Feature: Interoperability with C++task
Type
Projects
Status
Todo