[Cmake-commits] CMake branch, master, updated. v3.14.0-rc1-112-g3411c81

Kitware Robot kwrobot at kitware.com
Fri Feb 15 07:23:08 EST 2019


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  3411c815752470432d56c7bf265d9f99d174d082 (commit)
       via  cde2596a19861e52d6ef0f98dcc0b70ba572573e (commit)
      from  a2a903fe42f6ef54665135cac54b75d50bcd696c (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=3411c815752470432d56c7bf265d9f99d174d082
commit 3411c815752470432d56c7bf265d9f99d174d082
Merge: a2a903f cde2596
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri Feb 15 12:19:41 2019 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Fri Feb 15 07:19:51 2019 -0500

    Merge topic 'try_compile-expand-compile-defs'
    
    cde2596a19 try_compile: Restore expansion of ;-list in COMPILE_DEFINITIONS
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Merge-request: !2965


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cde2596a19861e52d6ef0f98dcc0b70ba572573e
commit cde2596a19861e52d6ef0f98dcc0b70ba572573e
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Thu Feb 14 08:16:20 2019 -0500
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Fri Feb 15 06:21:19 2019 -0500

    try_compile: Restore expansion of ;-list in COMPILE_DEFINITIONS
    
    The quoting added by commit 8c5221fb1f (try_compile: Preserve special
    characters in COMPILE_DEFINITIONS, 2019-01-21, v3.14.0-rc1~108^2~3)
    broke the case that the `COMPILE_DEFINITIONS` value contains a `;`.
    Without the quoting the `;` would be generated literally in an unquoted
    argument in the test `CMakeLists.txt` file and would then be expanded.
    With quoting the `;` is preserved, which is not the old behavior.
    
    Fix this by expanding the `;`-list ahead of time.  Add test cases for
    behavior with both `#` and `;`.
    
    This was noticed with the PGI compiler where we set
    `CMAKE_CXX*_STANDARD_COMPILE_OPTION` to values like `--c++17;-A`.  The
    symptom had also been observed while preparing commit ef8f237686
    (ParseImplicitIncludeInfo: add SunPro Fortran and PGI compiler, Cray
    fix, 2019-01-29, v3.14.0-rc1~26^2~2) but was not recognized at the time
    as a regression.  Revert the workaround added by that commit.
    
    Fixes: #18919

diff --git a/Modules/Compiler/Cray-C.cmake b/Modules/Compiler/Cray-C.cmake
index b3c96ee..d34154c 100644
--- a/Modules/Compiler/Cray-C.cmake
+++ b/Modules/Compiler/Cray-C.cmake
@@ -8,13 +8,13 @@ string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
 string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -DNDEBUG")
 
 if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1)
-  set(CMAKE_C90_STANDARD_COMPILE_OPTION  "-h noc99,conform")
-  set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-h noc99,gnu")
-  set(CMAKE_C99_STANDARD_COMPILE_OPTION  "-h c99,conform")
-  set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-h c99,gnu")
+  set(CMAKE_C90_STANDARD_COMPILE_OPTION  -h noc99,conform)
+  set(CMAKE_C90_EXTENSION_COMPILE_OPTION -h noc99,gnu)
+  set(CMAKE_C99_STANDARD_COMPILE_OPTION  -h c99,conform)
+  set(CMAKE_C99_EXTENSION_COMPILE_OPTION -h c99,gnu)
   if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 8.5)
-    set(CMAKE_C11_STANDARD_COMPILE_OPTION  "-h std=c11,conform")
-    set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-h std=c11,gnu")
+    set(CMAKE_C11_STANDARD_COMPILE_OPTION  -h std=c11,conform)
+    set(CMAKE_C11_EXTENSION_COMPILE_OPTION -h std=c11,gnu)
   endif ()
 endif ()
 
diff --git a/Modules/Compiler/Cray-CXX.cmake b/Modules/Compiler/Cray-CXX.cmake
index bbb5718..85a3167 100644
--- a/Modules/Compiler/Cray-CXX.cmake
+++ b/Modules/Compiler/Cray-CXX.cmake
@@ -8,15 +8,15 @@ string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
 string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -DNDEBUG")
 
 if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1)
-  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION  "-h conform")
-  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-h gnu")
+  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION  -h conform)
+  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION -h gnu)
   if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.4)
-    set(CMAKE_CXX11_STANDARD_COMPILE_OPTION  "-h std=c++11")
-    set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-h std=c++11,gnu")
+    set(CMAKE_CXX11_STANDARD_COMPILE_OPTION  -h std=c++11)
+    set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION -h std=c++11,gnu)
   endif()
   if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.6)
-    set(CMAKE_CXX14_STANDARD_COMPILE_OPTION  "-h std=c++14")
-    set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-h std=c++14,gnu")
+    set(CMAKE_CXX14_STANDARD_COMPILE_OPTION  -h std=c++14)
+    set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION -h std=c++14,gnu)
   endif ()
 endif ()
 
diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx
index bd110ec..eb52895 100644
--- a/Source/cmCoreTryCompile.cxx
+++ b/Source/cmCoreTryCompile.cxx
@@ -226,7 +226,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv,
     } else if (doing == DoingCMakeFlags) {
       cmakeFlags.push_back(argv[i]);
     } else if (doing == DoingCompileDefinitions) {
-      compileDefs.push_back(argv[i]);
+      cmSystemTools::ExpandListArgument(argv[i], compileDefs);
     } else if (doing == DoingLinkOptions) {
       linkOptions.push_back(argv[i]);
     } else if (doing == DoingLinkLibraries) {
diff --git a/Tests/TryCompile/CMakeLists.txt b/Tests/TryCompile/CMakeLists.txt
index 184a7be..54e96a2 100644
--- a/Tests/TryCompile/CMakeLists.txt
+++ b/Tests/TryCompile/CMakeLists.txt
@@ -165,6 +165,35 @@ try_compile(TEST_INNER
   OUTPUT_VARIABLE output)
 TEST_ASSERT(TEST_INNER "try_compile project mode failed:\n${output}")
 
+try_compile(COMPILE_DEFINITIONS_LIST_EXPANDED
+    ${TryCompile_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp
+    ${TryCompile_SOURCE_DIR}/check_a_b.c
+    OUTPUT_VARIABLE output
+    COMPILE_DEFINITIONS "-DDEF_A;-DDEF_B"
+    )
+if(COMPILE_DEFINITIONS_LIST_EXPANDED)
+  message(STATUS "COMPILE_DEFINITIONS list expanded correctly")
+else()
+  string(REPLACE "\n" "\n  " output "  ${output}")
+  message(SEND_ERROR "COMPILE_DEFINITIONS list did not expand correctly\n${output}")
+endif()
+
+try_compile(SHOULD_FAIL_DUE_TO_BAD_SOURCE
+    ${TryCompile_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp
+    ${TryCompile_SOURCE_DIR}/pass.c
+    OUTPUT_VARIABLE output
+    COMPILE_DEFINITIONS "bad#source.c"
+    )
+if(SHOULD_FAIL_DUE_TO_BAD_SOURCE AND NOT CMAKE_GENERATOR MATCHES "Watcom WMake|NMake Makefiles")
+  string(REPLACE "\n" "\n  " output "  ${output}")
+  message(SEND_ERROR "try_compile with bad#source.c did not fail:\n${output}")
+elseif(NOT output MATCHES [[(bad#source\.c|bad\\)]])
+  string(REPLACE "\n" "\n  " output "  ${output}")
+  message(SEND_ERROR "try_compile with bad#source.c failed without mentioning bad source:\n${output}")
+else()
+  message(STATUS "try_compile with bad#source.c correctly failed")
+endif()
+
 add_executable(TryCompile pass.c)
 
 ######################################
diff --git a/Tests/TryCompile/check_a_b.c b/Tests/TryCompile/check_a_b.c
new file mode 100644
index 0000000..05fba0f
--- /dev/null
+++ b/Tests/TryCompile/check_a_b.c
@@ -0,0 +1,10 @@
+#ifndef DEF_A
+#  error DEF_A not defined
+#endif
+#ifndef DEF_B
+#  error DEF_B not defined
+#endif
+int main()
+{
+  return 0;
+}

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

Summary of changes:
 Modules/Compiler/Cray-C.cmake   | 12 ++++++------
 Modules/Compiler/Cray-CXX.cmake | 12 ++++++------
 Source/cmCoreTryCompile.cxx     |  2 +-
 Tests/TryCompile/CMakeLists.txt | 29 +++++++++++++++++++++++++++++
 Tests/TryCompile/check_a_b.c    | 10 ++++++++++
 5 files changed, 52 insertions(+), 13 deletions(-)
 create mode 100644 Tests/TryCompile/check_a_b.c


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list