File tree Expand file tree Collapse file tree 3 files changed +15
-14
lines changed Expand file tree Collapse file tree 3 files changed +15
-14
lines changed Original file line number Diff line number Diff line change @@ -65,7 +65,9 @@ class XcodeSDK {
65
65
// / parameter. For example, "MacOSX.10.14.sdk".
66
66
XcodeSDK (std::string &&name) : m_name(std::move(name)) {}
67
67
XcodeSDK (std::string name, FileSpec sysroot)
68
- : m_name(std::move(name)), m_sysroot(std::move(sysroot)) {}
68
+ : m_name(std::move(name)), m_sysroot(std::move(sysroot)) {
69
+ assert (!m_sysroot || m_name == m_sysroot.GetFilename ().GetStringRef ());
70
+ }
69
71
static XcodeSDK GetAnyMacOS () { return XcodeSDK (" MacOSX.sdk" ); }
70
72
71
73
// / The merge function follows a strict order to maintain monotonicity:
Original file line number Diff line number Diff line change @@ -155,10 +155,6 @@ bool XcodeSDK::Info::operator==(const Info &other) const {
155
155
}
156
156
157
157
void XcodeSDK::Merge (const XcodeSDK &other) {
158
- auto add_internal_sdk_suffix = [](llvm::StringRef sdk) {
159
- return (sdk.substr (0 , sdk.size () - 3 ) + " Internal.sdk" ).str ();
160
- };
161
-
162
158
// The "bigger" SDK always wins.
163
159
auto l = Parse ();
164
160
auto r = other.Parse ();
@@ -168,12 +164,14 @@ void XcodeSDK::Merge(const XcodeSDK &other) {
168
164
// The Internal flag always wins.
169
165
if (!l.internal && r.internal ) {
170
166
if (llvm::StringRef (m_name).ends_with (" .sdk" ))
171
- m_name = add_internal_sdk_suffix (m_name);
172
-
173
- if (m_sysroot.GetFileNameExtension () == " .sdk" )
174
- m_sysroot.SetFilename (add_internal_sdk_suffix (m_sysroot.GetFilename ()));
167
+ m_name =
168
+ m_name.substr (0 , m_name.size () - 3 ) + std::string (" Internal.sdk" );
175
169
}
176
170
}
171
+
172
+ // We changed the SDK name. Adjust the sysroot accordingly.
173
+ if (m_sysroot && m_sysroot.GetFilename ().GetStringRef () != m_name)
174
+ m_sysroot.SetFilename (m_name);
177
175
}
178
176
179
177
std::string XcodeSDK::GetCanonicalName (XcodeSDK::Info info) {
Original file line number Diff line number Diff line change @@ -66,13 +66,14 @@ TEST(XcodeSDKTest, MergeTest) {
66
66
empty.Merge (XcodeSDK (" MacOSX10.14.Internal.sdk" ));
67
67
EXPECT_EQ (empty.GetString (), llvm::StringRef (" MacOSX10.14.Internal.sdk" ));
68
68
EXPECT_FALSE (empty.GetSysroot ());
69
- empty.Merge (XcodeSDK (" MacOSX9.5.Internal.sdk" , FileSpec{" /Path/To/9.5.sdk" }));
69
+ empty.Merge (XcodeSDK (" MacOSX9.5.Internal.sdk" ,
70
+ FileSpec{" /Path/To/MacOSX9.5.Internal.sdk" }));
70
71
EXPECT_FALSE (empty.GetSysroot ());
71
- empty.Merge (XcodeSDK (" MacOSX12.5.sdk" , FileSpec{" /Path/To/12 .5.sdk" }));
72
- EXPECT_EQ (empty.GetSysroot (), FileSpec{" /Path/To/12 .5.sdk" });
72
+ empty.Merge (XcodeSDK (" MacOSX12.5.sdk" , FileSpec{" /Path/To/MacOSX12 .5.sdk" }));
73
+ EXPECT_EQ (empty.GetSysroot (), FileSpec{" /Path/To/MacOSX12 .5.sdk" });
73
74
empty.Merge (XcodeSDK (" MacOSX11.5.Internal.sdk" ,
74
- FileSpec{" /Path/To/12 .5.Internal.sdk" }));
75
- EXPECT_EQ (empty.GetSysroot (), FileSpec{" /Path/To/12 .5.Internal.sdk" });
75
+ FileSpec{" /Path/To/MacOSX11 .5.Internal.sdk" }));
76
+ EXPECT_EQ (empty.GetSysroot (), FileSpec{" /Path/To/MacOSX12 .5.Internal.sdk" });
76
77
}
77
78
78
79
#ifndef _WIN32
You can’t perform that action at this time.
0 commit comments