[all-commits] [llvm/llvm-project] 75196b: [llvm-lib] Add /WX, warn by default on empty input...

Nico Weber via All-commits all-commits at lists.llvm.org
Mon Apr 11 10:15:50 PDT 2022

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 75196b99fbd3397ccb7960b6e7ad7c40efef2315
  Author: Nico Weber <thakis at chromium.org>
  Date:   2022-04-11 (Mon, 11 Apr 2022)

  Changed paths:
    M lld/COFF/Options.td
    M llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp
    M llvm/lib/ToolDrivers/llvm-lib/Options.td
    M llvm/test/tools/llvm-lib/no-inputs.test

  Log Message:
  [llvm-lib] Add /WX, warn by default on empty inputs, add opt-out

lib.exe by default exits successfully without writing an output
file when no inputs are passed. llvm-lib has the same behavior,
for compatibility.

This behavior interacts poorly with build systems: If a static
library target had no inputs, llvm-lib would not produce an output
file, causing ninja (or make, or a similar system) to successfully
run that step, but then re-run it on the next build.

After this patch, llvm-lib emits a warning in this case, that with
/WX can be turned into an error. That way, ninja (or make, or...)
will mark the initial build as failed.

People who don't like the warning can use /ignore:emptyoutput to
suppress it.

The warning also points out the existing flag /llvmlibempty which
forces creation of an empty .lib file (this is an extension to lib.exe).

Differential Revision: https://reviews.llvm.org/D123517

More information about the All-commits mailing list