[Cmake-commits] CMake branch, master, updated. v3.10.0-449-gc07b18d

Kitware Robot kwrobot at kitware.com
Wed Nov 29 08:35:08 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, master has been updated
       via  c07b18d8835fbc4ddc0364f6f3531cc515f309fc (commit)
       via  71c28bddba25847f65cfebefe884d8e88eedc1af (commit)
       via  d5cad740789bdb2933b5d189f5cd5b7aada9700b (commit)
       via  caffddd620393fd9c73c1ce97d0451ce5570dedf (commit)
       via  4ff89fb6084d84aabe2e64aeccad03794af65a8a (commit)
       via  6e613ff399166c59e881331027e65c601feab807 (commit)
       via  f969f1a9ce1d0045b9d056fd08c4683c34c420fa (commit)
       via  e04f1d1b47f395cd702574041aa17e52e71499d8 (commit)
       via  b31d5e1dfdea5abcf95de05baf7b0e53cc18937a (commit)
       via  1f1c2a9fdf84e1fb6f3399f7f30ad8b7c8d8669d (commit)
       via  c860999213fcf6114084688cad7b8e70264401cc (commit)
       via  ea1bb90270357ecd033c11c941b83e76e6d1525b (commit)
       via  7669695a74959dbad7c801facea4c7428875ffc3 (commit)
      from  9e961930ee1ab526467651935bf7c285c170432d (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=c07b18d8835fbc4ddc0364f6f3531cc515f309fc
commit c07b18d8835fbc4ddc0364f6f3531cc515f309fc
Merge: 71c28bd e04f1d1
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Nov 29 13:25:44 2017 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Wed Nov 29 08:32:26 2017 -0500

    Merge topic 'CodeBlocks-custom-compiler-id'
    
    e04f1d1b CodeBlocks: add option for the CB compiler ID
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Merge-request: !1512


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=71c28bddba25847f65cfebefe884d8e88eedc1af
commit 71c28bddba25847f65cfebefe884d8e88eedc1af
Merge: d5cad74 4ff89fb
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Nov 29 13:27:40 2017 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Wed Nov 29 08:32:00 2017 -0500

    Merge topic 'aix-threads'
    
    4ff89fb6 AIX: Add -pthread flag to enable std::thread with GCC
    6e613ff3 bootstrap: Add infrastructure to detect threading flags
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Merge-request: !1535


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d5cad740789bdb2933b5d189f5cd5b7aada9700b
commit d5cad740789bdb2933b5d189f5cd5b7aada9700b
Merge: caffddd f969f1a
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Nov 29 13:27:15 2017 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Wed Nov 29 08:29:36 2017 -0500

    Merge topic 'clang-cl-fix'
    
    f969f1a9 Clang: Do not mistake clang-cl 6.0 for GNU-like clang
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Merge-request: !1522


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=caffddd620393fd9c73c1ce97d0451ce5570dedf
commit caffddd620393fd9c73c1ce97d0451ce5570dedf
Merge: 9e96193 b31d5e1
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Nov 29 13:24:40 2017 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Wed Nov 29 08:26:05 2017 -0500

    Merge topic 'CheckIncludeFiles-language-CXX'
    
    b31d5e1d CheckIncludeFiles: improve warning for missing argument
    1f1c2a9f CheckIncludeFiles: clean up documentation of new features
    c8609992 Help: Add notes for topic 'CheckIncludeFiles-language-CXX'
    ea1bb902 CheckIncludeFiles: add unit tests
    7669695a CheckIncludeFiles: extend to allow a LANGUAGE argument
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Merge-request: !1464


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4ff89fb6084d84aabe2e64aeccad03794af65a8a
commit 4ff89fb6084d84aabe2e64aeccad03794af65a8a
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Tue Nov 28 11:24:26 2017 -0500
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Nov 28 11:24:26 2017 -0500

    AIX: Add -pthread flag to enable std::thread with GCC

diff --git a/CMakeLists.txt b/CMakeLists.txt
index fafe536..ebeca22 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,7 +2,11 @@
 # file Copyright.txt or https://cmake.org/licensing for details.
 
 cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
+set(CMAKE_USER_MAKE_RULES_OVERRIDE_C ${CMAKE_CURRENT_SOURCE_DIR}/Source/Modules/OverrideC.cmake)
+set(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX ${CMAKE_CURRENT_SOURCE_DIR}/Source/Modules/OverrideCXX.cmake)
 project(CMake)
+unset(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX)
+unset(CMAKE_USER_MAKE_RULES_OVERRIDE_C)
 
 # Make sure we can find internal find_package modules only used for
 # building CMake and not for shipping externally
diff --git a/Source/Modules/OverrideC.cmake b/Source/Modules/OverrideC.cmake
new file mode 100644
index 0000000..f8299ad
--- /dev/null
+++ b/Source/Modules/OverrideC.cmake
@@ -0,0 +1,3 @@
+if("${CMAKE_SYSTEM_NAME};${CMAKE_C_COMPILER_ID}" STREQUAL "AIX;GNU")
+  string(APPEND CMAKE_C_FLAGS_INIT " -pthread")
+endif()
diff --git a/Source/Modules/OverrideCXX.cmake b/Source/Modules/OverrideCXX.cmake
new file mode 100644
index 0000000..13689e2
--- /dev/null
+++ b/Source/Modules/OverrideCXX.cmake
@@ -0,0 +1,3 @@
+if("${CMAKE_SYSTEM_NAME};${CMAKE_CXX_COMPILER_ID}" STREQUAL "AIX;GNU")
+  string(APPEND CMAKE_CXX_FLAGS_INIT " -pthread")
+endif()
diff --git a/bootstrap b/bootstrap
index e02c289..ab087e9 100755
--- a/bootstrap
+++ b/bootstrap
@@ -982,6 +982,9 @@ if [ -z "${CC}" -a -z "${CXX}" ]; then
 fi
 
 thread_flags=''
+case "${cmake_system}" in
+  *AIX*)   thread_flags='-pthread' ;;
+esac
 
 #-----------------------------------------------------------------------------
 # Test C compiler
@@ -1003,6 +1006,10 @@ echo '
 # error "The CMAKE_C_COMPILER is set to a C++ compiler"
 #endif
 
+#if defined(_AIX) && defined(__GNUC__) && !defined(_THREAD_SAFE)
+#error "On AIX with GNU we need the -pthread flag."
+#endif
+
 #if defined(__sun) && __STDC_VERSION__ < 199901L
 #error "On Solaris we need C99."
 #endif
@@ -1066,6 +1073,10 @@ echo '
 #error "Compiler is not in a mode aware of C++11."
 #endif
 
+#if defined(_AIX) && defined(__GNUC__) && !defined(_THREAD_SAFE)
+#error "On AIX with GNU we need the -pthread flag."
+#endif
+
 #if defined(__SUNPRO_CC) && __SUNPRO_CC < 0x5140
 #error "SunPro <= 5.13 mode not supported due to bug in move semantics."
 #endif
@@ -1326,7 +1337,7 @@ else
   uv_c_flags="${uv_c_flags} -DCMAKE_BOOTSTRAP"
   case "${cmake_system}" in
     *AIX*)
-      uv_c_flags="${uv_c_flags} -D_ALL_SOURCE -D_XOPEN_SOURCE=500 -D_LINUX_SOURCE_COMPAT -D_THREAD_SAFE"
+      uv_c_flags="${uv_c_flags} -D_ALL_SOURCE -D_XOPEN_SOURCE=500 -D_LINUX_SOURCE_COMPAT"
       libs="${libs} -lperfstat"
       ;;
     *Darwin*)

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6e613ff399166c59e881331027e65c601feab807
commit 6e613ff399166c59e881331027e65c601feab807
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Tue Nov 28 11:22:46 2017 -0500
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Nov 28 11:23:36 2017 -0500

    bootstrap: Add infrastructure to detect threading flags
    
    In our loop to detect -std flags, add another layer to detect
    threading flags.

diff --git a/bootstrap b/bootstrap
index d9e243d..e02c289 100755
--- a/bootstrap
+++ b/bootstrap
@@ -981,6 +981,8 @@ if [ -z "${CC}" -a -z "${CXX}" ]; then
   cmake_toolchain_detect
 fi
 
+thread_flags=''
+
 #-----------------------------------------------------------------------------
 # Test C compiler
 cmake_c_compiler=
@@ -1014,16 +1016,18 @@ int main(int argc, char* argv[])
 }
 ' > "${TMPFILE}.c"
 for std in 11 99 90; do
-  try_flags="`cmake_extract_standard_flags \"${cmake_toolchain}\" C \"${std}\"`"
+  std_flags="`cmake_extract_standard_flags \"${cmake_toolchain}\" C \"${std}\"`"
   for compiler in ${cmake_c_compilers}; do
-    for flag in '' $try_flags; do
-      echo "Checking whether '${compiler} ${cmake_c_flags} ${flag}' works." >> cmake_bootstrap.log 2>&1
-      if cmake_try_run "${compiler}" "${cmake_c_flags} ${flag}" \
-        "${TMPFILE}.c" >> cmake_bootstrap.log 2>&1; then
-        cmake_c_compiler="${compiler}"
-        cmake_c_flags="${cmake_c_flags} ${flag}"
-        break 3
-      fi
+    for std_flag in '' $std_flags; do
+      for thread_flag in '' $thread_flags; do
+        echo "Checking whether '${compiler} ${cmake_c_flags} ${std_flag} ${thread_flag}' works." >> cmake_bootstrap.log 2>&1
+        if cmake_try_run "${compiler}" "${cmake_c_flags} ${std_flag} ${thread_flag}" \
+          "${TMPFILE}.c" >> cmake_bootstrap.log 2>&1; then
+          cmake_c_compiler="${compiler}"
+          cmake_c_flags="${cmake_c_flags} ${std_flag} ${thread_flag}"
+          break 3
+        fi
+      done
     done
   done
 done
@@ -1081,16 +1085,18 @@ int main()
 }
 ' > "${TMPFILE}.cxx"
 for std in 17 14 11; do
-  try_flags="`cmake_extract_standard_flags \"${cmake_toolchain}\" CXX \"${std}\"`"
+  std_flags="`cmake_extract_standard_flags \"${cmake_toolchain}\" CXX \"${std}\"`"
   for compiler in ${cmake_cxx_compilers}; do
-    for flag in '' $try_flags; do
-      echo "Checking whether '${compiler} ${cmake_cxx_flags} ${flag}' works." >> cmake_bootstrap.log 2>&1
-      if cmake_try_run "${compiler}" "${cmake_cxx_flags} ${flag}" \
-        "${TMPFILE}.cxx" >> cmake_bootstrap.log 2>&1; then
-        cmake_cxx_compiler="${compiler}"
-        cmake_cxx_flags="${cmake_cxx_flags} ${flag} "
-        break 3
-      fi
+    for std_flag in '' $std_flags; do
+      for thread_flag in '' $thread_flags; do
+        echo "Checking whether '${compiler} ${cmake_cxx_flags} ${std_flag} ${thread_flag}' works." >> cmake_bootstrap.log 2>&1
+        if cmake_try_run "${compiler}" "${cmake_cxx_flags} ${std_flag} ${thread_flag}" \
+          "${TMPFILE}.cxx" >> cmake_bootstrap.log 2>&1; then
+          cmake_cxx_compiler="${compiler}"
+          cmake_cxx_flags="${cmake_cxx_flags} ${std_flag} ${thread_flag} "
+          break 3
+        fi
+      done
     done
   done
 done

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f969f1a9ce1d0045b9d056fd08c4683c34c420fa
commit f969f1a9ce1d0045b9d056fd08c4683c34c420fa
Author:     İsmail Dönmez <ismail at i10z.com>
AuthorDate: Fri Nov 24 13:22:46 2017 +0100
Commit:     İsmail Dönmez <ismail at i10z.com>
CommitDate: Tue Nov 28 17:08:33 2017 +0100

    Clang: Do not mistake clang-cl 6.0 for GNU-like clang
    
    The check added by commit v3.10.0-rc2~2^2 (Clang: Diagnose unsupported
    GNU-like clang targeting MSVC ABI, 2017-10-10) is incorrectly detecting
    clang-cl 6.0 as GNU-like.  Currently cmake is testing if the clang
    compiler accepts `--version` to see if it accepts GNU style flags.
    However, with the latest llvm snapshot this also works for clang-cl:
    
        > clang-cl --version
        clang version 6.0.0 (trunk)
        Target: x86_64-pc-windows-msvc
        Thread model: posix
        InstalledDir: C:\Program Files\LLVM\bin
    
    So instead we should use the `/?` flag which fails with clang but
    works with clang-cl:
    
        > clang-cl /? &> /dev/null; echo $?
        0
        > clang /? &> /dev/null; echo $?
        1
    
    Fixes: #17518

diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake
index 347106e..15c304c 100644
--- a/Modules/CMakeDetermineCompilerId.cmake
+++ b/Modules/CMakeDetermineCompilerId.cmake
@@ -742,12 +742,12 @@ function(CMAKE_DIAGNOSE_UNSUPPORTED_CLANG lang envvar)
     return()
   endif()
 
-  # Test whether a GNU-like command-line option works.
-  execute_process(COMMAND "${CMAKE_${lang}_COMPILER}" --version
+  # Test whether an MSVC-like command-line option works.
+  execute_process(COMMAND "${CMAKE_${lang}_COMPILER}" /?
     RESULT_VARIABLE _clang_result
     OUTPUT_VARIABLE _clang_stdout
     ERROR_VARIABLE _clang_stderr)
-  if(NOT _clang_result EQUAL 0)
+  if(_clang_result EQUAL 0)
     return()
   endif()
 

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e04f1d1b47f395cd702574041aa17e52e71499d8
commit e04f1d1b47f395cd702574041aa17e52e71499d8
Author:     Melven Roehrig-Zoellner <Melven.Roehrig-Zoellner at DLR.de>
AuthorDate: Mon Nov 20 21:06:29 2017 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Mon Nov 27 14:41:54 2017 -0500

    CodeBlocks: add option for the CB compiler ID
    
    CodeBlocks uses his own compiler ID string which may differ from
    CMAKE_<LANG>_COMPILER_ID. In particular CodeBlocks supports a large
    number of different compiler configurations (with different IDs)
    This commit adds a cache variable "CMAKE_CODEBLOCKS_COMPILER_ID",
    so the user might adjust it when needed.

diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst
index 1927c37..c142ede 100644
--- a/Help/manual/cmake-variables.7.rst
+++ b/Help/manual/cmake-variables.7.rst
@@ -124,6 +124,7 @@ Variables that Change Behavior
    /variable/CMAKE_AUTOMOC_RELAXED_MODE
    /variable/CMAKE_BACKWARDS_COMPATIBILITY
    /variable/CMAKE_BUILD_TYPE
+   /variable/CMAKE_CODEBLOCKS_COMPILER_ID
    /variable/CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES
    /variable/CMAKE_CODELITE_USE_TARGETS
    /variable/CMAKE_COLOR_MAKEFILE
diff --git a/Help/release/dev/CodeBlocks-custom-compiler-id.rst b/Help/release/dev/CodeBlocks-custom-compiler-id.rst
new file mode 100644
index 0000000..893bd5c
--- /dev/null
+++ b/Help/release/dev/CodeBlocks-custom-compiler-id.rst
@@ -0,0 +1,6 @@
+CodeBlocks-custom-compiler-id
+-----------------------------
+
+* The :generator:`CodeBlocks` extra generator learned to check a
+  :variable:`CMAKE_CODEBLOCKS_COMPILER_ID` variable for a custom
+  compiler identification value to place in the project file.
diff --git a/Help/variable/CMAKE_CODEBLOCKS_COMPILER_ID.rst b/Help/variable/CMAKE_CODEBLOCKS_COMPILER_ID.rst
new file mode 100644
index 0000000..ad2709d
--- /dev/null
+++ b/Help/variable/CMAKE_CODEBLOCKS_COMPILER_ID.rst
@@ -0,0 +1,13 @@
+CMAKE_CODEBLOCKS_COMPILER_ID
+----------------------------
+
+Change the compiler id in the generated CodeBlocks project files.
+
+CodeBlocks uses its own compiler id string which differs from
+:variable:`CMAKE_<LANG>_COMPILER_ID`.  If this variable is left empty,
+CMake tries to recognize the CodeBlocks compiler id automatically.
+Otherwise the specified string is used in the CodeBlocks project file.
+See the CodeBlocks documentation for valid compiler id strings.
+
+Other IDEs like QtCreator that also use the CodeBlocks generator may ignore
+this setting.
diff --git a/Modules/CMakeFindCodeBlocks.cmake b/Modules/CMakeFindCodeBlocks.cmake
index b76e5c5..13bceb1 100644
--- a/Modules/CMakeFindCodeBlocks.cmake
+++ b/Modules/CMakeFindCodeBlocks.cmake
@@ -28,3 +28,6 @@ endif()
 
 # This variable is used by the CodeBlocks generator and appended to the make invocation commands.
 set(CMAKE_CODEBLOCKS_MAKE_ARGUMENTS "${_CMAKE_CODEBLOCKS_INITIAL_MAKE_ARGS}" CACHE STRING "Additional command line arguments when CodeBlocks invokes make. Enter e.g. -j<some_number> to get parallel builds")
+
+# This variable is used by the CodeBlocks generator and allows the user to overwrite the autodetected CodeBlocks compiler id
+set(CMAKE_CODEBLOCKS_COMPILER_ID "" CACHE STRING "Id string of the compiler for the CodeBlocks IDE. Automatically detected when left empty")
diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx
index 9c9b75b..dd5bcf1 100644
--- a/Source/cmExtraCodeBlocksGenerator.cxx
+++ b/Source/cmExtraCodeBlocksGenerator.cxx
@@ -648,6 +648,13 @@ void cmExtraCodeBlocksGenerator::AppendTarget(
 // Translate the cmake compiler id into the CodeBlocks compiler id
 std::string cmExtraCodeBlocksGenerator::GetCBCompilerId(const cmMakefile* mf)
 {
+  // allow the user to overwrite the detected compiler
+  std::string userCompiler =
+    mf->GetSafeDefinition("CMAKE_CODEBLOCKS_COMPILER_ID");
+  if (!userCompiler.empty()) {
+    return userCompiler;
+  }
+
   // figure out which language to use
   // for now care only for C, C++, and Fortran
 

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b31d5e1dfdea5abcf95de05baf7b0e53cc18937a
commit b31d5e1dfdea5abcf95de05baf7b0e53cc18937a
Author:     David Adam <zanchey at ucc.gu.uwa.edu.au>
AuthorDate: Fri Nov 24 15:50:14 2017 +0800
Commit:     David Adam <zanchey at ucc.gu.uwa.edu.au>
CommitDate: Fri Nov 24 15:54:00 2017 +0800

    CheckIncludeFiles: improve warning for missing argument

diff --git a/Modules/CheckIncludeFiles.cmake b/Modules/CheckIncludeFiles.cmake
index 1a217b3..347231c 100644
--- a/Modules/CheckIncludeFiles.cmake
+++ b/Modules/CheckIncludeFiles.cmake
@@ -49,12 +49,14 @@ macro(CHECK_INCLUDE_FILES INCLUDE VARIABLE)
        elseif(CMAKE_CXX_COMPILER_LOADED)
          set(_lang CXX)
        else()
-         message(FATAL_ERROR "CHECK_INCLUDE_FILES needs either C or CXX language enabled")
+         message(FATAL_ERROR "CHECK_INCLUDE_FILES needs either C or CXX language enabled.\n")
        endif()
     elseif("x${ARGN}" MATCHES "^xLANGUAGE;([a-zA-Z]+)$")
-       set(_lang "${CMAKE_MATCH_1}")
+      set(_lang "${CMAKE_MATCH_1}")
+    elseif("x${ARGN}" MATCHES "^xLANGUAGE$")
+      message(FATAL_ERROR "No languages listed for LANGUAGE option.\nSupported languages: C, CXX.\n")
     else()
-       message(FATAL_ERROR "Unknown arguments:\n  ${ARGN}\n")
+      message(FATAL_ERROR "Unknown arguments:\n  ${ARGN}\n")
     endif()
 
     if(_lang STREQUAL "C")
diff --git a/Tests/RunCMake/CheckModules/CheckIncludeFilesMissingLanguage-stderr.txt b/Tests/RunCMake/CheckModules/CheckIncludeFilesMissingLanguage-stderr.txt
index 4b31dbd..36c28f9 100644
--- a/Tests/RunCMake/CheckModules/CheckIncludeFilesMissingLanguage-stderr.txt
+++ b/Tests/RunCMake/CheckModules/CheckIncludeFilesMissingLanguage-stderr.txt
@@ -1,7 +1,7 @@
 CMake Error at .*/Modules/CheckIncludeFiles.cmake:[0-9]+. \(message\):
-  Unknown arguments:
+  No languages listed for LANGUAGE option.
 
-    LANGUAGE
+  Supported languages: C, CXX.
 
 Call Stack \(most recent call first\):
   CheckIncludeFilesMissingLanguage.cmake:[0-9]+ \(check_include_files\)

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1f1c2a9fdf84e1fb6f3399f7f30ad8b7c8d8669d
commit 1f1c2a9fdf84e1fb6f3399f7f30ad8b7c8d8669d
Author:     David Adam <zanchey at ucc.gu.uwa.edu.au>
AuthorDate: Fri Nov 24 15:34:54 2017 +0800
Commit:     David Adam <zanchey at ucc.gu.uwa.edu.au>
CommitDate: Fri Nov 24 15:53:54 2017 +0800

    CheckIncludeFiles: clean up documentation of new features

diff --git a/Modules/CheckIncludeFiles.cmake b/Modules/CheckIncludeFiles.cmake
index 3b43d28..1a217b3 100644
--- a/Modules/CheckIncludeFiles.cmake
+++ b/Modules/CheckIncludeFiles.cmake
@@ -6,7 +6,7 @@
 # -----------------
 #
 # Provides a macro to check if a list of one or more header files can
-# be included together in ``C``.
+# be included together.
 #
 # .. command:: CHECK_INCLUDE_FILES
 #
@@ -15,12 +15,14 @@
 #     CHECK_INCLUDE_FILES("<includes>" <variable> [LANGUAGE <language>])
 #
 #   Check if the given ``<includes>`` list may be included together
-#   in a ``C`` source file and store the result in an internal cache
+#   in a source file and store the result in an internal cache
 #   entry named ``<variable>``.  Specify the ``<includes>`` argument
 #   as a :ref:`;-list <CMake Language Lists>` of header file names.
 #
 # If LANGUAGE is set, the specified compiler will be used to perform the
-# check. Acceptable values are C and CXX.
+# check. Acceptable values are ``C`` and ``CXX``. If not set, the C compiler
+# will be used if enabled. If the C compiler is not enabled, the C++
+# compiler will be used if enabled.
 #
 # The following variables may be set before calling this macro to modify
 # the way the check is run:

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c860999213fcf6114084688cad7b8e70264401cc
commit c860999213fcf6114084688cad7b8e70264401cc
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Tue Nov 14 09:07:38 2017 -0500
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Nov 14 09:07:38 2017 -0500

    Help: Add notes for topic 'CheckIncludeFiles-language-CXX'

diff --git a/Help/release/dev/CheckIncludeFiles-language-CXX.rst b/Help/release/dev/CheckIncludeFiles-language-CXX.rst
new file mode 100644
index 0000000..1631a5e
--- /dev/null
+++ b/Help/release/dev/CheckIncludeFiles-language-CXX.rst
@@ -0,0 +1,6 @@
+CheckIncludeFiles-language-CXX
+------------------------------
+
+* The :module:`CheckIncludeFiles` module :command:`CHECK_INCLUDE_FILES`
+  command gained a ``LANGUAGE`` option to specify whether to check using the
+  ``C`` or ``CXX`` compiler.

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ea1bb90270357ecd033c11c941b83e76e6d1525b
commit ea1bb90270357ecd033c11c941b83e76e6d1525b
Author:     David Adam <zanchey at ucc.gu.uwa.edu.au>
AuthorDate: Sat Nov 11 23:02:08 2017 +0800
Commit:     David Adam <zanchey at ucc.gu.uwa.edu.au>
CommitDate: Sat Nov 11 23:04:05 2017 +0800

    CheckIncludeFiles: add unit tests

diff --git a/Tests/RunCMake/CheckModules/CheckIncludeFilesMissingLanguage-result.txt b/Tests/RunCMake/CheckModules/CheckIncludeFilesMissingLanguage-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/CheckModules/CheckIncludeFilesMissingLanguage-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/CheckModules/CheckIncludeFilesMissingLanguage-stderr.txt b/Tests/RunCMake/CheckModules/CheckIncludeFilesMissingLanguage-stderr.txt
new file mode 100644
index 0000000..4b31dbd
--- /dev/null
+++ b/Tests/RunCMake/CheckModules/CheckIncludeFilesMissingLanguage-stderr.txt
@@ -0,0 +1,8 @@
+CMake Error at .*/Modules/CheckIncludeFiles.cmake:[0-9]+. \(message\):
+  Unknown arguments:
+
+    LANGUAGE
+
+Call Stack \(most recent call first\):
+  CheckIncludeFilesMissingLanguage.cmake:[0-9]+ \(check_include_files\)
+  CMakeLists.txt:[0-9]+ \(include\)
diff --git a/Tests/RunCMake/CheckModules/CheckIncludeFilesMissingLanguage.cmake b/Tests/RunCMake/CheckModules/CheckIncludeFilesMissingLanguage.cmake
new file mode 100644
index 0000000..59accb0
--- /dev/null
+++ b/Tests/RunCMake/CheckModules/CheckIncludeFilesMissingLanguage.cmake
@@ -0,0 +1,3 @@
+enable_language(C)
+include(CheckIncludeFiles)
+check_include_files("stddef.h;stdlib.h" HAVE_MISSING_ARGUMENT_H LANGUAGE)
diff --git a/Tests/RunCMake/CheckModules/CheckIncludeFilesOk.cmake b/Tests/RunCMake/CheckModules/CheckIncludeFilesOk.cmake
new file mode 100644
index 0000000..0891ec6
--- /dev/null
+++ b/Tests/RunCMake/CheckModules/CheckIncludeFilesOk.cmake
@@ -0,0 +1,6 @@
+enable_language(C)
+enable_language(CXX)
+include(CheckIncludeFiles)
+check_include_files("stddef.h;stdlib.h" HAVE_STDLIB_H)
+check_include_files("stddef.h;stdlib.h" HAVE_STDLIB_H2 LANGUAGE C)
+check_include_files("cstddef;cstdlib" HAVE_CSTDLIB_H LANGUAGE CXX)
diff --git a/Tests/RunCMake/CheckModules/CheckIncludeFilesOkNoC.cmake b/Tests/RunCMake/CheckModules/CheckIncludeFilesOkNoC.cmake
new file mode 100644
index 0000000..a1d2843
--- /dev/null
+++ b/Tests/RunCMake/CheckModules/CheckIncludeFilesOkNoC.cmake
@@ -0,0 +1,4 @@
+enable_language(CXX)
+include(CheckIncludeFiles)
+check_include_files("cstddef;cstdlib" HAVE_CSTDLIB_H3 LANGUAGE CXX)
+check_include_files("cstddef;cstdlib" HAVE_CSTDLIB_H4)
diff --git a/Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownArgument-result.txt b/Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownArgument-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownArgument-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownArgument-stderr.txt b/Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownArgument-stderr.txt
new file mode 100644
index 0000000..098da79
--- /dev/null
+++ b/Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownArgument-stderr.txt
@@ -0,0 +1,8 @@
+CMake Error at .*/Modules/CheckIncludeFiles.cmake:[0-9]+. \(message\):
+  Unknown arguments:
+
+    FOOBAR
+
+Call Stack \(most recent call first\):
+  CheckIncludeFilesUnknownArgument.cmake:[0-9]+ \(check_include_files\)
+  CMakeLists.txt:[0-9]+ \(include\)
diff --git a/Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownArgument.cmake b/Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownArgument.cmake
new file mode 100644
index 0000000..dfc2b93
--- /dev/null
+++ b/Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownArgument.cmake
@@ -0,0 +1,3 @@
+enable_language(C)
+include(CheckIncludeFiles)
+check_include_files("stddef.h;stdlib.h" HAVE_UNKNOWN_ARGUMENT_H FOOBAR)
diff --git a/Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownLanguage-result.txt b/Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownLanguage-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownLanguage-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownLanguage-stderr.txt b/Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownLanguage-stderr.txt
new file mode 100644
index 0000000..5d4a9ec
--- /dev/null
+++ b/Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownLanguage-stderr.txt
@@ -0,0 +1,10 @@
+CMake Error at .*/Modules/CheckIncludeFiles.cmake:[0-9]+. \(message\):
+  Unknown language:
+
+    FOOBAR
+
+  Supported languages: C, CXX.
+
+Call Stack \(most recent call first\):
+  CheckIncludeFilesUnknownLanguage.cmake:[0-9]+ \(check_include_files\)
+  CMakeLists.txt:[0-9]+ \(include\)
diff --git a/Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownLanguage.cmake b/Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownLanguage.cmake
new file mode 100644
index 0000000..3a77cf9
--- /dev/null
+++ b/Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownLanguage.cmake
@@ -0,0 +1,3 @@
+enable_language(C)
+include(CheckIncludeFiles)
+check_include_files("stddef.h;stdlib.h" HAVE_UNKNOWN_ARGUMENT_H LANGUAGE FOOBAR)
diff --git a/Tests/RunCMake/CheckModules/RunCMakeTest.cmake b/Tests/RunCMake/CheckModules/RunCMakeTest.cmake
index 5b4e57e..c5aaa64 100644
--- a/Tests/RunCMake/CheckModules/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CheckModules/RunCMakeTest.cmake
@@ -14,3 +14,9 @@ run_cmake(CheckTypeSizeUnknownArgument)
 run_cmake(CheckTypeSizeMixedArgs)
 
 run_cmake(CheckTypeSizeOkNoC)
+
+run_cmake(CheckIncludeFilesOk)
+run_cmake(CheckIncludeFilesOkNoC)
+run_cmake(CheckIncludeFilesMissingLanguage)
+run_cmake(CheckIncludeFilesUnknownArgument)
+run_cmake(CheckIncludeFilesUnknownLanguage)

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7669695a74959dbad7c801facea4c7428875ffc3
commit 7669695a74959dbad7c801facea4c7428875ffc3
Author:     David Adam <zanchey at ucc.gu.uwa.edu.au>
AuthorDate: Wed Nov 8 23:01:42 2017 +0800
Commit:     David Adam <zanchey at ucc.gu.uwa.edu.au>
CommitDate: Sat Nov 11 23:02:30 2017 +0800

    CheckIncludeFiles: extend to allow a LANGUAGE argument
    
    Allows CheckIncludeFiles to work for C or C++.

diff --git a/Modules/CheckIncludeFiles.cmake b/Modules/CheckIncludeFiles.cmake
index bef11a5..3b43d28 100644
--- a/Modules/CheckIncludeFiles.cmake
+++ b/Modules/CheckIncludeFiles.cmake
@@ -12,13 +12,16 @@
 #
 #   ::
 #
-#     CHECK_INCLUDE_FILES("<includes>" <variable>)
+#     CHECK_INCLUDE_FILES("<includes>" <variable> [LANGUAGE <language>])
 #
 #   Check if the given ``<includes>`` list may be included together
 #   in a ``C`` source file and store the result in an internal cache
 #   entry named ``<variable>``.  Specify the ``<includes>`` argument
 #   as a :ref:`;-list <CMake Language Lists>` of header file names.
 #
+# If LANGUAGE is set, the specified compiler will be used to perform the
+# check. Acceptable values are C and CXX.
+#
 # The following variables may be set before calling this macro to modify
 # the way the check is run:
 #
@@ -37,6 +40,29 @@
 macro(CHECK_INCLUDE_FILES INCLUDE VARIABLE)
   if(NOT DEFINED "${VARIABLE}")
     set(CMAKE_CONFIGURABLE_FILE_CONTENT "/* */\n")
+
+    if("x${ARGN}" STREQUAL "x")
+       if(CMAKE_C_COMPILER_LOADED)
+         set(_lang C)
+       elseif(CMAKE_CXX_COMPILER_LOADED)
+         set(_lang CXX)
+       else()
+         message(FATAL_ERROR "CHECK_INCLUDE_FILES needs either C or CXX language enabled")
+       endif()
+    elseif("x${ARGN}" MATCHES "^xLANGUAGE;([a-zA-Z]+)$")
+       set(_lang "${CMAKE_MATCH_1}")
+    else()
+       message(FATAL_ERROR "Unknown arguments:\n  ${ARGN}\n")
+    endif()
+
+    if(_lang STREQUAL "C")
+      set(src ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckIncludeFiles/${var}.c)
+    elseif(_lang STREQUAL "CXX")
+      set(src ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckIncludeFiles/${var}.cpp)
+    else()
+      message(FATAL_ERROR "Unknown language:\n  ${_lang}\nSupported languages: C, CXX.\n")
+    endif()
+
     if(CMAKE_REQUIRED_INCLUDES)
       set(CHECK_INCLUDE_FILES_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${CMAKE_REQUIRED_INCLUDES}")
     else()
@@ -51,7 +77,7 @@ macro(CHECK_INCLUDE_FILES INCLUDE VARIABLE)
     string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT
       "\n\nint main(void){return 0;}\n")
     configure_file("${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in"
-      "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFiles.c" @ONLY)
+      "${src}" @ONLY)
 
     set(_INCLUDE ${INCLUDE}) # remove empty elements
     if("${_INCLUDE}" MATCHES "^([^;]+);.+;([^;]+)$")
@@ -68,7 +94,7 @@ macro(CHECK_INCLUDE_FILES INCLUDE VARIABLE)
     endif()
     try_compile(${VARIABLE}
       ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFiles.c
+      ${src}
       COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
       CMAKE_FLAGS
       -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_INCLUDE_FILES_FLAGS}

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

Summary of changes:
 CMakeLists.txt                                     |    4 ++
 Help/manual/cmake-variables.7.rst                  |    1 +
 .../release/dev/CheckIncludeFiles-language-CXX.rst |    6 +++
 Help/release/dev/CodeBlocks-custom-compiler-id.rst |    6 +++
 Help/variable/CMAKE_CODEBLOCKS_COMPILER_ID.rst     |   13 +++++
 Modules/CMakeDetermineCompilerId.cmake             |    6 +--
 Modules/CMakeFindCodeBlocks.cmake                  |    3 ++
 Modules/CheckIncludeFiles.cmake                    |   40 ++++++++++++--
 Source/Modules/OverrideC.cmake                     |    3 ++
 Source/Modules/OverrideCXX.cmake                   |    3 ++
 Source/cmExtraCodeBlocksGenerator.cxx              |    7 +++
 .../CheckIncludeFilesMissingLanguage-result.txt}   |    0
 .../CheckIncludeFilesMissingLanguage-stderr.txt    |    8 +++
 .../CheckIncludeFilesMissingLanguage.cmake         |    3 ++
 .../CheckModules/CheckIncludeFilesOk.cmake         |    6 +++
 .../CheckModules/CheckIncludeFilesOkNoC.cmake      |    4 ++
 .../CheckIncludeFilesUnknownArgument-result.txt}   |    0
 .../CheckIncludeFilesUnknownArgument-stderr.txt    |    8 +++
 .../CheckIncludeFilesUnknownArgument.cmake         |    3 ++
 .../CheckIncludeFilesUnknownLanguage-result.txt}   |    0
 .../CheckIncludeFilesUnknownLanguage-stderr.txt    |   10 ++++
 .../CheckIncludeFilesUnknownLanguage.cmake         |    3 ++
 Tests/RunCMake/CheckModules/RunCMakeTest.cmake     |    6 +++
 bootstrap                                          |   55 +++++++++++++-------
 24 files changed, 171 insertions(+), 27 deletions(-)
 create mode 100644 Help/release/dev/CheckIncludeFiles-language-CXX.rst
 create mode 100644 Help/release/dev/CodeBlocks-custom-compiler-id.rst
 create mode 100644 Help/variable/CMAKE_CODEBLOCKS_COMPILER_ID.rst
 create mode 100644 Source/Modules/OverrideC.cmake
 create mode 100644 Source/Modules/OverrideCXX.cmake
 copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => CheckModules/CheckIncludeFilesMissingLanguage-result.txt} (100%)
 create mode 100644 Tests/RunCMake/CheckModules/CheckIncludeFilesMissingLanguage-stderr.txt
 create mode 100644 Tests/RunCMake/CheckModules/CheckIncludeFilesMissingLanguage.cmake
 create mode 100644 Tests/RunCMake/CheckModules/CheckIncludeFilesOk.cmake
 create mode 100644 Tests/RunCMake/CheckModules/CheckIncludeFilesOkNoC.cmake
 copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => CheckModules/CheckIncludeFilesUnknownArgument-result.txt} (100%)
 create mode 100644 Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownArgument-stderr.txt
 create mode 100644 Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownArgument.cmake
 copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => CheckModules/CheckIncludeFilesUnknownLanguage-result.txt} (100%)
 create mode 100644 Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownLanguage-stderr.txt
 create mode 100644 Tests/RunCMake/CheckModules/CheckIncludeFilesUnknownLanguage.cmake


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list