[ms] Add new option to llvm-lib: /llvmlibempty

Summary:
Add a new option (/llvmlibempty). If passed and llvm-lib does not give an error, it will create a valid output archive even if empty.

By default, llvm-lib mimicks lib.exe: if given no input files, it doesn't create its output file at all. This is incompatible with some build systems, so we add a command-line option to toggle this compatibility behavior.

Reviewed By: thakis

Differential Revision: https://reviews.llvm.org/D78894
This commit is contained in:
Eric Astor 2020-04-30 15:29:52 -04:00
parent 9ecddde321
commit e9827f0b82
3 changed files with 10 additions and 2 deletions

View File

@ -292,8 +292,9 @@ int llvm::libDriverMain(ArrayRef<const char *> ArgsArr) {
return 0;
}
// If no input files, silently do nothing to match lib.exe.
if (!Args.hasArgNoClaim(OPT_INPUT))
// If no input files and not told otherwise, silently do nothing to match
// lib.exe
if (!Args.hasArgNoClaim(OPT_INPUT) && !Args.hasArg(OPT_llvmlibempty))
return 0;
if (Args.hasArg(OPT_lst)) {

View File

@ -18,6 +18,9 @@ def out : P<"out", "Path to file to write output">;
def llvmlibthin : F<"llvmlibthin">,
HelpText<"Make .lib point to .obj files instead of copying their contents">;
def llvmlibempty : F<"llvmlibempty">,
HelpText<"When given no contents, produce an empty .lib file">;
def machine: P<"machine", "Specify target platform">;
def help : F<"help">;

View File

@ -1,2 +1,6 @@
RUN: llvm-lib -out:%t.a
RUN: test ! -e %t.a
RUN: llvm-lib /llvmlibempty -out:%t.a
RUN: FileCheck %s < %t.a
CHECK: !<arch>