This enables the use of MSVC and Swift on Windows in a single project.
MSVC uses no flag to indicate linked libraries while Swift uses `-l`.
Add support for a language specific link library flag which takes
precedence over the global `CMAKE_LINK_LIBRARY_FLAG` which preserves
compatibility with earlier releases.
Remove -DCMAKE_BUILD_WITH_CMAKE from Source/CMakeLists.txt. Remove
CMAKE_BOOTSTRAP from bootstrap's cmConfigure.h. Add -DCMAKE_BOOTSTRAP
to all bootstrap sources, and remove the Unix specialization of
CMAKE_BOOTSTRAP in libuv (a review of the libuv code suggests that
this will not have an effect on the Windows build.)
a7a5f376bc cmFileCommand: Use cmSubcommandTable
b66b7464ab Introduce cmSubcommandTable
2b785875fb cmFileCommand: turn into free function
9703c65718 cmFileCommand: put subcommands in unnamed namespace
64f987c174 cmFileCommand: port to cmExecutionStatus
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3657
ca2923110c Autogen: Modernize to use cmStrCat for string concatenation
d02a99d9d3 Autogen: Modernize code to use cm::string_view for the info writer
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3663
On Windows removing a directory can fail if other processes have a
handle to it. This has been "solved" with a retry hack when moving
directories, so use the same hack when removing directories.
Instead of hardcoding the amount of retries and the time to sleep
between them when removing directories on Windows, use the setting
potentially present in the registry instead. This setting is already
used when retrying moving directories.
In cmDefinitions:
- sort methods in source code by static or not static
- use `std::unordered_set<cm::string_view>` instead of `std::set<std::string>`
for duplications tests.
When `CMAKE_FIND_PACKAGE_PREFER_CONFIG` mode was set to `ON`, failure to
find a package was fatal even if it was not `REQUIRED`. Fix this and
add a test case.
Fixes: #19557
Enables the clang-tidy test performance-inefficient-string-concatenation
and replaces all inefficient string concatenations with `cmStrCat`.
Closes: #19555
d75cad01f0 Fix rpath-link for shared lib with only private deps
4b2e1fc9ee cmGeneratorTarget: Use local var to de-duplicate CMP0022 checks
94648953be cmLinkItem: Simplify tracking of whether link interface is explicit
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3642
This adds the following functions to `cmStringAlgorithms`:
- `cmIsSpace`
- `cmTrimWhitespace` (moved from `cmSystemTools::TrimWhitespace`)
- `cmEscapeQuotes` (moved from `cmSystemTools::EscapeQuotes`)
- `cmTokenize` (moved from `cmSystemTools::tokenize` and adapted to
accept `cm::string_view`)
Under CMP0022 NEW behavior, the link interface is explicit even if there
are no public dependencies (`INTERFACE_LINK_LIBRARIES` is not set).
Mark it as such to activate our tracking of private runtime dependencies
of shared libraries for generation of `-rpath-link` flags.
Fixes: #19556
The `CMAKE_LINK_LIBRARY_FILE_FLAG` variable is meant for linkers that
want library file paths to be preceded by a flag. This is used only
for OpenWatcom to add the `library` argument before library file paths.
Refactor the approach to treat `CMAKE_LINK_LIBRARY_FILE_FLAG` as a
command-line string fragment to add just before the library file path.
This has two advantages:
* `CMAKE_LINK_LIBRARY_FILE_FLAG` now works like `CMAKE_LINK_LIBRARY_FLAG`.
* `CMAKE_LINK_LIBRARY_FILE_FLAG` can now be an attached flag whose value
is the library file path.
Technically this is a change in behavior, but this setting was created
for internal use and should be rarely used outside of CMake itself.
Fixes: #19541