summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2014-06-16 12:54:48 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2014-06-16 12:54:48 (GMT)
commite2789429aaa18dd7aef4858fb2702bf66d50aa6e (patch)
tree90c741f584bf1f4316f667666450638366da909d
parent0b028c6f0a44d3b0956170b39fbe921eb8d13f42 (diff)
parentf0a0f3dcb42ee249d7ba0c09e674900adfb9ea2e (diff)
downloadCMake-e2789429aaa18dd7aef4858fb2702bf66d50aa6e.zip
CMake-e2789429aaa18dd7aef4858fb2702bf66d50aa6e.tar.gz
CMake-e2789429aaa18dd7aef4858fb2702bf66d50aa6e.tar.bz2
Merge topic 'features-cleanups'
f0a0f3dc WCDH: Fix compiler id test for compatibility macros. 627ad96b Project: Detect other compilers before detecting Clang. bc950169 WCDH: Remove noise from generated defines. eecd93fc Features: Escape the COMPILE_OPTIONS for dialects.
-rw-r--r--Help/manual/cmake-compile-features.7.rst10
-rw-r--r--Modules/CMakeCompilerIdDetection.cmake4
-rw-r--r--Modules/WriteCompilerDetectionHeader.cmake22
-rw-r--r--Source/cmLocalGenerator.cxx7
4 files changed, 23 insertions, 20 deletions
diff --git a/Help/manual/cmake-compile-features.7.rst b/Help/manual/cmake-compile-features.7.rst
index d4bbecc..8a2fe30 100644
--- a/Help/manual/cmake-compile-features.7.rst
+++ b/Help/manual/cmake-compile-features.7.rst
@@ -166,11 +166,11 @@ symbol, and compiler support determines what it is expanded to:
virtual void Execute() = 0;
};
- struct Concrete Foo_CXX_FINAL {
- void Execute() Foo_CXX_OVERRIDE;
+ struct Concrete Foo_FINAL {
+ void Execute() Foo_OVERRIDE;
};
-In this case, ``Foo_CXX_FINAL`` will expand to ``final`` if the
+In this case, ``Foo_FINAL`` will expand to ``final`` if the
compiler supports the keyword, or to empty otherwise.
In this use-case, the CMake code will wish to enable a particular language
@@ -189,13 +189,13 @@ set to influence all following targets:
cxx_final cxx_override
)
- # Includes foo_compiler_detection.h and uses the Foo_DECL_CXX_FINAL symbol
+ # Includes foo_compiler_detection.h and uses the Foo_FINAL symbol
# which will expand to 'final' if the compiler supports the requested
# CXX_STANDARD.
add_library(foo foo.cpp)
set_property(TARGET foo PROPERTY CXX_STANDARD 11)
- # Includes foo_compiler_detection.h and uses the Foo_DECL_CXX_FINAL symbol
+ # Includes foo_compiler_detection.h and uses the Foo_FINAL symbol
# which will expand to 'final' if the compiler supports the feature,
# even though CXX_STANDARD is not set explicitly. The requirement of
# cxx_constexpr causes CMake to set CXX_STANDARD internally, which
diff --git a/Modules/CMakeCompilerIdDetection.cmake b/Modules/CMakeCompilerIdDetection.cmake
index 7f82a9d..e247885 100644
--- a/Modules/CMakeCompilerIdDetection.cmake
+++ b/Modules/CMakeCompilerIdDetection.cmake
@@ -61,8 +61,6 @@ function(compiler_id_detection outvar lang)
list(APPEND ordered_compilers
Intel
PathScale
- AppleClang
- Clang
Embarcadero
Borland
Watcom
@@ -84,6 +82,8 @@ function(compiler_id_detection outvar lang)
endif()
list(APPEND ordered_compilers
SCO
+ AppleClang
+ Clang
GNU
MSVC
ADSP
diff --git a/Modules/WriteCompilerDetectionHeader.cmake b/Modules/WriteCompilerDetectionHeader.cmake
index d7992fe..593176c 100644
--- a/Modules/WriteCompilerDetectionHeader.cmake
+++ b/Modules/WriteCompilerDetectionHeader.cmake
@@ -99,14 +99,14 @@
#
# .. code-block:: c++
#
-# class MyClass ClimbingStats_DECL_CXX_FINAL
+# class MyClass ClimbingStats_FINAL
# {
-# ClimbingStats_DECL_CXX_CONSTEXPR int someInterface() { return 42; }
+# ClimbingStats_CONSTEXPR int someInterface() { return 42; }
# };
#
-# The ``ClimbingStats_DECL_CXX_FINAL`` macro will expand to ``final`` if the
+# The ``ClimbingStats_FINAL`` macro will expand to ``final`` if the
# compiler (and its flags) support the ``cxx_final`` feature, and the
-# ``ClimbingStats_DECL_CXX_CONSTEXPR`` macro will expand to ``constexpr``
+# ``ClimbingStats_CONSTEXPR`` macro will expand to ``constexpr``
# if ``cxx_constexpr`` is supported.
#
# The following features generate corresponding symbol defines:
@@ -386,7 +386,7 @@ function(write_compiler_detection_header
\n")
endif()
if (feature STREQUAL cxx_constexpr)
- set(def_value "${prefix_arg}_DECL_${feature_upper}")
+ set(def_value "${prefix_arg}_CONSTEXPR")
set(file_content "${file_content}
# if ${def_name}
# define ${def_value} constexpr
@@ -396,7 +396,7 @@ function(write_compiler_detection_header
\n")
endif()
if (feature STREQUAL cxx_final)
- set(def_value "${prefix_arg}_DECL_${feature_upper}")
+ set(def_value "${prefix_arg}_FINAL")
set(file_content "${file_content}
# if ${def_name}
# define ${def_value} final
@@ -406,7 +406,7 @@ function(write_compiler_detection_header
\n")
endif()
if (feature STREQUAL cxx_override)
- set(def_value "${prefix_arg}_DECL_${feature_upper}")
+ set(def_value "${prefix_arg}_OVERRIDE")
set(file_content "${file_content}
# if ${def_name}
# define ${def_value} override
@@ -428,7 +428,7 @@ function(write_compiler_detection_header
set(file_content "${file_content}
# if ${def_name}
# define ${def_value} alignas(X)
-# elif ${prefix_arg}_COMPILER_IS_GNU
+# elif ${prefix_arg}_COMPILER_IS_GNU || ${prefix_arg}_COMPILER_IS_Clang
# define ${def_value} __attribute__ ((__aligned__(X)))
# else
# define ${def_value}
@@ -440,7 +440,7 @@ function(write_compiler_detection_header
set(file_content "${file_content}
# if ${def_name}
# define ${def_value} alignof(X)
-# elif ${prefix_arg}_COMPILER_IS_GNU
+# elif ${prefix_arg}_COMPILER_IS_GNU || ${prefix_arg}_COMPILER_IS_Clang
# define ${def_value} __alignof__(X)
# endif
\n")
@@ -495,10 +495,10 @@ function(write_compiler_detection_header
# if ${def_name}
# define ${def_value} [[deprecated]]
# define ${def_value}_MSG(MSG) [[deprecated(MSG)]]
-# elif defined(__GNUC__) || defined(__clang__)
+# elif ${prefix_arg}_COMPILER_IS_GNU || ${prefix_arg}_COMPILER_IS_Clang
# define ${def_value} __attribute__((__deprecated__))
# define ${def_value}_MSG(MSG) __attribute__((__deprecated__(MSG)))
-# elif defined(_MSC_VER)
+# elif ${prefix_arg}_COMPILER_IS_MSVC
# define ${def_value} __declspec(deprecated)
# define ${def_value}_MSG(MSG) __declspec(deprecated(MSG))
# else
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index c8c8c79..8ae1157 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -2229,7 +2229,10 @@ AddCompilerRequirementFlag(std::string &flags, cmTarget* target,
"does not know the compile flags to use to enable it.";
this->GetMakefile()->IssueMessage(cmake::FATAL_ERROR, e.str());
}
- this->AppendFlags(flags, opt);
+ else
+ {
+ this->AppendFlagEscape(flags, opt);
+ }
return;
}
@@ -2275,7 +2278,7 @@ AddCompilerRequirementFlag(std::string &flags, cmTarget* target,
if (const char *opt = target->GetMakefile()->GetDefinition(option_flag))
{
- this->AppendFlags(flags, opt);
+ this->AppendFlagEscape(flags, opt);
return;
}
}