for (StringRef dir : searchPaths)
if (Optional<std::string> s = findFile(dir, name.substr(1)))
return *s;
- fatal("unable to find library -l" + name);
+ error("unable to find library -l" + name);
+ return "";
}
for (StringRef dir : searchPaths) {
- if (!bStatic)
+ if (!bStatic) {
if (Optional<std::string> s = findFile(dir, "lib" + name + ".dll.a"))
return *s;
+ if (Optional<std::string> s = findFile(dir, name + ".dll.a"))
+ return *s;
+ }
if (Optional<std::string> s = findFile(dir, "lib" + name + ".a"))
return *s;
+ if (!bStatic) {
+ if (Optional<std::string> s = findFile(dir, name + ".lib"))
+ return *s;
+ if (Optional<std::string> s = findFile(dir, "lib" + name + ".dll")) {
+ error("lld doesn't support linking directly against " + *s +
+ ", use an import library");
+ return "";
+ }
+ if (Optional<std::string> s = findFile(dir, name + ".dll")) {
+ error("lld doesn't support linking directly against " + *s +
+ ", use an import library");
+ return "";
+ }
+ }
}
- fatal("unable to find library -l" + name);
+ error("unable to find library -l" + name);
+ return "";
}
// Convert Unix-ish command line arguments to Windows-ish ones and
}
}
+ if (errorCount())
+ return false;
+
if (args.hasArg(OPT_verbose) || args.hasArg(OPT__HASH_HASH_HASH))
outs() << llvm::join(linkArgs, " ") << "\n";
RUN: ld.lld -### -m i386pep -Bstatic -lfoo -Bdynamic -lbar -L%t/lib | FileCheck -check-prefix=LIB5 %s
LIB5: libfoo.a
LIB5-SAME: libbar.dll.a
+
+RUN: echo > %t/lib/noprefix.dll.a
+RUN: echo > %t/lib/msvcstyle.lib
+RUN: ld.lld -### -m i386pep -L%t/lib -lnoprefix -lmsvcstyle | FileCheck -check-prefix=OTHERSTYLES %s
+OTHERSTYLES: noprefix.dll.a
+OTHERSTYLES-SAME: msvcstyle.lib
+
+RUN: echo > %t/lib/libnoimplib.dll
+RUN: echo > %t/lib/noprefix_noimplib.dll
+RUN: not ld.lld -### -m i386pep -L%t/lib -lnoimplib 2>&1 | FileCheck -check-prefix=UNSUPPORTED-DLL1 %s
+RUN: not ld.lld -### -m i386pep -L%t/lib -lnoprefix_noimplib 2>&1 | FileCheck -check-prefix=UNSUPPORTED-DLL2 %s
+UNSUPPORTED-DLL1: lld doesn't support linking directly against {{.*}}libnoimplib.dll, use an import library
+UNSUPPORTED-DLL2: lld doesn't support linking directly against {{.*}}noprefix_noimplib.dll, use an import library