6be53c6695 CTest: Add options to control test process affinity to CPUs
c5428d8db2 libuv: disable process affinity during CMake bootstrap
24de561a1a libuv: unix,win: add uv_spawn option to set child CPU affinity mask
43d6e5a71f libuv: misc: add function to get CPU affinity mask size
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1814
Remove the `<target>_LIB_DEPENDS` cache entry unconditionally.
It will be populated again later if needed. There is no need
to ask the user to remove the cache entry if the target type
changes.
Issue: #16364
Calling `std::string::front()` on an empty string results
in an undefined behavior by the C++ standard.
In gcc8 it causes an assertion to fail.
This adds a check to `AUTOGEN` if a file to read is empty
and in case avoids the use of an empty `std::string` buffer.
Closes#17793
In commit v2.8.0~170 (ENH: Added ctest test options PROCESSORS and
RUN_SERIAL, 2009-09-07) CTest learned to track the number of processors
allocated to running tests in order to balance it against the desired
level of parallelism. Extend this idea by introducing a new
`PROCESSOR_AFFINITY` test property to ask that CTest run a test
with the CPU affinity mask set. This will allow a set of tests
that are running concurrently to use disjoint CPU resources.
0a21d820d3 Remove c_str() from calls to converttorelativeformake in XCode Generator
f93cc4158e Refactor cmCacheManager::LoadCache to use ostringstream
915b71010c Enhance RunCMake test coverage for file(GLOB)
fcaa134c6c Refactor HandleGlobCommand
cf5d0b49e8 Adjust class description in cmFileTimeComparison.h
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1810
7776ce98c3 Tests: Add cases for usage requirements of linked object libs
bafe655b11 Help: Document linking behavior of OBJECT libraries
57538224d0 objlib: Link object-files from `OBJECT` libraries.
9a7f039ee7 objlib: Allow `OBJECT` libraries to link to `OBJECT` libraries.
dfb6e84082 objlib: Allow other libraries to link to `OBJECT` libraries.
51249e69ea objlib: Allow `OBJECT` libraries to link to other libraries.
e22c45d4c9 Tests: Teach RunCMake to ignore AIX ld warnings about GNU atexit
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Pavel Solodovnikov <hellyeahdominate@gmail.com>
Acked-by: John Drouhard <john@jmdtech.org>
Merge-request: !1524
Note: This finally links the object-files of the `OBJECT` library from
the right-hand side of `target_link_libraries` to the target on the
left-hand side. However, this will only happen with directly linked
`OBJECT` libraries, not with `OBJECT` libraries "linked" through
property `INTERFACE_LINK_LIBRARIES` of a target on the right-hand side!
Fixes: #14778
Note: This still does not link the object-files of the `OBJECT` library
from the right-hand side of `target_link_libraries` to the target on the
left-hand side. (In this particular case of another `OBJECT` library on
the left-hand side this would not make any sense anyway. The target on
the left-hand side has no link-step.)
Issue: #14778
Note: This only allows `OBJECT` libraries to be on the right-hand side
of `target_link_libraries` but still does not link its object-files to
the target on the left-hand side.
Issue: #14778
The proper way to use libraries is now through `target_link_libraries`
for things such as usage requirements, compile definitions, include
directories, etc. To facilitate this, allow `OBJECT` libraries to "link"
to other libraries.
Co-Author: Ben Boeckel <ben.boeckel@kitware.com>
Issue: #14778
Teach the `install` and `export` commands to support installing and
exporting `OBJECT` libraries without their object files. Transform
them to `INTERFACE` libraries in such cases.
For `install(TARGETS)`, activate this when no destination for the object
files is specified. For `export`, activate this only under Xcode with
multiple architectures when we have no well-defined object file
locations to give to clients.
Our `cmake -E __create_def` helper used for `WINDOWS_EXPORT_ALL_SYMBOLS`
and merging of multiple `.def` files is available only with CMake hosted
on Windows. However, we may generate use of it on other platforms since
commit v3.9.0-rc1~405^2 (Support WINDOWS_EXPORT_ALL_SYMBOLS with `.def`
files, 2017-03-13) when multiple `.def` files are listed. This results
in a build error because the tool doesn't exist.
Fix our logic to avoid using the tool on non-Windows platforms. Instead
silently ignore all but the first `.def` source as we did before.
Issue: #17773
When using ccache with clang-tidy, ccache needs to wrap compiler
invocation, rather than cmake invocation. But it needs to do it without
affecting the command line that iwyu-like tools are receiving.
With this fix, if __run_co_compile is used, compile launcher is passed
using the new --launcher option, but if __run_co_compile is not needed,
compiler launcher is prepended to the command line as before.
To better illustrate the change: with this fix if running clang-tidy
with CXX_COMPILER_LAUNCHER set to "/usr/bin/time;-p;ccache" (time -p
added strictly for illustration purposes), the command line changes
from:
/usr/bin/time -p ccache cmake -E __run_co_compile \
--tidy=clang-tidy ... -- g++ ...
to:
cmake -E __run_co_compile \
--launcher="/usr/bin/time;-p;ccache" \
--tidy=clang-tidy ... -- g++ ...
This allows the compiler to be run via the launcher, but leaves tidy
(& friends) invocations unaffected.
Fixes: #16493
Use std::string (with correct initial size) in cmOutputConverter::Shell__GetArgument
instead of ostringstream. This avoids several re-allocations of the
string buffer. In addition, convert some of the private static members into
inline free functions to avoid function calls.
Store "Known" files separately in KnownFileSearchIndex. This avoids
creating the rather expensive cmSourceFileLocation object for source
files that are already known. For large projects this results in a
factor 3-4 speedup of cmGlobalGenerator::Compute().