This reintroduces the change from commit v3.10.0-rc1~69^2 (Performance:
Improve efficiency of source file lookup in cmMakefile, 2017-08-17) with
some corrections. The original was rolled back by commit
v3.10.0-rc1~52^2~1 (Revert "Performance: ...", 2017-09-25) due to
incompatibilities found. The rollback was followed-up by addition of a
test for the offending case, and this revision passes the test.
cd2cdfe2 FindRuby: Add support for versions 2.2, 2.3, and 2.4
23ab451a FindRuby: Fix match of '.' in version numbers
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1493
Do not obscure IWYU's report with warnings from its internal Clang.
We have other testing for such warnings. Also, when compiling with
a non-Clang compiler we might use warning options that IWYU's Clang
does not understand, and we don't want to see warnings about that.
Add test for a case fixed by commit 6a4a61d9e1 (cmForEachCommand:
prevent leakage, 2017-10-09). Prior to that fix, this test case
could trigger an assertion failure.
Fixes: #17464
When using a real MSVC compiler for `C` or `CXX`, use the version of
that compiler for `MSVC_VERSION`. This is preferred over the MSVC
version that a non-MSVC compiler "simulates".
Fixes: #17468
Since commit v3.10.0-rc5~3^2 (FindOpenGL: Default to non-GLVND libraries
for legacy GL, 2017-11-08) users may set `OPENGL_gl_LIBRARY` to empty to
use GLVND components for the legacy GL interfaces. This is useful only
when one knows in advance that the GLVND components will be found.
Add a `OpenGL_GL_PREFERENCE` variable to specify a preference for legacy
GL or GLVND. The latter can suppress `OPENGL_gl_LIBRARY` only when the
needed GLVND components are found. If no preference is explicitly
specified, choose a default based on whether GLVND components were
requested (because this indicates the project has been updated for
CMake 3.10).
Issue: #17437
Issue: #17449
If the value of `CMAKE_HOST_SYSTEM_PROCESSOR` also happens to be set as
a variable by a project (e.g. `AMD64`), allowing `if()` to
auto-dereference is unlikely to produce a value that matches "64".
Instead let `if()` auto-dereference `CMAKE_HOST_SYSTEM_PROCESSOR`.
Fixes: #17460
If the compiler given in I_MPI_... could not be found, the Intel MPI
wrappers emit an error like "line 590: ifort: command not found".
The script should currently fail to match the output of this for
information, but we should generally treat such an output as invalid,
since the displayed configuration line can become a mixup between Intel
and GNU compiler settings.
OpenMP libraries must always be found in the implicit linking
directories of a compiler when using the OpenMP compile flag. If a suitable OpenMP library is also found in for example some CMAKE_PREFIX_PATH, this can lead to the module finding the incorrect library.
On the other hand, CMAKE_PREFIX_PATH can't ever be a location that we
need to consider since the OpenMP compile flag would not work if we
needed to.
On Windows our input and patch files may have CRLF newlines.
Tell `patch` not to transform them to LF newlines because our
baseline will have CRLF newlines too.
Update the prebuilt binary build configurations for machines where
we build our own OpenSSL library to use a newer version.
Now that we require pthreads for libuv anyway, we can use OpenSSL 1.1
along with its dependency on pthreads.
It was reported in issue #17345 that CTest does not use monotonic time
to report test duration. Monotonic clocks are not affected by large NTP
adjustments or things like daylight savings time.
As CMake 3.10 requires C++11, which introduced std::chrono, this commit
moves the time keeping in CTest from cmSystemTools::GetTime() to
std::chrono::steady_clock.
Fixes: #17345