[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