Revert commit v3.8.0-rc1~305^2 (Remove CTestTestfile.cmake when BUILD_TESTING
is OFF, 2016-11-14) again. We reverted it once in commit v3.8.0-rc3~22^2
(Revert "Remove CTestTestfile.cmake when BUILD_TESTING is OFF", 2017-03-06) but
it was accidentally restored by commit v3.11.0-rc1~387^2 (server: add
"ctestInfo" request to get test info, 2017-10-25), perhaps due to conflict
resolution during rebase.
We cannot remove `CTestTestfile.cmake` when testing is off because it breaks
projects that never enable testing but create their own `CTestTestfile.cmake`
manually instead. Revert the change again and add a test case.
45408b5ea1 cmake_minimum_required: Optionally set policies with version range
6a41aa2abd cmPolicies: Split parsing and impl of ApplyPolicyVersion
1d00ed7cf7 cmPolicies: Drop unnecessary check from ApplyPolicyVersion
0df559832b cmPolicies: Pass policy version as std::string
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1864
Compute a default for `BUILD_CursesDialog` by building a small test
project that uses curses. Disable `ccmake` by default if it fails,
and do not search for Curses as part of the main build. This avoids
creating FindCurses cache entries when we are not considering ccmake.
If `BUILD_CursesDialog` is enabled (e.g. by the user) then warn if
curses cannot be found.
Teach `cmake_minimum_required` and `cmake_policy(VERSION)` to support a
version range of the form `<min>[...<max>]`. Define this to mean that
version `<min>` is required, but known policies up to those introduced
by `<max>` will be set to `NEW`. This will allow projects to easily
specify a range of versions for which they have been updated.
Policy `CMP0074` was added by commit eb35d8884b (find_package: Use
PackageName_ROOT variables as search prefixes, 2018-03-15). Revise the
logic to avoid warning when a `PackageName_ROOT` variable is set to
empty since that won't change the search behavior. Also, when we do
warn include the variable value(s) for reference.
On Solaris the ncurses header may define an `__attribute__` macro.
This breaks C++ headers that use `__attribute__(...)` syntax.
Somehow it causes references to unresolved symbols:
__gthrw_pthread_once
__gthrw_pthread_mutex_lock
__gthrw_pthread_mutex_unlock
instead of references to the correct symbols:
pthread_once
pthread_mutex_lock
pthread_mutex_unlock
Detect this case and undefine the `__attribute__` macro after
including the curses headers.
Since commit v2.8.0~27 (Major optimization of C/C++ dependency scanning,
2009-09-23) our `VaildDeps` cache of `depend.internal` content is
supposed to avoid re-scanning dependencies of object files whose
dependencies have not changed. However, this was broken by changes to
`cmDependsC::WriteDependencies` by commit v3.1.0-rc1~272^2~1 (cmDepends:
Refactor object file path conversion, 2014-07-22). The object file path
written to `depend.internal` was changed to a relative path, but the
lookup in the `ValidDeps` cache of that information was not updated too.
Therefore the cache is not used.
Fix the object file path used for the `ValidDeps` lookup to restore the
original optimization.
This sets variables like PROJECT_HOMEPAGE_URL, which can be
used as default values for various things (packaging modules,
doxygen defaults, etc.). Some packaging modules have been
updated to do this as part of this commit.
Co-Author: Craig Scott <craig.scott@crascit.com>
This feature was originally added by commit v3.9.0-rc1~71^2~2 (find_*:
Add a new PackageRoot search path group, 2017-05-03) and documented by
commit v3.9.0-rc1~71^2 (find_*: Add docs for PackageRoot search path
group, 2017-05-03). However, we had to disable the feature and remove
the documentation in commit v3.9.1~2^2 (find_*: Disable the PACKAGE_ROOT
search path group for CMake 3.9, 2017-08-08) due to breaking projects
that used `PackageName_ROOT` variables themselves.
Add policy `CMP0074` to restore the `PackageName_ROOT` variable behavior
in a compatible way. Also revise the stack of root paths to store the
paths themselves rather than the package names. This way the policy can
be considered at the `find_package` call site instead of individual
`find_` calls inside a find module.
Co-Author: Chuck Atkins <chuck.atkins@kitware.com>
Issue: #17144