Merge branch 'revise-compiler-id-policies' into release
This commit is contained in:
commit
97243c22b2
|
@ -131,6 +131,7 @@ Variables that Change Behavior
|
||||||
/variable/CMAKE_MODULE_PATH
|
/variable/CMAKE_MODULE_PATH
|
||||||
/variable/CMAKE_NOT_USING_CONFIG_FLAGS
|
/variable/CMAKE_NOT_USING_CONFIG_FLAGS
|
||||||
/variable/CMAKE_POLICY_DEFAULT_CMPNNNN
|
/variable/CMAKE_POLICY_DEFAULT_CMPNNNN
|
||||||
|
/variable/CMAKE_POLICY_WARNING_CMPNNNN
|
||||||
/variable/CMAKE_PREFIX_PATH
|
/variable/CMAKE_PREFIX_PATH
|
||||||
/variable/CMAKE_PROGRAM_PATH
|
/variable/CMAKE_PROGRAM_PATH
|
||||||
/variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE
|
/variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE
|
||||||
|
|
|
@ -1,21 +1,27 @@
|
||||||
CMP0025
|
CMP0025
|
||||||
-------
|
-------
|
||||||
|
|
||||||
Compiler id for Apple Clang is now AppleClang.
|
Compiler id for Apple Clang is now ``AppleClang``.
|
||||||
|
|
||||||
CMake >= 3.0 recognize that Apple Clang is a different compiler
|
CMake 3.0 and above recognize that Apple Clang is a different compiler
|
||||||
than upstream Clang and that they have different version numbers.
|
than upstream Clang and that they have different version numbers.
|
||||||
CMake now prefers to present this to projects by setting
|
CMake now prefers to present this to projects by setting the
|
||||||
CMAKE_<LANG>_COMPILER_ID to "AppleClang" instead of "Clang". However,
|
:variable:`CMAKE_<LANG>_COMPILER_ID` variable to ``AppleClang`` instead
|
||||||
existing projects may assume the compiler id for Apple Clang is just
|
of ``Clang``. However, existing projects may assume the compiler id for
|
||||||
"Clang" as it was in CMake < 3.0. Therefore this policy determines
|
Apple Clang is just ``Clang`` as it was in CMake versions prior to 3.0.
|
||||||
for Apple Clang which compiler id to report in
|
Therefore this policy determines for Apple Clang which compiler id to
|
||||||
CMAKE_<LANG>_COMPILER_ID after <LANG> is enabled by the project() or
|
report in the :variable:`CMAKE_<LANG>_COMPILER_ID` variable after
|
||||||
enable_language() command.
|
language ``<LANG>`` is enabled by the :command:`project` or
|
||||||
|
:command:`enable_language` command. The policy must be set prior
|
||||||
|
to the invocation of either command.
|
||||||
|
|
||||||
The OLD behavior for this policy is to use compiler id "Clang". The
|
The OLD behavior for this policy is to use compiler id ``Clang``. The
|
||||||
NEW behavior for this policy is to use compiler id "AppleClang".
|
NEW behavior for this policy is to use compiler id ``AppleClang``.
|
||||||
|
|
||||||
This policy was introduced in CMake version 3.0. CMake version
|
This policy was introduced in CMake version 3.0. Use the
|
||||||
|release| warns when the policy is not set and uses OLD behavior. Use
|
:command:`cmake_policy` command to set this policy to OLD or NEW explicitly.
|
||||||
the cmake_policy command to set it to OLD or NEW explicitly.
|
Unlike most policies, CMake version |release| does *not* warn
|
||||||
|
by default when this policy is not set and simply uses OLD behavior.
|
||||||
|
See documentation of the
|
||||||
|
:variable:`CMAKE_POLICY_WARNING_CMP0025 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
|
||||||
|
variable to control the warning.
|
||||||
|
|
|
@ -1,16 +1,28 @@
|
||||||
CMP0047
|
CMP0047
|
||||||
-------
|
-------
|
||||||
|
|
||||||
Use QCC compiler id for the qcc drivers on QNX.
|
Use ``QCC`` compiler id for the qcc drivers on QNX.
|
||||||
|
|
||||||
CMake 2.8.12 and lower assigned the QNX qcc and QCC compiler drivers the "GNU"
|
CMake 3.0 and above recognize that the QNX qcc compiler driver is
|
||||||
compiler id.
|
different from the GNU compiler.
|
||||||
|
CMake now prefers to present this to projects by setting the
|
||||||
|
:variable:`CMAKE_<LANG>_COMPILER_ID` variable to ``QCC`` instead
|
||||||
|
of ``GNU``. However, existing projects may assume the compiler id for
|
||||||
|
QNX qcc is just ``GNU`` as it was in CMake versions prior to 3.0.
|
||||||
|
Therefore this policy determines for QNX qcc which compiler id to
|
||||||
|
report in the :variable:`CMAKE_<LANG>_COMPILER_ID` variable after
|
||||||
|
language ``<LANG>`` is enabled by the :command:`project` or
|
||||||
|
:command:`enable_language` command. The policy must be set prior
|
||||||
|
to the invocation of either command.
|
||||||
|
|
||||||
The OLD behavior for this policy is to use the "GNU" compiler id for the qcc
|
The OLD behavior for this policy is to use the ``GNU`` compiler id
|
||||||
and QCC compiler drivers. The NEW behavior for this policy is to use the "QCC"
|
for the qcc and QCC compiler drivers. The NEW behavior for this policy
|
||||||
compiler id for those drivers.
|
is to use the ``QCC`` compiler id for those drivers.
|
||||||
|
|
||||||
This policy was introduced in CMake version 3.0.
|
This policy was introduced in CMake version 3.0. Use the
|
||||||
CMake version |release| warns when the policy is not set and uses
|
:command:`cmake_policy` command to set this policy to OLD or NEW explicitly.
|
||||||
OLD behavior. Use the cmake_policy command to set it to OLD or
|
Unlike most policies, CMake version |release| does *not* warn
|
||||||
NEW explicitly.
|
by default when this policy is not set and simply uses OLD behavior.
|
||||||
|
See documentation of the
|
||||||
|
:variable:`CMAKE_POLICY_WARNING_CMP0047 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
|
||||||
|
variable to control the warning.
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
CMAKE_POLICY_WARNING_CMP<NNNN>
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
Explicitly enable or disable the warning when CMake Policy ``CMP<NNNN>``
|
||||||
|
is not set. This is meaningful only for the few policies that do not
|
||||||
|
warn by default:
|
||||||
|
|
||||||
|
* ``CMAKE_POLICY_WARNING_CMP0025`` controls the warning for
|
||||||
|
policy :policy:`CMP0025`.
|
||||||
|
* ``CMAKE_POLICY_WARNING_CMP0047`` controls the warning for
|
||||||
|
policy :policy:`CMP0047`.
|
||||||
|
|
||||||
|
This variable should not be set by a project in CMake code. Project
|
||||||
|
developers running CMake may set this variable in their cache to
|
||||||
|
enable the warning (e.g. ``-DCMAKE_POLICY_WARNING_CMP<NNNN>=ON``).
|
||||||
|
Alternatively, running :manual:`cmake(1)` with the ``--debug-output``
|
||||||
|
or ``--trace`` option will also enable the warning.
|
|
@ -759,7 +759,8 @@ void cmGlobalGenerator::CheckCompilerIdCompatibility(cmMakefile* mf,
|
||||||
switch(mf->GetPolicyStatus(cmPolicies::CMP0025))
|
switch(mf->GetPolicyStatus(cmPolicies::CMP0025))
|
||||||
{
|
{
|
||||||
case cmPolicies::WARN:
|
case cmPolicies::WARN:
|
||||||
if(!this->CMakeInstance->GetIsInTryCompile())
|
if(!this->CMakeInstance->GetIsInTryCompile() &&
|
||||||
|
mf->PolicyOptionalWarningEnabled("CMAKE_POLICY_WARNING_CMP0025"))
|
||||||
{
|
{
|
||||||
cmOStringStream w;
|
cmOStringStream w;
|
||||||
w << policies->GetPolicyWarning(cmPolicies::CMP0025) << "\n"
|
w << policies->GetPolicyWarning(cmPolicies::CMP0025) << "\n"
|
||||||
|
@ -790,7 +791,8 @@ void cmGlobalGenerator::CheckCompilerIdCompatibility(cmMakefile* mf,
|
||||||
switch(mf->GetPolicyStatus(cmPolicies::CMP0047))
|
switch(mf->GetPolicyStatus(cmPolicies::CMP0047))
|
||||||
{
|
{
|
||||||
case cmPolicies::WARN:
|
case cmPolicies::WARN:
|
||||||
if(!this->CMakeInstance->GetIsInTryCompile())
|
if(!this->CMakeInstance->GetIsInTryCompile() &&
|
||||||
|
mf->PolicyOptionalWarningEnabled("CMAKE_POLICY_WARNING_CMP0047"))
|
||||||
{
|
{
|
||||||
cmOStringStream w;
|
cmOStringStream w;
|
||||||
w << policies->GetPolicyWarning(cmPolicies::CMP0047) << "\n"
|
w << policies->GetPolicyWarning(cmPolicies::CMP0047) << "\n"
|
||||||
|
|
|
@ -4350,6 +4350,22 @@ cmMakefile::GetPolicyStatusInternal(cmPolicies::PolicyID id) const
|
||||||
return this->GetPolicies()->GetPolicyStatus(id);
|
return this->GetPolicies()->GetPolicyStatus(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
bool cmMakefile::PolicyOptionalWarningEnabled(std::string const& var)
|
||||||
|
{
|
||||||
|
// Check for an explicit CMAKE_POLICY_WARNING_CMP<NNNN> setting.
|
||||||
|
if(!var.empty())
|
||||||
|
{
|
||||||
|
if(const char* val = this->GetDefinition(var.c_str()))
|
||||||
|
{
|
||||||
|
return cmSystemTools::IsOn(val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Enable optional policy warnings with --debug-output or --trace.
|
||||||
|
cmake* cm = this->GetCMakeInstance();
|
||||||
|
return cm->GetDebugOutput() || cm->GetTrace();
|
||||||
|
}
|
||||||
|
|
||||||
bool cmMakefile::SetPolicy(const char *id,
|
bool cmMakefile::SetPolicy(const char *id,
|
||||||
cmPolicies::PolicyStatus status)
|
cmPolicies::PolicyStatus status)
|
||||||
{
|
{
|
||||||
|
|
|
@ -875,6 +875,8 @@ public:
|
||||||
std::set<cmStdString> const & GetSystemIncludeDirectories() const
|
std::set<cmStdString> const & GetSystemIncludeDirectories() const
|
||||||
{ return this->SystemIncludeDirectories; }
|
{ return this->SystemIncludeDirectories; }
|
||||||
|
|
||||||
|
bool PolicyOptionalWarningEnabled(std::string const& var);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// add link libraries and directories to the target
|
// add link libraries and directories to the target
|
||||||
void AddGlobalLinkInformation(const char* name, cmTarget& target);
|
void AddGlobalLinkInformation(const char* name, cmTarget& target);
|
||||||
|
|
Loading…
Reference in New Issue