// True if we are creating a DLL.
bool DLL = false;
+ StringRef Implib;
std::vector<Export> Exports;
// Options for manifest files.
if (parseAlternateName(Arg->getValue()))
return false;
+ // Handle /implib
+ if (auto *Arg = Args->getLastArg(OPT_implib))
+ Config->Implib = Arg->getValue();
+
// Handle /opt
for (auto *Arg : Args->filtered(OPT_opt)) {
std::string S = StringRef(Arg->getValue()).lower();
std::string Contents = createModuleDefinitionFile();
std::string Def = writeToTempFile(Contents);
llvm::FileRemover TempFile(Def);
- SmallString<128> Out = StringRef(Config->OutputFile);
- sys::path::replace_extension(Out, ".lib");
Executor E("lib.exe");
E.add("/nologo");
E.add("/machine:x64");
E.add(Twine("/def:") + Def);
- E.add("/out:" + Out);
+ if (Config->Implib.empty()) {
+ SmallString<128> Out = StringRef(Config->OutputFile);
+ sys::path::replace_extension(Out, ".lib");
+ E.add("/out:" + Out);
+ } else {
+ E.add("/out:" + Config->Implib);
+ }
return E.run();
}
# RUN: lld -flavor link2 /out:%t2.exe %t2.obj %t.lib
# RUN: llvm-readobj -coff-imports %t2.exe | FileCheck -check-prefix=IMPORT %s
+# RUN: lld -flavor link2 /out:%t.dll /dll %t.obj /implib:%t2.lib /export:exportfn1 /export:exportfn2
+# RUN: lld -flavor link2 /out:%t2.exe %t2.obj %t2.lib
+# RUN: llvm-readobj -coff-imports %t2.exe | FileCheck -check-prefix=IMPORT %s
+
# RUN: lld -flavor link2 /out:%t2.lto.exe %t2.obj %t.lto.lib
# RUN: llvm-readobj -coff-imports %t2.lto.exe | FileCheck -check-prefix=IMPORT %s