[Cmake-commits] CMake branch, next, updated. v3.5.1-907-gf5a877d

Brad King brad.king at kitware.com
Mon Apr 11 11:28:14 EDT 2016


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  f5a877d4c6581fd83e99928bfcc0de0458350fc7 (commit)
       via  bd581a373373ee9807fcab35dd3e83334b73174b (commit)
       via  82ef90fcfccb1eaf53e4d15884ff3464aa9072a3 (commit)
      from  6c822adba06b915089cdc70eb012d0f651050a4b (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=f5a877d4c6581fd83e99928bfcc0de0458350fc7
commit f5a877d4c6581fd83e99928bfcc0de0458350fc7
Merge: 6c822ad bd581a3
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Mon Apr 11 11:28:13 2016 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Mon Apr 11 11:28:13 2016 -0400

    Merge topic 'try_compile-config-flags' into next
    
    bd581a37 try_compile: Honor CMAKE_<LANG>_FLAGS_<CONFIG> changes (#16054)
    82ef90fc cmCoreTryCompile: Factor out config lookup for re-use


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bd581a373373ee9807fcab35dd3e83334b73174b
commit bd581a373373ee9807fcab35dd3e83334b73174b
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Mon Apr 11 10:45:56 2016 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Mon Apr 11 11:25:08 2016 -0400

    try_compile: Honor CMAKE_<LANG>_FLAGS_<CONFIG> changes (#16054)
    
    In the `try_compile` source file signature we propagate the caller's
    value of `CMAKE_<LANG>_FLAGS` into the test project.  Extend this to
    propagate `CMAKE_<LANG>_FLAGS_<CONFIG>` too instead of always using the
    default value in the test project.  This will be useful, for example, to
    allow the MSVC runtime library to be changed (e.g. `-MDd` => `-MTd`).

diff --git a/Help/release/dev/try_compile-config-flags.rst b/Help/release/dev/try_compile-config-flags.rst
new file mode 100644
index 0000000..7e5e461
--- /dev/null
+++ b/Help/release/dev/try_compile-config-flags.rst
@@ -0,0 +1,7 @@
+try_compile-config-flags
+------------------------
+
+* The :command:`try_compile` command source file signature now honors
+  configuration-specific flags (e.g. :variable:`CMAKE_<LANG>_FLAGS_DEBUG`)
+  in the generated test project.  Previously only the default such flags
+  for the current toolchain were used.
diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx
index bf89dcb..cfd31b2 100644
--- a/Source/cmCoreTryCompile.cxx
+++ b/Source/cmCoreTryCompile.cxx
@@ -353,6 +353,13 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv,
               cmOutputConverter::EscapeForCMake(flags?flags:"").c_str());
       fprintf(fout, "set(CMAKE_%s_FLAGS \"${CMAKE_%s_FLAGS}"
               " ${COMPILE_DEFINITIONS}\")\n", li->c_str(), li->c_str());
+      static std::string const cfgDefault = "DEBUG";
+      std::string const cfg = !tcConfig.empty()?
+        cmSystemTools::UpperCase(tcConfig) : cfgDefault;
+      std::string const langFlagsCfg = "CMAKE_" + *li + "_FLAGS_" + cfg;
+      const char* flagsCfg = this->Makefile->GetDefinition(langFlagsCfg);
+      fprintf(fout, "set(%s %s)\n", langFlagsCfg.c_str(),
+              cmOutputConverter::EscapeForCMake(flagsCfg?flagsCfg:"").c_str());
       }
     switch(this->Makefile->GetPolicyStatus(cmPolicies::CMP0056))
       {
diff --git a/Tests/RunCMake/try_compile/CompileFlags.cmake b/Tests/RunCMake/try_compile/CompileFlags.cmake
new file mode 100644
index 0000000..d4dc074
--- /dev/null
+++ b/Tests/RunCMake/try_compile/CompileFlags.cmake
@@ -0,0 +1,17 @@
+enable_language(C)
+set(CMAKE_C_FLAGS_RELEASE "-DPP_ERROR ${CMAKE_C_FLAGS_DEBUG}")
+
+#-----------------------------------------------------------------------------
+set(CMAKE_TRY_COMPILE_CONFIGURATION Release)
+try_compile(RESULT ${CMAKE_CURRENT_BINARY_DIR}
+  ${CMAKE_CURRENT_SOURCE_DIR}/src.c
+  OUTPUT_VARIABLE out
+  )
+string(REPLACE "\n" "\n  " out "  ${out}")
+if(RESULT)
+  message(FATAL_ERROR "try_compile passed but should have failed:\n${out}")
+elseif(NOT "x${out}" MATCHES "PP_ERROR is defined")
+  message(FATAL_ERROR "try_compile did not fail with PP_ERROR:\n${out}")
+else()
+  message(STATUS "try_compile with per-config flag worked as expected")
+endif()
diff --git a/Tests/RunCMake/try_compile/RunCMakeTest.cmake b/Tests/RunCMake/try_compile/RunCMakeTest.cmake
index 43ce998..4b1d92a 100644
--- a/Tests/RunCMake/try_compile/RunCMakeTest.cmake
+++ b/Tests/RunCMake/try_compile/RunCMakeTest.cmake
@@ -21,6 +21,7 @@ run_cmake(TargetTypeInvalid)
 run_cmake(TargetTypeStatic)
 
 run_cmake(CMP0056)
+run_cmake(CompileFlags)
 
 if(RunCMake_GENERATOR MATCHES "Make|Ninja")
   # Use a single build tree for a few tests without cleaning.
diff --git a/Tests/RunCMake/try_compile/src.c b/Tests/RunCMake/try_compile/src.c
index 78f2de1..ab83eb6 100644
--- a/Tests/RunCMake/try_compile/src.c
+++ b/Tests/RunCMake/try_compile/src.c
@@ -1 +1,4 @@
 int main(void) { return 0; }
+#ifdef PP_ERROR
+# error PP_ERROR is defined
+#endif

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=82ef90fcfccb1eaf53e4d15884ff3464aa9072a3
commit 82ef90fcfccb1eaf53e4d15884ff3464aa9072a3
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Mon Apr 11 10:39:04 2016 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Mon Apr 11 10:39:04 2016 -0400

    cmCoreTryCompile: Factor out config lookup for re-use
    
    Store the lookup of CMAKE_TRY_COMPILE_CONFIGURATION in a local variable
    so we can re-use it.

diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx
index b639c15..bf89dcb 100644
--- a/Source/cmCoreTryCompile.cxx
+++ b/Source/cmCoreTryCompile.cxx
@@ -294,6 +294,9 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv,
         }
       }
 
+    std::string const tcConfig =
+      this->Makefile->GetSafeDefinition("CMAKE_TRY_COMPILE_CONFIGURATION");
+
     // we need to create a directory and CMakeLists file etc...
     // first create the directories
     sourceDirectory = this->BinaryDirectory.c_str();
@@ -406,8 +409,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv,
       std::string fname = "/" + std::string(targetName) + "Targets.cmake";
       cmExportTryCompileFileGenerator tcfg(gg, targets, this->Makefile);
       tcfg.SetExportFile((this->BinaryDirectory + fname).c_str());
-      tcfg.SetConfig(this->Makefile->GetSafeDefinition(
-                                          "CMAKE_TRY_COMPILE_CONFIGURATION"));
+      tcfg.SetConfig(tcConfig);
 
       if(!tcfg.GenerateImportFile())
         {

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

Summary of changes:
 Help/release/dev/try_compile-config-flags.rst |    7 +++++++
 Source/cmCoreTryCompile.cxx                   |   13 +++++++++++--
 Tests/RunCMake/try_compile/CompileFlags.cmake |   17 +++++++++++++++++
 Tests/RunCMake/try_compile/RunCMakeTest.cmake |    1 +
 Tests/RunCMake/try_compile/src.c              |    3 +++
 5 files changed, 39 insertions(+), 2 deletions(-)
 create mode 100644 Help/release/dev/try_compile-config-flags.rst
 create mode 100644 Tests/RunCMake/try_compile/CompileFlags.cmake


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list