From b6df5e7f6cc76d5f528f3221457cb6f1c76d171e Mon Sep 17 00:00:00 2001 From: Butta Date: Thu, 14 Jan 2021 20:42:45 +0530 Subject: [PATCH] swift: update from 5.3.3 to 5.4 --- packages/libdispatch/build.sh | 4 +- packages/llbuild/build.sh | 4 +- .../lib-llvm-Support-CmakeLists.txt.patch | 8 +- packages/swift/build.sh | 67 ++-- packages/swift/llbuild-Package.swift.patch | 19 - packages/swift/swift-armv7.patch | 65 --- packages/swift/swift-build-script.patch | 52 --- packages/swift/swift-cmake.patch | 180 ++------- ...on-Sources-Foundation-CMakeLists.txt.patch | 13 + .../swift-corelibs-libdispatch-arm.patch | 43 ++ ...swift-corelibs-xctest-CMakeLists.txt.patch | 7 - packages/swift/swift-fix-arm-stdlib.patch | 48 +++ packages/swift/swift-host.patch | 117 ++++++ packages/swift/swift-native-tools.patch | 176 +++++++- packages/swift/swift-ndk.patch | 378 ------------------ packages/swift/swift-no-test-build.patch | 62 +++ packages/swift/swift-runtime-flag.patch | 75 ---- packages/swift/swift-tools-support-core.patch | 29 ++ .../swift-utils-build-script-impl-build.patch | 134 ------- .../swift-utils-build-script-impl-cross.patch | 191 +++++++-- .../swift-utils-build-script-impl-flags.patch | 89 +---- packages/swift/swift-vend-swiftpm-flags.patch | 109 +++++ packages/swift/swift-x86_64.patch | 75 ---- packages/swift/swiftpm-Utilities-bootstrap | 132 ++++-- packages/swift/swiftpm-android-flags.json | 0 .../swift/swiftpm-no-cmake-bootstrap.patch | 165 -------- packages/swift/swiftpm-rpath.patch | 19 - .../swiftpm-swift-tools-support-core.patch | 29 -- 28 files changed, 940 insertions(+), 1350 deletions(-) delete mode 100644 packages/swift/llbuild-Package.swift.patch delete mode 100644 packages/swift/swift-armv7.patch delete mode 100644 packages/swift/swift-build-script.patch create mode 100644 packages/swift/swift-corelibs-foundation-Sources-Foundation-CMakeLists.txt.patch create mode 100644 packages/swift/swift-corelibs-libdispatch-arm.patch create mode 100644 packages/swift/swift-fix-arm-stdlib.patch create mode 100644 packages/swift/swift-host.patch delete mode 100644 packages/swift/swift-ndk.patch create mode 100644 packages/swift/swift-no-test-build.patch delete mode 100644 packages/swift/swift-runtime-flag.patch create mode 100644 packages/swift/swift-tools-support-core.patch delete mode 100644 packages/swift/swift-utils-build-script-impl-build.patch create mode 100644 packages/swift/swift-vend-swiftpm-flags.patch delete mode 100644 packages/swift/swift-x86_64.patch mode change 100755 => 100644 packages/swift/swiftpm-android-flags.json delete mode 100644 packages/swift/swiftpm-no-cmake-bootstrap.patch delete mode 100644 packages/swift/swiftpm-rpath.patch delete mode 100644 packages/swift/swiftpm-swift-tools-support-core.patch diff --git a/packages/libdispatch/build.sh b/packages/libdispatch/build.sh index cc53ad4bc..d3702c4ff 100644 --- a/packages/libdispatch/build.sh +++ b/packages/libdispatch/build.sh @@ -2,8 +2,8 @@ TERMUX_PKG_HOMEPAGE=https://github.com/apple/swift-corelibs-libdispatch TERMUX_PKG_DESCRIPTION="The libdispatch project, for concurrency on multicore hardware" TERMUX_PKG_LICENSE="Apache-2.0" TERMUX_PKG_MAINTAINER="@buttaface" -_VERSION=5.3.3 +_VERSION=5.4 TERMUX_PKG_VERSION=1:${_VERSION} TERMUX_PKG_SRCURL=https://github.com/apple/swift-corelibs-libdispatch/archive/swift-${_VERSION}-RELEASE.tar.gz -TERMUX_PKG_SHA256=84a482afefdcda26c7dc83e3b75e662ed7705786a34a6b4958c0cdc6cace2c46 +TERMUX_PKG_SHA256=bafbcc1feaf8ac3a82edffde27b85820936cbfd0d194c9c1a320a13c356083c0 TERMUX_PKG_DEPENDS="libc++, libblocksruntime" diff --git a/packages/llbuild/build.sh b/packages/llbuild/build.sh index d820cec46..e2cacf947 100644 --- a/packages/llbuild/build.sh +++ b/packages/llbuild/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://github.com/apple/swift-llbuild TERMUX_PKG_DESCRIPTION="A low-level build system, used by the Swift Package Manager" TERMUX_PKG_LICENSE="Apache-2.0, NCSA" TERMUX_PKG_MAINTAINER="@buttaface" -TERMUX_PKG_VERSION=5.3 +TERMUX_PKG_VERSION=5.4 TERMUX_PKG_SRCURL=https://github.com/apple/swift-llbuild/archive/swift-${TERMUX_PKG_VERSION}-RELEASE.tar.gz -TERMUX_PKG_SHA256=6fddae33feb77cc13c797069cb91ac091af54cb6b267267f0de2bb45ceef1b78 +TERMUX_PKG_SHA256=91d3e454fff11b14bf89e6ab2b61bacb39395f92d5aab336923670aaa0a7e2fc TERMUX_PKG_DEPENDS="libc++, libandroid-spawn, libsqlite" diff --git a/packages/llbuild/lib-llvm-Support-CmakeLists.txt.patch b/packages/llbuild/lib-llvm-Support-CmakeLists.txt.patch index 1c49c6e22..9771b7016 100644 --- a/packages/llbuild/lib-llvm-Support-CmakeLists.txt.patch +++ b/packages/llbuild/lib-llvm-Support-CmakeLists.txt.patch @@ -2,10 +2,10 @@ diff --git a/lib/llvm/Support/CMakeLists.txt b/lib/llvm/Support/CMakeLists.txt index 8e79e18..a844183 100644 --- a/lib/llvm/Support/CMakeLists.txt +++ b/lib/llvm/Support/CMakeLists.txt -@@ -45,3 +45,6 @@ endif() - execinfo) +@@ -65,5 +65,5 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") endif() -+if(${CMAKE_SYSTEM_NAME} MATCHES "Android") + if(${CMAKE_SYSTEM_NAME} MATCHES "Android|Darwin|Linux") +- target_link_libraries(llvmSupport PRIVATE curses) + target_link_libraries(llvmSupport PRIVATE android-spawn curses) -+endif() + endif() diff --git a/packages/swift/build.sh b/packages/swift/build.sh index d07f383f9..2e3b9e0ce 100644 --- a/packages/swift/build.sh +++ b/packages/swift/build.sh @@ -2,11 +2,10 @@ TERMUX_PKG_HOMEPAGE=https://swift.org/ TERMUX_PKG_DESCRIPTION="Swift is a high-performance system programming language" TERMUX_PKG_LICENSE="Apache-2.0, NCSA" TERMUX_PKG_MAINTAINER="@buttaface" -TERMUX_PKG_VERSION=5.3.3 -TERMUX_PKG_REVISION=2 +TERMUX_PKG_VERSION=5.4 SWIFT_RELEASE="RELEASE" TERMUX_PKG_SRCURL=https://github.com/apple/swift/archive/swift-$TERMUX_PKG_VERSION-$SWIFT_RELEASE.tar.gz -TERMUX_PKG_SHA256=f32b9dd541fbf3a412123138eb8aaf0fa793d866779c6c3cd5df6621788258c3 +TERMUX_PKG_SHA256=421dafdb0dd4c55cdfed4d8736e965b42a0d97f690bb13528947f9cc3f7ddca9 TERMUX_PKG_HOSTBUILD=true TERMUX_PKG_DEPENDS="binutils-gold, clang, libc++, ndk-sysroot, libandroid-glob, libandroid-spawn, libcurl, libicu, libicu-static, libsqlite, libuuid, libxml2, libdispatch, llbuild" TERMUX_PKG_BUILD_DEPENDS="cmake, ninja, perl, pkg-config, python2, rsync" @@ -32,32 +31,51 @@ termux_step_post_get_source() { mv .temp swift declare -A library_checksums - library_checksums[swift-cmark]=24316b173df877c02ea6f3a080b2bf69e8b644a301d3510e9c13fa1059b279e9 - library_checksums[llvm-project]=fe3fb21653263c3dd4b9e02794169445f5460751b155a4c7277a37145ce057f3 - library_checksums[swift-corelibs-libdispatch]=84a482afefdcda26c7dc83e3b75e662ed7705786a34a6b4958c0cdc6cace2c46 - library_checksums[swift-corelibs-foundation]=a11ef4cf6e26d9055bbf0d9c56fe018578b8e1ca1f1733f982b5bb95a01ee11a - library_checksums[swift-corelibs-xctest]=64812585a4acdf9eaf481039455102b87a33e6f762abef3891ecc9c4a222883c - library_checksums[swift-llbuild]=560a6f12292de156be23a22ea0932f95e300443ad1d422e03a7dacb689e74e78 - library_checksums[swift-package-manager]=ad79ddfff3c0bdafa28594206f02ac22956a0e98067fd3fc546c355b9e571c5a + library_checksums[swift-cmark]=ca30ea99bdad03b80939c74899ddcd7cc7e2a55d36fe357f98ff7f620442142e + library_checksums[llvm-project]=1b49d4e87f445f5dbf044e2e29690650618bea811acb82fa2b2eaab5a766a907 + library_checksums[swift-corelibs-libdispatch]=bafbcc1feaf8ac3a82edffde27b85820936cbfd0d194c9c1a320a13c356083c0 + library_checksums[swift-corelibs-foundation]=28f2033b6bdaf0d6d0984fb3f85fafad351b0511a5b99293b2b3ba561cb27f05 + library_checksums[swift-corelibs-xctest]=aaf8a15b9ff5fde88ba594364a39534f2302ed9c6c5c251c54c93f71f0860c26 + library_checksums[swift-llbuild]=91d3e454fff11b14bf89e6ab2b61bacb39395f92d5aab336923670aaa0a7e2fc + library_checksums[swift-argument-parser]=49acf58c698e2671976820b8baf7ccc74ebedf842007d5e1d7711c2f123b3db1 + library_checksums[Yams]=4b31dfa768206a76cb683a695e611572e62e4aa34cdaa248c5a74509cbccd730 + library_checksums[swift-driver]=b12cd6c4f8500a543af139cf2b75fb9c432a773aaba97d04a98d73caa1e659a0 + library_checksums[swift-tools-support-core]=cc89ac700acbf0fd3cbc722768229ba65f5e9a7e58201d13071ff2c416381508 + library_checksums[swift-package-manager]=53a9afee939ccc36bfcd019a57e3d5ffe36ffa027645f99fd3fae893d4bc69a7 for library in "${!library_checksums[@]}"; do \ + if [ "$library" = "swift-argument-parser" ]; then + GH_ORG="apple" + SRC_VERSION="0.3.0" + TAR_NAME=$SRC_VERSION + elif [ "$library" = "Yams" ]; then + GH_ORG="jpsim" + SRC_VERSION="3.0.1" + TAR_NAME=$SRC_VERSION + else + GH_ORG="apple" + SRC_VERSION=$SWIFT_RELEASE + TAR_NAME=swift-$TERMUX_PKG_VERSION-$SWIFT_RELEASE + fi + termux_download \ - https://github.com/apple/$library/archive/swift-$TERMUX_PKG_VERSION-$SWIFT_RELEASE.tar.gz \ - $TERMUX_PKG_CACHEDIR/$library-$TERMUX_PKG_VERSION.tar.gz \ + https://github.com/$GH_ORG/$library/archive/$TAR_NAME.tar.gz \ + $TERMUX_PKG_CACHEDIR/$library-$SRC_VERSION.tar.gz \ ${library_checksums[$library]} - tar xf $TERMUX_PKG_CACHEDIR/$library-$TERMUX_PKG_VERSION.tar.gz - mv $library-swift-${TERMUX_PKG_VERSION}-$SWIFT_RELEASE $library + tar xf $TERMUX_PKG_CACHEDIR/$library-$SRC_VERSION.tar.gz + mv $library-$TAR_NAME $library done mv swift-cmark cmark mv swift-llbuild llbuild + mv Yams yams mv swift-package-manager swiftpm if [ "$TERMUX_ON_DEVICE_BUILD" = "false" ]; then termux_download \ https://swift.org/builds/swift-$TERMUX_PKG_VERSION-release/ubuntu2004/swift-$TERMUX_PKG_VERSION-$SWIFT_RELEASE/$SWIFT_BIN.tar.gz \ $TERMUX_PKG_CACHEDIR/$SWIFT_BIN.tar.gz \ - e2624f2b56cd63011aa1a185ea3fa9aedf157efe86e6b21b3eacc569a948e75e + 751ea4f939612c705e09f6da9bc45aac8d918956429c97274c806a99ac3b03c4 fi fi # The Swift compiler searches for the clang headers so symlink against them. @@ -73,7 +91,7 @@ termux_step_host_build() { # Natively compile llvm-tblgen and some other files needed later. SWIFT_BUILD_ROOT=$TERMUX_PKG_BUILDDIR $TERMUX_PKG_SRCDIR/swift/utils/build-script \ -R --no-assertions -j $TERMUX_MAKE_PROCESSES $SWIFT_PATH_FLAGS \ - --skip-build-cmark --skip-build-llvm --skip-build-swift \ + --skip-build-cmark --skip-build-llvm --skip-build-swift --build-toolchain-only \ --host-cc=$TERMUX_STANDALONE_TOOLCHAIN/bin/clang \ --host-cxx=$TERMUX_STANDALONE_TOOLCHAIN/bin/clang++ @@ -96,8 +114,7 @@ termux_step_pre_configure() { sed "s%\@TERMUX_PREFIX\@%${TERMUX_PREFIX}%g" \ $TERMUX_PKG_BUILDER_DIR/swiftpm-Utilities-bootstrap | \ - sed "s%\@TERMUX_PKG_BUILDDIR\@%${TERMUX_PKG_BUILDDIR}%g" | \ - sed "s%\@SWIFT_ARCH\@%${SWIFT_ARCH}%g" | patch -p1 + sed "s%\@TERMUX_PKG_BUILDDIR\@%${TERMUX_PKG_BUILDDIR}%g" | patch -p1 if [ "$TERMUX_ON_DEVICE_BUILD" = "false" ]; then sed "s%\@TERMUX_STANDALONE_TOOLCHAIN\@%${TERMUX_STANDALONE_TOOLCHAIN}%g" \ @@ -112,16 +129,9 @@ termux_step_pre_configure() { termux_step_make() { if [ "$TERMUX_ON_DEVICE_BUILD" = "false" ]; then - export TERMUX_SWIFTPM_FLAGS="-target $CCTERMUX_HOST_PLATFORM \ - -sdk $TERMUX_STANDALONE_TOOLCHAIN/sysroot \ - -L$TERMUX_STANDALONE_TOOLCHAIN/lib/gcc/$TERMUX_HOST_PLATFORM/4.9.x \ - -tools-directory $TERMUX_STANDALONE_TOOLCHAIN/$TERMUX_HOST_PLATFORM/bin \ - -Xlinker -rpath -Xlinker $TERMUX_PREFIX/lib" - export TERMUX_SWIFT_FLAGS="$TERMUX_SWIFTPM_FLAGS -resource-dir \ - $TERMUX_PKG_BUILDDIR/swift-android-$SWIFT_ARCH/lib/swift" SWIFT_BUILD_FLAGS="$SWIFT_BUILD_FLAGS --android --android-ndk $TERMUX_STANDALONE_TOOLCHAIN --android-arch $SWIFT_ARCH - --android-api-level $TERMUX_PKG_API_LEVEL --android-icu-uc $TERMUX_PREFIX/lib/libicuuc.so + --android-icu-uc $TERMUX_PREFIX/lib/libicuuc.so --android-icu-uc-include $TERMUX_PREFIX/include/ --android-icu-i18n $TERMUX_PREFIX/lib/libicui18n.so --android-icu-i18n-include $TERMUX_PREFIX/include/ @@ -133,8 +143,9 @@ termux_step_make() { fi SWIFT_BUILD_ROOT=$TERMUX_PKG_BUILDDIR $TERMUX_PKG_SRCDIR/swift/utils/build-script \ - $SWIFT_BUILD_FLAGS --xctest -b -p --build-swift-static-stdlib --install-swift \ - --swift-install-components=$SWIFT_COMPONENTS --llvm-install-components=IndexStore \ + $SWIFT_BUILD_FLAGS --xctest -b -p --android-api-level $TERMUX_PKG_API_LEVEL \ + --build-swift-static-stdlib --swift-install-components=$SWIFT_COMPONENTS \ + --llvm-install-components=IndexStore --install-llvm --install-swift \ --install-libdispatch --install-foundation --install-xctest --install-llbuild \ --install-swiftpm } diff --git a/packages/swift/llbuild-Package.swift.patch b/packages/swift/llbuild-Package.swift.patch deleted file mode 100644 index 072566fad..000000000 --- a/packages/swift/llbuild-Package.swift.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff --git a/llbuild/Package.swift b/llbuild/Package.swift -index 6141342..5e86282 100644 ---- a/llbuild/Package.swift -+++ b/llbuild/Package.swift -@@ -1,4 +1,4 @@ --// swift-tools-version:5.0 -+// swift-tools-version:5.2 - - // This file defines Swift package manager support for llbuild. See: - // https://github.com/apple/swift-package-manager/tree/master/Documentation -@@ -150,7 +150,7 @@ let package = Package( - name: "llvmSupport", - dependencies: ["llvmDemangle"], - path: "lib/llvm/Support", -- linkerSettings: [.linkedLibrary("ncurses", .when(platforms: [.linux, .macOS]))] -+ linkerSettings: [.linkedLibrary("ncurses", .when(platforms: [.linux, .macOS, .android]))] - ), - ], - cxxLanguageStandard: .cxx14 diff --git a/packages/swift/swift-armv7.patch b/packages/swift/swift-armv7.patch deleted file mode 100644 index 5124270f0..000000000 --- a/packages/swift/swift-armv7.patch +++ /dev/null @@ -1,65 +0,0 @@ -commit f7576a7bef5ca33c5598ad6b63a37f6d4c69aa98 -Date: Fri, 2 Oct 2020 14:03:49 +0530 -Subject: [android] Add support for building the toolchain for ARMv7 - -diff --git a/swift/cmake/modules/AddSwift.cmake b/swift/cmake/modules/AddSwift.cmake -index ec61d2abb836..0b9ce10842ac 100644 ---- a/swift/cmake/modules/AddSwift.cmake -+++ b/swift/cmake/modules/AddSwift.cmake -@@ -291,6 +291,15 @@ function(_add_host_variant_c_compile_flags target) - endif() - endif() - -+ # The LLVM backend is built with these defines on most 32-bit platforms, -+ # llvm/llvm-project@66395c9, which can cause incompatibilities with the Swift -+ # frontend if not built the same way. -+ if("${CFLAGS_ARCH}" MATCHES "armv6|armv7|i686" AND -+ NOT (CFLAGS_SDK STREQUAL ANDROID AND SWIFT_ANDROID_API_LEVEL LESS 24)) -+ list(APPEND result -+ "-D_LARGEFILE_SOURCE" -+ "-D_FILE_OFFSET_BITS=64") -+ endif() - set("${CFLAGS_RESULT_VAR_NAME}" "${result}" PARENT_SCOPE) - endfunction() - -diff --git a/swift/lib/ClangImporter/ImportType.cpp b/swift/lib/ClangImporter/ImportType.cpp -index f58dbb837e5d..70bd70dff9ac 100644 ---- a/swift/lib/ClangImporter/ImportType.cpp -+++ b/swift/lib/ClangImporter/ImportType.cpp -@@ -556,7 +556,7 @@ namespace { - if (size > 4096) - return Type(); - -- SmallVector elts{size, elementType}; -+ SmallVector elts{static_cast(size), elementType}; - return TupleType::get(elts, elementType->getASTContext()); - } - -diff --git a/swift/stdlib/public/runtime/Float16Support.cpp b/swift/stdlib/public/runtime/Float16Support.cpp -index d7377400ba0b..9d8c4940054d 100644 ---- a/swift/stdlib/public/runtime/Float16Support.cpp -+++ b/swift/stdlib/public/runtime/Float16Support.cpp -@@ -29,7 +29,7 @@ - - // Android NDK $OUTPUTFILE <:pathcch> + CoreFoundation + uuid ++ android-spawn + PUBLIC + swiftDispatch) ++target_link_directories(Foundation PUBLIC ${CMAKE_FIND_ROOT_PATH}/usr/lib) + set_target_properties(Foundation PROPERTIES + INSTALL_RPATH "$ORIGIN" + BUILD_RPATH "$" diff --git a/packages/swift/swift-corelibs-libdispatch-arm.patch b/packages/swift/swift-corelibs-libdispatch-arm.patch new file mode 100644 index 000000000..65b9b67fc --- /dev/null +++ b/packages/swift/swift-corelibs-libdispatch-arm.patch @@ -0,0 +1,43 @@ +From 0f8ab3e42a4a052dec0e4b66c252fd83e8e5ba7c Mon Sep 17 00:00:00 2001 +Date: Wed, 2 Dec 2020 18:33:48 +0530 +Subject: [PATCH] [android] Put in fixes for librt and armv7-a + +Android doesn't have a separate librt, it's just part of libc. Also, the static +build wasn't working for armv7-a, because the test executables wouldn't link +with the multiple definition errors listed in android/ndk#176, so use the +workaround given there. + +diff --git a/swift-corelibs-libdispatch/CMakeLists.txt b/swift-corelibs-libdispatch/CMakeLists.txt +index 75c419c13..36da01122 100644 +--- a/swift-corelibs-libdispatch/CMakeLists.txt ++++ b/swift-corelibs-libdispatch/CMakeLists.txt +@@ -113,7 +113,9 @@ if(__BUILTIN_TRAP) + set(HAVE_NORETURN_BUILTIN_TRAP 1) + endif() + +-find_package(LibRT) ++if(NOT CMAKE_SYSTEM_NAME STREQUAL Android) ++ find_package(LibRT) ++endif() + + check_function_exists(_pthread_workqueue_init HAVE__PTHREAD_WORKQUEUE_INIT) + check_function_exists(getprogname HAVE_GETPROGNAME) +diff --git a/swift-corelibs-libdispatch/tests/CMakeLists.txt b/swift-corelibs-libdispatch/tests/CMakeLists.txt +index a27603559..0176a062b 100644 +--- a/swift-corelibs-libdispatch/tests/CMakeLists.txt ++++ b/swift-corelibs-libdispatch/tests/CMakeLists.txt +@@ -88,6 +88,14 @@ function(add_unit_test name) + target_compile_options(${name} PRIVATE -fblocks) + target_compile_options(${name} PRIVATE -Wall -Wno-deprecated-declarations) + endif() ++ # Without this flag, cross-compiling static test executables for Android armv7 ++ # fails with the multiple definition errors seen in android/ndk#176, so I ++ # pulled in this workaround noted there. The tests build and run with this ++ # flag applied. ++ if(NOT BUILD_SHARED_LIBS AND CMAKE_SYSTEM_NAME STREQUAL Android AND ++ CMAKE_SYSTEM_PROCESSOR STREQUAL armv7-a) ++ target_link_options(${name} PRIVATE "LINKER:--allow-multiple-definition") ++ endif() + target_link_libraries(${name} + PRIVATE + dispatch diff --git a/packages/swift/swift-corelibs-xctest-CMakeLists.txt.patch b/packages/swift/swift-corelibs-xctest-CMakeLists.txt.patch index 9f1e37576..14c87524d 100644 --- a/packages/swift/swift-corelibs-xctest-CMakeLists.txt.patch +++ b/packages/swift/swift-corelibs-xctest-CMakeLists.txt.patch @@ -1,10 +1,3 @@ -commit 25ee7e8f610bf71816717f45946ee8e543889e89 -Date: Wed May 6 12:06:09 2020 +0530 - - [CMake] fix runpath for ELF platforms - - Remove the absolute path to the host toolchain's stdlib from libXCTest.so and add $ORIGIN. - diff --git a/swift-corelibs-xctest/CMakeLists.txt b/swift-corelibs-xctest/CMakeLists.txt index 531e7c0..589930f 100644 --- a/swift-corelibs-xctest/CMakeLists.txt diff --git a/packages/swift/swift-fix-arm-stdlib.patch b/packages/swift/swift-fix-arm-stdlib.patch new file mode 100644 index 000000000..1351243cf --- /dev/null +++ b/packages/swift/swift-fix-arm-stdlib.patch @@ -0,0 +1,48 @@ +diff --git a/swift/stdlib/cmake/modules/SwiftSource.cmake b/swift/stdlib/cmake/modules/SwiftSource.cmake +index 21e90e30d7b..1d9706d1332 100644 +--- a/swift/stdlib/cmake/modules/SwiftSource.cmake ++++ b/swift/stdlib/cmake/modules/SwiftSource.cmake +@@ -232,7 +232,12 @@ function(_add_target_variant_swift_compile_flags + endif() + + swift_optimize_flag_for_build_type("${build_type}" optimize_flag) +- list(APPEND result "${optimize_flag}") ++ #Workaround for Swift armv7 optimization bug ++ if("${arch}" MATCHES "arm") ++ list(APPEND result "-Onone") ++ else() ++ list(APPEND result "${optimize_flag}") ++ endif() + + is_build_type_with_debuginfo("${build_type}" debuginfo) + if(debuginfo) +diff --git a/swift/stdlib/public/runtime/Metadata.cpp b/swift/stdlib/public/runtime/Metadata.cpp +index 2e466715ffd..c870edc4507 100644 +--- a/swift/stdlib/public/runtime/Metadata.cpp ++++ b/swift/stdlib/public/runtime/Metadata.cpp +@@ -754,6 +754,7 @@ MetadataResponse swift::swift_getCanonicalSpecializedMetadata( + MetadataState::Complete}; + } + ++#if !defined(__arm__) + if (auto *token = + description + ->getCanonicalMetadataPrespecializationCachingOnceToken()) { +@@ -761,6 +762,7 @@ MetadataResponse swift::swift_getCanonicalSpecializedMetadata( + // NOTE: If there is no token, then there are no canonical prespecialized + // metadata records, either. + } ++#endif + const void *const *arguments = + reinterpret_cast(candidate->getGenericArgs()); + auto &cache = getCache(*description); +@@ -802,7 +804,9 @@ MetadataResponse swift::swift_getCanonicalPrespecializedGenericMetadata( + const TypeContextDescriptor *description, swift_once_t *token) { + description = swift_auth_data_non_address( + description, SpecialPointerAuthDiscriminators::TypeDescriptor); ++#if !defined(__arm__) + cacheCanonicalSpecializedMetadata(description, token); ++#endif + + return _swift_getGenericMetadata(request, arguments, description); + } diff --git a/packages/swift/swift-host.patch b/packages/swift/swift-host.patch new file mode 100644 index 000000000..cbaf21407 --- /dev/null +++ b/packages/swift/swift-host.patch @@ -0,0 +1,117 @@ +commit 47d94da23587b7343b1fcddf44c2db24f2ed5331 +Date: Fri Dec 4 21:08:59 2020 +0530 + + [android] Support building the host tools and with the static stdlib + +diff --git a/swift/stdlib/public/runtime/CMakeLists.txt b/swift/stdlib/public/runtime/CMakeLists.txt +index fd8e29ae1a85..b1bc4ea4a92a 100644 +--- a/swift/stdlib/public/runtime/CMakeLists.txt ++++ b/swift/stdlib/public/runtime/CMakeLists.txt +@@ -116,7 +116,7 @@ add_swift_target_library(swiftRuntime OBJECT_LIBRARY + + set(ELFISH_SDKS) + set(COFF_SDKS) +-foreach(sdk ${SWIFT_CONFIGURED_SDKS}) ++foreach(sdk ${SWIFT_SDKS}) + if("${SWIFT_SDK_${sdk}_OBJECT_FORMAT}" STREQUAL "ELF") + list(APPEND ELFISH_SDKS ${sdk}) + elseif("${SWIFT_SDK_${sdk}_OBJECT_FORMAT}" STREQUAL "COFF") +@@ -144,7 +144,7 @@ add_swift_target_library(swiftImageRegistrationObjectCOFF + SWIFT_COMPILE_FLAGS ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS} + INSTALL_IN_COMPONENT none) + +-foreach(sdk ${SWIFT_CONFIGURED_SDKS}) ++foreach(sdk ${SWIFT_SDKS}) + foreach(arch ${SWIFT_SDK_${sdk}_ARCHITECTURES}) + set(arch_subdir "${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}") + set(arch_suffix "${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}") +@@ -224,11 +224,18 @@ foreach(sdk ${SWIFT_CONFIGURED_SDKS}) + set(libicu_data_a ${ICU_UC_LIBDIR}/libicudata.a) + endif() + endif() ++ set(libpthread -lpthread) ++ set(android_libraries) ++ if(${sdk} STREQUAL ANDROID) ++ set(android_libraries -llog) ++ set(libpthread) ++ endif() + + set(linkfile ${lowercase_sdk}/static-stdlib-args.lnk) + file(WRITE "${SWIFTSTATICLIB_DIR}/${linkfile}" " + -ldl +--lpthread ++${libpthread} ++${android_libraries} + -lswiftCore + ${libicu_i18n_a} + ${libicu_uc_a} +diff --git a/swift/utils/build-script-impl b/swift/utils/build-script-impl +index 268d23de155a..d33ab94d1bd8 100755 +--- a/swift/utils/build-script-impl ++++ b/swift/utils/build-script-impl +@@ -452,17 +452,35 @@ function set_build_options_for_host() { + SWIFT_HOST_VARIANT_ARCH=$architecture + + case ${host} in +- android-aarch64) +- SWIFT_HOST_TRIPLE="aarch64-unknown-linux-android${ANDROID_API_LEVEL}" +- llvm_target_arch="AArch64" +- ;; +- android-armv7) +- SWIFT_HOST_TRIPLE="armv7-unknown-linux-androideabi${ANDROID_API_LEVEL}" +- llvm_target_arch="ARM" +- ;; +- android-x86_64) +- SWIFT_HOST_TRIPLE="x86_64-unknown-linux-android${ANDROID_API_LEVEL}" +- llvm_target_arch="X86" ++ android-*) ++ # Clang uses a different sysroot natively on Android in the Termux ++ # app, which the Termux build scripts pass in through a $PREFIX ++ # variable. ++ if [[ "${PREFIX}" ]] ; then ++ llvm_cmake_options+=( ++ -DDEFAULT_SYSROOT:STRING="$(dirname ${PREFIX})" ++ ) ++ fi ++ # Android doesn't support building all of compiler-rt yet. ++ if [[ ! $(is_cross_tools_host "${host}") ]] ; then ++ llvm_cmake_options+=( ++ -DCOMPILER_RT_INCLUDE_TESTS:BOOL=FALSE ++ ) ++ fi ++ case ${host} in ++ android-aarch64) ++ SWIFT_HOST_TRIPLE="aarch64-unknown-linux-android${ANDROID_API_LEVEL}" ++ llvm_target_arch="AArch64" ++ ;; ++ android-armv7) ++ SWIFT_HOST_TRIPLE="armv7-unknown-linux-androideabi${ANDROID_API_LEVEL}" ++ llvm_target_arch="ARM" ++ ;; ++ android-x86_64) ++ SWIFT_HOST_TRIPLE="x86_64-unknown-linux-android${ANDROID_API_LEVEL}" ++ llvm_target_arch="X86" ++ ;; ++ esac + ;; + linux-armv6) + SWIFT_HOST_TRIPLE="armv6-unknown-linux-gnueabihf" +@@ -1756,7 +1774,8 @@ for host in "${ALL_HOSTS[@]}"; do + ) + fi + +- if [[ ! "${SKIP_BUILD_ANDROID}" ]]; then ++ if [[ ! "${SKIP_BUILD_ANDROID}" ]] || ++ [[ $(is_cross_tools_host ${host}) && "${host}" == "android-"* ]]; then + cmake_options=( + "${cmake_options[@]}" + -DSWIFT_ANDROID_NDK_PATH:STRING="${ANDROID_NDK}" +@@ -2447,6 +2466,8 @@ for host in "${ALL_HOSTS[@]}"; do + elif [[ "$(uname -s)" == "Haiku" ]] ; then + HOST_CXX_HEADERS_DIR="/boot/system/develop/headers/c++" + elif [[ "${ANDROID_DATA}" ]] ; then ++ # This means we're building natively on Android in the Termux ++ # app, which supplies the $PREFIX variable. + HOST_CXX_HEADERS_DIR="$PREFIX/include/c++" + else # Linux + HOST_CXX_HEADERS_DIR="/usr/include/c++" diff --git a/packages/swift/swift-native-tools.patch b/packages/swift/swift-native-tools.patch index 75664a1ce..caf7e3076 100644 --- a/packages/swift/swift-native-tools.patch +++ b/packages/swift/swift-native-tools.patch @@ -1,16 +1,50 @@ -commit 9ed67668564257c27e49ff7a07fac0b23f27ba85 -Date: Mon, 26 Oct 2020 23:13:22 +0530 -Subject: [build-script] Move --native-{clang,llvm,swift}-tools-path - flags into the Python build-script - -Also, fix two places where the LLVM path was wrongly employed to set up clang, -and use the Swift path in install_toolchain_path(). - +diff --git a/swift/CMakeLists.txt b/swift/CMakeLists.txt +index 8be6f4a7abd7..77e81153a232 100644 +--- a/swift/CMakeLists.txt ++++ b/swift/CMakeLists.txt +@@ -481,10 +481,12 @@ if(SWIFT_PATH_TO_CMARK_BUILD) + endif() + message(STATUS "") + +-if("${SWIFT_NATIVE_LLVM_TOOLS_PATH}" STREQUAL "") +- set(SWIFT_CROSS_COMPILING FALSE) ++# Check if a prebuilt clang path was passed in, as this variable will be ++# assigned if not, in SwiftSharedCMakeConfig. ++if("${SWIFT_NATIVE_CLANG_TOOLS_PATH}" STREQUAL "") ++ set(SWIFT_PREBUILT_CLANG FALSE) + else() +- set(SWIFT_CROSS_COMPILING TRUE) ++ set(SWIFT_PREBUILT_CLANG TRUE) + endif() + + include(SwiftSharedCMakeConfig) +diff --git a/swift/cmake/modules/SwiftSharedCMakeConfig.cmake b/swift/cmake/modules/SwiftSharedCMakeConfig.cmake +index c4c15084fe90..9ee086565891 100644 +--- a/swift/cmake/modules/SwiftSharedCMakeConfig.cmake ++++ b/swift/cmake/modules/SwiftSharedCMakeConfig.cmake +@@ -58,7 +58,7 @@ macro(swift_common_standalone_build_config_llvm product) + fix_imported_targets_for_xcode("${LLVM_EXPORTED_TARGETS}") + endif() + +- if(NOT CMAKE_CROSSCOMPILING AND NOT SWIFT_CROSS_COMPILING) ++ if(NOT CMAKE_CROSSCOMPILING) + set(${product}_NATIVE_LLVM_TOOLS_PATH "${LLVM_TOOLS_BINARY_DIR}") + endif() + +@@ -159,7 +159,7 @@ endmacro() + macro(swift_common_standalone_build_config_clang product) + find_package(Clang CONFIG REQUIRED NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) + +- if (NOT CMAKE_CROSSCOMPILING) ++ if (NOT CMAKE_CROSSCOMPILING AND NOT SWIFT_PREBUILT_CLANG) + set(${product}_NATIVE_CLANG_TOOLS_PATH "${LLVM_TOOLS_BINARY_DIR}") + endif() + diff --git a/swift/stdlib/CMakeLists.txt b/swift/stdlib/CMakeLists.txt -index 81cad0966a1d..a0e3b138809f 100644 +index edf7c19f4b7a..91d9f4c28a51 100644 --- a/swift/stdlib/CMakeLists.txt +++ b/swift/stdlib/CMakeLists.txt -@@ -102,11 +102,11 @@ else() +@@ -112,11 +112,11 @@ else() # If we use Clang-cl or MSVC, CMake provides default compiler and linker flags that are incompatible # with the frontend of Clang or Clang++. if(SWIFT_COMPILER_IS_MSVC_LIKE) @@ -26,11 +60,76 @@ index 81cad0966a1d..a0e3b138809f 100644 endif() if(CMAKE_C_COMPILER_LAUNCHER MATCHES ".*distcc") +diff --git a/swift/stdlib/cmake/modules/AddSwiftStdlib.cmake b/swift/stdlib/cmake/modules/AddSwiftStdlib.cmake +index 2a6e1d1df071..d5df9c57dd33 100644 +--- a/swift/stdlib/cmake/modules/AddSwiftStdlib.cmake ++++ b/swift/stdlib/cmake/modules/AddSwiftStdlib.cmake +@@ -1669,7 +1669,8 @@ function(add_swift_target_library name) + list(APPEND SWIFTLIB_SWIFT_COMPILE_FLAGS "-warn-implicit-overrides") + endif() + +- if(NOT SWIFT_BUILD_RUNTIME_WITH_HOST_COMPILER AND NOT BUILD_STANDALONE) ++ if(NOT SWIFT_BUILD_RUNTIME_WITH_HOST_COMPILER AND NOT BUILD_STANDALONE AND ++ NOT SWIFT_PREBUILT_CLANG) + list(APPEND SWIFTLIB_DEPENDS clang) + endif() + +diff --git a/swift/stdlib/public/SwiftShims/CMakeLists.txt b/swift/stdlib/public/SwiftShims/CMakeLists.txt +index 926020372fb2..5ee8a9c92069 100644 +--- a/swift/stdlib/public/SwiftShims/CMakeLists.txt ++++ b/swift/stdlib/public/SwiftShims/CMakeLists.txt +@@ -111,7 +111,8 @@ endif() + # First extract the "version" used for Clang's resource directory. + string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION + "${LLVM_PACKAGE_VERSION}") +-if(NOT SWIFT_INCLUDE_TOOLS AND SWIFT_BUILD_RUNTIME_WITH_HOST_COMPILER) ++if(NOT SWIFT_INCLUDE_TOOLS AND ++ (SWIFT_BUILD_RUNTIME_WITH_HOST_COMPILER OR SWIFT_PREBUILT_CLANG)) + if(SWIFT_COMPILER_IS_MSVC_LIKE) + execute_process(COMMAND ${CMAKE_C_COMPILER} /clang:-print-resource-dir + OUTPUT_VARIABLE clang_headers_location +diff --git a/swift/unittests/runtime/CMakeLists.txt b/swift/unittests/runtime/CMakeLists.txt +index 60f9944e1e64..2ca86bf2b407 100644 +--- a/swift/unittests/runtime/CMakeLists.txt ++++ b/swift/unittests/runtime/CMakeLists.txt +@@ -13,11 +13,11 @@ if(("${SWIFT_HOST_VARIANT_SDK}" STREQUAL "${SWIFT_PRIMARY_VARIANT_SDK}") AND + # If we use Clang-cl or MSVC, CMake provides default compiler and linker flags that are incompatible + # with the frontend of Clang or Clang++. + if(SWIFT_COMPILER_IS_MSVC_LIKE) +- set(CMAKE_CXX_COMPILER "${SWIFT_NATIVE_LLVM_TOOLS_PATH}/clang-cl") +- set(CMAKE_C_COMPILER "${SWIFT_NATIVE_LLVM_TOOLS_PATH}/clang-cl") ++ set(CMAKE_CXX_COMPILER "${SWIFT_NATIVE_CLANG_TOOLS_PATH}/clang-cl") ++ set(CMAKE_C_COMPILER "${SWIFT_NATIVE_CLANG_TOOLS_PATH}/clang-cl") + else() +- set(CMAKE_CXX_COMPILER "${SWIFT_NATIVE_LLVM_TOOLS_PATH}/clang++") +- set(CMAKE_C_COMPILER "${SWIFT_NATIVE_LLVM_TOOLS_PATH}/clang") ++ set(CMAKE_CXX_COMPILER "${SWIFT_NATIVE_CLANG_TOOLS_PATH}/clang++") ++ set(CMAKE_C_COMPILER "${SWIFT_NATIVE_CLANG_TOOLS_PATH}/clang") + endif() + + if(CMAKE_C_COMPILER_LAUNCHER MATCHES ".*distcc") +diff --git a/swift/utils/build-presets.ini b/swift/utils/build-presets.ini +index 5330b5acba18..dcba1e6d7b74 100644 +--- a/swift/utils/build-presets.ini ++++ b/swift/utils/build-presets.ini +@@ -2283,10 +2283,9 @@ skip-build-cmark + skip-build-benchmarks + skip-test-cmark + +-# This triggers the stdlib standalone build: Don't build tools (the compiler), +-# assume we are working with the host compiler. ++# This triggers the stdlib standalone build: don't build the native tools from ++# scratch, ie the compiler. + build-swift-tools=0 +-build-runtime-with-host-compiler=1 + + # Then set the paths to our native tools. If compiling against a toolchain, + # these should all be the ./usr/bin directory. diff --git a/swift/utils/build-script b/swift/utils/build-script -index 639f790fe354..9ccb8ef6e2dc 100755 +index ab9809b1351c..f544478b2a57 100755 --- a/swift/utils/build-script +++ b/swift/utils/build-script -@@ -704,6 +704,18 @@ class BuildScriptInvocation(object): +@@ -707,6 +707,18 @@ class BuildScriptInvocation(object): impl_args += [ "--host-libtool", toolchain.libtool, ] @@ -49,8 +148,26 @@ index 639f790fe354..9ccb8ef6e2dc 100755 # If we have extra_swift_args, combine all of them together and then # add them as one command. +diff --git a/swift/utils/build-script-impl b/swift/utils/build-script-impl +index 268d23de155a..7ac53c1e5a91 100755 +--- a/swift/utils/build-script-impl ++++ b/swift/utils/build-script-impl +@@ -1485,13 +1485,6 @@ for host in "${ALL_HOSTS[@]}"; do + fi + fi + +- if [[ "${NATIVE_CLANG_TOOLS_PATH}" ]] ; then +- common_cmake_options_host+=( +- -DCMAKE_C_COMPILER="${NATIVE_CLANG_TOOLS_PATH}/clang" +- -DCMAKE_CXX_COMPILER="${NATIVE_CLANG_TOOLS_PATH}/clang++" +- ) +- fi +- + llvm_cmake_options=( + "${llvm_cmake_options[@]}" + -DCMAKE_INSTALL_PREFIX:PATH="$(get_host_install_prefix ${host})" diff --git a/swift/utils/build_swift/build_swift/driver_arguments.py b/swift/utils/build_swift/build_swift/driver_arguments.py -index cb1c5c0b0e38..73fbd7c95e18 100644 +index 28a3ec0e6ab2..aab24712b801 100644 --- a/swift/utils/build_swift/build_swift/driver_arguments.py +++ b/swift/utils/build_swift/build_swift/driver_arguments.py @@ -374,6 +374,15 @@ def create_argument_parser(): @@ -69,13 +186,40 @@ index cb1c5c0b0e38..73fbd7c95e18 100644 option('--cmake-c-launcher', store_path(executable=True), default=os.environ.get('C_COMPILER_LAUNCHER', None), help='the absolute path to set CMAKE_C_COMPILER_LAUNCHER') +diff --git a/swift/utils/build_swift/tests/expected_options.py b/swift/utils/build_swift/tests/expected_options.py +index 8f13cca65b9c..9ecfc4714312 100644 +--- a/swift/utils/build_swift/tests/expected_options.py ++++ b/swift/utils/build_swift/tests/expected_options.py +@@ -189,6 +189,9 @@ + 'lto_type': None, + 'maccatalyst': False, + 'maccatalyst_ios_tests': False, ++ 'native_clang_tools_path': None, ++ 'native_llvm_tools_path': None, ++ 'native_swift_tools_path': None, + 'dump_config': False, + 'show_sdks': False, + 'skip_build': False, +@@ -653,6 +656,9 @@ class BuildScriptImplOption(_BaseOption): + PathOption('--install-symroot'), + PathOption('--install-destdir'), + EnableOption('--install-all'), ++ PathOption('--native-clang-tools-path'), ++ PathOption('--native-llvm-tools-path'), ++ PathOption('--native-swift-tools-path'), + PathOption('--symbols-package'), + PathOption('--cmake-c-launcher'), + PathOption('--cmake-cxx-launcher'), diff --git a/swift/utils/swift_build_support/swift_build_support/products/product.py b/swift/utils/swift_build_support/swift_build_support/products/product.py -index ba6f673bb6c9..001e2bf03083 100644 +index ba6f673bb6c9..075b934d10ac 100644 --- a/swift/utils/swift_build_support/swift_build_support/products/product.py +++ b/swift/utils/swift_build_support/swift_build_support/products/product.py -@@ -169,6 +169,9 @@ def install_toolchain_path(self, host_target): +@@ -167,8 +167,11 @@ def install_toolchain_path(self, host_target): + """toolchain_path() -> string + Returns the path to the toolchain that is being created as part of this - build. +- build. ++ build, or to a native prebuilt toolchain that was passed in. """ + if self.args.native_swift_tools_path is not None: + return os.path.split(self.args.native_swift_tools_path)[0] diff --git a/packages/swift/swift-ndk.patch b/packages/swift/swift-ndk.patch deleted file mode 100644 index 63844fed8..000000000 --- a/packages/swift/swift-ndk.patch +++ /dev/null @@ -1,378 +0,0 @@ -commit d42869c1e6fbb5caf87428662825840b2e70a19d -Date: Thu, 29 Oct 2020 20:54:59 +0530 -Subject: [android] Move to the NDK's unified sysroot - -Since the NDK is removing the platforms/ and sysroot/ directories in the next -release, switch to the unified sysroot in toolchains/llvm/ and take advantage -of a bunch of simplification that's now possible. - -diff --git a/swift/cmake/modules/AddSwift.cmake b/swift/cmake/modules/AddSwift.cmake -index 0e019d8d30..00e0b794e7 100644 ---- a/swift/cmake/modules/AddSwift.cmake -+++ b/swift/cmake/modules/AddSwift.cmake -@@ -123,6 +123,10 @@ function(_add_variant_c_compile_link_flags) - endif() - endif() - -+ if("${CFLAGS_SDK}" STREQUAL "ANDROID") -+ set(DEPLOYMENT_VERSION ${SWIFT_ANDROID_API_LEVEL}) -+ endif() -+ - # MSVC, clang-cl, gcc don't understand -target. - if(CMAKE_C_COMPILER_ID MATCHES "^Clang|AppleClang$" AND - NOT SWIFT_COMPILER_IS_MSVC_LIKE) -@@ -343,16 +343,6 @@ function(_add_host_variant_c_compile_flags) - list(APPEND result -funwind-tables) - endif() - -- if("${CFLAGS_SDK}" STREQUAL "ANDROID") -- list(APPEND result -nostdinc++) -- swift_android_libcxx_include_paths(CFLAGS_CXX_INCLUDES) -- swift_android_include_for_arch("${CFLAGS_ARCH}" "${CFLAGS_ARCH}_INCLUDE") -- foreach(path IN LISTS CFLAGS_CXX_INCLUDES ${CFLAGS_ARCH}_INCLUDE) -- list(APPEND result "SHELL:${CMAKE_INCLUDE_SYSTEM_FLAG_C}${path}") -- endforeach() -- list(APPEND result "-D__ANDROID_API__=${SWIFT_ANDROID_API_LEVEL}") -- endif() -- - if("${CFLAGS_SDK}" STREQUAL "LINUX") - if(${CFLAGS_ARCH} STREQUAL x86_64) - # this is the minimum architecture that supports 16 byte CAS, which is necessary to avoid a dependency to libatomic -@@ -441,11 +431,6 @@ function(_add_host_variant_link_flags) - list(APPEND link_libraries - ${SWIFT_ANDROID_${LFLAGS_ARCH}_ICU_I18N} - ${SWIFT_ANDROID_${LFLAGS_ARCH}_ICU_UC}) -- -- swift_android_lib_for_arch(${LFLAGS_ARCH} ${LFLAGS_ARCH}_LIB) -- foreach(path IN LISTS ${LFLAGS_ARCH}_LIB) -- list(APPEND library_search_directories ${path}) -- endforeach() - else() - # If lto is enabled, we need to add the object path flag so that the LTO code - # generator leaves the intermediate object file in a place where it will not -diff --git a/swift/cmake/modules/AddSwiftUnittests.cmake b/swift/cmake/modules/AddSwiftUnittests.cmake -index e088997741..daaba3e026 100644 ---- a/swift/cmake/modules/AddSwiftUnittests.cmake -+++ b/swift/cmake/modules/AddSwiftUnittests.cmake -@@ -43,9 +43,6 @@ function(add_swift_unittest test_dirname) - set_target_properties(${test_dirname} PROPERTIES - BUILD_RPATH ${SWIFT_LIBRARY_OUTPUT_INTDIR}/swift/macosx) - elseif("${SWIFT_HOST_VARIANT}" STREQUAL "android") -- swift_android_lib_for_arch(${SWIFT_HOST_VARIANT_ARCH} android_system_libs) -- set_property(TARGET "${test_dirname}" APPEND PROPERTY LINK_DIRECTORIES -- "${android_system_libs}") - set_property(TARGET "${test_dirname}" APPEND PROPERTY LINK_LIBRARIES "log") - elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") - if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64") -diff --git a/swift/cmake/modules/SwiftAndroidSupport.cmake b/swift/cmake/modules/SwiftAndroidSupport.cmake -index 9379031947..a8b0a48c7e 100644 ---- a/swift/cmake/modules/SwiftAndroidSupport.cmake -+++ b/swift/cmake/modules/SwiftAndroidSupport.cmake -@@ -1,72 +1,42 @@ --function(swift_android_libcxx_include_paths var) -- if(NOT "${SWIFT_ANDROID_NDK_PATH}" STREQUAL "") -- set(${var} -- "${SWIFT_ANDROID_NDK_PATH}/sources/cxx-stl/llvm-libc++/include" -- "${SWIFT_ANDROID_NDK_PATH}/sources/cxx-stl/llvm-libc++abi/include" -- PARENT_SCOPE) -- elseif(NOT "${SWIFT_ANDROID_NATIVE_SYSROOT}" STREQUAL "") -- set(${var} -- "${SWIFT_ANDROID_NATIVE_SYSROOT}/usr/include/c++/v1" -- PARENT_SCOPE) -+function(swift_android_prebuilt_host_name prebuilt_var_name) -+ # Get the prebuilt suffix to create the correct toolchain path when using the NDK -+ if(CMAKE_HOST_SYSTEM_NAME STREQUAL Darwin) -+ set(${prebuilt_var_name} darwin-x86_64 PARENT_SCOPE) -+ elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL Linux) -+ set(${prebuilt_var_name} linux-x86_64 PARENT_SCOPE) -+ elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL Windows) -+ set(${prebuilt_var_name} Windows-x86_64 PARENT_SCOPE) - else() -- message(SEND_ERROR "Couldn't set libc++ include paths for Android") -+ message(SEND_ERROR "cannot cross-compile to android from ${CMAKE_HOST_SYSTEM_NAME}") - endif() - endfunction() - --function(swift_android_include_for_arch arch var) -- set(paths) -+function(swift_android_sysroot sysroot_var_name) - if(NOT "${SWIFT_ANDROID_NDK_PATH}" STREQUAL "") -- list(APPEND paths -- "${SWIFT_ANDROID_NDK_PATH}/sources/android/support/include" -- "${SWIFT_ANDROID_NDK_PATH}/sysroot/usr/include" -- "${SWIFT_ANDROID_NDK_PATH}/sysroot/usr/include/${SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_TRIPLE}") -+ swift_android_prebuilt_host_name(prebuilt_build) -+ set(${sysroot_var_name} "${SWIFT_ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/${prebuilt_build}/sysroot" PARENT_SCOPE) - elseif(NOT "${SWIFT_ANDROID_NATIVE_SYSROOT}" STREQUAL "") -- list(APPEND paths -- "${SWIFT_ANDROID_NATIVE_SYSROOT}/usr/include" -- "${SWIFT_ANDROID_NATIVE_SYSROOT}/usr/include/${SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_TRIPLE}") -+ set(${sysroot_var_name} "${SWIFT_ANDROID_NATIVE_SYSROOT}" PARENT_SCOPE) - else() -- message(SEND_ERROR "Couldn't set ${arch} include paths for Android") -+ message(SEND_ERROR "Couldn't find Android sysroot") - endif() -- set(${var} ${paths} PARENT_SCOPE) - endfunction() - --function(swift_android_lib_for_arch arch var) -- set(_prebuilt "${SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_PREBUILT_PATH}") -- set(_host "${SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_TRIPLE}") -- -- set(paths) -+function(swift_android_tools_path arch path_var_name) - if(NOT "${SWIFT_ANDROID_NDK_PATH}" STREQUAL "") -- if(arch STREQUAL armv7) -- list(APPEND paths "${_prebuilt}/${_host}/lib/armv7-a") -- elseif(arch STREQUAL aarch64) -- list(APPEND paths "${_prebuilt}/${_host}/lib64") -- elseif(arch STREQUAL i686) -- list(APPEND paths "${_prebuilt}/${_host}/lib") -- elseif(arch STREQUAL x86_64) -- list(APPEND paths "${_prebuilt}/${_host}/lib64") -+ swift_android_prebuilt_host_name(prebuilt_build) -+ if("${arch}" STREQUAL "i686") -+ set(ndk_prebuilt_path -+ "${SWIFT_ANDROID_NDK_PATH}/toolchains/x86-${SWIFT_ANDROID_NDK_GCC_VERSION}/prebuilt/${prebuilt_build}") -+ elseif("${arch}" STREQUAL "x86_64") -+ set(ndk_prebuilt_path -+ "${SWIFT_ANDROID_NDK_PATH}/toolchains/x86_64-${SWIFT_ANDROID_NDK_GCC_VERSION}/prebuilt/${prebuilt_build}") - else() -- message(SEND_ERROR "unknown architecture (${arch}) for android") -+ set(ndk_prebuilt_path -+ "${SWIFT_ANDROID_NDK_PATH}/toolchains/${SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_TRIPLE}-${SWIFT_ANDROID_NDK_GCC_VERSION}/prebuilt/${prebuilt_build}") - endif() -- list(APPEND paths "${_prebuilt}/lib/gcc/${_host}/${SWIFT_ANDROID_NDK_GCC_VERSION}.x") -- elseif(NOT "${SWIFT_ANDROID_NATIVE_SYSROOT}" STREQUAL "") -- list(APPEND paths "${SWIFT_ANDROID_NATIVE_SYSROOT}/usr/lib") -- if("${arch}" MATCHES armv7) -- list(APPEND paths "/system/lib") -- elseif("${arch}" MATCHES aarch64) -- list(APPEND paths "/system/lib64") -- else() -- message(SEND_ERROR "unknown architecture (${arch}) when compiling for Android host") -- endif() -- else() -- message(SEND_ERROR "Couldn't set ${arch} library paths for Android") -- endif() -- -- set(${var} ${paths} PARENT_SCOPE) --endfunction() - --function(swift_android_tools_path arch path_var_name) -- if(NOT "${SWIFT_ANDROID_NDK_PATH}" STREQUAL "") -- set(${path_var_name} "${SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_PREBUILT_PATH}/${SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_TRIPLE}/bin" PARENT_SCOPE) -+ set(${path_var_name} "${ndk_prebuilt_path}/${SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_TRIPLE}/bin" PARENT_SCOPE) - elseif(NOT "${SWIFT_ANDROID_NATIVE_SYSROOT}" STREQUAL "") - set(${path_var_name} "${SWIFT_ANDROID_NATIVE_SYSROOT}/usr/bin" PARENT_SCOPE) - else() -@@ -77,19 +49,7 @@ endfunction () - function(swift_android_cxx_libraries_for_arch arch libraries_var_name) - set(link_libraries) - if(NOT "${SWIFT_ANDROID_NDK_PATH}" STREQUAL "") -- if("${arch}" MATCHES armv7) -- set(cxx_arch armeabi-v7a) -- elseif("${arch}" MATCHES aarch64) -- set(cxx_arch arm64-v8a) -- elseif("${arch}" MATCHES i686) -- set(cxx_arch x86) -- elseif("${arch}" MATCHES x86_64) -- set(cxx_arch x86_64) -- else() -- message(SEND_ERROR "unknown architecture (${arch}) when cross-compiling for Android") -- endif() -- -- set(android_libcxx_path "${SWIFT_ANDROID_NDK_PATH}/sources/cxx-stl/llvm-libc++/libs/${cxx_arch}") -+ set(android_libcxx_path "${SWIFT_SDK_ANDROID_ARCH_${arch}_PATH}/usr/lib/${SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_TRIPLE}") - list(APPEND link_libraries ${android_libcxx_path}/libc++abi.a - ${android_libcxx_path}/libc++_shared.so) - elseif(NOT "${SWIFT_ANDROID_NATIVE_SYSROOT}" STREQUAL "") -diff --git a/swift/cmake/modules/SwiftConfigureSDK.cmake b/swift/cmake/modules/SwiftConfigureSDK.cmake -index b55e6e6b98..a654794467 100644 ---- a/swift/cmake/modules/SwiftConfigureSDK.cmake -+++ b/swift/cmake/modules/SwiftConfigureSDK.cmake -@@ -55,12 +55,6 @@ function(_report_sdk prefix) - if(NOT "${SWIFT_ANDROID_NATIVE_SYSROOT}" STREQUAL "") - message(STATUS " Sysroot: ${SWIFT_ANDROID_NATIVE_SYSROOT}") - endif() -- foreach(arch ${SWIFT_SDK_${prefix}_ARCHITECTURES}) -- swift_android_include_for_arch(${arch} ${arch}_INCLUDE) -- swift_android_lib_for_arch(${arch} ${arch}_LIB) -- message(STATUS " ${arch} INCLUDE: ${${arch}_INCLUDE}") -- message(STATUS " ${arch} LIB: ${${arch}_LIB}") -- endforeach() - else() - foreach(arch ${SWIFT_SDK_${prefix}_ARCHITECTURES}) - message(STATUS " ${arch} Path: ${SWIFT_SDK_${prefix}_ARCH_${arch}_PATH}") -@@ -271,76 +265,32 @@ macro(configure_sdk_unix name architectures) - - foreach(arch ${architectures}) - if("${prefix}" STREQUAL "ANDROID") -- if(NOT "${SWIFT_ANDROID_NDK_PATH}" STREQUAL "") -- set(SWIFT_SDK_ANDROID_ARCH_${arch}_LIBC_INCLUDE_DIRECTORY "${SWIFT_ANDROID_NDK_PATH}/sysroot/usr/include" CACHE STRING "Path to C library headers") -- set(SWIFT_SDK_ANDROID_ARCH_${arch}_LIBC_ARCHITECTURE_INCLUDE_DIRECTORY "${SWIFT_ANDROID_NDK_PATH}/sysroot/usr/include" CACHE STRING "Path to C library architecture headers") -- elseif(NOT "${SWIFT_ANDROID_NATIVE_SYSROOT}" STREQUAL "") -- set(SWIFT_SDK_ANDROID_ARCH_${arch}_LIBC_INCLUDE_DIRECTORY "${SWIFT_ANDROID_NATIVE_SYSROOT}/usr/include" CACHE STRING "Path to C library headers") -- set(SWIFT_SDK_ANDROID_ARCH_${arch}_LIBC_ARCHITECTURE_INCLUDE_DIRECTORY "${SWIFT_ANDROID_NATIVE_SYSROOT}/usr/include" CACHE STRING "Path to C library architecture headers") -- else() -- message(SEND_ERROR "Couldn't find LIBC_INCLUDE_DIRECTORY for Android") -- endif() -+ swift_android_sysroot(android_sysroot) -+ set(SWIFT_SDK_ANDROID_ARCH_${arch}_PATH "${android_sysroot}") -+ set(SWIFT_SDK_ANDROID_ARCH_${arch}_LIBC_INCLUDE_DIRECTORY "${android_sysroot}/usr/include" CACHE STRING "Path to C library headers") -+ set(SWIFT_SDK_ANDROID_ARCH_${arch}_LIBC_ARCHITECTURE_INCLUDE_DIRECTORY "${android_sysroot}/usr/include" CACHE STRING "Path to C library architecture headers") - - if("${arch}" STREQUAL "armv7") - set(SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_TRIPLE "arm-linux-androideabi") - set(SWIFT_SDK_ANDROID_ARCH_${arch}_ALT_SPELLING "arm") -- if(NOT "${SWIFT_ANDROID_NDK_PATH}" STREQUAL "") -- set(SWIFT_SDK_ANDROID_ARCH_${arch}_PATH "${SWIFT_ANDROID_NDK_PATH}/platforms/android-${SWIFT_ANDROID_API_LEVEL}/arch-arm") -- elseif(NOT "${SWIFT_ANDROID_NATIVE_SYSROOT}" STREQUAL "") -- set(SWIFT_SDK_ANDROID_ARCH_${arch}_PATH "${SWIFT_ANDROID_NATIVE_SYSROOT}") -- else() -- message(SEND_ERROR "Couldn't find SWIFT_SDK_ANDROID_ARCH_armv7_PATH") -- endif() - set(SWIFT_SDK_ANDROID_ARCH_${arch}_TRIPLE "armv7-none-linux-androideabi") - # The Android ABI isn't part of the module triple. - set(SWIFT_SDK_ANDROID_ARCH_${arch}_MODULE "armv7-none-linux-android") - elseif("${arch}" STREQUAL "aarch64") - set(SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_TRIPLE "aarch64-linux-android") - set(SWIFT_SDK_ANDROID_ARCH_${arch}_ALT_SPELLING "aarch64") -- if(NOT "${SWIFT_ANDROID_NDK_PATH}" STREQUAL "") -- set(SWIFT_SDK_ANDROID_ARCH_${arch}_PATH "${SWIFT_ANDROID_NDK_PATH}/platforms/android-${SWIFT_ANDROID_API_LEVEL}/arch-arm64") -- elseif(NOT "${SWIFT_ANDROID_NATIVE_SYSROOT}" STREQUAL "") -- set(SWIFT_SDK_ANDROID_ARCH_${arch}_PATH "${SWIFT_ANDROID_NATIVE_SYSROOT}") -- else() -- message(SEND_ERROR "Couldn't find SWIFT_SDK_ANDROID_ARCH_aarch64_PATH") -- endif() - set(SWIFT_SDK_ANDROID_ARCH_${arch}_TRIPLE "aarch64-unknown-linux-android") - elseif("${arch}" STREQUAL "i686") - set(SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_TRIPLE "i686-linux-android") - set(SWIFT_SDK_ANDROID_ARCH_${arch}_ALT_SPELLING "i686") -- set(SWIFT_SDK_ANDROID_ARCH_${arch}_PATH "${SWIFT_ANDROID_NDK_PATH}/platforms/android-${SWIFT_ANDROID_API_LEVEL}/arch-x86") - set(SWIFT_SDK_ANDROID_ARCH_${arch}_TRIPLE "i686-unknown-linux-android") - elseif("${arch}" STREQUAL "x86_64") - set(SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_TRIPLE "x86_64-linux-android") - set(SWIFT_SDK_ANDROID_ARCH_${arch}_ALT_SPELLING "x86_64") -- set(SWIFT_SDK_ANDROID_ARCH_${arch}_PATH "${SWIFT_ANDROID_NDK_PATH}/platforms/android-${SWIFT_ANDROID_API_LEVEL}/arch-x86_64") - set(SWIFT_SDK_ANDROID_ARCH_${arch}_TRIPLE "x86_64-unknown-linux-android") - else() - message(FATAL_ERROR "unknown arch for android SDK: ${arch}") - endif() -- -- # Get the prebuilt suffix to create the correct toolchain path when using the NDK -- if(CMAKE_HOST_SYSTEM_NAME STREQUAL Darwin) -- set(_swift_android_prebuilt_build darwin-x86_64) -- elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL Linux) -- set(_swift_android_prebuilt_build linux-x86_64) -- elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL Windows) -- set(_swift_android_prebuilt_build Windows-x86_64) -- elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL Android) -- # When building natively on an Android host, there's no NDK or prebuilt suffix. -- else() -- message(SEND_ERROR "cannot cross-compile to android from ${CMAKE_HOST_SYSTEM_NAME}") -- endif() -- if("${arch}" STREQUAL "i686") -- set(SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_PREBUILT_PATH -- "${SWIFT_ANDROID_NDK_PATH}/toolchains/x86-${SWIFT_ANDROID_NDK_GCC_VERSION}/prebuilt/${_swift_android_prebuilt_build}") -- elseif("${arch}" STREQUAL "x86_64") -- set(SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_PREBUILT_PATH -- "${SWIFT_ANDROID_NDK_PATH}/toolchains/x86_64-${SWIFT_ANDROID_NDK_GCC_VERSION}/prebuilt/${_swift_android_prebuilt_build}") -- else() -- set(SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_PREBUILT_PATH -- "${SWIFT_ANDROID_NDK_PATH}/toolchains/${SWIFT_SDK_ANDROID_ARCH_${arch}_NDK_TRIPLE}-${SWIFT_ANDROID_NDK_GCC_VERSION}/prebuilt/${_swift_android_prebuilt_build}") -- endif() - else() - set(SWIFT_SDK_${prefix}_ARCH_${arch}_PATH "/" CACHE STRING "CMAKE_SYSROOT for ${prefix} ${arch}") - -diff --git a/swift/stdlib/cmake/modules/AddSwiftStdlib.cmake b/swift/stdlib/cmake/modules/AddSwiftStdlib.cmake -index a2f682ece6..d2f6c27890 100644 ---- a/swift/stdlib/cmake/modules/AddSwiftStdlib.cmake -+++ b/swift/stdlib/cmake/modules/AddSwiftStdlib.cmake -@@ -55,6 +55,10 @@ function(_add_target_variant_c_compile_link_flags) - endif() - endif() - -+ if("${CFLAGS_SDK}" STREQUAL "ANDROID") -+ set(DEPLOYMENT_VERSION ${SWIFT_ANDROID_API_LEVEL}) -+ endif() -+ - # MSVC, clang-cl, gcc don't understand -target. - if(CMAKE_C_COMPILER_ID MATCHES "^Clang|AppleClang$" AND - NOT SWIFT_COMPILER_IS_MSVC_LIKE) -@@ -274,16 +278,6 @@ function(_add_target_variant_c_compile_flags) - list(APPEND result -funwind-tables) - endif() - -- if("${CFLAGS_SDK}" STREQUAL "ANDROID") -- list(APPEND result -nostdinc++) -- swift_android_libcxx_include_paths(CFLAGS_CXX_INCLUDES) -- swift_android_include_for_arch("${CFLAGS_ARCH}" "${CFLAGS_ARCH}_INCLUDE") -- foreach(path IN LISTS CFLAGS_CXX_INCLUDES ${CFLAGS_ARCH}_INCLUDE) -- list(APPEND result "SHELL:${CMAKE_INCLUDE_SYSTEM_FLAG_C}${path}") -- endforeach() -- list(APPEND result "-D__ANDROID_API__=${SWIFT_ANDROID_API_LEVEL}") -- endif() -- - if("${CFLAGS_SDK}" STREQUAL "LINUX") - if(${CFLAGS_ARCH} STREQUAL x86_64) - # this is the minimum architecture that supports 16 byte CAS, which is necessary to avoid a dependency to libatomic -@@ -363,11 +357,6 @@ function(_add_target_variant_link_flags) - list(APPEND link_libraries - ${SWIFT_ANDROID_${LFLAGS_ARCH}_ICU_I18N} - ${SWIFT_ANDROID_${LFLAGS_ARCH}_ICU_UC}) -- -- swift_android_lib_for_arch(${LFLAGS_ARCH} ${LFLAGS_ARCH}_LIB) -- foreach(path IN LISTS ${LFLAGS_ARCH}_LIB) -- list(APPEND library_search_directories ${path}) -- endforeach() - else() - # If lto is enabled, we need to add the object path flag so that the LTO code - # generator leaves the intermediate object file in a place where it will not -diff --git a/swift/stdlib/cmake/modules/SwiftSource.cmake b/swift/stdlib/cmake/modules/SwiftSource.cmake -index 41850e3f54..bb504ee93a 100644 ---- a/swift/stdlib/cmake/modules/SwiftSource.cmake -+++ b/swift/stdlib/cmake/modules/SwiftSource.cmake -@@ -184,9 +184,7 @@ function(_add_target_variant_swift_compile_flags - ${ARGN}) - - # On Windows, we don't set SWIFT_SDK_WINDOWS_PATH_ARCH_{ARCH}_PATH, so don't include it. -- # On Android the sdk is split to two different paths for includes and libs, so these -- # need to be set manually. -- if (NOT "${sdk}" STREQUAL "WINDOWS" AND NOT "${sdk}" STREQUAL "ANDROID") -+ if (NOT "${sdk}" STREQUAL "WINDOWS") - list(APPEND result "-sdk" "${SWIFT_SDK_${sdk}_ARCH_${arch}_PATH}") - endif() - -@@ -206,13 +204,6 @@ function(_add_target_variant_swift_compile_flags - "-target" "${SWIFT_SDK_${sdk}_ARCH_${arch}_TRIPLE}") - endif() - -- if("${sdk}" STREQUAL "ANDROID") -- swift_android_include_for_arch(${arch} ${arch}_swift_include) -- foreach(path IN LISTS ${arch}_swift_include) -- list(APPEND result "\"${CMAKE_INCLUDE_FLAG_C}${path}\"") -- endforeach() -- endif() -- - if(NOT BUILD_STANDALONE) - list(APPEND result "-resource-dir" "${SWIFTLIB_DIR}") - endif() -diff --git a/swift/utils/build-script-impl b/swift/utils/build-script-impl -index cb68af1031..51d031cd39 100755 ---- a/swift/utils/build-script-impl -+++ b/swift/utils/build-script-impl -@@ -470,11 +470,11 @@ function set_build_options_for_host() { - - case ${host} in - android-aarch64) -- SWIFT_HOST_TRIPLE="aarch64-unknown-linux-android" -+ SWIFT_HOST_TRIPLE="aarch64-unknown-linux-android${ANDROID_API_LEVEL}" - llvm_target_arch="AArch64" - ;; - android-armv7) -- SWIFT_HOST_TRIPLE="armv7-unknown-linux-androideabi" -+ SWIFT_HOST_TRIPLE="armv7-unknown-linux-androideabi${ANDROID_API_LEVEL}" - llvm_target_arch="ARM" - ;; - linux-armv6) diff --git a/packages/swift/swift-no-test-build.patch b/packages/swift/swift-no-test-build.patch new file mode 100644 index 000000000..94477866b --- /dev/null +++ b/packages/swift/swift-no-test-build.patch @@ -0,0 +1,62 @@ +commit 86c40574f594f4f7b4b25bb02cc2389e1328c200 +Date: Fri Nov 13 17:22:09 2020 +0530 + + [build] Don't build test targets in tools/ if SWIFT_INCLUDE_TESTS is turned off + +diff --git a/swift/tools/CMakeLists.txt b/swift/tools/CMakeLists.txt +index 2bd8352bf273..ea610709e2f5 100644 +--- a/swift/tools/CMakeLists.txt ++++ b/swift/tools/CMakeLists.txt +@@ -16,13 +16,10 @@ endif() + add_swift_tool_subdirectory(driver) + add_swift_tool_subdirectory(sil-opt) + add_swift_tool_subdirectory(swift-dependency-tool) +-add_swift_tool_subdirectory(swift-ide-test) +-add_swift_tool_subdirectory(swift-remoteast-test) + add_swift_tool_subdirectory(swift-demangle) + add_swift_tool_subdirectory(swift-demangle-yamldump) + add_swift_tool_subdirectory(swift-def-to-yaml-converter) + add_swift_tool_subdirectory(swift-serialize-diagnostics) +-add_swift_tool_subdirectory(lldb-moduleimport-test) + add_swift_tool_subdirectory(sil-func-extractor) + add_swift_tool_subdirectory(sil-llvm-gen) + add_swift_tool_subdirectory(sil-nm) +@@ -30,11 +27,19 @@ add_swift_tool_subdirectory(sil-passpipeline-dumper) + add_swift_tool_subdirectory(swift-llvm-opt) + add_swift_tool_subdirectory(swift-api-digester) + add_swift_tool_subdirectory(swift-ast-script) +-add_swift_tool_subdirectory(swift-syntax-test) + add_swift_tool_subdirectory(swift-refactor) + if(SWIFT_BUILD_SYNTAXPARSERLIB) + add_swift_tool_subdirectory(libSwiftSyntaxParser) +- add_swift_tool_subdirectory(swift-syntax-parser-test) ++ if(SWIFT_INCLUDE_TESTS) ++ add_swift_tool_subdirectory(swift-syntax-parser-test) ++ endif() ++endif() ++ ++if(SWIFT_INCLUDE_TESTS) ++ add_swift_tool_subdirectory(swift-ide-test) ++ add_swift_tool_subdirectory(swift-remoteast-test) ++ add_swift_tool_subdirectory(lldb-moduleimport-test) ++ add_swift_tool_subdirectory(swift-syntax-test) + endif() + + if(LLVM_USE_SANITIZE_COVERAGE) +diff --git a/swift/tools/SourceKit/tools/CMakeLists.txt b/swift/tools/SourceKit/tools/CMakeLists.txt +index 739078c36e52..75cf0861b11e 100644 +--- a/swift/tools/SourceKit/tools/CMakeLists.txt ++++ b/swift/tools/SourceKit/tools/CMakeLists.txt +@@ -5,8 +5,10 @@ include_directories( + ) + + add_swift_lib_subdirectory(sourcekitd) +-add_swift_tool_subdirectory(sourcekitd-test) + if(LibEdit_FOUND AND LibEdit_HAS_UNICODE) + add_swift_tool_subdirectory(sourcekitd-repl) + endif() +-add_swift_tool_subdirectory(complete-test) ++if(SWIFT_INCLUDE_TESTS) ++ add_swift_tool_subdirectory(sourcekitd-test) ++ add_swift_tool_subdirectory(complete-test) ++endif() diff --git a/packages/swift/swift-runtime-flag.patch b/packages/swift/swift-runtime-flag.patch deleted file mode 100644 index 7ee558014..000000000 --- a/packages/swift/swift-runtime-flag.patch +++ /dev/null @@ -1,75 +0,0 @@ -commit f84992addb0f7cd54c13762274e898f79d0b0631 -Date: Sun, 8 Nov 2020 13:25:13 +0530 -Subject: [build] Make it possible to actually build the stdlib with a - prebuilt clang - -diff --git a/swift/CMakeLists.txt b/swift/CMakeLists.txt -index 99937910af2b..2cec8d38a493 100644 ---- a/swift/CMakeLists.txt -+++ b/swift/CMakeLists.txt -@@ -462,10 +462,12 @@ if(SWIFT_PATH_TO_CMARK_BUILD) - endif() - message(STATUS "") - --if("${SWIFT_NATIVE_LLVM_TOOLS_PATH}" STREQUAL "") -- set(SWIFT_CROSS_COMPILING FALSE) -+# Check if a prebuilt clang path was passed in, as this variable will be -+# assigned if not, in SwiftSharedCMakeConfig. -+if("${SWIFT_NATIVE_CLANG_TOOLS_PATH}" STREQUAL "") -+ set(SWIFT_PREBUILT_CLANG FALSE) - else() -- set(SWIFT_CROSS_COMPILING TRUE) -+ set(SWIFT_PREBUILT_CLANG TRUE) - endif() - - include(SwiftSharedCMakeConfig) -diff --git a/swift/cmake/modules/SwiftSharedCMakeConfig.cmake b/swift/cmake/modules/SwiftSharedCMakeConfig.cmake -index c4c15084fe9..9ee08656589 100644 ---- a/swift/cmake/modules/SwiftSharedCMakeConfig.cmake -+++ b/swift/cmake/modules/SwiftSharedCMakeConfig.cmake -@@ -58,7 +58,7 @@ macro(swift_common_standalone_build_config_llvm product) - fix_imported_targets_for_xcode("${LLVM_EXPORTED_TARGETS}") - endif() - -- if(NOT CMAKE_CROSSCOMPILING AND NOT SWIFT_CROSS_COMPILING) -+ if(NOT CMAKE_CROSSCOMPILING) - set(${product}_NATIVE_LLVM_TOOLS_PATH "${LLVM_TOOLS_BINARY_DIR}") - endif() - -@@ -159,7 +159,7 @@ endmacro() - macro(swift_common_standalone_build_config_clang product) - find_package(Clang CONFIG REQUIRED NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) - -- if (NOT CMAKE_CROSSCOMPILING) -+ if (NOT CMAKE_CROSSCOMPILING AND NOT SWIFT_PREBUILT_CLANG) - set(${product}_NATIVE_CLANG_TOOLS_PATH "${LLVM_TOOLS_BINARY_DIR}") - endif() - -diff --git a/swift/stdlib/cmake/modules/AddSwiftStdlib.cmake b/swift/stdlib/cmake/modules/AddSwiftStdlib.cmake -index 7a296b5807d5..ace3fb90370f 100644 ---- a/swift/stdlib/cmake/modules/AddSwiftStdlib.cmake -+++ b/swift/stdlib/cmake/modules/AddSwiftStdlib.cmake -@@ -1653,7 +1653,8 @@ function(add_swift_target_library name) - list(APPEND SWIFTLIB_SWIFT_COMPILE_FLAGS "-warn-implicit-overrides") - endif() - -- if(NOT SWIFT_BUILD_RUNTIME_WITH_HOST_COMPILER AND NOT BUILD_STANDALONE) -+ if(NOT SWIFT_BUILD_RUNTIME_WITH_HOST_COMPILER AND NOT BUILD_STANDALONE AND -+ NOT SWIFT_PREBUILT_CLANG) - list(APPEND SWIFTLIB_DEPENDS clang) - endif() - -diff --git a/swift/stdlib/public/SwiftShims/CMakeLists.txt b/swift/stdlib/public/SwiftShims/CMakeLists.txt -index 33c49a3f8861..8553f4f00b37 100644 ---- a/swift/stdlib/public/SwiftShims/CMakeLists.txt -+++ b/swift/stdlib/public/SwiftShims/CMakeLists.txt -@@ -110,7 +110,8 @@ endif() - # First extract the "version" used for Clang's resource directory. - string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION - "${LLVM_PACKAGE_VERSION}") --if(NOT SWIFT_INCLUDE_TOOLS AND SWIFT_BUILD_RUNTIME_WITH_HOST_COMPILER) -+if(NOT SWIFT_INCLUDE_TOOLS AND -+ (SWIFT_BUILD_RUNTIME_WITH_HOST_COMPILER OR SWIFT_PREBUILT_CLANG)) - if(SWIFT_COMPILER_IS_MSVC_LIKE) - execute_process(COMMAND ${CMAKE_C_COMPILER} /clang:-print-resource-dir - OUTPUT_VARIABLE clang_headers_location diff --git a/packages/swift/swift-tools-support-core.patch b/packages/swift/swift-tools-support-core.patch new file mode 100644 index 000000000..90ad7e788 --- /dev/null +++ b/packages/swift/swift-tools-support-core.patch @@ -0,0 +1,29 @@ +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/swift-tools-support-core/Sources/TSCUtility/FSWatch.swift b/swift-tools-support-core/Sources/TSCUtility/FSWatch.swift +index 0658e55b..9221950b 100644 +--- a/swift-tools-support-core/Sources/TSCUtility/FSWatch.swift ++++ b/swift-tools-support-core/Sources/TSCUtility/FSWatch.swift +@@ -429,7 +429,11 @@ public final class Inotify { + + private func FD_ZERO(_ set: inout fd_set) { + #if os(Android) ++ #if arch(arm) ++ set.fds_bits = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) ++ #else + set.fds_bits = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) ++ #endif + #else + set.__fds_bits = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + #endif diff --git a/packages/swift/swift-utils-build-script-impl-build.patch b/packages/swift/swift-utils-build-script-impl-build.patch deleted file mode 100644 index daba7251b..000000000 --- a/packages/swift/swift-utils-build-script-impl-build.patch +++ /dev/null @@ -1,134 +0,0 @@ -commit 32d341e244d4a56185ed04c60542250b5b5047e9 -Date: Thu Jul 16 17:23:18 2020 +0530 - - [build] extend support for building with a prebuilt toolchain to the corelibs and llbuild - -diff --git a/swift/utils/build-script-impl b/swift/utils/build-script-impl -index 7f39ff97459..af310ec8cbf 100755 ---- a/swift/utils/build-script-impl -+++ b/swift/utils/build-script-impl -@@ -1584,6 +1584,18 @@ for host in "${ALL_HOSTS[@]}"; do - ) - fi - -+ if [[ "${NATIVE_CLANG_TOOLS_PATH}" ]] ; then -+ CLANG_BIN="${NATIVE_CLANG_TOOLS_PATH}" -+ else -+ CLANG_BIN="$(build_directory_bin ${LOCAL_HOST} llvm)" -+ fi -+ -+ if [[ "${NATIVE_SWIFT_TOOLS_PATH}" ]] ; then -+ SWIFTC_BIN="${NATIVE_SWIFT_TOOLS_PATH}/swiftc" -+ else -+ SWIFTC_BIN="$(build_directory_bin ${LOCAL_HOST} swift)/swiftc" -+ fi -+ - for product in "${PRODUCTS[@]}"; do - [[ $(should_execute_action "${host}-${product/_static}-build") ]] || continue - -@@ -2022,7 +2034,7 @@ for host in "${ALL_HOSTS[@]}"; do - -DCMAKE_C_FLAGS="$(llvm_c_flags ${host})" - -DCMAKE_CXX_FLAGS="$(llvm_c_flags ${host})" - -DCMAKE_BUILD_TYPE:STRING="${LLDB_BUILD_TYPE}" -- -DLLDB_SWIFTC:PATH="$(build_directory ${LOCAL_HOST} swift)/bin/swiftc" -+ -DLLDB_SWIFTC:PATH=${SWIFTC_BIN} - -DLLDB_SWIFT_LIBS:PATH="$(build_directory ${LOCAL_HOST} swift)/lib/swift" - -DCMAKE_INSTALL_PREFIX:PATH="$(get_host_install_prefix ${host})" - -DLLDB_FRAMEWORK_INSTALL_DIR="$(get_host_install_prefix ${host})../System/Library/PrivateFrameworks" -@@ -2073,8 +2085,10 @@ for host in "${ALL_HOSTS[@]}"; do - "${llbuild_cmake_options[@]}" - - -DCMAKE_BUILD_TYPE:STRING="${LLBUILD_BUILD_TYPE}" -+ -DCMAKE_C_COMPILER:PATH="${CLANG_BIN}/clang" -+ -DCMAKE_CXX_COMPILER:PATH="${CLANG_BIN}/clang++" - -DCMAKE_INSTALL_PREFIX:PATH="$(get_host_install_prefix ${host})" -- -DCMAKE_Swift_COMPILER:PATH="$(build_directory_bin ${LOCAL_HOST} swift)/swiftc" -+ -DCMAKE_Swift_COMPILER:PATH=${SWIFTC_BIN} - -DCMAKE_Swift_FLAGS:STRING="-module-cache-path \"${module_cache}\"" - - -DLLBUILD_ENABLE_ASSERTIONS:BOOL=$(true_false "${LLBUILD_ENABLE_ASSERTIONS}") -@@ -2082,7 +2096,7 @@ for host in "${ALL_HOSTS[@]}"; do - - -DLIT_EXECUTABLE:PATH="${LLVM_SOURCE_DIR}/utils/lit/lit.py" - -DFILECHECK_EXECUTABLE:PATH="$(build_directory_bin ${LOCAL_HOST} llvm)/FileCheck" -- -DSWIFTC_EXECUTABLE:PATH="$(build_directory_bin ${LOCAL_HOST} swift)/swiftc" -+ -DSWIFTC_EXECUTABLE:PATH=${SWIFTC_BIN} - -DFOUNDATION_BUILD_DIR:PATH="$(build_directory ${host} foundation)" - -DLIBDISPATCH_BUILD_DIR:PATH="$(build_directory ${host} libdispatch)" - -DLIBDISPATCH_SOURCE_DIR:PATH="${LIBDISPATCH_SOURCE_DIR}" -@@ -2106,7 +2120,6 @@ for host in "${ALL_HOSTS[@]}"; do - fi - ;; - xctest) -- SWIFTC_BIN="$(build_directory_bin ${LOCAL_HOST} swift)/swiftc" - XCTEST_BUILD_DIR=$(build_directory ${host} xctest) - FOUNDATION_BUILD_DIR=$(build_directory ${host} foundation) - SWIFT_BUILD_DIR=$(build_directory ${host} swift) -@@ -2144,14 +2157,12 @@ for host in "${ALL_HOSTS[@]}"; do - echo "Cleaning the XCTest build directory" - call rm -rf "${XCTEST_BUILD_DIR}" - -- LLVM_BIN="$(build_directory_bin ${LOCAL_HOST} llvm)" -- - cmake_options=( - ${cmake_options[@]} - -DCMAKE_BUILD_TYPE:STRING="${XCTEST_BUILD_TYPE}" -- -DCMAKE_C_COMPILER:PATH="${LLVM_BIN}/clang" -- -DCMAKE_CXX_COMPILER:PATH="${LLVM_BIN}/clang++" -- -DCMAKE_Swift_COMPILER:PATH="$(build_directory_bin ${LOCAL_HOST} swift)/swiftc" -+ -DCMAKE_C_COMPILER:PATH="${CLANG_BIN}/clang" -+ -DCMAKE_CXX_COMPILER:PATH="${CLANG_BIN}/clang++" -+ -DCMAKE_Swift_COMPILER:PATH=${SWIFTC_BIN} - -DCMAKE_Swift_FLAGS:STRING="-module-cache-path \"${module_cache}\"" - -DCMAKE_INSTALL_PREFIX:PATH="$(get_host_install_prefix ${host})" - -DCMAKE_INSTALL_LIBDIR:PATH="lib" -@@ -2163,7 +2174,7 @@ for host in "${ALL_HOSTS[@]}"; do - -DXCTEST_PATH_TO_LIBDISPATCH_SOURCE:PATH=${LIBDISPATCH_SOURCE_DIR} - -DXCTEST_PATH_TO_LIBDISPATCH_BUILD:PATH=$(build_directory ${host} libdispatch) - -DXCTEST_PATH_TO_FOUNDATION_BUILD:PATH=${FOUNDATION_BUILD_DIR} -- -DCMAKE_SWIFT_COMPILER:PATH="$(build_directory_bin ${LOCAL_HOST} swift)/swiftc" -+ -DCMAKE_SWIFT_COMPILER:PATH=${SWIFTC_BIN} - -DCMAKE_PREFIX_PATH:PATH=$(build_directory ${host} llvm) - - -DENABLE_TESTING=YES -@@ -2178,9 +2189,6 @@ for host in "${ALL_HOSTS[@]}"; do - # is not yet built at this point. - XCTEST_BUILD_DIR=$(build_directory ${host} xctest) - -- SWIFTC_BIN="$(build_directory_bin ${LOCAL_HOST} swift)/swiftc" -- LLVM_BIN="$(build_directory_bin ${LOCAL_HOST} llvm)" -- - if [[ ${host} == "macosx"* ]]; then - echo "Skipping Foundation on OS X -- use the Xcode project instead" - continue -@@ -2220,8 +2228,8 @@ for host in "${ALL_HOSTS[@]}"; do - cmake_options=( - ${cmake_options[@]} - -DCMAKE_BUILD_TYPE:STRING=${FOUNDATION_BUILD_TYPE} -- -DCMAKE_C_COMPILER:PATH=${LLVM_BIN}/clang -- -DCMAKE_CXX_COMPILER:PATH=${LLVM_BIN}/clang++ -+ -DCMAKE_C_COMPILER:PATH=${CLANG_BIN}/clang -+ -DCMAKE_CXX_COMPILER:PATH=${CLANG_BIN}/clang++ - -DCMAKE_SWIFT_COMPILER:PATH=${SWIFTC_BIN} - -DCMAKE_Swift_COMPILER:PATH=${SWIFTC_BIN} - -DCMAKE_Swift_FLAGS:STRING="-module-cache-path \"${module_cache}\"" -@@ -2244,8 +2252,6 @@ for host in "${ALL_HOSTS[@]}"; do - libdispatch|libdispatch_static) - LIBDISPATCH_BUILD_DIR=$(build_directory ${host} ${product}) - SWIFT_BUILD_PATH="$(build_directory ${host} swift)" -- SWIFTC_BIN="$(build_directory_bin ${LOCAL_HOST} swift)/swiftc" -- LLVM_BIN="$(build_directory_bin ${LOCAL_HOST} llvm)" - - case "${host}" in - macosx-*) -@@ -2264,8 +2270,8 @@ for host in "${ALL_HOSTS[@]}"; do - -DENABLE_SWIFT=YES - ${cmake_options[@]} - -DCMAKE_BUILD_TYPE:STRING="${LIBDISPATCH_BUILD_TYPE}" -- -DCMAKE_C_COMPILER:PATH="${LLVM_BIN}/clang" -- -DCMAKE_CXX_COMPILER:PATH="${LLVM_BIN}/clang++" -+ -DCMAKE_C_COMPILER:PATH="${CLANG_BIN}/clang" -+ -DCMAKE_CXX_COMPILER:PATH="${CLANG_BIN}/clang++" - -DCMAKE_SWIFT_COMPILER:PATH="${SWIFTC_BIN}" - -DCMAKE_Swift_COMPILER:PATH="${SWIFTC_BIN}" - -DCMAKE_Swift_FLAGS:STRING="-module-cache-path \"${module_cache}\"" diff --git a/packages/swift/swift-utils-build-script-impl-cross.patch b/packages/swift/swift-utils-build-script-impl-cross.patch index b5e92a47c..71d52fcc7 100644 --- a/packages/swift/swift-utils-build-script-impl-cross.patch +++ b/packages/swift/swift-utils-build-script-impl-cross.patch @@ -1,18 +1,58 @@ -commit 5fa1d36f4b558070fc2bf54ecde19e6a35e4839e -Date: Tue Sep 1 00:45:55 2020 +0530 - - [build] Add the flags to enable cross-compiling the corelibs - - Pass the Swift and CMake flags needed to cross-compile Foundation and so on, with - the first example of Android AArch64. Add a new flag, --cross-compile-deps-path, - which is used to search for cross-compiled libraries, like libcurl, that the - corelibs depend on. - +diff --git a/swift/CMakeLists.txt b/swift/CMakeLists.txt +index 4b202c99502..aa7b9e8f715 100644 +--- a/swift/CMakeLists.txt ++++ b/swift/CMakeLists.txt +@@ -443,7 +445,7 @@ + endif() + + set(SWIFT_BUILD_HOST_DISPATCH FALSE) +-if(SWIFT_BUILD_SYNTAXPARSERLIB OR SWIFT_BUILD_SOURCEKIT) ++if(NOT SWIFT_HOST_VARIANT_SDK STREQUAL ANDROID AND SWIFT_INCLUDE_TOOLS AND (SWIFT_BUILD_SYNTAXPARSERLIB OR SWIFT_BUILD_SOURCEKIT)) + if(NOT CMAKE_SYSTEM_NAME STREQUAL Darwin) + set(SWIFT_BUILD_HOST_DISPATCH TRUE) + endif() +diff --git a/swift/utils/build-script b/swift/utils/build-script +index b4c3f6f6b28..27045d12eac 100755 +--- a/swift/utils/build-script ++++ b/swift/utils/build-script +@@ -817,6 +817,7 @@ class BuildScriptInvocation(object): + """ + + args = self.args ++ args.build_root = self.workspace.build_root + + options = {} + for host_target in [args.host_target] + args.cross_compile_hosts: +@@ -838,6 +839,8 @@ class BuildScriptInvocation(object): + config.swift_benchmark_run_targets), + "SWIFT_TEST_TARGETS": " ".join( + config.swift_test_run_targets), ++ "SWIFT_FLAGS": config.swift_flags, ++ "SWIFT_TARGET_CMAKE_OPTIONS": config.cmake_options, + } + + return options diff --git a/swift/utils/build-script-impl b/swift/utils/build-script-impl -index 6f0c2b5bf71..db6e0ad10d6 100755 +index 66a4408d066..2f6e9981252 100755 --- a/swift/utils/build-script-impl +++ b/swift/utils/build-script-impl -@@ -240,6 +240,7 @@ KNOWN_SETTINGS=( +@@ -137,7 +137,6 @@ KNOWN_SETTINGS=( + common-cmake-options "" "CMake options used for all targets, including LLVM/Clang" + extra-cmake-options "" "Extra options to pass to CMake for all targets" + ninja-cmake-options "" "CMake options used for all ninja targets" +- ninja-cmake-options "" "CMake options used for all ninja targets" + + ## Build ... + build-llvm "1" "set to 1 to build LLVM and Clang" +@@ -199,6 +198,7 @@ + swift-stdlib-single-threaded-runtime "0" "whether to build stdlib as a single-threaded runtime only" + swift-stdlib-os-versioning "1" "whether to build stdlib with availability based on OS versions (Darwin only)" + swift-stdlib-stable-abi "" "should stdlib be built with stable ABI, if not set defaults to true on Darwin, false otherwise" ++ common-swift-flags "" "Flags used for Swift targets other than the stdlib, like the corelibs" + + ## FREESTANDING Stdlib Options + swift-freestanding-sdk "" "which SDK to use when building the FREESTANDING stdlib" +@@ -224,6 +223,7 @@ KNOWN_SETTINGS=( cross-compile-hosts "" "space-separated list of targets to cross-compile host Swift tools for" cross-compile-with-host-tools "" "set to use the clang we build for the host to then build the cross-compile hosts" cross-compile-install-prefixes "" "semicolon-separated list of install prefixes to use for the cross-compiled hosts. The list expands, so if there are more cross-compile hosts than prefixes, unmatched hosts use the last prefix in the list" @@ -20,39 +60,59 @@ index 6f0c2b5bf71..db6e0ad10d6 100755 skip-merge-lipo-cross-compile-tools "" "set to skip running merge-lipo after installing cross-compiled host Swift tools" coverage-db "" "If set, coverage database to use when prioritizing testing" skip-local-host-install "" "If we are cross-compiling multiple targets, skip an install pass locally if the hosts match" -@@ -1621,6 +1622,9 @@ for host in "${ALL_HOSTS[@]}"; do +@@ -1206,6 +1206,8 @@ function calculate_targets_for_host() { + SWIFT_BENCHMARK_TARGETS=($(get_host_specific_variable ${host} SWIFT_BENCHMARK_TARGETS)) + SWIFT_RUN_BENCHMARK_TARGETS=($(get_host_specific_variable ${host} SWIFT_RUN_BENCHMARK_TARGETS)) + SWIFT_TEST_TARGETS=($(get_host_specific_variable ${host} SWIFT_TEST_TARGETS)) ++ SWIFT_FLAGS=($(get_host_specific_variable ${host} SWIFT_FLAGS)) ++ SWIFT_TARGET_CMAKE_OPTIONS=($(get_host_specific_variable ${host} SWIFT_TARGET_CMAKE_OPTIONS)) + } + + +@@ -1347,6 +1349,10 @@ function swift_c_flags() { + fi + } + ++function common_swift_flags() { ++ echo -n "${SWIFT_FLAGS[@]} ${COMMON_SWIFT_FLAGS} -module-cache-path \"${module_cache}\" " ++} ++ + function cmake_config_opt() { + product=$1 + if [[ "${CMAKE_GENERATOR}" == "Xcode" ]] ; then +@@ -1631,6 +1637,9 @@ for host in "${ALL_HOSTS[@]}"; do -DCMAKE_BUILD_TYPE:STRING="${CMARK_BUILD_TYPE}" "${cmark_cmake_options[@]}" ) + if [[ $(is_cross_tools_host ${host}) ]] ; then -+ add_cross_cmake_options ${host} cmake_options ++ cmake_options+=("${SWIFT_TARGET_CMAKE_OPTIONS[@]}") + fi build_targets=(all) ;; -@@ -1725,6 +1729,7 @@ for host in "${ALL_HOSTS[@]}"; do +@@ -1751,6 +1760,7 @@ for host in "${ALL_HOSTS[@]}"; do -DCLANG_TABLEGEN=$(build_directory "${LOCAL_HOST}" llvm)/bin/clang-tblgen -DLLVM_NATIVE_BUILD=$(build_directory "${LOCAL_HOST}" llvm) ) -+ add_cross_cmake_options ${host} cmake_options ++ cmake_options+=("${SWIFT_TARGET_CMAKE_OPTIONS[@]}") fi ;; -@@ -2089,7 +2094,7 @@ for host in "${ALL_HOSTS[@]}"; do +@@ -2161,7 +2171,7 @@ for host in "${ALL_HOSTS[@]}"; do -DCMAKE_CXX_COMPILER:PATH="${CLANG_BIN}/clang++" -DCMAKE_INSTALL_PREFIX:PATH="$(get_host_install_prefix ${host})" -DCMAKE_Swift_COMPILER:PATH=${SWIFTC_BIN} - -DCMAKE_Swift_FLAGS:STRING="-module-cache-path \"${module_cache}\"" -+ -DCMAKE_Swift_FLAGS:STRING="-module-cache-path \"${module_cache}\" $(common_swift_flags ${host})" ++ -DCMAKE_Swift_FLAGS:STRING="$(common_swift_flags)" -DLLBUILD_ENABLE_ASSERTIONS:BOOL=$(true_false "${LLBUILD_ENABLE_ASSERTIONS}") -DLLBUILD_SUPPORT_BINDINGS:=Swift -@@ -2105,6 +2110,16 @@ for host in "${ALL_HOSTS[@]}"; do +@@ -2177,6 +2187,16 @@ for host in "${ALL_HOSTS[@]}"; do -DFoundation_DIR:PATH=$(build_directory ${host} foundation)/cmake/modules ) + if [[ $(is_cross_tools_host ${host}) ]] ; then -+ add_cross_cmake_options ${host} cmake_options ++ cmake_options+=("${SWIFT_TARGET_CMAKE_OPTIONS[@]}") + + # CROSS_COMPILE_DEPS_PATH is searched for the SQLite3 dependency. + cmake_options+=( @@ -64,40 +124,40 @@ index 6f0c2b5bf71..db6e0ad10d6 100755 # Ensure on Darwin platforms that we consider only the SQLite headers # from the SDK instead of picking ones found elsewhere # (e.g. in /usr/include ) -@@ -2163,7 +2178,7 @@ for host in "${ALL_HOSTS[@]}"; do +@@ -2234,7 +2254,7 @@ for host in "${ALL_HOSTS[@]}"; do -DCMAKE_C_COMPILER:PATH="${CLANG_BIN}/clang" -DCMAKE_CXX_COMPILER:PATH="${CLANG_BIN}/clang++" -DCMAKE_Swift_COMPILER:PATH=${SWIFTC_BIN} - -DCMAKE_Swift_FLAGS:STRING="-module-cache-path \"${module_cache}\"" -+ -DCMAKE_Swift_FLAGS:STRING="-module-cache-path \"${module_cache}\" $(common_swift_flags ${host})" ++ -DCMAKE_Swift_FLAGS:STRING="$(common_swift_flags)" -DCMAKE_INSTALL_PREFIX:PATH="$(get_host_install_prefix ${host})" -DCMAKE_INSTALL_LIBDIR:PATH="lib" -@@ -2179,6 +2194,9 @@ for host in "${ALL_HOSTS[@]}"; do +@@ -2250,6 +2270,9 @@ for host in "${ALL_HOSTS[@]}"; do -DENABLE_TESTING=YES ) + if [[ $(is_cross_tools_host ${host}) ]] ; then -+ add_cross_cmake_options ${host} cmake_options ++ cmake_options+=("${SWIFT_TARGET_CMAKE_OPTIONS[@]}") + fi ;; esac -@@ -2232,7 +2250,7 @@ for host in "${ALL_HOSTS[@]}"; do +@@ -2303,7 +2326,7 @@ for host in "${ALL_HOSTS[@]}"; do -DCMAKE_CXX_COMPILER:PATH=${CLANG_BIN}/clang++ -DCMAKE_SWIFT_COMPILER:PATH=${SWIFTC_BIN} -DCMAKE_Swift_COMPILER:PATH=${SWIFTC_BIN} - -DCMAKE_Swift_FLAGS:STRING="-module-cache-path \"${module_cache}\"" -+ -DCMAKE_Swift_FLAGS:STRING="-module-cache-path \"${module_cache}\" $(common_swift_flags ${host})" ++ -DCMAKE_Swift_FLAGS:STRING="$(common_swift_flags)" -DCMAKE_INSTALL_PREFIX:PATH=$(get_host_install_prefix ${host}) ${LIBICU_BUILD_ARGS[@]} -@@ -2248,6 +2266,17 @@ for host in "${ALL_HOSTS[@]}"; do +@@ -2319,6 +2342,21 @@ for host in "${ALL_HOSTS[@]}"; do -DBUILD_SHARED_LIBS=$([[ ${product} == foundation_static ]] && echo "NO" || echo "YES") ) + if [[ $(is_cross_tools_host ${host}) ]] ; then -+ add_cross_cmake_options ${host} cmake_options ++ cmake_options+=("${SWIFT_TARGET_CMAKE_OPTIONS[@]}") + + # CROSS_COMPILE_DEPS_PATH is searched for the ICU, libXML2 + # and libcurl dependencies. @@ -106,26 +166,91 @@ index 6f0c2b5bf71..db6e0ad10d6 100755 + -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER + ) + fi -+ ++ if [[ "${host}" == "android-"* ]]; then ++ cmake_options+=( ++ -DCMAKE_HAVE_LIBC_PTHREAD=True ++ ) ++ fi ;; libdispatch|libdispatch_static) LIBDISPATCH_BUILD_DIR=$(build_directory ${host} ${product}) -@@ -2274,7 +2303,7 @@ for host in "${ALL_HOSTS[@]}"; do +@@ -2345,7 +2383,7 @@ for host in "${ALL_HOSTS[@]}"; do -DCMAKE_CXX_COMPILER:PATH="${CLANG_BIN}/clang++" -DCMAKE_SWIFT_COMPILER:PATH="${SWIFTC_BIN}" -DCMAKE_Swift_COMPILER:PATH="${SWIFTC_BIN}" - -DCMAKE_Swift_FLAGS:STRING="-module-cache-path \"${module_cache}\"" -+ -DCMAKE_Swift_FLAGS:STRING="-module-cache-path \"${module_cache}\" $(common_swift_flags ${host})" ++ -DCMAKE_Swift_FLAGS:STRING="$(common_swift_flags)" -DCMAKE_INSTALL_PREFIX:PATH="$(get_host_install_prefix ${host})" -DCMAKE_INSTALL_LIBDIR:PATH="lib" -@@ -2283,6 +2312,9 @@ for host in "${ALL_HOSTS[@]}"; do +@@ -2354,6 +2392,9 @@ for host in "${ALL_HOSTS[@]}"; do -DENABLE_TESTING=YES -DBUILD_SHARED_LIBS=$([[ ${product} == libdispatch_static ]] && echo "NO" || echo "YES") ) + if [[ $(is_cross_tools_host ${host}) ]] ; then -+ add_cross_cmake_options ${host} cmake_options ++ cmake_options+=("${SWIFT_TARGET_CMAKE_OPTIONS[@]}") + fi ;; esac +diff --git a/swift/utils/swift_build_support/swift_build_support/host_specific_configuration.py b/swift/utils/swift_build_support/swift_build_support/host_specific_configuration.py +index 9bd750657b8..1e24aee8468 100644 +--- a/swift/utils/swift_build_support/swift_build_support/host_specific_configuration.py ++++ b/swift/utils/swift_build_support/swift_build_support/host_specific_configuration.py +@@ -72,6 +72,8 @@ class HostSpecificConfiguration(object): + self.swift_test_run_targets = [] + self.swift_benchmark_build_targets = [] + self.swift_benchmark_run_targets = [] ++ self.swift_flags = '' ++ self.cmake_options = '' + for deployment_target_name in stdlib_targets_to_configure: + # Get the target object. + deployment_target = StdlibDeploymentTarget.get_target_for_name( +@@ -194,6 +196,13 @@ class HostSpecificConfiguration(object): + "check-swift{}-optimize_none_with_implicit_dynamic-{}" + .format(subset_suffix, name)) + ++ # Only pull in these flags when cross-compiling with ++ # --cross-compile-hosts. ++ if deployment_target_name != args.host_target and \ ++ host_target != args.host_target: ++ self.swift_flags = deployment_target.swift_flags(args) ++ self.cmake_options = deployment_target.cmake_options(args) ++ + def __platforms_to_skip_build(self, args): + platforms_to_skip_build = set() + if not args.build_linux: +diff --git a/swift/utils/swift_build_support/swift_build_support/targets.py b/swift/utils/swift_build_support/swift_build_support/targets.py +index cb42f52c633..61778ad9837 100644 +--- a/swift/utils/swift_build_support/swift_build_support/targets.py ++++ b/swift/utils/swift_build_support/swift_build_support/targets.py +@@ -152,6 +152,29 @@ class Target(object): + def name(self): + return "{}-{}".format(self.platform.name, self.arch) + ++ def swift_flags(self, args): ++ flags = '' ++ if self.platform.name == 'android': ++ flags = '-target %s-unknown-linux-android%s ' % (self.arch, ++ args.android_api_level) ++ flags += '-resource-dir %s/swift-%s/lib/swift ' % ( ++ args.build_root, self.name) ++ flags += '-sdk %s/sysroot ' % (args.android_ndk) ++ flags += '-tools-directory %s/bin' % (args.android_ndk) ++ flags += ' -Xlinker -rpath -Xlinker @TERMUX_PREFIX@/lib' ++ ++ return flags ++ ++ def cmake_options(self, args): ++ options = '' ++ if self.platform.name == 'android': ++ options = '-DCMAKE_SYSTEM_NAME=Android ' ++ options += '-DCMAKE_SYSTEM_VERSION=%s ' % (args.android_api_level) ++ options += '-DCMAKE_SYSTEM_PROCESSOR=%s ' % (args.android_arch if not ++ args.android_arch == 'armv7' else 'armv7-a') ++ options += '-DCMAKE_ANDROID_STANDALONE_TOOLCHAIN:PATH=%s' % (args.android_ndk) ++ ++ return options + + class StdlibDeploymentTarget(object): + OSX = DarwinPlatform("macosx", archs=["x86_64", "arm64", "arm64e"], diff --git a/packages/swift/swift-utils-build-script-impl-flags.patch b/packages/swift/swift-utils-build-script-impl-flags.patch index 893743aab..f59a833c7 100644 --- a/packages/swift/swift-utils-build-script-impl-flags.patch +++ b/packages/swift/swift-utils-build-script-impl-flags.patch @@ -2,31 +2,6 @@ diff --git a/swift/utils/build-script-impl b/swift/utils/build-script-impl index b1d060328bc..218c9215260 100755 --- a/swift/utils/build-script-impl +++ b/swift/utils/build-script-impl -@@ -703,6 +705,7 @@ function set_build_options_for_host() { - llvm_cmake_options+=( - -DLLVM_TOOL_COMPILER_RT_BUILD:BOOL="$(false_true ${SKIP_BUILD_COMPILER_RT})" - -DLLVM_BUILD_EXTERNAL_COMPILER_RT:BOOL="$(false_true ${SKIP_BUILD_COMPILER_RT})" -+ -DCOMPILER_RT_INCLUDE_TESTS:BOOL="OFF" - ) - fi - -@@ -743,6 +743,7 @@ function set_build_options_for_host() { - - llvm_cmake_options+=( - -DLLVM_LIT_ARGS="${LLVM_LIT_ARGS} -j ${BUILD_JOBS}" -+ -DDEFAULT_SYSROOT:STRING="$(dirname @TERMUX_PREFIX@)" - ) - swift_cmake_options+=( - -DLLVM_LIT_ARGS="${LLVM_LIT_ARGS} -j ${BUILD_JOBS}" -@@ -1028,7 +1032,7 @@ function make_relative_symlink() { - CROSS_COMPILE_HOSTS=($CROSS_COMPILE_HOSTS) - for t in "${CROSS_COMPILE_HOSTS[@]}"; do - case ${t} in -- macosx-arm64* | iphone* | appletv* | watch* | linux-armv6 | linux-armv7 ) -+ macosx-arm64* | iphone* | appletv* | watch* | linux-armv6 | linux-armv7 | android-* ) - ;; - *) - echo "Unknown host to cross-compile for: ${t}" @@ -1060,7 +1064,7 @@ function get_host_install_destdir() { # This assumes that all hosts are merged to the lipo. local host_install_destdir="${INSTALL_DESTDIR}" @@ -36,49 +11,10 @@ index b1d060328bc..218c9215260 100755 fi else local host_install_destdir="${INSTALL_DESTDIR}" -@@ -1422,6 +1426,38 @@ function swift_c_flags() { - fi - } - -+function common_swift_flags() { -+ local host=$1 -+ if [[ $(is_cross_tools_host ${host}) ]] ; then -+ case $host in -+ android-*) -+ echo -n "${TERMUX_SWIFT_FLAGS}" -+ ;; -+ *) -+ echo "error: Swift cross-compilation flags for ${host} have not been set." -+ exit 1 -+ ;; -+ esac -+ fi -+} -+ -+function add_cross_cmake_options() { -+ local host=$1 -+ local -n options=$2 -+ case $host in -+ android-*) -+ local NDK_ARCH=$ANDROID_ARCH -+ test $NDK_ARCH == 'armv7' && NDK_ARCH='armv7-a' -+ options+=( -+ -DCMAKE_SYSTEM_NAME=Android -+ -DCMAKE_SYSTEM_VERSION=${ANDROID_API_LEVEL} -+ -DCMAKE_SYSTEM_PROCESSOR=${NDK_ARCH} -+ -DCMAKE_ANDROID_STANDALONE_TOOLCHAIN:PATH=${ANDROID_NDK} -+ ) -+ ;; -+ esac -+} -+ - function cmake_config_opt() { - product=$1 - if [[ "${CMAKE_GENERATOR}" == "Xcode" ]] ; then @@ -1546,6 +1578,10 @@ for host in "${ALL_HOSTS[@]}"; do ) if [[ $(is_cross_tools_host ${host}) ]] ; then - add_cross_cmake_options ${host} cmake_options + cmake_options+=("${SWIFT_TARGET_CMAKE_OPTIONS[@]}") + cmake_options+=( + -DCMAKE_C_FLAGS="$CFLAGS --target=$CCTERMUX_HOST_PLATFORM $CPPFLAGS" + -DCMAKE_CXX_FLAGS="$CXXFLAGS --target=$CCTERMUX_HOST_PLATFORM $CPPFLAGS" @@ -89,7 +25,7 @@ index b1d060328bc..218c9215260 100755 @@ -1652,6 +1688,10 @@ for host in "${ALL_HOSTS[@]}"; do -DLLVM_NATIVE_BUILD=$(build_directory "${LOCAL_HOST}" llvm) ) - add_cross_cmake_options ${host} cmake_options + cmake_options+=("${SWIFT_TARGET_CMAKE_OPTIONS[@]}") + cmake_options+=( + -DCMAKE_CXX_FLAGS="$CXXFLAGS --target=$CCTERMUX_HOST_PLATFORM $CPPFLAGS" + -DCMAKE_EXE_LINKER_FLAGS="$LDFLAGS --target=$CCTERMUX_HOST_PLATFORM" @@ -97,15 +33,6 @@ index b1d060328bc..218c9215260 100755 fi ;; -@@ -1768,7 +1812,7 @@ for host in "${ALL_HOSTS[@]}"; do - ) - fi - -- if [[ ! "${SKIP_BUILD_ANDROID}" ]]; then -+ if [[ $(is_cross_tools_host ${host}) ]] ; then - cmake_options=( - "${cmake_options[@]}" - -DSWIFT_ANDROID_NDK_PATH:STRING="${ANDROID_NDK}" @@ -2045,6 +2045,8 @@ for host in "${ALL_HOSTS[@]}"; do cmake_options+=( -DCMAKE_FIND_ROOT_PATH:PATH="${CROSS_COMPILE_DEPS_PATH}" @@ -115,24 +42,20 @@ index b1d060328bc..218c9215260 100755 ) fi -@@ -2199,6 +2201,9 @@ for host in "${ALL_HOSTS[@]}"; do +@@ -2199,6 +2201,8 @@ for host in "${ALL_HOSTS[@]}"; do cmake_options+=( -DCMAKE_FIND_ROOT_PATH:PATH="${CROSS_COMPILE_DEPS_PATH}" -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER + -DCMAKE_C_FLAGS="$CFLAGS --target=$CCTERMUX_HOST_PLATFORM $CPPFLAGS" + -DCMAKE_EXE_LINKER_FLAGS="$LDFLAGS --target=$CCTERMUX_HOST_PLATFORM" -+ -DCMAKE_HAVE_LIBC_PTHREAD=True ) fi - -@@ -2239,6 +2243,14 @@ for host in "${ALL_HOSTS[@]}"; do + if [[ "${host}" == "android-"* ]]; then +@@ -2239,6 +2243,11 @@ for host in "${ALL_HOSTS[@]}"; do ) if [[ $(is_cross_tools_host ${host}) ]] ; then - add_cross_cmake_options ${host} cmake_options + cmake_options+=("${SWIFT_TARGET_CMAKE_OPTIONS[@]}") + cmake_options+=( -+ -DCMAKE_FIND_ROOT_PATH:PATH="${CROSS_COMPILE_DEPS_PATH}" -+ -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER -+ -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY + -DCMAKE_C_FLAGS="$CFLAGS --target=$CCTERMUX_HOST_PLATFORM $CPPFLAGS" + -DCMAKE_EXE_LINKER_FLAGS="$LDFLAGS --target=$CCTERMUX_HOST_PLATFORM" + -DCMAKE_SHARED_LINKER_FLAGS="$LDFLAGS --target=$CCTERMUX_HOST_PLATFORM" diff --git a/packages/swift/swift-vend-swiftpm-flags.patch b/packages/swift/swift-vend-swiftpm-flags.patch new file mode 100644 index 000000000..20d86673e --- /dev/null +++ b/packages/swift/swift-vend-swiftpm-flags.patch @@ -0,0 +1,109 @@ +diff --git a/swift/utils/build-script b/swift/utils/build-script +index e34ac8ba03..bc4ddb47d9 100755 +--- a/swift/utils/build-script ++++ b/swift/utils/build-script +@@ -1005,9 +1005,14 @@ class BuildScriptInvocation(object): + # Core Lipo... + self._execute_merged_host_lipo_core_action() + ++ non_darwin_cross_compile_host_names = [target for target in ++ self.args.cross_compile_hosts if not ++ StdlibDeploymentTarget.get_target_for_name(target).platform.is_darwin] + # Non-build-script-impl products... +- # Note: currently only supports building for the host. +- for host_target in [self.args.host_target]: ++ # Note: currently only supports cross-compiling for non-Darwin hosts. ++ for host_target in [self.args.host_target] + non_darwin_cross_compile_host_names: ++ if self.args.skip_local_build and host_target == self.args.host_target: ++ continue + for product_class in product_classes: + if product_class.is_build_script_impl_product(): + continue +diff --git a/swift/utils/swift_build_support/swift_build_support/products/product.py b/swift/utils/swift_build_support/swift_build_support/products/product.py +index 075b934d10..7cd51690db 100644 +--- a/swift/utils/swift_build_support/swift_build_support/products/product.py ++++ b/swift/utils/swift_build_support/swift_build_support/products/product.py +@@ -174,8 +174,12 @@ class Product(object): + + install_destdir = self.args.install_destdir + if self.args.cross_compile_hosts: +- build_root = os.path.dirname(self.build_dir) +- install_destdir = '%s/intermediate-install/%s' % (build_root, host_target) ++ if host_target == self.args.host_target: ++ build_root = os.path.dirname(self.build_dir) ++ install_destdir = '%s/intermediate-install/%s' % (build_root, ++ host_target) ++ else: ++ install_destdir = os.path.join(install_destdir, host_target) + return targets.toolchain_path(install_destdir, + self.args.install_prefix) + +diff --git a/swift/utils/swift_build_support/swift_build_support/products/swiftpm.py b/swift/utils/swift_build_support/swift_build_support/products/swiftpm.py +index 25e982e23f..3127069e19 100644 +--- a/swift/utils/swift_build_support/swift_build_support/products/swiftpm.py ++++ b/swift/utils/swift_build_support/swift_build_support/products/swiftpm.py +@@ -23,6 +23,7 @@ from . import product + from . import swift + from . import xctest + from .. import shell ++from ..targets import StdlibDeploymentTarget + + + class SwiftPM(product.Product): +@@ -88,9 +89,18 @@ class SwiftPM(product.Product): + + # Pass Cross compile host info + if self.has_cross_compile_hosts(self.args): ++ helper_cmd += ['--skip-cmake-bootstrap'] + helper_cmd += ['--cross-compile-hosts'] +- for cross_compile_host in self.args.cross_compile_hosts: +- helper_cmd += [cross_compile_host] ++ if host_target == self.args.host_target: ++ for cross_compile_host in self.args.cross_compile_hosts: ++ helper_cmd += [cross_compile_host] ++ else: ++ helper_cmd += [host_target] ++ install_dir = self.args.install_prefix ++ helper_cmd += ['--cross-compile-flags', ++ StdlibDeploymentTarget.get_target_for_name(host_target) ++ .swift_flags(self.args, resource_dir_root=install_dir)] ++ + + helper_cmd.extend(additional_params) + +@@ -122,8 +133,9 @@ class SwiftPM(product.Product): + def get_install_destdir(self, args, host_target, build_dir): + install_destdir = args.install_destdir + if self.has_cross_compile_hosts(args): +- build_root = os.path.dirname(build_dir) +- install_destdir = '%s/intermediate-install/%s' % (build_root, host_target) ++ if host_target == args.host_target: ++ build_root = os.path.dirname(build_dir) ++ install_destdir = '%s/intermediate-install/%s' % (build_root, host_target) + return install_destdir + + def install(self, host_target): +diff --git a/swift/utils/swift_build_support/swift_build_support/targets.py b/swift/utils/swift_build_support/swift_build_support/targets.py +index 61778ad983..57df12a555 100644 +--- a/swift/utils/swift_build_support/swift_build_support/targets.py ++++ b/swift/utils/swift_build_support/swift_build_support/targets.py +@@ -152,13 +152,16 @@ class Target(object): + def name(self): + return "{}-{}".format(self.platform.name, self.arch) + +- def swift_flags(self, args): ++ def swift_flags(self, args, resource_dir_root=""): + flags = '' + if self.platform.name == 'android': + flags = '-target %s-unknown-linux-android%s ' % (self.arch, + args.android_api_level) +- flags += '-resource-dir %s/swift-%s/lib/swift ' % ( +- args.build_root, self.name) ++ if resource_dir_root: ++ flags += '-resource-dir %s/lib/swift ' % (resource_dir_root) ++ else: ++ flags += '-resource-dir %s/swift-%s/lib/swift ' % ( ++ args.build_root, self.name) + flags += '-sdk %s/sysroot ' % (args.android_ndk) + flags += '-tools-directory %s/bin' % (args.android_ndk) + flags += ' -Xlinker -rpath -Xlinker @TERMUX_PREFIX@/lib' diff --git a/packages/swift/swift-x86_64.patch b/packages/swift/swift-x86_64.patch deleted file mode 100644 index bc0806171..000000000 --- a/packages/swift/swift-x86_64.patch +++ /dev/null @@ -1,75 +0,0 @@ -commit b7d26337e3252f013d271cd001635e260a50eb77 -Date: Wed Nov 11 01:24:23 2020 +0530 - - [android] Add support for x86_64 arch - -diff --git a/swift/utils/build-script b/swift/utils/build-script -index 639f790fe35..8b1c1cd4fde 100755 ---- a/swift/utils/build-script -+++ b/swift/utils/build-script -@@ -349,6 +349,9 @@ def apply_default_arguments(toolchain, args): - elif args.android_arch == "aarch64": - args.stdlib_deployment_targets.append( - StdlibDeploymentTarget.Android.aarch64.name) -+ elif args.android_arch == "x86_64": -+ args.stdlib_deployment_targets.append( -+ StdlibDeploymentTarget.Android.x86_64.name) - - # Infer platform flags from manually-specified configure targets. - # This doesn't apply to Darwin platforms, as they are -diff --git a/swift/utils/build-script-impl b/swift/utils/build-script-impl -index f7fd838905c..b99da016f5c 100755 ---- a/swift/utils/build-script-impl -+++ b/swift/utils/build-script-impl -@@ -414,7 +414,8 @@ function verify_host_is_supported() { - | watchsimulator-arm64 \ - | watchos-armv7k \ - | android-armv7 \ -- | android-aarch64) -+ | android-aarch64 \ -+ | android-x86_64) - ;; - *) - echo "Unknown host tools target: ${host}" -@@ -458,6 +459,10 @@ function set_build_options_for_host() { - SWIFT_HOST_TRIPLE="armv7-unknown-linux-androideabi${ANDROID_API_LEVEL}" - llvm_target_arch="ARM" - ;; -+ android-x86_64) -+ SWIFT_HOST_TRIPLE="x86_64-unknown-linux-android${ANDROID_API_LEVEL}" -+ llvm_target_arch="X86" -+ ;; - linux-armv6) - SWIFT_HOST_TRIPLE="armv6-unknown-linux-gnueabihf" - llvm_target_arch="ARM" -diff --git a/swift/utils/build_swift/build_swift/driver_arguments.py b/swift/utils/build_swift/build_swift/driver_arguments.py -index cb1c5c0b0e3..45d76b51951 100644 ---- a/swift/utils/build_swift/build_swift/driver_arguments.py -+++ b/swift/utils/build_swift/build_swift/driver_arguments.py -@@ -1087,10 +1087,10 @@ def create_argument_parser(): - android.adb.commands.DEVICE_TEMP_DIR)) - - option('--android-arch', store, -- choices=['armv7', 'aarch64'], -+ choices=['armv7', 'aarch64', 'x86_64'], - default='armv7', -- help='The Android target architecture when building for Android. ' -- 'Currently only armv7 and aarch64 are supported. ' -+ help='The target architecture when building for Android. ' -+ 'Currently, only armv7, aarch64, and x86_64 are supported. ' - '%(default)s is the default.') - - # ------------------------------------------------------------------------- -diff --git a/swift/utils/swift_build_support/swift_build_support/targets.py b/swift/utils/swift_build_support/swift_build_support/targets.py -index 9370a1a82e0..02613404af9 100644 ---- a/swift/utils/swift_build_support/swift_build_support/targets.py -+++ b/swift/utils/swift_build_support/swift_build_support/targets.py -@@ -201,7 +201,7 @@ class StdlibDeploymentTarget(object): - - Cygwin = Platform("cygwin", archs=["x86_64"]) - -- Android = AndroidPlatform("android", archs=["armv7", "aarch64"]) -+ Android = AndroidPlatform("android", archs=["armv7", "aarch64", "x86_64"]) - - Windows = Platform("windows", archs=["x86_64"]) - diff --git a/packages/swift/swiftpm-Utilities-bootstrap b/packages/swift/swiftpm-Utilities-bootstrap index 6cef92275..eb9470e3e 100644 --- a/packages/swift/swiftpm-Utilities-bootstrap +++ b/packages/swift/swiftpm-Utilities-bootstrap @@ -1,66 +1,148 @@ diff --git a/swiftpm/Utilities/bootstrap b/swiftpm/Utilities/bootstrap -index f7439427..5f284c48 100755 +index ead6af68..95a8427f 100755 --- a/swiftpm/Utilities/bootstrap +++ b/swiftpm/Utilities/bootstrap -@@ -167,7 +167,7 @@ def parse_build_args(args): +@@ -143,6 +143,9 @@ def add_build_args(parser): + dest="cross_compile_hosts", + help="List of cross compile hosts targets.", + default=[]) ++ parser.add_argument( ++ "--cross-compile-flags", ++ help="Swift flags to cross-compile the PackageDescription libraries") + + def add_test_args(parser): + """Configures the parser with the arguments necessary for the test action.""" +@@ -195,8 +198,12 @@ def parse_build_args(args): args.clang_path = get_clang_path(args) args.cmake_path = get_cmake_path(args) args.ninja_path = get_ninja_path(args) - if args.cross_compile_hosts: # Use XCBuild target directory when building for multiple arches. -+ if args.cross_compile_hosts and "macosx-arm64" in args.cross_compile_hosts: # Use XCBuild target directory when building for multiple arches. - args.target_dir = os.path.join(args.build_dir, "apple/Products") +- args.target_dir = os.path.join(args.build_dir, "apple/Products") ++ if args.cross_compile_hosts: ++ if "macosx-arm64" in args.cross_compile_hosts: ++ # Use XCBuild target directory when building for multiple arches. ++ args.target_dir = os.path.join(args.build_dir, "apple/Products") ++ elif re.match('android-', args.cross_compile_hosts): ++ args.target_dir = os.path.join(args.build_dir, get_build_target(args,cross_compile=True)) else: args.target_dir = os.path.join(args.build_dir, get_build_target(args)) -@@ -232,7 +232,7 @@ def get_ninja_path(args): - def get_build_target(args): + args.bootstrap_dir = os.path.join(args.target_dir, "bootstrap") +@@ -270,10 +277,13 @@ def get_ninja_path(args): + else: + return call_output(["which", "ninja"], verbose=args.verbose) + +-def get_build_target(args): ++def get_build_target(args, cross_compile=False): """Returns the target-triple of the current machine.""" try: - target_info_json = subprocess.check_output([args.swiftc_path, '-print-target-info'], stderr=subprocess.PIPE, universal_newlines=True).strip() -+ target_info_json = subprocess.check_output([args.swiftc_path, '-print-target-info', '-target', '@SWIFT_ARCH@-unknown-linux-android'], stderr=subprocess.PIPE, universal_newlines=True).strip() ++ if cross_compile: ++ target_info_json = subprocess.check_output([args.swiftc_path, '-print-target-info'] + args.cross_compile_flags.split(), stderr=subprocess.PIPE, universal_newlines=True).strip() ++ else: ++ target_info_json = subprocess.check_output([args.swiftc_path, '-print-target-info'], stderr=subprocess.PIPE, universal_newlines=True).strip() args.target_info = json.loads(target_info_json) return args.target_info["target"]["unversionedTriple"] except Exception as e: -@@ -366,7 +368,13 @@ def build_with_cmake(args, cmake_args, source_path, build_dir): +@@ -307,8 +317,11 @@ def build(args): + build_yams(args) + build_swift_argument_parser(args) + build_swift_driver(args) ++ build_swiftpm_with_cmake(args) ++ ++ if args.cross_compile_flags: ++ build_packagedescription_libs_with_cmake(args) + +- build_swiftpm_with_cmake(args) + build_swiftpm_with_swiftpm(args,integrated_swift_driver=False) + + def test(args): +@@ -441,11 +454,15 @@ def install_binary(args, binary, dest_dir): + # Build functions + # ----------------------------------------------------------- + +-def build_with_cmake(args, cmake_args, source_path, build_dir, targets=[]): ++def build_with_cmake(args, cmake_args, source_path, build_dir, targets=[], cross_compile=False): """Runs CMake if needed, then builds with Ninja.""" cache_path = os.path.join(build_dir, "CMakeCache.txt") if args.reconfigure or not os.path.isfile(cache_path) or not args.swiftc_path in open(cache_path).read(): - swift_flags = "" -+ if args.cross_compile_hosts: -+ # The termux prefix flag is needed because the Swift flags pass the -+ # standalone toolchain as the sdk, ie the sysroot. -+ swift_flags = os.getenv("TERMUX_SWIFTPM_FLAGS") + " -resource-dir @TERMUX_PREFIX@/lib/swift -Xcc -I@TERMUX_PREFIX@/include" ++ if cross_compile: ++ swift_flags = args.cross_compile_flags + " -Xcc -I@TERMUX_PREFIX@/include" + else: + swift_flags = "" + if args.sysroot: swift_flags = "-sdk %s" % args.sysroot -@@ -461,6 +463,9 @@ def build_swiftpm_with_cmake(args): - ] - else: - cmake_flags = [ "-DFIND_PM_DEPS:BOOL=NO" ] -+ if "android-@SWIFT_ARCH@" in args.cross_compile_hosts: -+ cmake_flags.append("-DCMAKE_SYSTEM_NAME=Android") -+ cmake_flags.append("-DCMAKE_SYSTEM_VERSION=1") +@@ -567,29 +584,37 @@ def add_rpath_for_cmake_build(args, rpath): + note(' '.join(add_rpath_cmd)) + subprocess.call(add_rpath_cmd, stderr=subprocess.PIPE) + ++def build_packagedescription_libs_with_cmake(args): ++ """Builds the PackageDescription libraries using CMake.""" ++ note("Building PackageDescription libraries (with CMake)") ++ ++ cmake_flags = ["-DFIND_PM_DEPS:BOOL=NO"] ++ targets = ["PD4", "PD4_2"] ++ if re.match('android-', args.cross_compile_hosts): ++ cmake_flags.append("-DCMAKE_SYSTEM_NAME=Android") ++ cmake_flags.append("-DCMAKE_SYSTEM_VERSION=1") ++ ++ build_with_cmake(args, cmake_flags, args.project_root, args.bootstrap_dir, ++ targets, cross_compile=True) ++ + def build_swiftpm_with_cmake(args): + """Builds SwiftPM using CMake.""" + note("Building SwiftPM (with CMake)") + +- if args.bootstrap: +- cmake_flags = [ +- get_llbuild_cmake_arg(args), +- "-DTSC_DIR=" + os.path.join(args.tsc_build_dir, "cmake/modules"), +- "-DYams_DIR=" + os.path.join(args.yams_build_dir, "cmake/modules"), +- "-DArgumentParser_DIR=" + os.path.join(args.swift_argument_parser_build_dir, "cmake/modules"), +- "-DSwiftDriver_DIR=" + os.path.join(args.swift_driver_build_dir, "cmake/modules"), +- "-DFIND_PM_DEPS:BOOL=YES", +- ] +- else: +- cmake_flags = [ "-DFIND_PM_DEPS:BOOL=NO" ] ++ cmake_flags = [ ++ get_llbuild_cmake_arg(args), ++ "-DTSC_DIR=" + os.path.join(args.tsc_build_dir, "cmake/modules"), ++ "-DYams_DIR=" + os.path.join(args.yams_build_dir, "cmake/modules"), ++ "-DArgumentParser_DIR=" + os.path.join(args.swift_argument_parser_build_dir, "cmake/modules"), ++ "-DSwiftDriver_DIR=" + os.path.join(args.swift_driver_build_dir, "cmake/modules"), ++ "-DFIND_PM_DEPS:BOOL=YES", ++ ] if platform.system() == 'Darwin': cmake_flags.append("-DCMAKE_C_FLAGS=-target %s%s" % (get_build_target(args), g_macos_deployment_target)) -@@ -622,8 +631,8 @@ def get_swiftpm_flags(args): + cmake_flags.append("-DCMAKE_OSX_DEPLOYMENT_TARGET=%s" % g_macos_deployment_target) + +- targets = [] if args.bootstrap else ["PD4", "PD4_2"] +- +- build_with_cmake(args, cmake_flags, args.project_root, args.bootstrap_dir, targets) ++ build_with_cmake(args, cmake_flags, args.project_root, args.bootstrap_dir) + + if args.llbuild_link_framework: + add_rpath_for_cmake_build(args, args.llbuild_build_dir) +@@ -763,8 +788,10 @@ def get_swiftpm_flags(args): ) # Don't use GNU strerror_r on Android. - if 'ANDROID_DATA' in os.environ: -- build_flags.extend(["-Xswiftc", "-Xcc", "-Xswiftc", "-U_GNU_SOURCE"]) -+ build_flags.extend(["-Xswiftc", "-Xcc", "-Xswiftc", "-U_GNU_SOURCE"]) -+ build_flags.extend(["-Xlinker", "-landroid-spawn"]) ++ if 'ANDROID_DATA' in os.environ or re.match( ++ 'android-', args.cross_compile_hosts): + build_flags.extend(["-Xswiftc", "-Xcc", "-Xswiftc", "-U_GNU_SOURCE"]) ++ build_flags.extend(["-Xlinker", "-landroid-spawn"]) # On ELF platforms, remove the host toolchain's stdlib absolute rpath from # installed executables and shared libraries. -@@ -634,6 +643,12 @@ def get_swiftpm_flags(args): +@@ -775,6 +802,12 @@ def get_swiftpm_flags(args): cross_compile_hosts = args.cross_compile_hosts if build_target == 'x86_64-apple-macosx' and "macosx-arm64" in cross_compile_hosts: build_flags += ["--arch", "x86_64", "--arch", "arm64"] -+ elif "android-@SWIFT_ARCH@" in cross_compile_hosts: ++ elif cross_compile_hosts and re.match('android-', cross_compile_hosts): + build_flags.extend([ + "--destination", "@TERMUX_PKG_BUILDDIR@/swiftpm-android-flags.json", + "-Xlinker", "-rpath", "-Xlinker", "@TERMUX_PREFIX@/lib", diff --git a/packages/swift/swiftpm-android-flags.json b/packages/swift/swiftpm-android-flags.json old mode 100755 new mode 100644 diff --git a/packages/swift/swiftpm-no-cmake-bootstrap.patch b/packages/swift/swiftpm-no-cmake-bootstrap.patch deleted file mode 100644 index 4d910e36a..000000000 --- a/packages/swift/swiftpm-no-cmake-bootstrap.patch +++ /dev/null @@ -1,165 +0,0 @@ -commit c815b71f466ff1b649f73536a81c52cd1981a34b -Date: Sat, 24 Oct 2020 13:32:23 +0530 -Subject: [bootstrap] Add a --skip-cmake-bootstrap flag to use a - prebuilt swift-build - -Rather than building with CMake and then using that freshly built swift-build -to build it with itself, add this flag to check for a prebuilt swift-build next -to swiftc and use that instead if it's there. The PackageDescription libraries -are still built using CMake, as this repo's Package.swift only builds the latest -4_2 version. - -diff --git a/swiftpm/CMakeLists.txt b/swiftpm/CMakeLists.txt -index 405b3c56..f1fcf16d 100644 ---- a/swiftpm/CMakeLists.txt -+++ b/swiftpm/CMakeLists.txt -@@ -31,13 +31,16 @@ endif() - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) - - option(BUILD_SHARED_LIBS "Build shared libraryes by default" YES) -+option(FIND_PM_DEPS "Search for all external Package Manager dependencies" YES) - -+if(FIND_PM_DEPS) - find_package(TSC CONFIG REQUIRED) - - find_package(LLBuild CONFIG) - if(NOT LLBuild_FOUND) - find_package(LLBuild REQUIRED) - endif() -+endif() - - find_package(dispatch QUIET) - find_package(Foundation QUIET) -diff --git a/swiftpm/Utilities/bootstrap b/swiftpm/Utilities/bootstrap -index 4cc7dd01..cd13cda4 100755 ---- a/swiftpm/Utilities/bootstrap -+++ b/swiftpm/Utilities/bootstrap -@@ -113,6 +113,10 @@ def add_build_args(parser): - "--release", - action="store_true", - help="enables building SwiftPM in release mode") -+ parser.add_argument( -+ "--skip-cmake-bootstrap", -+ action="store_true", -+ help="build with prebuilt package manager in toolchain if it exists") - parser.add_argument( - "--libswiftpm-install-dir", - metavar='PATH', -@@ -174,6 +178,8 @@ def parse_build_args(args): - args.bootstrap_dir = os.path.join(args.target_dir, "bootstrap") - args.conf = 'release' if args.release else 'debug' - args.bin_dir = os.path.join(args.target_dir, args.conf) -+ args.bootstrap = not args.skip_cmake_bootstrap or \ -+ not os.path.exists(os.path.join(os.path.split(args.swiftc_path)[0], "swift-build")) - - def parse_test_args(args): - """Parses and cleans arguments necessary for the test action.""" -@@ -270,7 +276,8 @@ def build(args): - if not args.llbuild_build_dir: - build_llbuild(args) - -- build_tsc(args) -+ if args.bootstrap: -+ build_tsc(args) - build_swiftpm_with_cmake(args) - build_swiftpm_with_swiftpm(args) - -@@ -376,7 +383,7 @@ def install_binary(args, binary, dest_dir): - # Build functions - # ----------------------------------------------------------- - --def build_with_cmake(args, cmake_args, source_path, build_dir): -+def build_with_cmake(args, cmake_args, source_path, build_dir, targets=[]): - """Runs CMake if needed, then builds with Ninja.""" - cache_path = os.path.join(build_dir, "CMakeCache.txt") - if args.reconfigure or not os.path.isfile(cache_path) or not args.swiftc_path in open(cache_path).read(): -@@ -404,6 +411,8 @@ def build_with_cmake(args, cmake_args, source_path, build_dir): - if args.verbose: - ninja_cmd.append("-v") - -+ ninja_cmd += targets -+ - call(ninja_cmd, cwd=build_dir, verbose=args.verbose) - - def build_llbuild(args): -@@ -444,16 +453,22 @@ def build_swiftpm_with_cmake(args): - """Builds SwiftPM using CMake.""" - note("Building SwiftPM (with CMake)") - -- cmake_flags = [ -- get_llbuild_cmake_arg(args), -- "-DTSC_DIR=" + os.path.join(args.tsc_build_dir, "cmake/modules"), -- ] -+ if args.bootstrap: -+ cmake_flags = [ -+ get_llbuild_cmake_arg(args), -+ "-DTSC_DIR=" + os.path.join(args.tsc_build_dir, "cmake/modules"), -+ "-DFIND_PM_DEPS:BOOL=YES", -+ ] -+ else: -+ cmake_flags = [ "-DFIND_PM_DEPS:BOOL=NO" ] - - if platform.system() == 'Darwin': - cmake_flags.append("-DCMAKE_C_FLAGS=-target %s%s" % (get_build_target(args), g_macos_deployment_target)) - cmake_flags.append("-DCMAKE_OSX_DEPLOYMENT_TARGET=%s" % g_macos_deployment_target) - -- build_with_cmake(args, cmake_flags, args.project_root, args.bootstrap_dir) -+ targets = [] if args.bootstrap else ["PD4", "PD4_2"] -+ -+ build_with_cmake(args, cmake_flags, args.project_root, args.bootstrap_dir, targets) - - if args.llbuild_link_framework: - swift_build = os.path.join(args.bootstrap_dir, "bin/swift-build") -@@ -463,15 +478,21 @@ def build_swiftpm_with_cmake(args): - - def build_swiftpm_with_swiftpm(args): - """Builds SwiftPM using the version of SwiftPM built with CMake.""" -- note("Building SwiftPM (with swift-build)") - - swiftpm_args = [ - "SWIFT_EXEC=" + args.swiftc_path, -- "SWIFTPM_PD_LIBS=" + os.path.join(args.bootstrap_dir, "pm"), -- os.path.join(args.bootstrap_dir, "bin/swift-build"), -- "--disable-sandbox", - ] - -+ if args.bootstrap: -+ note("Building SwiftPM (with a freshly built swift-build)") -+ swiftpm_args.append("SWIFTPM_PD_LIBS=" + os.path.join(args.bootstrap_dir, "pm")) -+ swiftpm_args.append(os.path.join(args.bootstrap_dir, "bin/swift-build")) -+ else: -+ note("Building SwiftPM (with a prebuilt swift-build)") -+ swiftpm_args.append(os.path.join(os.path.split(args.swiftc_path)[0], "swift-build")) -+ -+ swiftpm_args.append("--disable-sandbox") -+ - call_swiftpm(args, swiftpm_args) - - # Setup symlinks that'll allow using swiftpm from the build directory. -@@ -527,16 +548,17 @@ def get_swiftpm_env_cmd(args): - env_cmd.append("SWIFTCI_USE_LOCAL_DEPS=1") - env_cmd.append("SWIFTPM_MACOS_DEPLOYMENT_TARGET=%s" % g_macos_deployment_target) - -- libs_joined = ":".join([ -- os.path.join(args.bootstrap_dir, "lib"), -- os.path.join(args.tsc_build_dir, "lib"), -- os.path.join(args.llbuild_build_dir, "lib"), -- ]) -+ if args.bootstrap: -+ libs_joined = ":".join([ -+ os.path.join(args.bootstrap_dir, "lib"), -+ os.path.join(args.tsc_build_dir, "lib"), -+ os.path.join(args.llbuild_build_dir, "lib"), -+ ]) - -- if platform.system() == 'Darwin': -- env_cmd.append("DYLD_LIBRARY_PATH=%s" % libs_joined) -- else: -- env_cmd.append("LD_LIBRARY_PATH=%s" % libs_joined) -+ if platform.system() == 'Darwin': -+ env_cmd.append("DYLD_LIBRARY_PATH=%s" % libs_joined) -+ else: -+ env_cmd.append("LD_LIBRARY_PATH=%s" % libs_joined) - - return env_cmd - diff --git a/packages/swift/swiftpm-rpath.patch b/packages/swift/swiftpm-rpath.patch deleted file mode 100644 index 5ecf56713..000000000 --- a/packages/swift/swiftpm-rpath.patch +++ /dev/null @@ -1,19 +0,0 @@ -commit 75be121002348a7f0c3995f6a6ff63fcbe21aaed -Date: Tue Mar 31 01:14:18 2020 +0530 - - [PackageDescription] Add missing relative SDK rpath to libPackageDescription.so shared libraries (#2661) - -diff --git a/swiftpm/Sources/PackageDescription/CMakeLists.txt b/swiftpm/Sources/PackageDescription/CMakeLists.txt -index ee9eda32..ea704129 100644 ---- a/swiftpm/Sources/PackageDescription/CMakeLists.txt -+++ b/swiftpm/Sources/PackageDescription/CMakeLists.txt -@@ -47,6 +47,9 @@ foreach(PACKAGE_DESCRIPTION_VERSION 4 4_2) - Foundation) - target_link_options(PD${PACKAGE_DESCRIPTION_VERSION} PRIVATE - "SHELL:-no-toolchain-stdlib-rpath") -+ set_target_properties(PD${PACKAGE_DESCRIPTION_VERSION} PROPERTIES -+ BUILD_WITH_INSTALL_RPATH TRUE -+ INSTALL_RPATH "$ORIGIN/../../$") - endif() - - if(CMAKE_HOST_SYSTEM_NAME STREQUAL Darwin) diff --git a/packages/swift/swiftpm-swift-tools-support-core.patch b/packages/swift/swiftpm-swift-tools-support-core.patch deleted file mode 100644 index 6da62fe60..000000000 --- a/packages/swift/swiftpm-swift-tools-support-core.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff --git a/swiftpm/swift-tools-support-core/Sources/TSCBasic/CMakeLists.txt b/swiftpm/swift-tools-support-core/Sources/TSCBasic/CMakeLists.txt -index bbc43d98..bc5ee576 100644 ---- a/swiftpm/swift-tools-support-core/Sources/TSCBasic/CMakeLists.txt -+++ b/swiftpm/swift-tools-support-core/Sources/TSCBasic/CMakeLists.txt -@@ -53,7 +53,7 @@ target_link_libraries(TSCBasic PUBLIC - TSCLibc) - if(NOT CMAKE_SYSTEM_NAME STREQUAL Darwin) - target_link_libraries(TSCBasic PUBLIC -- Foundation) -+ Foundation android-spawn) - endif() - # NOTE(compnerd) workaround for CMake not setting up include flags yet - set_target_properties(TSCBasic PROPERTIES -diff --git a/swiftpm/swift-tools-support-core/Sources/TSCUtility/FSWatch.swift b/swiftpm/swift-tools-support-core/Sources/TSCUtility/FSWatch.swift -index 0658e55b..9221950b 100644 ---- a/swiftpm/swift-tools-support-core/Sources/TSCUtility/FSWatch.swift -+++ b/swiftpm/swift-tools-support-core/Sources/TSCUtility/FSWatch.swift -@@ -429,7 +429,11 @@ public final class Inotify { - - private func FD_ZERO(_ set: inout fd_set) { - #if os(Android) -+ #if arch(arm) -+ set.fds_bits = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) -+ #else - set.fds_bits = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) -+ #endif - #else - set.__fds_bits = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) - #endif