[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