diff options
author | Brad King <brad.king@kitware.com> | 2014-06-16 12:54:48 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2014-06-16 12:54:48 (GMT) |
commit | e2789429aaa18dd7aef4858fb2702bf66d50aa6e (patch) | |
tree | 90c741f584bf1f4316f667666450638366da909d | |
parent | 0b028c6f0a44d3b0956170b39fbe921eb8d13f42 (diff) | |
parent | f0a0f3dcb42ee249d7ba0c09e674900adfb9ea2e (diff) | |
download | CMake-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.rst | 10 | ||||
-rw-r--r-- | Modules/CMakeCompilerIdDetection.cmake | 4 | ||||
-rw-r--r-- | Modules/WriteCompilerDetectionHeader.cmake | 22 | ||||
-rw-r--r-- | Source/cmLocalGenerator.cxx | 7 |
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; } } |