[Cmake-commits] CMake branch, next, updated. v3.7.2-2417-g91751d6

Brad King brad.king at kitware.com
Mon Jan 30 13:50:14 EST 2017


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  91751d6491c7fad048a5fa62fe52c9db043c4801 (commit)
       via  6ccabce2cd5736f076ebf079cd05e0ac6ff28209 (commit)
      from  784fe97dbf81cb1dcf81f213de1843a5351a94c7 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=91751d6491c7fad048a5fa62fe52c9db043c4801
commit 91751d6491c7fad048a5fa62fe52c9db043c4801
Merge: 784fe97 6ccabce
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Mon Jan 30 13:50:13 2017 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Mon Jan 30 13:50:13 2017 -0500

    Merge topic 'WCDH_allow_unsupported' into next
    
    6ccabce2 Revert topic 'WCDH_allow_unsupported'


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6ccabce2cd5736f076ebf079cd05e0ac6ff28209
commit 6ccabce2cd5736f076ebf079cd05e0ac6ff28209
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Mon Jan 30 13:50:00 2017 -0500
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Mon Jan 30 13:50:00 2017 -0500

    Revert topic 'WCDH_allow_unsupported'

diff --git a/Help/release/dev/WCDH_allow_unsupported.rst b/Help/release/dev/WCDH_allow_unsupported.rst
deleted file mode 100644
index c0b7377..0000000
--- a/Help/release/dev/WCDH_allow_unsupported.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-WCDH_allow_unsupported
-----------------------
-
-* The :module:`WriteCompilerDetectionHeader` module gained the
-  ``ALLOW_UNKNOWN_COMPILERS`` and ``ALLOW_UNKNOWN_COMPILER_VERSIONS`` options
-  that allow creation of headers that will work also with unknown or old
-  compilers by simply assuming they do not support any of the requested
-  features.
diff --git a/Modules/WriteCompilerDetectionHeader.cmake b/Modules/WriteCompilerDetectionHeader.cmake
index 0b16aa4..ba249e1 100644
--- a/Modules/WriteCompilerDetectionHeader.cmake
+++ b/Modules/WriteCompilerDetectionHeader.cmake
@@ -20,8 +20,6 @@
 #              [VERSION <version>]
 #              [PROLOG <prolog>]
 #              [EPILOG <epilog>]
-#              [ALLOW_UNKNOWN_COMPILERS]
-#              [ALLOW_UNKNOWN_COMPILER_VERSIONS]
 #    )
 #
 # The ``write_compiler_detection_header`` function generates the
@@ -83,11 +81,6 @@
 # See the :manual:`cmake-compile-features(7)` manual for information on
 # compile features.
 #
-# ``ALLOW_UNKNOWN_COMPILERS`` and ``ALLOW_UNKNOWN_COMPILER_VERSIONS`` cause
-# the module to generate conditions that treat unknown compilers as simply
-# lacking all features.  Without these options the default behavior is to
-# generate a ``#error`` for unknown compilers.
-#
 # Feature Test Macros
 # ===================
 #
@@ -239,19 +232,6 @@ function(_load_compiler_variables CompilerId lang)
   set(_compiler_id_version_compute_${CompilerId} ${_compiler_id_version_compute} PARENT_SCOPE)
 endfunction()
 
-macro(_simpledefine FEATURE_NAME FEATURE_TESTNAME FEATURE_STRING FEATURE_DEFAULT_STRING)
-  if (feature STREQUAL "${FEATURE_NAME}")
-        set(def_value "${prefix_arg}_${FEATURE_TESTNAME}")
-        string(APPEND file_content "
-#  if defined(${def_name}) && ${def_name}
-#    define ${def_value} ${FEATURE_STRING}
-#  else
-#    define ${def_value} ${FEATURE_DEFAULT_STRING}
-#  endif
-\n")
-  endif()
-endmacro()
-
 function(write_compiler_detection_header
     file_keyword file_arg
     prefix_keyword prefix_arg
@@ -262,7 +242,7 @@ function(write_compiler_detection_header
   if (NOT "x${prefix_keyword}" STREQUAL "xPREFIX")
     message(FATAL_ERROR "write_compiler_detection_header: PREFIX parameter missing.")
   endif()
-  set(options ALLOW_UNKNOWN_COMPILERS ALLOW_UNKNOWN_COMPILER_VERSIONS)
+  set(options)
   set(oneValueArgs VERSION EPILOG PROLOG OUTPUT_FILES_VAR OUTPUT_DIR)
   set(multiValueArgs COMPILERS FEATURES)
   cmake_parse_arguments(_WCD "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
@@ -446,12 +426,10 @@ function(write_compiler_detection_header
         set(compiler_file_content file_content)
       endif()
 
-      if(NOT _WCD_ALLOW_UNKNOWN_COMPILER_VERSIONS)
-        set(${compiler_file_content} "${${compiler_file_content}}
+      set(${compiler_file_content} "${${compiler_file_content}}
 #    if !(${_cmake_oldestSupported_${compiler}})
 #      error Unsupported compiler version
 #    endif\n")
-      endif()
 
       set(PREFIX ${prefix_arg}_)
       if (_need_hex_conversion)
@@ -482,36 +460,67 @@ function(write_compiler_detection_header
       endforeach()
     endforeach()
     if(pp_if STREQUAL "elif")
-      if(_WCD_ALLOW_UNKNOWN_COMPILERS)
-        string(APPEND file_content "
-#  endif\n")
-      else()
-        string(APPEND file_content "
+      string(APPEND file_content "
 #  else
 #    error Unsupported compiler
 #  endif\n")
-      endif()
     endif()
     foreach(feature ${${_lang}_features})
       string(TOUPPER ${feature} feature_upper)
       set(feature_PP "COMPILER_${feature_upper}")
       set(def_name ${prefix_arg}_${feature_PP})
-      _simpledefine(c_restrict RESTRICT restrict "")
-      _simpledefine(cxx_constexpr CONSTEXPR constexpr "")
-      _simpledefine(cxx_final FINAL final "")
-      _simpledefine(cxx_override OVERRIDE override "")
+      if (feature STREQUAL c_restrict)
+        set(def_value "${prefix_arg}_RESTRICT")
+        string(APPEND file_content "
+#  if ${def_name}
+#    define ${def_value} restrict
+#  else
+#    define ${def_value}
+#  endif
+\n")
+      endif()
+      if (feature STREQUAL cxx_constexpr)
+        set(def_value "${prefix_arg}_CONSTEXPR")
+        string(APPEND file_content "
+#  if ${def_name}
+#    define ${def_value} constexpr
+#  else
+#    define ${def_value}
+#  endif
+\n")
+      endif()
+      if (feature STREQUAL cxx_final)
+        set(def_value "${prefix_arg}_FINAL")
+        string(APPEND file_content "
+#  if ${def_name}
+#    define ${def_value} final
+#  else
+#    define ${def_value}
+#  endif
+\n")
+      endif()
+      if (feature STREQUAL cxx_override)
+        set(def_value "${prefix_arg}_OVERRIDE")
+        string(APPEND file_content "
+#  if ${def_name}
+#    define ${def_value} override
+#  else
+#    define ${def_value}
+#  endif
+\n")
+      endif()
       if (feature STREQUAL cxx_static_assert)
         set(def_value "${prefix_arg}_STATIC_ASSERT(X)")
         set(def_value_msg "${prefix_arg}_STATIC_ASSERT_MSG(X, MSG)")
         set(static_assert_struct "template<bool> struct ${prefix_arg}StaticAssert;\ntemplate<> struct ${prefix_arg}StaticAssert<true>{};\n")
         set(def_standard "#    define ${def_value} static_assert(X, #X)\n#    define ${def_value_msg} static_assert(X, MSG)")
         set(def_alternative "${static_assert_struct}#    define ${def_value} sizeof(${prefix_arg}StaticAssert<X>)\n#    define ${def_value_msg} sizeof(${prefix_arg}StaticAssert<X>)")
-        string(APPEND file_content "#  if defined(${def_name}) && ${def_name}\n${def_standard}\n#  else\n${def_alternative}\n#  endif\n\n")
+        string(APPEND file_content "#  if ${def_name}\n${def_standard}\n#  else\n${def_alternative}\n#  endif\n\n")
       endif()
       if (feature STREQUAL cxx_alignas)
         set(def_value "${prefix_arg}_ALIGNAS(X)")
         string(APPEND file_content "
-#  if defined(${def_name}) && ${def_name}
+#  if ${def_name}
 #    define ${def_value} alignas(X)
 #  elif ${prefix_arg}_COMPILER_IS_GNU || ${prefix_arg}_COMPILER_IS_Clang || ${prefix_arg}_COMPILER_IS_AppleClang
 #    define ${def_value} __attribute__ ((__aligned__(X)))
@@ -525,7 +534,7 @@ function(write_compiler_detection_header
       if (feature STREQUAL cxx_alignof)
         set(def_value "${prefix_arg}_ALIGNOF(X)")
         string(APPEND file_content "
-#  if defined(${def_name}) && ${def_name}
+#  if ${def_name}
 #    define ${def_value} alignof(X)
 #  elif ${prefix_arg}_COMPILER_IS_GNU || ${prefix_arg}_COMPILER_IS_Clang || ${prefix_arg}_COMPILER_IS_AppleClang
 #    define ${def_value} __alignof__(X)
@@ -534,12 +543,30 @@ function(write_compiler_detection_header
 #  endif
 \n")
       endif()
-      _simpledefine(cxx_deleted_functions DELETED_FUNCTION "= delete" "")
-      _simpledefine(cxx_extern_templates EXTERN_TEMPLATE extern "")
+      if (feature STREQUAL cxx_deleted_functions)
+        set(def_value "${prefix_arg}_DELETED_FUNCTION")
+        string(APPEND file_content "
+#  if ${def_name}
+#    define ${def_value} = delete
+#  else
+#    define ${def_value}
+#  endif
+\n")
+      endif()
+      if (feature STREQUAL cxx_extern_templates)
+        set(def_value "${prefix_arg}_EXTERN_TEMPLATE")
+        string(APPEND file_content "
+#  if ${def_name}
+#    define ${def_value} extern
+#  else
+#    define ${def_value}
+#  endif
+\n")
+      endif()
       if (feature STREQUAL cxx_noexcept)
         set(def_value "${prefix_arg}_NOEXCEPT")
         string(APPEND file_content "
-#  if defined(${def_name}) && ${def_name}
+#  if ${def_name}
 #    define ${def_value} noexcept
 #    define ${def_value}_EXPR(X) noexcept(X)
 #  else
@@ -548,11 +575,20 @@ function(write_compiler_detection_header
 #  endif
 \n")
       endif()
-      _simpledefine(cxx_nullptr NULLPTR nullptr 0)
+      if (feature STREQUAL cxx_nullptr)
+        set(def_value "${prefix_arg}_NULLPTR")
+        string(APPEND file_content "
+#  if ${def_name}
+#    define ${def_value} nullptr
+#  else
+#    define ${def_value} 0
+#  endif
+\n")
+      endif()
       if (feature STREQUAL cxx_thread_local)
         set(def_value "${prefix_arg}_THREAD_LOCAL")
         string(APPEND file_content "
-#  if defined(${def_name}) && ${def_name}
+#  if ${def_name}
 #    define ${def_value} thread_local
 #  elif ${prefix_arg}_COMPILER_IS_GNU || ${prefix_arg}_COMPILER_IS_Clang || ${prefix_arg}_COMPILER_IS_AppleClang
 #    define ${def_value} __thread
@@ -568,7 +604,7 @@ function(write_compiler_detection_header
         set(def_value "${prefix_arg}_DEPRECATED")
         string(APPEND file_content "
 #  ifndef ${def_value}
-#    if defined(${def_name}) && ${def_name}
+#    if ${def_name}
 #      define ${def_value} [[deprecated]]
 #      define ${def_value}_MSG(MSG) [[deprecated(MSG)]]
 #    elif ${prefix_arg}_COMPILER_IS_GNU || ${prefix_arg}_COMPILER_IS_Clang
diff --git a/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt b/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt
index 9f229f9..8b251d7 100644
--- a/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt
+++ b/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt
@@ -4,7 +4,6 @@ project(WriteCompilerDetectionHeader)
 set(CMAKE_INCLUDE_CURRENT_DIR ON)
 
 include(WriteCompilerDetectionHeader)
-include(CheckCXXSourceCompiles)
 
 get_property(cxx_known_features GLOBAL PROPERTY CMAKE_CXX_KNOWN_FEATURES)
 get_property(c_known_features GLOBAL PROPERTY CMAKE_C_KNOWN_FEATURES)
@@ -27,6 +26,7 @@ if (NOT CMAKE_CXX_COMPILE_FEATURES AND NOT CMAKE_C_COMPILE_FEATURES)
   add_executable(WriteCompilerDetectionHeader "${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp")
 
   if(UNIX OR NOT CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+    include(CheckCXXSourceCompiles)
     check_cxx_source_compiles("#include \"${CMAKE_CURRENT_BINARY_DIR}/test_compiler_detection.h\"\nint main() { return 0; }\n"
       file_include_works
     )
@@ -156,31 +156,3 @@ if (CMAKE_C_COMPILER_ID STREQUAL "GNU"
   set_defines(WriteCompilerDetectionHeader_C11_multi "EXPECTED_COMPILER_C_FUNCTION_PROTOTYPES;EXPECTED_COMPILER_C_RESTRICT" "")
   target_include_directories(WriteCompilerDetectionHeader_C11_multi PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/compiler_multi_files)
 endif()
-
-# test for ALLOW_UNKNOWN_COMPILERS
-
-# use a compiler does not match the current one,
-# so one always hits the fallback code
-if (CMAKE_CXX_COMPILER_ID STREQUAL "SunPro")
-  set(OTHER_CXX "Intel")
-else()
-  set(OTHER_CXX "SunPro")
-endif()
-
-write_compiler_detection_header(
-  FILE "${CMAKE_CURRENT_BINARY_DIR}/test_compiler_detection_allow_unknown.h"
-  PREFIX TEST
-  COMPILERS ${OTHER_CXX}
-  FEATURES cxx_nullptr
-  ALLOW_UNKNOWN_COMPILERS
-)
-
-# intentionally abuse the TEST_NULLPR variable: this will only work
-# with the fallback code.
-check_cxx_source_compiles("#include \"${CMAKE_CURRENT_BINARY_DIR}/test_compiler_detection_allow_unknown.h\"
-int main() {\n int i = TEST_NULLPTR;\n return 0; }\n"
-  file_include_works_allow_unknown
-)
-if (NOT file_include_works_allow_unknown)
-  message(SEND_ERROR "Inclusion of ${CMAKE_CURRENT_BINARY_DIR}/test_compiler_detection_allow_unknown.h was expected to work, but did not.")
-endif()

-----------------------------------------------------------------------

Summary of changes:
 Help/release/dev/WCDH_allow_unsupported.rst        |    8 --
 Modules/WriteCompilerDetectionHeader.cmake         |  122 +++++++++++++-------
 .../WriteCompilerDetectionHeader/CMakeLists.txt    |   30 +----
 3 files changed, 80 insertions(+), 80 deletions(-)
 delete mode 100644 Help/release/dev/WCDH_allow_unsupported.rst


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list