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
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)) {
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">;
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>