diff --git a/packages/libdispatch/build.sh b/packages/libdispatch/build.sh index adffc0ec00f71d1..b4b4ac69cf8d231 100644 --- a/packages/libdispatch/build.sh +++ b/packages/libdispatch/build.sh @@ -3,8 +3,7 @@ TERMUX_PKG_DESCRIPTION="The libdispatch project, for concurrency on multicore ha TERMUX_PKG_LICENSE="Apache-2.0" TERMUX_PKG_MAINTAINER="@finagolfin" TERMUX_PKG_VERSION="1:5.9" -TERMUX_PKG_REVISION=1 -TERMUX_PKG_SRCURL=https://github.com/apple/swift-corelibs-libdispatch/archive/swift-${TERMUX_PKG_VERSION:2}-RELEASE.tar.gz -TERMUX_PKG_SHA256=db30ccf6b20963112ab3aad256c2e49a18041a9806cf2f05854fe63a90d688c2 +TERMUX_PKG_SRCURL=https://github.com/apple/swift-corelibs-libdispatch/archive/swift-${TERMUX_PKG_VERSION:2}-DEVELOPMENT-SNAPSHOT-2023-11-17-a.tar.gz +TERMUX_PKG_SHA256=3ea7b81a7361ca94f1547aca97524ee538cf578455610498e6a5b0efbb4c58df TERMUX_PKG_AUTO_UPDATE=false TERMUX_PKG_DEPENDS="libc++, libblocksruntime" diff --git a/packages/llbuild/build.sh b/packages/llbuild/build.sh index 13c288fef96c722..ef3530178684da9 100644 --- a/packages/llbuild/build.sh +++ b/packages/llbuild/build.sh @@ -3,8 +3,7 @@ TERMUX_PKG_DESCRIPTION="A low-level build system, used by the Swift Package Mana TERMUX_PKG_LICENSE="Apache-2.0, NCSA" TERMUX_PKG_MAINTAINER="@finagolfin" TERMUX_PKG_VERSION=5.9 -TERMUX_PKG_REVISION=1 -TERMUX_PKG_SRCURL=https://github.com/apple/swift-llbuild/archive/swift-${TERMUX_PKG_VERSION}-RELEASE.tar.gz -TERMUX_PKG_SHA256=cc8dfb098db4b0210ca5466f59d3e5fc55c4eedcd835263e6eae7dd719ba8203 +TERMUX_PKG_SRCURL=https://github.com/apple/swift-llbuild/archive/swift-${TERMUX_PKG_VERSION}-DEVELOPMENT-SNAPSHOT-2023-11-17-a.tar.gz +TERMUX_PKG_SHA256=e06144756f75137093831ca72a61c482bc35d5ce2a8e8aa5df7d1c657a98186a TERMUX_PKG_DEPENDS="libc++, libandroid-spawn, libsqlite" TERMUX_PKG_NO_STATICSPLIT=true diff --git a/packages/swift/build.sh b/packages/swift/build.sh index 43aae5029988fc1..beb179c2961bbe2 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="@finagolfin" -TERMUX_PKG_VERSION=5.9.1 -TERMUX_PKG_REVISION=1 -SWIFT_RELEASE="RELEASE" +TERMUX_PKG_VERSION=5.9 +SWIFT_RELEASE="DEVELOPMENT-SNAPSHOT-2023-11-17-a" TERMUX_PKG_SRCURL=https://github.com/apple/swift/archive/swift-$TERMUX_PKG_VERSION-$SWIFT_RELEASE.tar.gz -TERMUX_PKG_SHA256=d63c9743fa1d35c8c6203745955375fd69c710897de96d1c6245d2c9e42fbb49 +TERMUX_PKG_SHA256=fdf62a008cf5d6407a4e12120c8e583d0cbfdef3b1a8a98efe0b82c2429dc13d TERMUX_PKG_AUTO_UPDATE=false TERMUX_PKG_HOSTBUILD=true TERMUX_PKG_DEPENDS="clang, libandroid-glob, libandroid-posix-semaphore, libandroid-spawn, libcurl, libicu, libicu-static, libsqlite, libuuid, libxml2, libdispatch, llbuild, pkg-config, swift-sdk-${TERMUX_ARCH/_/-}" @@ -36,26 +35,26 @@ termux_step_post_get_source() { mv .temp swift declare -A library_checksums - library_checksums[swift-cmark]=33dde8fc9e02a882d2adc79f1b7b77ae6397a66c73262bbdc3b49c53ab823b01 - library_checksums[llvm-project]=3cd34ef37dd74a6d4d93be20fb251658e9a1e3c19aeeefd81c027023c485e286 - library_checksums[swift-experimental-string-processing]=a01b2f895d49c23a4d322bfd486d4a7dcfeb96760d9c17f2e48b93428220b9ee - library_checksums[swift-syntax]=b2ab10adcfbaebdd56954f724856d6ddd327422b4109d49ec5fb96b92b078003 - library_checksums[swift-corelibs-libdispatch]=bcccde91987982dca285a5c73efa0922135b6caca07bc9e5a33333b0aa869db2 - library_checksums[swift-corelibs-foundation]=9835efe51b78c329042e32b2b1bd82a0816535ca08687a30c0787091cdd40884 - library_checksums[swift-corelibs-xctest]=8d4cbffba2f828033a0074682d1bedd7a55d6410b6a30ca1e7c69917ab9352fe - library_checksums[swift-llbuild]=eeff879bc19de21aed72a747602212dff8ffe25833880c466a44087ffe2ed1ac - library_checksums[swift-argument-parser]=44782ba7180f924f72661b8f457c268929ccd20441eac17301f18eff3b91ce0c - library_checksums[Yams]=ec1ad699c30f0db45520006c63a88cc1c946a7d7b36dff32a96460388c0a4af2 + library_checksums[sourcekit-lsp]=2c2b0943cff83b294b74930508a5cdf51ba33b647df95ac2ffad8d606d45db20 + library_checksums[swift-corelibs-xctest]=815d21919418cf1b16414b712878c58710bad759ee25278207eb821ea518d9da + library_checksums[swift-corelibs-foundation]=f5902d01570515797860199e4bf5a36ba54b85c7d4b9ee7258bd0f58e751e19e library_checksums[swift-collections]=575cf0f88d9068411f9acc6e3ca5d542bef1cc9e87dc5d69f7b5a1d5aec8c6b6 - library_checksums[swift-crypto]=a7b2f5c4887ccd728cdff5d1162b4d4d36bd6c2df9c0c31d5b9b73d341c5c1bb + library_checksums[swift-driver]=7f40434a479dc632d499bda6821d37fffda5f815accd57a029019cbbe797492b + library_checksums[swift-argument-parser]=44782ba7180f924f72661b8f457c268929ccd20441eac17301f18eff3b91ce0c + library_checksums[swift-syntax]=9f35d4915da528c06665982a9e0a2d378efe879edcba61a17f0bcf050b19132c + library_checksums[swift-llbuild]=e06144756f75137093831ca72a61c482bc35d5ce2a8e8aa5df7d1c657a98186a + library_checksums[swift-corelibs-libdispatch]=3ea7b81a7361ca94f1547aca97524ee538cf578455610498e6a5b0efbb4c58df library_checksums[swift-system]=865b8c380455eef27e73109835142920c60ae4c4f4178a3d12ad04acc83f1371 library_checksums[swift-asn1]=d4470d61788194abbd60ed73965ee0722cc25037e83d41226a8a780088ba524e + library_checksums[swift-tools-support-core]=01caf5d52b64207b70c1ad939b5c8e7362a63afd263b8187b04dca7d08bf87c3 + library_checksums[swift-package-manager]=08df8c1cd65de26c0f0f582e07295b7b9ce41ed1b7f2718d70786b4393029b70 + library_checksums[swift-cmark]=c12450e2d1cb4cd81080856b7d8ebd92fc9277aff364439b82fb1257761b8cab + library_checksums[indexstore-db]=560026d489c7d043eb5eef32078268e41b7582a143ebce4e5cddadc16d9ac8ec library_checksums[swift-certificates]=d7699ce91d65a622c1b9aaa0235cbbbd1be4ddc42a90fce007ff74bef50e8985 - library_checksums[swift-driver]=4fc7965cd477daf61ff2d5b555007a195dc601e9864ee6d494826a7aa7ff31c7 - library_checksums[swift-tools-support-core]=e261dfdfc964a770c545c66267108c77692d06977c0d0bb437498f79ec23365c - library_checksums[swift-package-manager]=8e08b39fd7eb5329539514358d470bd84218a8b4ce53962d7fe3797f51adf59b - library_checksums[indexstore-db]=0789b254455e6f216b8d907ebc8fe5927106ae3a7a099d6478bbb9e6fac9b9fb - library_checksums[sourcekit-lsp]=0fd130c814a35b3ba2b6b6d01979923fd57b3f453d154860ec2f53f9ade38023 + library_checksums[swift-crypto]=a7b2f5c4887ccd728cdff5d1162b4d4d36bd6c2df9c0c31d5b9b73d341c5c1bb + library_checksums[llvm-project]=5a76c9fa59f00e82e0033a18510432845d8fe0429a9fcf02d478985fdf9830f8 + library_checksums[swift-experimental-string-processing]=d8282c85e84c819e554b7b1a80287369e12fb990b52869f474b3436c88b8e08f + library_checksums[Yams]=ec1ad699c30f0db45520006c63a88cc1c946a7d7b36dff32a96460388c0a4af2 for library in "${!library_checksums[@]}"; do \ GH_ORG="apple" diff --git a/packages/swift/swift-modify-astgen.patch b/packages/swift/swift-modify-astgen.patch index 8771271ffb1a85b..55f1761f14014ef 100644 --- a/packages/swift/swift-modify-astgen.patch +++ b/packages/swift/swift-modify-astgen.patch @@ -431,7 +431,7 @@ index eb2be48a8a8..82bbca53bf4 100644 + var text = node.name.text let id = text.withUTF8 { buf in - return SwiftASTContext_getIdentifier(ctx, buf.baseAddress, buf.count) + return SwiftASTContext_getIdentifier(ctx, buf.baseAddress, SwiftInt(buf.count)) @@ -19,7 +24,7 @@ extension ASTGenVisitor { let rAngle = self.base.advanced(by: generics.rightAngleBracket.position.utf8Offset).raw return .type( diff --git a/packages/swift/swift-move-regex-literals.patch b/packages/swift/swift-move-regex-literals.patch index 8cca71bb6679525..9875dc78df0f07a 100644 --- a/packages/swift/swift-move-regex-literals.patch +++ b/packages/swift/swift-move-regex-literals.patch @@ -504,7 +504,7 @@ index 0f798f961db94..fc2c07d5381f8 100644 + void * _Nullable raw; } BridgedDiagnosticEngine; - typedef enum ENUM_EXTENSIBILITY_ATTR(open) BridgedMacroDefinitionKind : long { + typedef enum ENUM_EXTENSIBILITY_ATTR(open) BridgedMacroDefinitionKind : SwiftInt { @@ -434,6 +434,53 @@ void Decl_dump(void *decl); void Stmt_dump(void *statement); void Type_dump(void *type); diff --git a/packages/swift/swift-move-syntax-build.patch b/packages/swift/swift-move-syntax-build.patch index 37fd62e0f1a94ad..69b5da144557472 100644 --- a/packages/swift/swift-move-syntax-build.patch +++ b/packages/swift/swift-move-syntax-build.patch @@ -12,7 +12,7 @@ passing down `SWIFT_HOST_LIBRARIES_DEST_DIR` to avoid copying them as we were doing previously. diff --git a/swift/CMakeLists.txt b/swift/CMakeLists.txt -index 9a460b731d019..726758e7143d3 100644 +index 2eeaf61e37423..e052c618fe5f8 100644 --- a/swift/CMakeLists.txt +++ b/swift/CMakeLists.txt @@ -94,6 +94,7 @@ include(CMakeDependentOption) @@ -23,7 +23,7 @@ index 9a460b731d019..726758e7143d3 100644 # Enable Swift for the host compiler build if we have the language. It is # optional until we have a bootstrap story. -@@ -691,10 +692,9 @@ if(CMAKE_C_COMPILER_ID MATCHES Clang) +@@ -697,10 +698,9 @@ if(CMAKE_C_COMPILER_ID MATCHES Clang) add_compile_options($<$:-Werror=c++98-compat-extra-semi>) endif() @@ -36,8 +36,8 @@ index 9a460b731d019..726758e7143d3 100644 + FALSE) set(SWIFT_BUILD_HOST_DISPATCH FALSE) - if(SWIFT_ENABLE_DISPATCH AND NOT CMAKE_SYSTEM_NAME STREQUAL Darwin) -@@ -794,7 +794,6 @@ include(SwiftConfigureSDK) + if(SWIFT_ENABLE_DISPATCH AND NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin") +@@ -800,7 +800,6 @@ include(SwiftConfigureSDK) include(SwiftComponents) include(SwiftList) include(AddPureSwift) @@ -45,7 +45,7 @@ index 9a460b731d019..726758e7143d3 100644 # Configure swift include, install, build components. swift_configure_components() -@@ -830,7 +829,7 @@ elseif(BOOTSTRAPPING_MODE MATCHES "BOOTSTRAPPING.*") +@@ -836,7 +835,7 @@ elseif(BOOTSTRAPPING_MODE MATCHES "BOOTSTRAPPING.*") else() set(BOOTSTRAPPING_MODE "HOSTTOOLS") endif() @@ -54,7 +54,22 @@ index 9a460b731d019..726758e7143d3 100644 # We are building using a pre-installed host toolchain but not bootstrapping # the Swift modules. This happens when building using 'build-tooling-libs' # where we haven't built a new Swift compiler. Use the Swift compiler from the -@@ -838,21 +837,11 @@ elseif(BOOTSTRAPPING_MODE STREQUAL "HOSTTOOLS" OR SWIFT_SWIFT_PARSER) +@@ -844,6 +843,14 @@ elseif(BOOTSTRAPPING_MODE STREQUAL "HOSTTOOLS" OR SWIFT_SWIFT_PARSER) + set(SWIFT_EXEC_FOR_SWIFT_MODULES "${CMAKE_Swift_COMPILER}") + endif() + ++if(SWIFT_BUILD_SWIFT_SYNTAX) ++ # Only "HOSTTOOLS" is supported in Linux when Swift parser integration is enabled. ++ if(SWIFT_HOST_VARIANT_SDK MATCHES "LINUX|ANDROID|OPENBSD|FREEBSD" AND NOT BOOTSTRAPPING_MODE STREQUAL "HOSTTOOLS") ++ message(WARNING "Force setting BOOTSTRAPPING=HOSTTOOLS because Swift parser integration is enabled") ++ set(BOOTSTRAPPING_MODE "HOSTTOOLS") ++ endif() ++endif() ++ + if(BOOTSTRAPPING_MODE MATCHES "HOSTTOOLS|.*-WITH-HOSTLIBS") + if(SWIFT_ENABLE_ARRAY_COW_CHECKS) + message(STATUS "array COW checks disabled when building the swift modules with host libraries") +@@ -950,25 +957,6 @@ if(XCODE) set(SWIFT_SDKS "OSX") endif() @@ -73,15 +88,14 @@ index 9a460b731d019..726758e7143d3 100644 - message(WARNING "Force setting BOOTSTRAPPING=HOSTTOOLS because Swift parser integration is enabled") - set(BOOTSTRAPPING_MODE "HOSTTOOLS") - endif() -+if(SWIFT_BUILD_SWIFT_SYNTAX) -+ # Only "HOSTTOOLS" is supported in Linux when Swift parser integration is enabled. -+ if(SWIFT_HOST_VARIANT_SDK MATCHES "LINUX|ANDROID|OPENBSD|FREEBSD" AND NOT BOOTSTRAPPING_MODE STREQUAL "HOSTTOOLS") -+ message(WARNING "Force setting BOOTSTRAPPING=HOSTTOOLS because Swift parser integration is enabled") -+ set(BOOTSTRAPPING_MODE "HOSTTOOLS") - endif() - endif() - -@@ -1171,13 +1159,17 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin" AND NOT CMAKE_CROSSCOMPILING) +- endif() +-endif() +- +- + # FIXME: the parameters we specify in SWIFT_SDKS are lacking architecture specifics, + # so we need to hard-code it. For example, the SDK for Android is just 'ANDROID', + # and we have to specify SWIFT_SDK_ANDROID_ARCHITECTURES separately. +@@ -1169,13 +1157,17 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin" AND NOT CMAKE_CROSSCOMPILING) set(CMAKE_OSX_DEPLOYMENT_TARGET "") endif() @@ -100,7 +114,7 @@ index 9a460b731d019..726758e7143d3 100644 message(STATUS "") else() message(STATUS "Not building host Swift tools") -@@ -1323,6 +1315,34 @@ endif() +@@ -1326,6 +1318,35 @@ endif() add_subdirectory(include) if(SWIFT_INCLUDE_TOOLS) @@ -125,8 +139,9 @@ index 9a460b731d019..726758e7143d3 100644 + set(SWIFT_HOST_LIBRARIES_RPATH "$ORIGIN;$ORIGIN/../..") + endif() + ++ file(TO_CMAKE_PATH "${SWIFT_PATH_TO_SWIFT_SYNTAX_SOURCE}" swift_syntax_path) + FetchContent_Declare(SwiftSyntax -+ SOURCE_DIR "${SWIFT_PATH_TO_SWIFT_SYNTAX_SOURCE}" ++ SOURCE_DIR "${swift_syntax_path}" + ) + FetchContent_MakeAvailable(SwiftSyntax) + endfunction() @@ -136,7 +151,7 @@ index 9a460b731d019..726758e7143d3 100644 # SwiftCompilerSources must come before "tools". diff --git a/swift/cmake/modules/AddPureSwift.cmake b/swift/cmake/modules/AddPureSwift.cmake -index 6c79fdcf351ce..953c607947fc0 100644 +index ad177634dbca9..2fed86ca12abf 100644 --- a/swift/cmake/modules/AddPureSwift.cmake +++ b/swift/cmake/modules/AddPureSwift.cmake @@ -2,17 +2,15 @@ include(macCatalystUtils) @@ -171,7 +186,7 @@ index 6c79fdcf351ce..953c607947fc0 100644 - set(DEPLOYMENT_VERSION "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_DEPLOYMENT_VERSION}") - endif() - -- if(SWIFT_HOST_VARIANT_SDK STREQUAL ANDROID) +- if(SWIFT_HOST_VARIANT_SDK STREQUAL "ANDROID") - set(DEPLOYMENT_VERSION ${SWIFT_ANDROID_API_LEVEL}) - endif() - @@ -258,13 +273,13 @@ index 6c79fdcf351ce..953c607947fc0 100644 + ) + endif() - # Export this target. - set_property(GLOBAL APPEND PROPERTY SWIFT_EXPORTS ${name}) + if(NOT APSHT_SWIFT_COMPONENT STREQUAL no_component) + add_dependencies(${APSHT_SWIFT_COMPONENT} ${name}) diff --git a/swift/cmake/modules/AddSwift.cmake b/swift/cmake/modules/AddSwift.cmake -index b55f7d8071656..d06a14f404756 100644 +index e0fb5de09f257..58f94846fa699 100644 --- a/swift/cmake/modules/AddSwift.cmake +++ b/swift/cmake/modules/AddSwift.cmake -@@ -112,9 +112,7 @@ function(_add_host_variant_swift_sanitizer_flags target) +@@ -113,9 +113,7 @@ function(_add_host_variant_swift_sanitizer_flags target) endif() endfunction() @@ -275,7 +290,7 @@ index b55f7d8071656..d06a14f404756 100644 if(SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS) set(DEPLOYMENT_VERSION "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_DEPLOYMENT_VERSION}") endif() -@@ -123,26 +121,30 @@ function(_add_host_variant_c_compile_link_flags name) +@@ -124,26 +122,30 @@ function(_add_host_variant_c_compile_link_flags name) set(DEPLOYMENT_VERSION ${SWIFT_ANDROID_API_LEVEL}) endif() @@ -317,7 +332,7 @@ index b55f7d8071656..d06a14f404756 100644 _add_host_variant_swift_sanitizer_flags(${name}) endif() -@@ -442,7 +444,7 @@ endfunction() +@@ -439,7 +441,7 @@ endfunction() function(_add_swift_runtime_link_flags target relpath_to_lib_dir bootstrapping) if(NOT BOOTSTRAPPING_MODE) @@ -326,8 +341,8 @@ index b55f7d8071656..d06a14f404756 100644 set(ASRLF_BOOTSTRAPPING_MODE "HOSTTOOLS") else() return() -@@ -578,7 +580,7 @@ function(_add_swift_runtime_link_flags target relpath_to_lib_dir bootstrapping) - endif() +@@ -576,7 +578,7 @@ function(_add_swift_runtime_link_flags target relpath_to_lib_dir bootstrapping) + ${SWIFT_PATH_TO_SWIFT_SDK}/usr/lib/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}/${SWIFT_HOST_VARIANT_ARCH}) endif() - if(SWIFT_SWIFT_PARSER) @@ -335,7 +350,7 @@ index b55f7d8071656..d06a14f404756 100644 # For the "end step" of bootstrapping configurations, we need to be # able to fall back to the SDK directory for libswiftCore et al. if (BOOTSTRAPPING_MODE MATCHES "BOOTSTRAPPING.*") -@@ -656,7 +658,7 @@ function(add_swift_host_library name) +@@ -654,7 +656,7 @@ function(add_swift_host_library name) translate_flags(ASHL "${options}") # Once the new Swift parser is linked, everything has Swift modules. @@ -344,7 +359,7 @@ index b55f7d8071656..d06a14f404756 100644 set(ASHL_HAS_SWIFT_MODULES ON) endif() -@@ -702,7 +704,7 @@ function(add_swift_host_library name) +@@ -700,7 +702,7 @@ function(add_swift_host_library name) add_library(${name} ${libkind} ${ASHL_SOURCES}) @@ -353,7 +368,7 @@ index b55f7d8071656..d06a14f404756 100644 # Respect LLVM_COMMON_DEPENDS if it is set. # -@@ -924,7 +926,7 @@ function(add_swift_host_tool executable) +@@ -922,7 +924,7 @@ function(add_swift_host_tool executable) endif() # Once the new Swift parser is linked in, every host tool has Swift modules. @@ -362,28 +377,54 @@ index b55f7d8071656..d06a14f404756 100644 set(ASHT_HAS_SWIFT_MODULES ON) endif() -@@ -963,7 +965,7 @@ function(add_swift_host_tool executable) +@@ -961,7 +963,7 @@ function(add_swift_host_tool executable) endif() endif() - if(SWIFT_SWIFT_PARSER) + if(SWIFT_BUILD_SWIFT_SYNTAX) set(extra_relative_rpath "") - if(NOT ${ASHT_BOOTSTRAPPING} STREQUAL "") - if (${executable} MATCHES "-bootstrapping") + if(NOT "${ASHT_BOOTSTRAPPING}" STREQUAL "") + if(executable MATCHES "-bootstrapping") diff --git a/swift/cmake/modules/AddSwiftUnittests.cmake b/swift/cmake/modules/AddSwiftUnittests.cmake -index b3ed5ef8a391f..78a84e6ec5821 100644 +index 45acb9bf10698..78a84e6ec5821 100644 --- a/swift/cmake/modules/AddSwiftUnittests.cmake +++ b/swift/cmake/modules/AddSwiftUnittests.cmake -@@ -123,7 +123,7 @@ function(add_swift_unittest test_dirname) +@@ -111,10 +111,31 @@ function(add_swift_unittest test_dirname) endif() endif() - if (SWIFT_SWIFT_PARSER AND NOT ASU_IS_TARGET_TEST) ++ file(RELATIVE_PATH relative_lib_path "${CMAKE_CURRENT_BINARY_DIR}" "${SWIFT_LIBRARY_OUTPUT_INTDIR}") ++ ++ if(SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS) ++ set_property( ++ TARGET ${test_dirname} ++ APPEND PROPERTY INSTALL_RPATH "@executable_path/${relative_lib_path}") ++ elseif(SWIFT_HOST_VARIANT_SDK MATCHES "LINUX|ANDROID|OPENBSD|FREEBSD") ++ set_property( ++ TARGET ${test_dirname} ++ APPEND PROPERTY INSTALL_RPATH "$ORIGIN/${relative_lib_path}") ++ endif() ++ + if (SWIFT_BUILD_SWIFT_SYNTAX AND NOT ASU_IS_TARGET_TEST) # Link to stdlib the compiler uses. - _add_swift_runtime_link_flags(${test_dirname} "../../lib" "") - set_property(TARGET ${test_dirname} PROPERTY BUILD_WITH_INSTALL_RPATH OFF) +- _add_swift_runtime_link_flags(${test_dirname} "../../lib" "") +- set_property(TARGET ${test_dirname} PROPERTY BUILD_WITH_INSTALL_RPATH OFF) ++ _add_swift_runtime_link_flags(${test_dirname} "${relative_lib_path}" "") ++ ++ if(SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS) ++ set_property( ++ TARGET ${test_dirname} ++ APPEND PROPERTY INSTALL_RPATH "@executable_path/${relative_lib_path}/swift/host") ++ elseif(SWIFT_HOST_VARIANT_SDK MATCHES "LINUX|ANDROID|OPENBSD|FREEBSD") ++ set_property( ++ TARGET ${test_dirname} ++ APPEND PROPERTY INSTALL_RPATH "$ORIGIN/${relative_lib_path}/swift/host") ++ endif() + endif() + endfunction() + diff --git a/swift/cmake/modules/SetRPATH.cmake b/swift/cmake/modules/SetRPATH.cmake deleted file mode 100644 index 76b8b4644e59a..0000000000000 @@ -446,7 +487,7 @@ index 5bfb3c7427693..c29f5286e1a28 100644 add_custom_target(${component}) add_llvm_install_targets(install-${component} diff --git a/swift/lib/AST/CMakeLists.txt b/swift/lib/AST/CMakeLists.txt -index 9e5590b7315db..4bf20a642f0f8 100644 +index c8793e6d10ecb..5c7af5d85ee12 100644 --- a/swift/lib/AST/CMakeLists.txt +++ b/swift/lib/AST/CMakeLists.txt @@ -155,10 +155,10 @@ target_link_libraries(swiftAST INTERFACE @@ -463,10 +504,10 @@ index 9e5590b7315db..4bf20a642f0f8 100644 endif() diff --git a/swift/lib/ASTGen/CMakeLists.txt b/swift/lib/ASTGen/CMakeLists.txt -index f5d4a899cec73..736970051e359 100644 +index b80782f838e52..2628124156dfd 100644 --- a/swift/lib/ASTGen/CMakeLists.txt +++ b/swift/lib/ASTGen/CMakeLists.txt -@@ -26,15 +26,15 @@ add_pure_swift_host_library(swiftASTGen STATIC +@@ -24,15 +24,15 @@ add_pure_swift_host_library(swiftASTGen STATIC DEPENDENCIES swiftAST SWIFT_DEPENDENCIES @@ -493,10 +534,10 @@ index f5d4a899cec73..736970051e359 100644 ${ASTGen_Swift_dependencies} ) diff --git a/swift/lib/CMakeLists.txt b/swift/lib/CMakeLists.txt -index 7a6f55c80406f..3c580fd824fb0 100644 +index 7d61c18522a1c..8c59a9292688f 100644 --- a/swift/lib/CMakeLists.txt +++ b/swift/lib/CMakeLists.txt -@@ -13,9 +13,7 @@ +@@ -16,9 +16,7 @@ list(APPEND LLVM_COMMON_DEPENDS intrinsics_gen clang-tablegen-targets) list(APPEND LLVM_COMMON_DEPENDS swift-ast-generated-headers) # Set up for linking against swift-syntax. @@ -671,10 +712,10 @@ index 7a6f55c80406f..3c580fd824fb0 100644 add_subdirectory(APIDigester) diff --git a/swift/lib/Frontend/CMakeLists.txt b/swift/lib/Frontend/CMakeLists.txt -index c01fdcf7e174b..ebb9a2aeecabf 100644 +index 21ef5231ce3ac..a75be05e4feef 100644 --- a/swift/lib/Frontend/CMakeLists.txt +++ b/swift/lib/Frontend/CMakeLists.txt -@@ -37,9 +37,9 @@ target_link_libraries(swiftFrontend PRIVATE +@@ -34,9 +34,9 @@ target_link_libraries(swiftFrontend PRIVATE set_swift_llvm_is_available(swiftFrontend) @@ -687,10 +728,10 @@ index c01fdcf7e174b..ebb9a2aeecabf 100644 ) endif() diff --git a/swift/lib/Frontend/PrintingDiagnosticConsumer.cpp b/swift/lib/Frontend/PrintingDiagnosticConsumer.cpp -index 9f6a8976c3aef..da70fa1f2f177 100644 +index eaa246940ccd0..f3e2e53834ce2 100644 --- a/swift/lib/Frontend/PrintingDiagnosticConsumer.cpp +++ b/swift/lib/Frontend/PrintingDiagnosticConsumer.cpp -@@ -315,7 +315,7 @@ namespace { +@@ -964,7 +964,7 @@ static void annotateSnippetWithInfo(SourceManager &SM, } } @@ -699,7 +740,7 @@ index 9f6a8976c3aef..da70fa1f2f177 100644 /// Enqueue a diagnostic with ASTGen's diagnostic rendering. static void enqueueDiagnostic( void *queuedDiagnostics, const DiagnosticInfo &info, SourceManager &SM -@@ -389,7 +389,7 @@ static SmallVector getSourceBufferStack( +@@ -1038,7 +1038,7 @@ static SmallVector getSourceBufferStack( } } @@ -708,7 +749,7 @@ index 9f6a8976c3aef..da70fa1f2f177 100644 void PrintingDiagnosticConsumer::queueBuffer( SourceManager &sourceMgr, unsigned bufferID) { QueuedBuffer knownSourceFile = queuedBuffers[bufferID]; -@@ -454,7 +454,7 @@ void PrintingDiagnosticConsumer::handleDiagnostic(SourceManager &SM, +@@ -1103,7 +1103,7 @@ void PrintingDiagnosticConsumer::handleDiagnostic(SourceManager &SM, switch (FormattingStyle) { case DiagnosticOptions::FormattingStyle::Swift: { @@ -717,7 +758,7 @@ index 9f6a8976c3aef..da70fa1f2f177 100644 // Use the swift-syntax formatter. auto bufferStack = getSourceBufferStack(SM, Info.Loc); if (!bufferStack.empty()) { -@@ -496,7 +496,7 @@ void PrintingDiagnosticConsumer::handleDiagnostic(SourceManager &SM, +@@ -1190,7 +1190,7 @@ void PrintingDiagnosticConsumer::flush(bool includeTrailingBreak) { currentSnippet.reset(); } @@ -727,10 +768,10 @@ index 9f6a8976c3aef..da70fa1f2f177 100644 char *renderedString = nullptr; ptrdiff_t renderedStringLen = 0; diff --git a/swift/lib/IDE/CodeCompletion.cpp b/swift/lib/IDE/CodeCompletion.cpp -index 362d0619152da..568d9557fe279 100644 +index 2cc7a2477e979..e76e64b6af883 100644 --- a/swift/lib/IDE/CodeCompletion.cpp +++ b/swift/lib/IDE/CodeCompletion.cpp -@@ -1172,7 +1172,7 @@ static void addPoundDirectives(CodeCompletionResultSink &Sink) { +@@ -1142,7 +1142,7 @@ static void addPoundDirectives(CodeCompletionResultSink &Sink) { Builder.addRightParen(); }); @@ -847,10 +888,10 @@ index 1b66331ad7e6d..8a01e55f893b0 100644 endif() diff --git a/swift/lib/Parse/ParseDecl.cpp b/swift/lib/Parse/ParseDecl.cpp -index 12f2bb72a10cc..50aa486a512aa 100644 +index cdae5b4443322..98344c7c98582 100644 --- a/swift/lib/Parse/ParseDecl.cpp +++ b/swift/lib/Parse/ParseDecl.cpp -@@ -163,7 +163,7 @@ extern "C" void parseTopLevelSwift(const char *buffer, +@@ -162,7 +162,7 @@ extern "C" void parseTopLevelSwift(const char *buffer, void *outputContext, void (*)(void *, void *)); @@ -859,7 +900,7 @@ index 12f2bb72a10cc..50aa486a512aa 100644 static void appendToVector(void *declPtr, void *vecPtr) { auto vec = static_cast *>(vecPtr); auto decl = static_cast(declPtr); -@@ -207,7 +207,7 @@ extern "C" void swift_ASTGen_buildTopLevelASTNodes( +@@ -207,7 +207,7 @@ extern "C" void swift_ASTGen_buildTopLevelASTNodes(void *sourceFile, /// decl-sil-stage [[only in SIL mode] /// \endverbatim void Parser::parseTopLevelItems(SmallVectorImpl &items) { @@ -922,10 +963,10 @@ index 7d02b146bf2fd..54548243d43cf 100644 [&](void *exportedSourceFile, const void *sourceLoc) { const void *endLocPtr = nullptr; diff --git a/swift/lib/Sema/CMakeLists.txt b/swift/lib/Sema/CMakeLists.txt -index 16494b3ff76d2..6a80e3c20768d 100644 +index f3cdbffcbfc18..4f95db5553219 100644 --- a/swift/lib/Sema/CMakeLists.txt +++ b/swift/lib/Sema/CMakeLists.txt -@@ -86,10 +86,10 @@ target_link_libraries(swiftSema PRIVATE +@@ -87,10 +87,10 @@ target_link_libraries(swiftSema PRIVATE swiftParse swiftSerialization) @@ -939,7 +980,7 @@ index 16494b3ff76d2..6a80e3c20768d 100644 target_link_libraries(swiftSema PRIVATE swiftASTGen) diff --git a/swift/lib/Sema/CSApply.cpp b/swift/lib/Sema/CSApply.cpp -index 0891865a43fcc..61b2c0eae84d5 100644 +index 77b0d7e2cd3a9..8317b9027c832 100644 --- a/swift/lib/Sema/CSApply.cpp +++ b/swift/lib/Sema/CSApply.cpp @@ -2934,7 +2934,7 @@ namespace { @@ -952,10 +993,10 @@ index 0891865a43fcc..61b2c0eae84d5 100644 if (ctx.LangOpts.hasFeature(Feature::BuiltinMacros)) { auto expandedType = solution.simplifyType(solution.getType(expr)); diff --git a/swift/lib/Sema/CSGen.cpp b/swift/lib/Sema/CSGen.cpp -index 882349e9acf49..af0de3c9628d9 100644 +index f50b7d8fee110..037ad6db8bdff 100644 --- a/swift/lib/Sema/CSGen.cpp +++ b/swift/lib/Sema/CSGen.cpp -@@ -1356,7 +1356,7 @@ namespace { +@@ -1267,7 +1267,7 @@ namespace { } Type visitMagicIdentifierLiteralExpr(MagicIdentifierLiteralExpr *expr) { @@ -965,7 +1006,7 @@ index 882349e9acf49..af0de3c9628d9 100644 if (ctx.LangOpts.hasFeature(Feature::BuiltinMacros)) { auto kind = MagicIdentifierLiteralExpr::getKindString(expr->getKind()) diff --git a/swift/lib/Sema/TypeCheckMacros.cpp b/swift/lib/Sema/TypeCheckMacros.cpp -index 5313ab221e60e..6cc8cb36ac735 100644 +index 9d599b54c4b95..4861eb726b27e 100644 --- a/swift/lib/Sema/TypeCheckMacros.cpp +++ b/swift/lib/Sema/TypeCheckMacros.cpp @@ -94,7 +94,7 @@ extern "C" bool swift_ASTGen_pluginServerLoadLibraryPlugin( @@ -1004,7 +1045,7 @@ index 5313ab221e60e..6cc8cb36ac735 100644 llvm::SmallString<128> resolvedLibraryPath; auto fs = ctx.SourceMgr.getFileSystem(); if (auto err = fs->getRealPath(libraryPath, resolvedLibraryPath)) { -@@ -391,7 +391,7 @@ CompilerPluginLoadRequest::evaluate(Evaluator &evaluator, ASTContext *ctx, +@@ -380,7 +380,7 @@ CompilerPluginLoadRequest::evaluate(Evaluator &evaluator, ASTContext *ctx, static llvm::Optional resolveInProcessMacro(ASTContext &ctx, Identifier moduleName, Identifier typeName, LoadedLibraryPlugin *plugin) { @@ -1013,7 +1054,7 @@ index 5313ab221e60e..6cc8cb36ac735 100644 /// Look for the type metadata given the external module and type names. auto macroMetatype = lookupMacroTypeMetadataByExternalName( ctx, moduleName.str(), typeName.str(), plugin); -@@ -415,7 +415,7 @@ static llvm::Optional +@@ -404,7 +404,7 @@ static llvm::Optional resolveExecutableMacro(ASTContext &ctx, LoadedExecutablePlugin *executablePlugin, Identifier moduleName, Identifier typeName) { @@ -1022,7 +1063,7 @@ index 5313ab221e60e..6cc8cb36ac735 100644 if (auto *execMacro = swift_ASTGen_resolveExecutableMacro( moduleName.str().data(), moduleName.str().size(), typeName.str().data(), typeName.str().size(), executablePlugin)) { -@@ -986,7 +986,7 @@ evaluateFreestandingMacro(FreestandingMacroExpansion *expansion, +@@ -975,7 +975,7 @@ evaluateFreestandingMacro(FreestandingMacroExpansion *expansion, LazyValue discriminator([&]() -> std::string { if (!discriminatorStr.empty()) return discriminatorStr.str(); @@ -1031,7 +1072,7 @@ index 5313ab221e60e..6cc8cb36ac735 100644 Mangle::ASTMangler mangler; return mangler.mangleMacroExpansion(expansion); #else -@@ -1047,7 +1047,7 @@ evaluateFreestandingMacro(FreestandingMacroExpansion *expansion, +@@ -1036,7 +1036,7 @@ evaluateFreestandingMacro(FreestandingMacroExpansion *expansion, return nullptr; } @@ -1040,7 +1081,7 @@ index 5313ab221e60e..6cc8cb36ac735 100644 PrettyStackTraceFreestandingMacroExpansion debugStack( "expanding freestanding macro", expansion); -@@ -1226,7 +1226,7 @@ static SourceFile *evaluateAttachedMacro(MacroDecl *macro, Decl *attachedTo, +@@ -1215,7 +1215,7 @@ static SourceFile *evaluateAttachedMacro(MacroDecl *macro, Decl *attachedTo, LazyValue discriminator([&]() -> std::string { if (!discriminatorStr.empty()) return discriminatorStr.str(); @@ -1049,7 +1090,7 @@ index 5313ab221e60e..6cc8cb36ac735 100644 Mangle::ASTMangler mangler; return mangler.mangleAttachedMacroExpansion(attachedTo, attr, role); #else -@@ -1304,7 +1304,7 @@ static SourceFile *evaluateAttachedMacro(MacroDecl *macro, Decl *attachedTo, +@@ -1294,7 +1294,7 @@ static SourceFile *evaluateAttachedMacro(MacroDecl *macro, Decl *attachedTo, return nullptr; } @@ -1059,18 +1100,21 @@ index 5313ab221e60e..6cc8cb36ac735 100644 auto *astGenAttrSourceFile = attrSourceFile->getExportedSourceFile(); diff --git a/swift/test/CMakeLists.txt b/swift/test/CMakeLists.txt -index a2998850bb96d..96411667cb4ec 100644 +index d2d5f71ded49a..52ea7dc00842a 100644 --- a/swift/test/CMakeLists.txt +++ b/swift/test/CMakeLists.txt -@@ -210,16 +210,7 @@ normalize_boolean_spelling(SWIFT_STDLIB_ENABLE_OBJC_INTEROP) +@@ -205,18 +205,10 @@ normalize_boolean_spelling(SWIFT_STDLIB_ENABLE_UNICODE_DATA) + normalize_boolean_spelling(SWIFT_ENABLE_DISPATCH) + normalize_boolean_spelling(SWIFT_STDLIB_ENABLE_OBJC_INTEROP) normalize_boolean_spelling(SWIFT_ENABLE_BACKTRACING) ++normalize_boolean_spelling(SWIFT_BUILD_SWIFT_SYNTAX) is_build_type_optimized("${SWIFT_STDLIB_BUILD_TYPE}" SWIFT_OPTIMIZED) -# Get 'SWIFT_HOST_TRIPLE' and 'SWIFT_HOST_SDKROOT' for lit.site.cfg.in -if(SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS) - set(DEPLOYMENT_VERSION "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_DEPLOYMENT_VERSION}") -endif() --if(SWIFT_HOST_VARIANT_SDK STREQUAL ANDROID) +-if(SWIFT_HOST_VARIANT_SDK STREQUAL "ANDROID") - set(DEPLOYMENT_VERSION ${SWIFT_ANDROID_API_LEVEL}) -endif() -get_target_triple(SWIFT_HOST_TRIPLE SWIFT_HOST_TRIPLE_VARIANT "${SWIFT_HOST_VARIANT_SDK}" "${SWIFT_HOST_VARIANT_ARCH}" @@ -1080,8 +1124,85 @@ index a2998850bb96d..96411667cb4ec 100644 set(SWIFT_HOST_SDKROOT "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_ARCH_${SWIFT_HOST_VARIANT_ARCH}_PATH}") set(profdata_merge_worker +diff --git a/swift/test/IDE/complete_pound_expr.swift b/swift/test/IDE/complete_pound_expr.swift +index bb074a1ab0d26..4bfd862f00d68 100644 +--- a/swift/test/IDE/complete_pound_expr.swift ++++ b/swift/test/IDE/complete_pound_expr.swift +@@ -1,7 +1,7 @@ + // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=POUND_EXPR_1 | %FileCheck %s -check-prefix=POUND_EXPR_INTCONTEXT + // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=POUND_EXPR_2 | %FileCheck %s -check-prefix=POUND_EXPR_STRINGCONTEXT + // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=POUND_EXPR_3 | %FileCheck %s -check-prefix=POUND_EXPR_SELECTORCONTEXT +-// REQUIRES: objc_interop ++// REQUIRES: objc_interop, swift_swift_parser + + import ObjectiveC + +diff --git a/swift/test/Macros/extension_macro_plugin.swift b/swift/test/Macros/extension_macro_plugin.swift +index 5204d9c74fb4b..eaf90a366c231 100644 +--- a/swift/test/Macros/extension_macro_plugin.swift ++++ b/swift/test/Macros/extension_macro_plugin.swift +@@ -1,5 +1,4 @@ +-// FIXME: Swift parser is not enabled on Linux CI yet. +-// REQUIRES: OS=macosx ++// REQUIRES: swift_swift_parser + + // RUN: %empty-directory(%t) + // RUN: %empty-directory(%t/plugins) +@@ -13,7 +12,7 @@ + // RUN: %S/Inputs/syntax_macro_definitions.swift \ + // RUN: -g -no-toolchain-stdlib-rpath + +-// RUN: SWIFT_DUMP_PLUGIN_MESSAGING=1 %swift-target-frontend \ ++// RUN: env SWIFT_DUMP_PLUGIN_MESSAGING=1 %swift-target-frontend \ + // RUN: -typecheck -verify \ + // RUN: -swift-version 5 -enable-experimental-feature ExtensionMacros \ + // RUN: -external-plugin-path %t/plugins#%swift-plugin-server \ +diff --git a/swift/test/Macros/macro_plugin_server.swift b/swift/test/Macros/macro_plugin_server.swift +index dfdd12874b30a..91d45c30e1c82 100644 +--- a/swift/test/Macros/macro_plugin_server.swift ++++ b/swift/test/Macros/macro_plugin_server.swift +@@ -1,5 +1,4 @@ +-// FIXME: Swift parser is not enabled on Linux CI yet. +-// REQUIRES: OS=macosx ++// REQUIRES: swift_swift_parser + + // RUN: %empty-directory(%t) + // RUN: %empty-directory(%t/plugins) +@@ -21,7 +20,7 @@ + // RUN: %S/Inputs/evil_macro_definitions.swift \ + // RUN: -g -no-toolchain-stdlib-rpath + +-// RUN: SWIFT_DUMP_PLUGIN_MESSAGING=1 %swift-target-frontend \ ++// RUN: env SWIFT_DUMP_PLUGIN_MESSAGING=1 %swift-target-frontend \ + // RUN: -typecheck -verify \ + // RUN: -swift-version 5 -enable-experimental-feature Macros \ + // RUN: -external-plugin-path %t/plugins#%swift-plugin-server \ +@@ -33,9 +32,9 @@ + + // CHECK: ->(plugin:[[#PID1:]]) {"getCapability":{"capability":{"protocolVersion":[[#PROTOCOL_VERSION:]]}}} + // CHECK-NEXT: <-(plugin:[[#PID1]]) {"getCapabilityResult":{"capability":{"features":["load-plugin-library"],"protocolVersion":[[#PROTOCOL_VERSION]]}}} +-// CHECK-NEXT: ->(plugin:[[#PID1]]) {"loadPluginLibrary":{"libraryPath":"BUILD_DIR{{.*}}plugins/libMacroDefinition.dylib","moduleName":"MacroDefinition"}} ++// CHECK-NEXT: ->(plugin:[[#PID1]]) {"loadPluginLibrary":{"libraryPath":"{{.*}}MacroDefinition.{{dylib|so|dll}}","moduleName":"MacroDefinition"}} + // CHECK-NEXT: <-(plugin:[[#PID1]]) {"loadPluginLibraryResult":{"diagnostics":[],"loaded":true}} +-// CHECK-NEXT: ->(plugin:[[#PID1]]) {"loadPluginLibrary":{"libraryPath":"BUILD_DIR{{.*}}plugins/libEvilMacros.dylib","moduleName":"EvilMacros"}} ++// CHECK-NEXT: ->(plugin:[[#PID1]]) {"loadPluginLibrary":{"libraryPath":"{{.*}}EvilMacros.{{dylib|so|dll}}","moduleName":"EvilMacros"}} + // CHECK-NEXT: <-(plugin:[[#PID1]]) {"loadPluginLibraryResult":{"diagnostics":[],"loaded":true}} + // CHECK-NEXT: ->(plugin:[[#PID1]]) {"expandFreestandingMacro":{"discriminator":"${{.*}}","macro":{"moduleName":"MacroDefinition","name":"stringify","typeName":"StringifyMacro"},"macroRole":"expression","syntax":{"kind":"expression","location":{{{.+}}},"source":"#stringify(a + b)"}}} + // CHECK-NEXT: <-(plugin:[[#PID1]]) {"expandMacroResult":{"diagnostics":[],"expandedSource":"(a + b, \"a + b\")"}} +@@ -44,9 +43,9 @@ + + // CHECK: ->(plugin:[[#PID2:]]) {"getCapability":{"capability":{"protocolVersion":[[#PROTOCOL_VERSION]]}}} + // CHECK-NEXT: <-(plugin:[[#PID2]]) {"getCapabilityResult":{"capability":{"features":["load-plugin-library"],"protocolVersion":[[#PROTOCOL_VERSION]]}}} +-// CHECK-NEXT: ->(plugin:[[#PID2]]) {"loadPluginLibrary":{"libraryPath":"BUILD_DIR{{.*}}plugins/libMacroDefinition.dylib","moduleName":"MacroDefinition"}} ++// CHECK-NEXT: ->(plugin:[[#PID2]]) {"loadPluginLibrary":{"libraryPath":"{{.*}}MacroDefinition.{{dylib|so|dll}}","moduleName":"MacroDefinition"}} + // CHECK-NEXT: <-(plugin:[[#PID2]]) {"loadPluginLibraryResult":{"diagnostics":[],"loaded":true}} +-// CHECK-NEXT: ->(plugin:[[#PID2]]) {"loadPluginLibrary":{"libraryPath":"BUILD_DIR{{.*}}plugins/libEvilMacros.dylib","moduleName":"EvilMacros"}} ++// CHECK-NEXT: ->(plugin:[[#PID2]]) {"loadPluginLibrary":{"libraryPath":"{{.*}}EvilMacros.{{dylib|so|dll}}","moduleName":"EvilMacros"}} + // CHECK-NEXT: <-(plugin:[[#PID2]]) {"loadPluginLibraryResult":{"diagnostics":[],"loaded":true}} + // CHECK-NEXT: ->(plugin:[[#PID2]]) {"expandFreestandingMacro":{"discriminator":"${{.*}}","macro":{"moduleName":"MacroDefinition","name":"stringify","typeName":"StringifyMacro"},"macroRole":"expression","syntax":{"kind":"expression","location":{{{.+}}},"source":"#stringify(b + a)"}}} + // CHECK-NEXT: <-(plugin:[[#PID2]]) {"expandMacroResult":{"diagnostics":[],"expandedSource":"(b + a, \"b + a\")"}} diff --git a/swift/test/lit.site.cfg.in b/swift/test/lit.site.cfg.in -index 8544f2a22bcea..8d4414f3c5d36 100644 +index 06af9476c7f12..740a08c33bc7b 100644 --- a/swift/test/lit.site.cfg.in +++ b/swift/test/lit.site.cfg.in @@ -166,7 +166,7 @@ elif "@BOOTSTRAPPING_MODE@" == 'BOOTSTRAPPING': @@ -1094,7 +1215,7 @@ index 8544f2a22bcea..8d4414f3c5d36 100644 # Let the main config do the real work. diff --git a/swift/tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake b/swift/tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake -index 2293712165751..4b5a63fef6046 100644 +index 5514431eea9ce..4b5a63fef6046 100644 --- a/swift/tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake +++ b/swift/tools/SourceKit/cmake/modules/AddSwiftSourceKit.cmake @@ -25,7 +25,7 @@ function(add_sourcekit_swift_runtime_link_flags target path HAS_SWIFT_MODULES) @@ -1106,16 +1227,49 @@ index 2293712165751..4b5a63fef6046 100644 set(ASKD_BOOTSTRAPPING_MODE HOSTTOOLS) endif() endif() -@@ -152,7 +152,7 @@ function(add_sourcekit_swift_runtime_link_flags target path HAS_SWIFT_MODULES) +@@ -115,12 +115,6 @@ function(add_sourcekit_swift_runtime_link_flags target path HAS_SWIFT_MODULES) + LINK_FLAGS " -lobjc ") + + endif() # HAS_SWIFT_MODULES AND ASKD_BOOTSTRAPPING_MODE +- +- if(SWIFT_SWIFT_PARSER) +- # Add rpath to the host Swift libraries. +- file(RELATIVE_PATH relative_hostlib_path "${path}" "${SWIFTLIB_DIR}/host") +- list(APPEND RPATH_LIST "@loader_path/${relative_hostlib_path}") +- endif() + elseif(SWIFT_HOST_VARIANT_SDK MATCHES "LINUX|ANDROID|OPENBSD" AND HAS_SWIFT_MODULES AND ASKD_BOOTSTRAPPING_MODE) + set(swiftrt "swiftImageRegistrationObject${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_OBJECT_FORMAT}-${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}-${SWIFT_HOST_VARIANT_ARCH}") + if(ASKD_BOOTSTRAPPING_MODE MATCHES "HOSTTOOLS|CROSSCOMPILE") +@@ -156,18 +150,22 @@ function(add_sourcekit_swift_runtime_link_flags target path HAS_SWIFT_MODULES) + else() message(FATAL_ERROR "Unknown ASKD_BOOTSTRAPPING_MODE '${ASKD_BOOTSTRAPPING_MODE}'") endif() - ++ endif() + - if(SWIFT_SWIFT_PARSER) -+ if(SWIFT_BUILD_SWIFT_SYNTAX) ++ if(SWIFT_BUILD_SWIFT_SYNTAX) ++ if(SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS) ++ # Add rpath to the host Swift libraries. ++ file(RELATIVE_PATH relative_hostlib_path "${path}" "${SWIFTLIB_DIR}/host") ++ list(APPEND RPATH_LIST "@loader_path/${relative_hostlib_path}") ++ elseif(SWIFT_HOST_VARIANT_SDK MATCHES "LINUX|ANDROID|OPENBSD") # Add rpath to the host Swift libraries. file(RELATIVE_PATH relative_hostlib_path "${path}" "${SWIFTLIB_DIR}/host") list(APPEND RPATH_LIST "$ORIGIN/${relative_hostlib_path}") -@@ -261,7 +261,7 @@ macro(add_sourcekit_library name) ++ else() ++ target_link_directories(${target} PRIVATE ++ ${SWIFT_PATH_TO_SWIFT_SDK}/usr/lib/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}/${SWIFT_HOST_VARIANT_ARCH}) + endif() +- else() +- target_link_directories(${target} PRIVATE +- ${SWIFT_PATH_TO_SWIFT_SDK}/usr/lib/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}/${SWIFT_HOST_VARIANT_ARCH}) +- endif() + +- if(SWIFT_SWIFT_PARSER) + # For the "end step" of bootstrapping configurations on Darwin, need to be + # able to fall back to the SDK directory for libswiftCore et al. + if (BOOTSTRAPPING_MODE MATCHES "BOOTSTRAPPING.*") +@@ -263,7 +261,7 @@ macro(add_sourcekit_library name) endif() # Once the new Swift parser is linked, everything has Swift modules. @@ -1124,7 +1278,7 @@ index 2293712165751..4b5a63fef6046 100644 set(SOURCEKITLIB_HAS_SWIFT_MODULES ON) endif() -@@ -365,7 +365,7 @@ macro(add_sourcekit_framework name) +@@ -367,7 +365,7 @@ macro(add_sourcekit_framework name) set(framework_location "${lib_dir}/${name}.framework") # Once the new Swift parser is linked, everything has Swift modules. @@ -1133,8 +1287,32 @@ index 2293712165751..4b5a63fef6046 100644 set(SOURCEKITFW_HAS_SWIFT_MODULES ON) endif() +@@ -439,7 +437,6 @@ macro(add_sourcekit_framework name) + file(RELATIVE_PATH relative_lib_path + "${framework_location}/Versions/A" "${SOURCEKIT_LIBRARY_OUTPUT_INTDIR}") + list(APPEND RPATH_LIST "@loader_path/${relative_lib_path}") +- list(APPEND RPATH_LIST "@loader_path/${relative_lib_path}/swift/host") + + set_target_properties(${name} PROPERTIES + BUILD_WITH_INSTALL_RPATH TRUE +@@ -475,7 +472,6 @@ macro(add_sourcekit_framework name) + file(RELATIVE_PATH relative_lib_path + "${framework_location}" "${SOURCEKIT_LIBRARY_OUTPUT_INTDIR}") + list(APPEND RPATH_LIST "@loader_path/${relative_lib_path}") +- list(APPEND RPATH_LIST "@loader_path/${relative_lib_path}/swift/host") + + set_target_properties(${name} PROPERTIES + BUILD_WITH_INSTALL_RPATH TRUE +@@ -567,7 +563,6 @@ macro(add_sourcekit_xpc_service name framework_target) + + file(RELATIVE_PATH relative_lib_path "${xpc_bin_dir}" "${lib_dir}") + list(APPEND RPATH_LIST "@loader_path/${relative_lib_path}") +- list(APPEND RPATH_LIST "@loader_path/${relative_lib_path}/swift/host") + + # Add rpath for sourcekitdInProc + # lib/${framework_target}.framework/Versions/A/XPCServices/${name}.xpc/Contents/MacOS/${name} diff --git a/swift/tools/driver/CMakeLists.txt b/swift/tools/driver/CMakeLists.txt -index f08e56ee3c2f1..1b350f229d4a5 100644 +index 9c2e5ed6486a9..f6ceb3dae63d8 100644 --- a/swift/tools/driver/CMakeLists.txt +++ b/swift/tools/driver/CMakeLists.txt @@ -4,9 +4,7 @@ @@ -1172,8 +1350,8 @@ index 1d1b88b22bd8a..34e8637089521 100644 # Don't bother to create '.a' for that. add_swift_host_library(_swiftCSwiftPluginServer OBJECT @@ -19,9 +19,9 @@ if (SWIFT_SWIFT_PARSER) - swiftDemangling - $ + SWIFT_COMPONENT + compiler SWIFT_DEPENDENCIES - SwiftSyntax::SwiftSyntaxMacros - SwiftSyntax::SwiftSyntaxMacroExpansion @@ -1185,10 +1363,10 @@ index 1d1b88b22bd8a..34e8637089521 100644 ) target_include_directories(swift-plugin-server PRIVATE diff --git a/swift/utils/build-script-impl b/swift/utils/build-script-impl -index c7658ae747a0f..abd937bb508fd 100755 +index 4a243bd7cab5e..4d388a96e3ed1 100755 --- a/swift/utils/build-script-impl +++ b/swift/utils/build-script-impl -@@ -844,16 +844,6 @@ function set_build_options_for_host() { +@@ -836,16 +836,6 @@ function set_build_options_for_host() { swift_cmake_options+=( -DCOVERAGE_DB="${COVERAGE_DB}" ) @@ -1206,10 +1384,10 @@ index c7658ae747a0f..abd937bb508fd 100755 function configure_default_options() { diff --git a/swift/utils/swift_build_support/swift_build_support/build_script_invocation.py b/swift/utils/swift_build_support/swift_build_support/build_script_invocation.py -index d3cd28f0e9a55..ffd97f9b7bcb1 100644 +index 4d70897286f6a..166c5ea02cced 100644 --- a/swift/utils/swift_build_support/swift_build_support/build_script_invocation.py +++ b/swift/utils/swift_build_support/swift_build_support/build_script_invocation.py -@@ -248,13 +248,15 @@ def convert_to_impl_arguments(self): +@@ -251,13 +251,15 @@ def convert_to_impl_arguments(self): args.extra_cmake_options.append( '-DSWIFT_BACK_DEPLOY_CONCURRENCY:BOOL=TRUE') @@ -1231,7 +1409,7 @@ index d3cd28f0e9a55..ffd97f9b7bcb1 100644 # Then add subproject install flags that either skip building them /or/ # if we are going to build them and install_all is set, we also install -@@ -443,6 +445,15 @@ def convert_to_impl_arguments(self): +@@ -446,6 +448,15 @@ def convert_to_impl_arguments(self): os.path.abspath(args.coverage_db) ] @@ -1247,7 +1425,7 @@ index d3cd28f0e9a55..ffd97f9b7bcb1 100644 if args.llvm_install_components: impl_args += [ "--llvm-install-components=%s" % args.llvm_install_components -@@ -565,9 +576,6 @@ def compute_product_pipelines(self): +@@ -568,9 +579,6 @@ def compute_product_pipelines(self): builder.begin_pipeline() @@ -1258,10 +1436,10 @@ index d3cd28f0e9a55..ffd97f9b7bcb1 100644 # as usual, but relying on its own C++-based (Legacy) driver. # Otherwise, we build an "early" swift-driver using the host diff --git a/swift/utils/swift_build_support/swift_build_support/products/__init__.py b/swift/utils/swift_build_support/swift_build_support/products/__init__.py -index 5f4d65c7ad995..5a382b8cd68c7 100644 +index 40fd43960af40..3294929bd1585 100644 --- a/swift/utils/swift_build_support/swift_build_support/products/__init__.py +++ b/swift/utils/swift_build_support/swift_build_support/products/__init__.py -@@ -14,7 +14,6 @@ +@@ -15,7 +15,6 @@ from .cmark import CMark from .curl import LibCurl from .earlyswiftdriver import EarlySwiftDriver @@ -1269,7 +1447,7 @@ index 5f4d65c7ad995..5a382b8cd68c7 100644 from .foundation import Foundation from .indexstoredb import IndexStoreDB from .libcxx import LibCXX -@@ -63,7 +62,6 @@ +@@ -65,7 +64,6 @@ 'SwiftPM', 'SwiftDriver', 'EarlySwiftDriver', @@ -1307,7 +1485,7 @@ deleted file mode 100644 index 37c1bede9b0bd..0000000000000 --- a/swift/utils/swift_build_support/swift_build_support/products/earlyswiftsyntax.py +++ /dev/null -@@ -1,82 +0,0 @@ +@@ -1,83 +0,0 @@ -# swift_build_support/products/earlyswiftsyntax.py --------------*- python -*- -# -# This source file is part of the Swift.org open source project @@ -1373,6 +1551,7 @@ index 37c1bede9b0bd..0000000000000 - self.cmake_options.define('CMAKE_INSTALL_PREFIX:PATH', self.args.install_prefix) - self.cmake_options.define('SWIFTSYNTAX_ENABLE_ASSERTIONS:BOOL', - self.args.assertions) +- self.cmake_options.define('SWIFT_MODULE_ABI_NAME_PREFIX:STRING', 'Compiler') - self.build_with_cmake(["all"], self.args.swift_build_variant, []) - - def should_test(self, host_target): @@ -1383,10 +1562,10 @@ index 37c1bede9b0bd..0000000000000 - pass - - def should_install(self, host_target): -- # The artifacts are copied to build directory of 'swift' and are -- # installed as a part of 'swift' product. -- return False +- # When '--install-swift' is enabled, earlyswiftsyntax libraries are installed +- # from 'swift' product. +- return (self.should_build(host_target) and self.args.install_swiftsyntax and +- "--install-swift" not in self.args.build_script_impl_args) - - def install(self, host_target): -- # No-op. -- pass +- self.install_with_cmake(["install"], self.host_install_destdir(host_target)) diff --git a/packages/swift/swift-stdlib-public-runtime-CrashHandlerLinux.cpp.patch b/packages/swift/swift-stdlib-public-runtime-CrashHandlerLinux.cpp.patch new file mode 100644 index 000000000000000..8a3411a8c42fa09 --- /dev/null +++ b/packages/swift/swift-stdlib-public-runtime-CrashHandlerLinux.cpp.patch @@ -0,0 +1,16 @@ +diff --git a/swift/stdlib/public/runtime/CrashHandlerLinux.cpp b/swift/stdlib/public/runtime/CrashHandlerLinux.cpp +index ff44dbe7541..2f386278975 100644 +--- a/swift/stdlib/public/runtime/CrashHandlerLinux.cpp ++++ b/swift/stdlib/public/runtime/CrashHandlerLinux.cpp +@@ -243,7 +243,11 @@ handle_fatal_signal(int signum, + #elif defined(__arm64__) || defined(__aarch64__) + pc = (void *)(ctx->uc_mcontext.pc); + #elif defined(__arm__) ++#if defined(__ANDROID__) ++ pc = (void *)(ctx->uc_mcontext.arm_pc); ++#else + pc = (void *)(ctx->uc_mcontext.gprs[15]); ++#endif + #endif + + _swift_displayCrashMessage(signum, pc); diff --git a/packages/swift/swift-syntax-regex-cross-compile.patch b/packages/swift/swift-syntax-regex-cross-compile.patch index 42a1107de22c5ea..5ff4abdf4c4b1b2 100644 --- a/packages/swift/swift-syntax-regex-cross-compile.patch +++ b/packages/swift/swift-syntax-regex-cross-compile.patch @@ -65,18 +65,6 @@ index ecdea6de266..777ea384050 100644 else() return() endif() -diff --git a/swift/stdlib/cmake/modules/SwiftSource.cmake b/swift/stdlib/cmake/modules/SwiftSource.cmake ---- a/swift/stdlib/cmake/modules/SwiftSource.cmake -+++ b/swift/stdlib/cmake/modules/SwiftSource.cmake -@@ -777,7 +777,7 @@ - endif() - - set(swift_compiler_tool_dep) -- if(SWIFT_INCLUDE_TOOLS AND NOT ${BOOTSTRAPPING_MODE} STREQUAL "CROSSCOMPILE") -+ if(SWIFT_INCLUDE_TOOLS AND NOT ${BOOTSTRAPPING_MODE} STREQUAL "CROSSCOMPILE" AND "${SWIFT_ANDROID_NDK_PATH}" STREQUAL "") - # Depend on the binary itself, in addition to the symlink. - set(swift_compiler_tool_dep "swift-frontend${target_suffix}") - endif() diff --git a/swift/tools/libStaticMirror/CMakeLists.txt b/swift/tools/libStaticMirror/CMakeLists.txt index 1b8c563b05a..463faab64de 100644 --- a/swift/tools/libStaticMirror/CMakeLists.txt diff --git a/packages/swift/swiftpm-Sources-Build-BuildDescription-ProductBuildDescription.swift.patch b/packages/swift/swiftpm-Sources-Build-BuildDescription-ProductBuildDescription.swift.patch deleted file mode 100644 index 59eeac72bb6991d..000000000000000 --- a/packages/swift/swiftpm-Sources-Build-BuildDescription-ProductBuildDescription.swift.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff --git a/swiftpm/Sources/Build/BuildDescription/ProductBuildDescription.swift b/swiftpm/Sources/Build/BuildDescription/ProductBuildDescription.swift -index 9e2529d00..ef22cbefa 100644 ---- a/swiftpm/Sources/Build/BuildDescription/ProductBuildDescription.swift -+++ b/swiftpm/Sources/Build/BuildDescription/ProductBuildDescription.swift -@@ -308,14 +308,6 @@ public final class ProductBuildDescription: SPMBuildCore.ProductBuildDescription - args += self.buildParameters.linkerFlags - args += self.stripInvalidArguments(self.buildParameters.swiftCompilerFlags) - -- // Add toolchain's libdir at the very end (even after the user -Xlinker arguments). -- // -- // This will allow linking to libraries shipped in the toolchain. -- let toolchainLibDir = try buildParameters.toolchain.toolchainLibDir -- if self.fileSystem.isDirectory(toolchainLibDir) { -- args += ["-L", toolchainLibDir.pathString] -- } -- - // Library search path for the toolchain's copy of SwiftSyntax. - #if BUILD_MACROS_AS_DYLIBS - if product.type == .macro { diff --git a/packages/swift/swiftpm-disable-local-rpath.patch b/packages/swift/swiftpm-disable-local-rpath.patch new file mode 100644 index 000000000000000..fb402a55f220da5 --- /dev/null +++ b/packages/swift/swiftpm-disable-local-rpath.patch @@ -0,0 +1,278 @@ +commit 78b88bb6bc428f651ae615a944d985858e0a60f0 +Date: Mon Sep 25 02:19:40 2023 +0530 + + Add an rpath flag to disable the default of looking in the local directory for shared libraries + + This is useful when deploying build products, as most executables are not installed + in the same directory as libraries and system libraries do not need it for + system paths. Use the new flag when installing SwiftPM itself and the {Manifest,Plugin}API + libraries on ELF platforms. + +diff --git a/swiftpm/Sources/Build/BuildDescription/ProductBuildDescription.swift b/swiftpm/Sources/Build/BuildDescription/ProductBuildDescription.swift +index 7aed35e48..5fdb9b4e5 100644 +--- a/swiftpm/Sources/Build/BuildDescription/ProductBuildDescription.swift ++++ b/swiftpm/Sources/Build/BuildDescription/ProductBuildDescription.swift +@@ -257,12 +257,14 @@ public final class ProductBuildDescription: SPMBuildCore.ProductBuildDescription + } + + // Set rpath such that dynamic libraries are looked up +- // adjacent to the product. +- if self.buildParameters.triple.isLinux() { +- args += ["-Xlinker", "-rpath=$ORIGIN"] +- } else if self.buildParameters.triple.isDarwin() { +- let rpath = self.product.type == .test ? "@loader_path/../../../" : "@loader_path" +- args += ["-Xlinker", "-rpath", "-Xlinker", rpath] ++ // adjacent to the product, unless overridden. ++ if !self.buildParameters.shouldDisableLocalRpath { ++ if self.buildParameters.triple.isLinux() { ++ args += ["-Xlinker", "-rpath=$ORIGIN"] ++ } else if self.buildParameters.triple.isDarwin() { ++ let rpath = self.product.type == .test ? "@loader_path/../../../" : "@loader_path" ++ args += ["-Xlinker", "-rpath", "-Xlinker", rpath] ++ } + } + args += ["@\(self.linkFileListPath.pathString)"] + +diff --git a/swiftpm/Sources/CoreCommands/Options.swift b/swiftpm/Sources/CoreCommands/Options.swift +index d09b28d6a..739db470e 100644 +--- a/swiftpm/Sources/CoreCommands/Options.swift ++++ b/swiftpm/Sources/CoreCommands/Options.swift +@@ -524,6 +524,10 @@ public struct LinkerOptions: ParsableArguments { + /// If should link the Swift stdlib statically. + @Flag(name: .customLong("static-swift-stdlib"), inversion: .prefixedNo, help: "Link Swift stdlib statically") + public var shouldLinkStaticSwiftStdlib: Bool = false ++ ++ /// Disables adding $ORIGIN/@loader_path to the rpath, useful when deploying ++ @Flag(name: .customLong("disable-local-rpath"), help: "Disable adding $ORIGIN/@loader_path to the rpath by default") ++ public var shouldDisableLocalRpath: Bool = false + } + + // MARK: - Extensions +diff --git a/swiftpm/Sources/CoreCommands/SwiftTool.swift b/swiftpm/Sources/CoreCommands/SwiftTool.swift +index 72e8be958..b99b80770 100644 +--- a/swiftpm/Sources/CoreCommands/SwiftTool.swift ++++ b/swiftpm/Sources/CoreCommands/SwiftTool.swift +@@ -683,6 +683,7 @@ public final class SwiftTool { + architectures: options.build.architectures, + workers: options.build.jobs ?? UInt32(ProcessInfo.processInfo.activeProcessorCount), + shouldLinkStaticSwiftStdlib: options.linker.shouldLinkStaticSwiftStdlib, ++ shouldDisableLocalRpath: options.linker.shouldDisableLocalRpath, + canRenameEntrypointFunctionName: driverSupport.checkSupportedFrontendFlags( + flags: ["entry-point-function-name"], + toolchain: toolchain, +diff --git a/swiftpm/Sources/SPMBuildCore/BuildParameters.swift b/swiftpm/Sources/SPMBuildCore/BuildParameters.swift +index 57825c6e4..bbb3c2cc3 100644 +--- a/swiftpm/Sources/SPMBuildCore/BuildParameters.swift ++++ b/swiftpm/Sources/SPMBuildCore/BuildParameters.swift +@@ -190,6 +190,9 @@ public struct BuildParameters: Encodable { + /// If should link the Swift stdlib statically. + public var shouldLinkStaticSwiftStdlib: Bool + ++ /// Disables adding $ORIGIN/@loader_path to the rpath, useful when deploying ++ public var shouldDisableLocalRpath: Bool ++ + /// Which compiler sanitizers should be enabled + public var sanitizers: EnabledSanitizers + +@@ -362,6 +365,7 @@ public struct BuildParameters: Encodable { + architectures: [String]? = nil, + workers: UInt32 = UInt32(ProcessInfo.processInfo.activeProcessorCount), + shouldLinkStaticSwiftStdlib: Bool = false, ++ shouldDisableLocalRpath: Bool = false, + shouldEnableManifestCaching: Bool = false, + canRenameEntrypointFunctionName: Bool = false, + shouldCreateDylibForDynamicProducts: Bool = true, +@@ -424,6 +428,7 @@ public struct BuildParameters: Encodable { + self.architectures = architectures + self.workers = workers + self.shouldLinkStaticSwiftStdlib = shouldLinkStaticSwiftStdlib ++ self.shouldDisableLocalRpath = shouldDisableLocalRpath + self.shouldEnableManifestCaching = shouldEnableManifestCaching + self.shouldCreateDylibForDynamicProducts = shouldCreateDylibForDynamicProducts + self.canRenameEntrypointFunctionName = canRenameEntrypointFunctionName +@@ -487,6 +492,7 @@ public struct BuildParameters: Encodable { + architectures: nil, + workers: self.workers, + shouldLinkStaticSwiftStdlib: self.shouldLinkStaticSwiftStdlib, ++ shouldDisableLocalRpath: self.shouldDisableLocalRpath, + shouldEnableManifestCaching: self.shouldEnableManifestCaching, + canRenameEntrypointFunctionName: self.canRenameEntrypointFunctionName, + shouldCreateDylibForDynamicProducts: self.shouldCreateDylibForDynamicProducts, +diff --git a/swiftpm/Sources/swift-bootstrap/main.swift b/swiftpm/Sources/swift-bootstrap/main.swift +index 9f45edf51..5c80a5249 100644 +--- a/swiftpm/Sources/swift-bootstrap/main.swift ++++ b/swiftpm/Sources/swift-bootstrap/main.swift +@@ -118,6 +118,10 @@ struct SwiftBootstrapBuildTool: ParsableCommand { + @Flag() + public var useIntegratedSwiftDriver: Bool = false + ++ /// Disables adding $ORIGIN/@loader_path to the rpath, useful when deploying ++ @Flag(name: .customLong("disable-local-rpath"), help: "Disable adding $ORIGIN/@loader_path to the rpath by default") ++ public var shouldDisableLocalRpath: Bool = false ++ + private var buildSystem: BuildSystemProvider.Kind { + #if os(macOS) + // Force the Xcode build system if we want to build more than one arch. +@@ -188,7 +192,8 @@ struct SwiftBootstrapBuildTool: ParsableCommand { + architectures: self.architectures, + buildFlags: self.buildFlags, + manifestBuildFlags: self.manifestFlags, +- useIntegratedSwiftDriver: self.useIntegratedSwiftDriver ++ useIntegratedSwiftDriver: self.useIntegratedSwiftDriver, ++ shouldDisableLocalRpath: self.shouldDisableLocalRpath + ) + } catch _ as Diagnostics { + throw ExitCode.failure +@@ -232,7 +237,8 @@ struct SwiftBootstrapBuildTool: ParsableCommand { + architectures: [String], + buildFlags: BuildFlags, + manifestBuildFlags: [String], +- useIntegratedSwiftDriver: Bool ++ useIntegratedSwiftDriver: Bool, ++ shouldDisableLocalRpath: Bool + ) throws { + let buildSystem = try createBuildSystem( + packagePath: packagePath, +@@ -244,6 +250,7 @@ struct SwiftBootstrapBuildTool: ParsableCommand { + buildFlags: buildFlags, + manifestBuildFlags: manifestBuildFlags, + useIntegratedSwiftDriver: useIntegratedSwiftDriver, ++ shouldDisableLocalRpath: shouldDisableLocalRpath, + logLevel: logLevel + ) + try buildSystem.build(subset: .allExcludingTests) +@@ -259,6 +266,7 @@ struct SwiftBootstrapBuildTool: ParsableCommand { + buildFlags: BuildFlags, + manifestBuildFlags: [String], + useIntegratedSwiftDriver: Bool, ++ shouldDisableLocalRpath: Bool, + logLevel: Basics.Diagnostic.Severity + ) throws -> BuildSystem { + +@@ -277,6 +285,7 @@ struct SwiftBootstrapBuildTool: ParsableCommand { + destinationTriple: self.destinationToolchain.triple, + flags: buildFlags, + architectures: architectures, ++ shouldDisableLocalRpath: shouldDisableLocalRpath, + useIntegratedSwiftDriver: useIntegratedSwiftDriver, + isXcodeBuildSystemEnabled: buildSystem == .xcode, + verboseOutput: logLevel <= .info +diff --git a/swiftpm/Tests/BuildTests/BuildPlanTests.swift b/swiftpm/Tests/BuildTests/BuildPlanTests.swift +index 768952986..c847afd52 100644 +--- a/swiftpm/Tests/BuildTests/BuildPlanTests.swift ++++ b/swiftpm/Tests/BuildTests/BuildPlanTests.swift +@@ -5021,4 +5021,80 @@ final class BuildPlanTests: XCTestCase { + + XCTAssertMatch(try result.buildProduct(for: "exe").linkArguments(), ["-sanitize=\(expectedName)"]) + } ++ ++ func testBasicSwiftPackageWithoutLocalRpath() throws { ++ let fs = InMemoryFileSystem(emptyFiles: ++ "/Pkg/Sources/exe/main.swift", ++ "/Pkg/Sources/lib/lib.swift" ++ ) ++ ++ let observability = ObservabilitySystem.makeForTesting() ++ let graph = try loadPackageGraph( ++ fileSystem: fs, ++ manifests: [ ++ Manifest.createRootManifest( ++ displayName: "Pkg", ++ path: "/Pkg", ++ targets: [ ++ TargetDescription(name: "exe", dependencies: ["lib"]), ++ TargetDescription(name: "lib", dependencies: []), ++ ]), ++ ], ++ observabilityScope: observability.topScope ++ ) ++ XCTAssertNoDiagnostics(observability.diagnostics) ++ ++ let result = try BuildPlanResult(plan: BuildPlan( ++ buildParameters: mockBuildParameters(shouldDisableLocalRpath: true), ++ graph: graph, ++ fileSystem: fs, ++ observabilityScope: observability.topScope ++ )) ++ ++ result.checkProductsCount(1) ++ result.checkTargetsCount(2) ++ ++ let buildPath = result.plan.buildParameters.dataPath.appending(components: "debug") ++ ++ #if os(macOS) ++ let linkArguments = [ ++ result.plan.buildParameters.toolchain.swiftCompilerPath.pathString, ++ "-L", buildPath.pathString, ++ "-o", buildPath.appending(components: "exe").pathString, ++ "-module-name", "exe", ++ "-emit-executable", ++ "@\(buildPath.appending(components: "exe.product", "Objects.LinkFileList"))", ++ "-Xlinker", "-rpath", "-Xlinker", "/fake/path/lib/swift-5.5/macosx", ++ "-target", defaultTargetTriple, ++ "-Xlinker", "-add_ast_path", "-Xlinker", buildPath.appending(components: "exe.build", "exe.swiftmodule").pathString, ++ "-Xlinker", "-add_ast_path", "-Xlinker", buildPath.appending(components: "lib.swiftmodule").pathString, ++ "-g", ++ ] ++ #elseif os(Windows) ++ let linkArguments = [ ++ result.plan.buildParameters.toolchain.swiftCompilerPath.pathString, ++ "-L", buildPath.pathString, ++ "-o", buildPath.appending(components: "exe.exe").pathString, ++ "-module-name", "exe", ++ "-emit-executable", ++ "@\(buildPath.appending(components: "exe.product", "Objects.LinkFileList"))", ++ "-target", defaultTargetTriple, ++ "-g", "-use-ld=lld", "-Xlinker", "-debug:dwarf", ++ ] ++ #else ++ let linkArguments = [ ++ result.plan.buildParameters.toolchain.swiftCompilerPath.pathString, ++ "-L", buildPath.pathString, ++ "-o", buildPath.appending(components: "exe").pathString, ++ "-module-name", "exe", ++ "-emit-executable", ++ "@\(buildPath.appending(components: "exe.product", "Objects.LinkFileList"))", ++ "-target", defaultTargetTriple, ++ "-g" ++ ] ++ #endif ++ ++ XCTAssertEqual(try result.buildProduct(for: "exe").linkArguments(), linkArguments) ++ XCTAssertNoDiagnostics(observability.diagnostics) ++ } + } +diff --git a/swiftpm/Tests/BuildTests/MockBuildTestHelper.swift b/swiftpm/Tests/BuildTests/MockBuildTestHelper.swift +index 243f68a58..b4dd25595 100644 +--- a/swiftpm/Tests/BuildTests/MockBuildTestHelper.swift ++++ b/swiftpm/Tests/BuildTests/MockBuildTestHelper.swift +@@ -71,6 +71,7 @@ func mockBuildParameters( + toolchain: PackageModel.Toolchain = MockToolchain(), + flags: PackageModel.BuildFlags = PackageModel.BuildFlags(), + shouldLinkStaticSwiftStdlib: Bool = false, ++ shouldDisableLocalRpath: Bool = false, + canRenameEntrypointFunctionName: Bool = false, + destinationTriple: Basics.Triple = hostTriple, + indexStoreMode: BuildParameters.IndexStoreMode = .off, +@@ -88,6 +89,7 @@ func mockBuildParameters( + pkgConfigDirectories: [], + workers: 3, + shouldLinkStaticSwiftStdlib: shouldLinkStaticSwiftStdlib, ++ shouldDisableLocalRpath: shouldDisableLocalRpath, + canRenameEntrypointFunctionName: canRenameEntrypointFunctionName, + indexStoreMode: indexStoreMode, + useExplicitModuleBuild: useExplicitModuleBuild, +diff --git a/swiftpm/Utilities/bootstrap b/swiftpm/Utilities/bootstrap +index 33aacd0b7..5d8ab14b8 100755 +--- a/swiftpm/Utilities/bootstrap ++++ b/swiftpm/Utilities/bootstrap +@@ -769,6 +769,9 @@ def get_swiftpm_flags(args): + "--configuration", "release", + ]) + ++ if not '-android' in args.build_target and args.command == 'install': ++ build_flags.append("--disable-local-rpath") ++ + if args.verbose: + build_flags.append("--verbose") + diff --git a/scripts/build/setup/termux_setup_swift.sh b/scripts/build/setup/termux_setup_swift.sh index 70471562b6c5a94..75424a22a23604b 100644 --- a/scripts/build/setup/termux_setup_swift.sh +++ b/scripts/build/setup/termux_setup_swift.sh @@ -17,9 +17,9 @@ termux_setup_swift() { if [ ! -d "$SWIFT_FOLDER" ]; then local SWIFT_TAR=$TERMUX_PKG_TMPDIR/${SWIFT_BIN}.tar.gz termux_download \ - https://download.swift.org/swift-$TERMUX_SWIFT_VERSION-release/ubuntu2204/swift-$TERMUX_SWIFT_VERSION-$SWIFT_RELEASE/$SWIFT_BIN.tar.gz \ + https://download.swift.org/swift-$TERMUX_SWIFT_VERSION-branch/ubuntu2204/swift-$TERMUX_SWIFT_VERSION-$SWIFT_RELEASE/$SWIFT_BIN.tar.gz \ $SWIFT_TAR \ - ea2fe1190a9cb8abed8c5e7b94223a06a23c7dc8cd498850a1c79b8a87e7c251 + 4bf604fa85ff69345c82ead8abd08931c578368946042479fa15d80597002efc (cd $TERMUX_PKG_TMPDIR ; tar xf $SWIFT_TAR ; mv $SWIFT_BIN $SWIFT_FOLDER; rm $SWIFT_TAR) fi