}
void setAlternateName(StringRef def, StringRef weak);
- void addNoDefaultLib(StringRef path) { _noDefaultLibs.insert(path); }
+ void addNoDefaultLib(StringRef path) {
+ if (path.endswith_lower(".lib"))
+ _noDefaultLibs.insert(path.drop_back(4).lower());
+ else
+ _noDefaultLibs.insert(path.lower());
+ }
+
bool hasNoDefaultLib(StringRef path) const {
- return _noDefaultLibs.count(path) == 1;
+ if (path.endswith_lower(".lib"))
+ return _noDefaultLibs.count(path.drop_back(4).lower()) > 0;
+ return _noDefaultLibs.count(path.lower()) > 0;
}
void setNoDefaultLibAll(bool val) { _noDefaultLibAll = val; }
EXPECT_EQ("kernel32.lib", inputFile(2, 0));
}
+TEST_F(WinLinkParserTest, NoDefaultLibCase) {
+ EXPECT_TRUE(parse("link.exe", "/defaultlib:user32",
+ "/defaultlib:kernel32", "/nodefaultlib:USER32.LIB", "a.obj",
+ nullptr));
+ EXPECT_EQ(3, inputFileCount());
+ EXPECT_EQ("a.obj", inputFile(0));
+ EXPECT_EQ("kernel32.lib", inputFile(2, 0));
+}
+
TEST_F(WinLinkParserTest, NoDefaultLibAll) {
EXPECT_TRUE(parse("link.exe", "/defaultlib:user32.lib",
"/defaultlib:kernel32", "/nodefaultlib", "a.obj", nullptr));