From 54e19cf8a066277d6b61aba81e06d8f3c3f8e6ff Mon Sep 17 00:00:00 2001 From: Butta Date: Sun, 1 Jan 2023 22:03:03 +0530 Subject: [PATCH] [Driver] Use llvm-ar by default on Unix and copy it over into the build directory Now that llvm-ar is installed by default in the toolchain, #62510, and a recent SPM change requires there to be an archiver in the toolchain/PATH, apple/swift-package-manager#5761, use that bundled llvm-ar for all Unix platforms, which requires copying it over into the build directory too before building the corelibs. --- lib/Driver/UnixToolChains.cpp | 6 +----- utils/CMakeLists.txt | 9 +++++++++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/Driver/UnixToolChains.cpp b/lib/Driver/UnixToolChains.cpp index e016d041199d6..67255d7fdaa6c 100644 --- a/lib/Driver/UnixToolChains.cpp +++ b/lib/Driver/UnixToolChains.cpp @@ -408,12 +408,8 @@ toolchains::GenericUnix::constructInvocation(const StaticLinkJobAction &job, ArgStringList Arguments; - const char *AR; + const char *AR = "llvm-ar"; // Configure the toolchain. - if (getTriple().isAndroid()) - AR = "llvm-ar"; - else - AR = context.OI.LTOVariant != OutputInfo::LTOKind::None ? "llvm-ar" : "ar"; Arguments.push_back("crs"); Arguments.push_back( diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt index 2389fba5f7df9..f45811d76e318 100644 --- a/utils/CMakeLists.txt +++ b/utils/CMakeLists.txt @@ -15,3 +15,12 @@ file(TO_CMAKE_PATH "${LLVM_BUILD_BINARY_DIR}/bin/FileCheck${CMAKE_EXECUTABLE_SUF swift_install_in_component(PROGRAMS "${_SWIFT_UTILS_FILECHECK}" DESTINATION bin COMPONENT llvm-toolchain-dev-tools) + +# Copy over llvm-ar to use in building the Swift portions of the corelibs on +# Unix platforms. +if(NOT "${SWIFT_HOST_VARIANT_SDK}" MATCHES "OSX|WINDOWS|WASI") + file(COPY ${LLVM_RUNTIME_OUTPUT_INTDIR}/bin/llvm-ar + DESTINATION "${SWIFT_RUNTIME_OUTPUT_INTDIR}" + FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ + GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) +endif()