In commit v3.2.0-rc1~272^2~2 (Makefile: Fix rebuild with multiple custom
command outputs, 2014-12-05) we changed the generated makefile pattern
for multiple outputs from
out1: depends...
commands...
out2: out1
to
out1 out2: depends...
commands...
This was based on the incorrect assumption that make tools would treat
this as a combined output rule and run the command(s) exactly once for
them. It turns out that instead this new pattern is equivalent to
out1: depends...
commands...
out2: depends...
commands...
so the commands may be run more than once.
Some documents suggest using a "dedicated witness" stamp file:
stamp: depends...
rm -f stamp
touch stamp.tmp
commands...
mv stamp.tmp stamp
out1 out2: stamp
However, if the commands fail the error message will refer to the stamp
instead of any of the real outputs, which may be confusing to readers.
Also, this approach seems to have the same behavior of the original
approach that motiviated the above commit: multiple invocations are
needed to bring consumers of the outputs up to date.
Instead we can return to the original approach but add an explicit
touch to each extra output rule:
out1: depends...
commands...
out2: out1
touch -c out2
This causes make tools to recognize that all outputs have changed and
therefore to execute any commands that consume them.
Preserve all but the last extension when generating .wixobj output
filenames from source files and make sure they are unique.
Output .wixobj files in cpack staging area instead
of the current working directory.
This should allow the consuming IDE to determine which target specific
preprocessor definitions and include directories are relevant for a
given source file.
This fixes RunCMake.(Configure|configure_file|try_compile) test
failures that failed to match empty stderr due to jom printing
its identification line.
d1082448 Tests: Extend RunCMake.CommandLine to cover 'cmake --build' for 'ninja -v'
ce935ebe cmake: Teach --build to honor CMAKE_VERBOSE_MAKEFILE for Ninja
A more-specific error message is always displayed earlier in the
output if any real error occurred. This final summary message
is distracting to readers searching through the output for the
word "error". Simply drop it.
The Ninja build system does not support a in-file verbositiy switch.
Instead teach 'cmake --build' to extract the CMAKE_VERBOSE_MAKEFILE
setting and pass it as an optional '-v' argument to Ninja. This can
serve as a reasonable fallback.
Signed-off-by: Gregor Jasny <gjasny@googlemail.com>
Revert commit v3.2.0-rc1~165^2 (Encoding: Write Visual Studio solution
file with BOM, 2014-12-26). The BOM breaks the VS IDE version selector
when loading the .sln from Windows Explorer.
47c2da6a cmAlgorithms: Cache the end iterators in algorithms.
a5b10ae6 cmAlgorithms: Remove needless assignment.
7fd8557f cmAlgorithms: Maintain the pivot iterator in cmRemoveIndices.
1f796791 cmAlgorithms: Relax iterator requirement for cmRemoveIndices.
ba959934 cmAlgorithms: Make cmRemoveDuplicates work with more containers.
cae45df7 cmAlgorithms: Rename template argument to RemoveN.
b917f4c0 cmAlgorithms: Relax cmRemoveN requirement to FwdIter.
bbc1a978 cmAlgorithms: Add a size() to cmRange.
47a3e22e cmAlgorithms: Rename template type in cmDeleteAll algorithm.
cb75eec0 cmAlgorithms: Add const to const objects.