Move rejection of `#`, `<`, and `>` characters in outputs and byproducts
to a generate-time check. This removes the front-end check that
disallowed generator expressions. The generators have already been
updated to handle them.
Fixes: #12877
Each source compilation generates a dependencies file. These dependencies
files are consolidated in one file per target. This consolidation is done
as part of command 'cmake -E cmake_depends` launched before evaluation of
makefile dependency graph.
The consolidation uses the same approach as `CMake` dependencies management.
Fixes: #21321
f7a5f28318 cmake: Fix '-E cat' command for binary files on Windows
90b39a5209 cmConsoleBuf: Factor out cout/cerr console buffer management
f1fdd15863 clang-format: Fix include block order in ctest.cxx and cpack.cxx
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5364
796466284b bootstrap: Fix support for Intel compiler with modern GNU system compiler
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5057
796466284b bootstrap: Fix support for Intel compiler with modern GNU system compiler
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5057
On systems with older GNU system compilers, the Intel C++ compiler does
not define `__cplusplus` to any version newer than C++11. This
prevented `bootstrap` from detecting that a given C++ standard flag has
enabled C++17 mode in the compiler. In commit 033a4b12a5 (bootstrap:
Extend C++17 check for our cast functions, 2019-12-14,
v3.17.0-rc1~291^2) we added a preprocessor condition to attempt to
detect C++17 mode in the Intel compiler on such systems by looking
for `__cpp_if_constexpr`. However, on systems with a modern GNU
system compiler, that definition is available even in C++11 mode.
Switch to using `__cpp_deduction_guides` to detect C++17 mode for the
Intel C++ compiler. That seems to be defined exclusively in C++17 mode
regardless of the version of the system compiler.
Fixes: #21013
Add `bootstrap` options needed since commit 0b872fd4be (nghttp2: Build
the library within CMake for use by our curl, 2020-04-01,
v3.18.0-rc1~408^2~2).
Fixes: #20987
Support bootstrapping on older systems where our bundled
version libuv does not compile (.e.g Centos5, see #19086 and #19311).
Add a `--bootstrap-system-libuv` option to use the system-provided
libuv even for the bootstrap binary itself.
GitLab now uses a `/-/` component between the `group/project` part of
the URL and the `{issues,merge_requests,tree}` part so that it can
support `group/subgroup/project` with arbitrary depth.
Since commit 380bd70cc2 (bootstrap: implement cmake_toupper() using tr,
2017-06-07, v3.10.0-rc1~548^2~2) we use `tr` to convert from lower to
upper case. However, the character classes `[:lower:]` and `[:upper:]`
result in a "Bad string" error message on Solaris. Use `[a-z]` and
`[A-Z]` instead.
These standard flags are the same for CXX, OBJCXX and CUDA.
Refactor them into a single macro to reduce duplication and so we can easily reuse them.
Updated bootstrap script to search in the general Clang module instead of the language-specific.
In commit fc3b4caa2e (Memory management: cast functions for managed pointers,
2019-11-18) we added a check to `Source/Checks/cm_cxx17_check.cpp` to avoid
using C++17 mode on a compiler that does not support all our C++17 usage.
Add the check to our bootstrap script too.
In commit 6e613ff399 (bootstrap: Add infrastructure to detect threading
flags, 2017-11-28, v3.11.0-rc1~281^2~1) an extra level of nesting was
added to the selection loop, but the inner-most `break` command used to
exit the loop on success was not updated. This caused the outer-most
loop to iterate unnecessarily and repeatedly try the same compilers
again. In the case of compilers requiring a `-std=` flag, this may have
caused the oldest standard to be used instead of the newest.
* Added a fairly comprehensive test suite
* Separated the graph traversal logic from the Graphviz generation
code by introducing a new class, cmLinkItemsGraphVisitor{.h,cxx}
* Made the graph traversal logic less ad-hoc by using existing
methods in the GlobalGenerator; this fixed a few bugs
* Added support for new target types: custom targets, object
and unknown libraries
* Improved support for ALIAS libraries by showing the alias(es)
in the graph
* Introduced new flags to control those new libraries (consistent
with existing flags)
* Updated the documentation
* Removed useless setting to set graph type in dot file
* Improved the node/edge shapes (nicer, more consistent)
* Added a legend to the graph
* Some refactoring and cleanup of the Graphviz generation code
* Added test and fix for issue 19746
fd3a394614 add_custom_command: Format files in error message in a single line
a1cc6b4447 add_custom_target: Add output checks for custom target byproducts
cbb861ade8 add_custom_command: Add tests for custom command output checks
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3850