File tree Expand file tree Collapse file tree 2 files changed +24
-1
lines changed Expand file tree Collapse file tree 2 files changed +24
-1
lines changed Original file line number Diff line number Diff line change @@ -948,6 +948,10 @@ if(XCODE)
948948 swift_common_xcode_cxx_config()
949949endif ()
950950
951+ # Check what linux distribution is being used.
952+ # This can be used to determine the default linker to use.
953+ cmake_host_system_information (RESULT DISTRO_NAME QUERY DISTRIB_PRETTY_NAME)
954+
951955# Which default linker to use. Prefer LLVM_USE_LINKER if it set, otherwise use
952956# our own defaults. This should only be possible in a unified (not stand alone)
953957# build environment.
@@ -959,6 +963,8 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows" AND NOT CMAKE_HOST_SYSTEM_NAME STREQ
959963 set (SWIFT_USE_LINKER_default "lld" )
960964elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin" )
961965 set (SWIFT_USE_LINKER_default "" )
966+ elseif (DISTRO_NAME STREQUAL "Amazon Linux 2023" )
967+ set (SWIFT_USE_LINKER_default "lld" )
962968else ()
963969 set (SWIFT_USE_LINKER_default "gold" )
964970endif ()
Original file line number Diff line number Diff line change 1010//
1111// ===----------------------------------------------------------------------===//
1212
13+ #include < fstream>
14+
1315#include " ToolChains.h"
1416
1517#include " swift/Basic/LLVM.h"
@@ -108,9 +110,24 @@ ToolChain::InvocationInfo toolchains::GenericUnix::constructInvocation(
108110
109111 return II;
110112}
113+ // Amazon Linux 2023 requires lld as the default linker.
114+ bool isAmazonLinux2023Host () {
115+ std::ifstream file (" /etc/os-release" );
116+ std::string line;
117+
118+ while (std::getline (file, line)) {
119+ if (line.substr (0 , 12 ) == " PRETTY_NAME=" ) {
120+ if (line.substr (12 ) == " \" Amazon Linux 2023\" " ) {
121+ file.close ();
122+ return true ;
123+ }
124+ }
125+ }
126+ return false ;
127+ }
111128
112129std::string toolchains::GenericUnix::getDefaultLinker () const {
113- if (getTriple ().isAndroid ())
130+ if (getTriple ().isAndroid () || isAmazonLinux2023Host () )
114131 return " lld" ;
115132
116133 switch (getTriple ().getArch ()) {
You can’t perform that action at this time.
0 commit comments