File tree 2 files changed +24
-1
lines changed
2 files changed +24
-1
lines changed Original file line number Diff line number Diff line change @@ -959,6 +959,10 @@ if(XCODE)
959
959
swift_common_xcode_cxx_config()
960
960
endif ()
961
961
962
+ # Check what linux distribution is being used.
963
+ # This can be used to determine the default linker to use.
964
+ cmake_host_system_information (RESULT DISTRO_NAME QUERY DISTRIB_PRETTY_NAME)
965
+
962
966
# Which default linker to use. Prefer LLVM_USE_LINKER if it set, otherwise use
963
967
# our own defaults. This should only be possible in a unified (not stand alone)
964
968
# build environment.
@@ -970,6 +974,8 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows" AND NOT CMAKE_HOST_SYSTEM_NAME STREQ
970
974
set (SWIFT_USE_LINKER_default "lld" )
971
975
elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin" )
972
976
set (SWIFT_USE_LINKER_default "" )
977
+ elseif (DISTRO_NAME STREQUAL "Amazon Linux 2023" )
978
+ set (SWIFT_USE_LINKER_default "lld" )
973
979
else ()
974
980
set (SWIFT_USE_LINKER_default "gold" )
975
981
endif ()
Original file line number Diff line number Diff line change 10
10
//
11
11
// ===----------------------------------------------------------------------===//
12
12
13
+ #include < fstream>
14
+
13
15
#include " ToolChains.h"
14
16
15
17
#include " swift/Basic/LLVM.h"
@@ -108,9 +110,24 @@ ToolChain::InvocationInfo toolchains::GenericUnix::constructInvocation(
108
110
109
111
return II;
110
112
}
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
+ }
111
128
112
129
std::string toolchains::GenericUnix::getDefaultLinker () const {
113
- if (getTriple ().isAndroid ())
130
+ if (getTriple ().isAndroid () || isAmazonLinux2023Host () )
114
131
return " lld" ;
115
132
116
133
switch (getTriple ().getArch ()) {
You can’t perform that action at this time.
0 commit comments