diff --git a/llbuild/lib/llvm/Support/CMakeLists.txt b/llbuild/lib/llvm/Support/CMakeLists.txt index 8e79e18..a844183 100644 --- a/llbuild/lib/llvm/Support/CMakeLists.txt +++ b/llbuild/lib/llvm/Support/CMakeLists.txt @@ -65,5 +65,5 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") endif() if(${CMAKE_SYSTEM_NAME} MATCHES "Android|Darwin|Linux") - target_link_libraries(llvmSupport PRIVATE curses) + target_link_libraries(llvmSupport PRIVATE android-spawn curses) endif() diff --git a/sourcekit-lsp/Utilities/build-script-helper.py b/sourcekit-lsp/Utilities/build-script-helper.py index a64795c..d48876d 100755 --- a/sourcekit-lsp/Utilities/build-script-helper.py +++ b/sourcekit-lsp/Utilities/build-script-helper.py @@ -54,6 +54,7 @@ def get_swiftpm_options(args): if 'ANDROID_DATA' in os.environ or (args.cross_compile_host and re.match( 'android-', args.cross_compile_host)): swiftpm_args += [ + '-Xlinker', '-landroid-spawn', '-Xlinker', '-rpath', '-Xlinker', '$ORIGIN/../lib/swift/android', # SwiftPM will otherwise try to compile against GNU strerror_r on # Android and fail. diff --git a/swift-corelibs-foundation/Sources/Foundation/CMakeLists.txt b/swift-corelibs-foundation/Sources/Foundation/CMakeLists.txt index 016bf294..cd534f16 100644 --- a/swift-corelibs-foundation/Sources/Foundation/CMakeLists.txt +++ b/swift-corelibs-foundation/Sources/Foundation/CMakeLists.txt @@ -166,6 +166,13 @@ if(CMAKE_SYSTEM_NAME STREQUAL Windows) $) elseif(NOT CMAKE_SYSTEM_NAME STREQUAL Darwin) target_link_options(Foundation PRIVATE "SHELL:-no-toolchain-stdlib-rpath") + if(${CMAKE_SYSTEM_NAME} STREQUAL Android) + target_link_libraries(Foundation PRIVATE android-spawn) + if(CMAKE_FIND_ROOT_PATH) + target_include_directories(Foundation PUBLIC ${CMAKE_FIND_ROOT_PATH}/usr/include) + target_link_directories(Foundation PUBLIC ${CMAKE_FIND_ROOT_PATH}/usr/lib) + endif() + endif() endif() diff --git a/swift-driver/Utilities/build-script-helper.py b/swift-driver/Utilities/build-script-helper.py index 18f22fb0..bc2b1308 100755 --- a/swift-driver/Utilities/build-script-helper.py +++ b/swift-driver/Utilities/build-script-helper.py @@ -103,6 +103,7 @@ def get_swiftpm_options(args): if 'ANDROID_DATA' in os.environ or (args.cross_compile_hosts and re.match( 'android-', args.cross_compile_hosts[0])): swiftpm_args += [ + '-Xlinker', '-landroid-spawn', '-Xlinker', '-rpath', '-Xlinker', '$ORIGIN/../lib/swift/android', # SwiftPM will otherwise try to compile against GNU strerror_r on # Android and fail. diff --git a/swift-tools-support-core/Sources/TSCBasic/CMakeLists.txt b/swift-tools-support-core/Sources/TSCBasic/CMakeLists.txt index bbc43d98..bc5ee576 100644 --- a/swift-tools-support-core/Sources/TSCBasic/CMakeLists.txt +++ b/swift-tools-support-core/Sources/TSCBasic/CMakeLists.txt @@ -53,7 +53,7 @@ target_link_libraries(TSCBasic PUBLIC if(NOT CMAKE_SYSTEM_NAME STREQUAL Darwin) if(Foundation_FOUND) target_link_libraries(TSCBasic PUBLIC - Foundation) + Foundation android-spawn) endif() endif() target_link_libraries(TSCBasic PRIVATE diff --git a/swiftpm/Utilities/bootstrap b/swiftpm/Utilities/bootstrap index 085056de..1ded1a90 100755 --- a/swiftpm/Utilities/bootstrap +++ b/swiftpm/Utilities/bootstrap @@ -764,6 +764,7 @@ def get_swiftpm_flags(args): if 'ANDROID_DATA' in os.environ or (args.cross_compile_hosts and re.match( 'android-', args.cross_compile_hosts)): build_flags.extend(["-Xswiftc", "-Xcc", "-Xswiftc", "-U_GNU_SOURCE"]) + build_flags.extend(["-Xlinker", "-landroid-spawn"]) if platform.system() == "OpenBSD": build_flags.extend(["-Xcc", "-I/usr/local/include"])