[Cmake-commits] CMake branch, next, updated. v2.8.8-3083-g18ec852
Peter Kuemmel
syntheticpp at gmx.net
Fri Jun 8 17:10:38 EDT 2012
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 18ec852f3529d270568135eb788d70f91c562748 (commit)
via 941afa571c9f45c52bb935bad1c3b83fe415372e (commit)
from eb12de5d79d5a1dce918d736f935359babfc18e1 (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 -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=18ec852f3529d270568135eb788d70f91c562748
commit 18ec852f3529d270568135eb788d70f91c562748
Merge: eb12de5 941afa5
Author: Peter Kuemmel <syntheticpp at gmx.net>
AuthorDate: Fri Jun 8 17:10:08 2012 -0400
Commit: CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Fri Jun 8 17:10:08 2012 -0400
Merge topic 'ninja-cldeps' into next
941afa5 Ninja: allow spaces in source path
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=941afa571c9f45c52bb935bad1c3b83fe415372e
commit 941afa571c9f45c52bb935bad1c3b83fe415372e
Author: Peter Kuemmel <syntheticpp at gmx.net>
AuthorDate: Fri Jun 8 22:01:57 2012 +0200
Commit: Peter Kuemmel <syntheticpp at gmx.net>
CommitDate: Fri Jun 8 22:59:18 2012 +0200
Ninja: allow spaces in source path
And make /showIncude prefix visible for all build rules
diff --git a/Modules/CMakeCCompiler.cmake.in b/Modules/CMakeCCompiler.cmake.in
index b14cf34..7a17e18 100644
--- a/Modules/CMakeCCompiler.cmake.in
+++ b/Modules/CMakeCCompiler.cmake.in
@@ -48,3 +48,8 @@ SET(CMAKE_C_HAS_ISYSROOT "@CMAKE_C_HAS_ISYSROOT@")
SET(CMAKE_C_IMPLICIT_LINK_LIBRARIES "@CMAKE_C_IMPLICIT_LINK_LIBRARIES@")
SET(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "@CMAKE_C_IMPLICIT_LINK_DIRECTORIES@")
+
+IF(MSVC_CXX_ARCHITECTURE_ID)
+ SET(CMAKE_CMCLDEPS_EXECUTABLE "@CMAKE_CMCLDEPS_EXECUTABLE@")
+ SET(CMAKE_CL_SHOWINCLUDE_PREFIX "@CMAKE_CL_SHOWINCLUDE_PREFIX@")
+ENDIF()
diff --git a/Modules/CMakeCXXCompiler.cmake.in b/Modules/CMakeCXXCompiler.cmake.in
index bc3bc2e..49a54d0 100644
--- a/Modules/CMakeCXXCompiler.cmake.in
+++ b/Modules/CMakeCXXCompiler.cmake.in
@@ -49,3 +49,8 @@ SET(CMAKE_CXX_HAS_ISYSROOT "@CMAKE_CXX_HAS_ISYSROOT@")
SET(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "@CMAKE_CXX_IMPLICIT_LINK_LIBRARIES@")
SET(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "@CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES@")
+
+IF(MSVC_CXX_ARCHITECTURE_ID)
+ SET(CMAKE_CMCLDEPS_EXECUTABLE "@CMAKE_CMCLDEPS_EXECUTABLE@")
+ SET(CMAKE_CL_SHOWINCLUDE_PREFIX "@CMAKE_CL_SHOWINCLUDE_PREFIX@")
+ENDIF()
diff --git a/Modules/CMakeClDeps.cmake b/Modules/CMakeClDeps.cmake
new file mode 100644
index 0000000..435a6c5
--- /dev/null
+++ b/Modules/CMakeClDeps.cmake
@@ -0,0 +1,14 @@
+IF(MSVC_C_ARCHITECTURE_ID AND CMAKE_GENERATOR MATCHES "Ninja" AND CMAKE_C_COMPILER)
+ FIND_PROGRAM(CMAKE_CMCLDEPS_EXECUTABLE NAMES cmcldeps.exe)
+ SET(showdir ${CMAKE_BINARY_DIR}/CMakeFiles/ShowIncludes)
+ FILE(WRITE ${showdir}/foo.h "\n")
+ FILE(WRITE ${showdir}/main.c "#include \"foo.h\" \nint main(){}\n")
+ EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} /nologo /showIncludes ${showdir}/main.c
+ WORKING_DIRECTORY ${showdir} OUTPUT_VARIABLE showOut)
+ STRING(REPLACE main.c "" showOut1 ${showOut})
+ STRING(REPLACE "/" "\\" header1 ${showdir}/foo.h)
+ STRING(TOLOWER ${header1} header2)
+ STRING(REPLACE ${header2} "" showOut2 ${showOut1})
+ STRING(REPLACE "\n" "" showOut3 ${showOut2})
+ SET(CMAKE_CL_SHOWINCLUDE_PREFIX ${showOut3} CACHE STRING "cl.exe's /showInclides prefix" FORCE)
+ENDIF()
diff --git a/Modules/CMakeDetermineCCompiler.cmake b/Modules/CMakeDetermineCCompiler.cmake
index e2e268f..53f558e 100644
--- a/Modules/CMakeDetermineCCompiler.cmake
+++ b/Modules/CMakeDetermineCCompiler.cmake
@@ -165,9 +165,7 @@ ENDIF (CMAKE_CROSSCOMPILING
AND "${CMAKE_C_COMPILER_ID}" MATCHES "GNU"
AND NOT _CMAKE_TOOLCHAIN_PREFIX)
-
-
-
+INCLUDE(${CMAKE_ROOT}/Modules/CMakeClDeps.cmake)
INCLUDE(CMakeFindBinUtils)
IF(MSVC_C_ARCHITECTURE_ID)
SET(SET_MSVC_C_ARCHITECTURE_ID
diff --git a/Modules/CMakeDetermineCXXCompiler.cmake b/Modules/CMakeDetermineCXXCompiler.cmake
index 8298369..7f8f3ec 100644
--- a/Modules/CMakeDetermineCXXCompiler.cmake
+++ b/Modules/CMakeDetermineCXXCompiler.cmake
@@ -173,6 +173,7 @@ ENDIF (CMAKE_CROSSCOMPILING
AND "${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU"
AND NOT _CMAKE_TOOLCHAIN_PREFIX)
+INCLUDE(${CMAKE_ROOT}/Modules/CMakeClDeps.cmake)
INCLUDE(CMakeFindBinUtils)
IF(MSVC_CXX_ARCHITECTURE_ID)
SET(SET_MSVC_CXX_ARCHITECTURE_ID
diff --git a/Modules/Platform/Windows-cl.cmake b/Modules/Platform/Windows-cl.cmake
index eed4e52..be6abb6 100644
--- a/Modules/Platform/Windows-cl.cmake
+++ b/Modules/Platform/Windows-cl.cmake
@@ -251,21 +251,3 @@ IF(NOT EXISTS "${CMAKE_PLATFORM_ROOT_BIN}/CMakeCXXPlatform.cmake")
CONFIGURE_FILE(${CMAKE_ROOT}/Modules/Platform/Windows-cl.cmake.in
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeCXXPlatform.cmake IMMEDIATE)
ENDIF(NOT EXISTS "${CMAKE_PLATFORM_ROOT_BIN}/CMakeCXXPlatform.cmake")
-
-
-IF(CMAKE_GENERATOR MATCHES "Ninja" AND CMAKE_C_COMPILER)
- # TODO try_compile doesn't need cmcldeps, find a better solution
- if(NOT EXISTS ${CMAKE_TRY_COMPILE_SOURCE_DIR}/../ShowIncludes)
- SET(showdir ${CMAKE_BINARY_DIR}/CMakeFiles/ShowIncludes)
- FILE(WRITE ${showdir}/foo.h "\n")
- FILE(WRITE ${showdir}/main.c "#include \"foo.h\" \nint main(){}\n")
- EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} /nologo /showIncludes ${showdir}/main.c
- WORKING_DIRECTORY ${showdir} OUTPUT_VARIABLE showOut)
- STRING(REPLACE main.c "" showOut1 ${showOut})
- STRING(REPLACE "/" "\\" header1 ${showdir}/foo.h)
- STRING(TOLOWER ${header1} header2)
- STRING(REPLACE ${header2} "" showOut2 ${showOut1})
- STRING(REPLACE "\n" "" showOut3 ${showOut2})
- SET(CMAKE_CL_SHOWINCLUDE_PREFIX ${showOut3})
- ENDIF()
-ENDIF()
diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx
index 9a2597b..648855c 100644
--- a/Source/cmGlobalNinjaGenerator.cxx
+++ b/Source/cmGlobalNinjaGenerator.cxx
@@ -458,8 +458,7 @@ void cmGlobalNinjaGenerator
else if(*l == "RC")
{
// check if mingw is used
- const char* cc = mf->GetDefinition("CMAKE_C_COMPILER");
- if(cc && std::string(cc).find("gcc.exe") != std::string::npos)
+ if(mf->IsOn("CMAKE_COMPILER_IS_MINGW"))
{
UsingMinGW = true;
std::string rc = cmSystemTools::FindProgram("windres");
@@ -467,17 +466,6 @@ void cmGlobalNinjaGenerator
rc = "windres.exe";;
mf->AddDefinition("CMAKE_RC_COMPILER", rc.c_str());
}
- else if (cc && std::string(cc).find("cl.exe") != std::string::npos)
- {
- const char* cmake = mf->GetDefinition("CMAKE_COMMAND");
- std::string bindir = cmake ? cmake : "";
- cmSystemTools::ReplaceString(bindir, "cmake.exe", "");
- std::vector<std::string> locations;
- locations.push_back(bindir);
- std::string cldeps = cmSystemTools::FindProgram("cmcldeps", locations);
- if(!cldeps.empty())
- mf->AddDefinition("CMAKE_CMCLDEPS_EXECUTABLE", cldeps.c_str());
- }
}
this->cmGlobalGenerator::EnableLanguage(language, mf, optional);
this->ResolveLanguageCompiler(*l, mf, optional);
diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx
index 6518727..75b3929 100644
--- a/Source/cmNinjaTargetGenerator.cxx
+++ b/Source/cmNinjaTargetGenerator.cxx
@@ -330,20 +330,14 @@ cmNinjaTargetGenerator
vars.Defines = "$DEFINES";
vars.TargetPDB = "$TARGET_PDB";
- const char* cldeps = 0;
- const char* showIncludePrefix = 0;
- const char* cc = this->GetMakefile()->GetDefinition("CMAKE_C_COMPILER");
- if(cc && std::string(cc).find("cl.exe") != std::string::npos)
- {
- cldeps = this->GetMakefile()->GetDefinition("CMAKE_CMCLDEPS_EXECUTABLE");
- showIncludePrefix = this->GetMakefile()->GetDefinition("CMAKE_CL_SHOWINCLUDE_PREFIX");
- }
+ cmMakefile* mf = this->GetMakefile();
+ const char* clDepsBinary = mf->GetDefinition("CMAKE_CMCLDEPS_EXECUTABLE");
+ const char* clShowPrefix = mf->GetDefinition("CMAKE_CL_SHOWINCLUDE_PREFIX");
std::string depfile;
std::string depfileFlagsName = "CMAKE_DEPFILE_FLAGS_" + language;
- const char *depfileFlags =
- this->GetMakefile()->GetDefinition(depfileFlagsName.c_str());
- if (depfileFlags || (cldeps && showIncludePrefix)) {
+ const char *depfileFlags = mf->GetDefinition(depfileFlagsName.c_str());
+ if (depfileFlags || (clDepsBinary && clShowPrefix)) {
std::string depfileFlagsStr = depfileFlags ? depfileFlags : "";
depfile = "$out.d";
cmSystemTools::ReplaceString(depfileFlagsStr, "<DEPFILE>",
@@ -351,7 +345,7 @@ cmNinjaTargetGenerator
cmSystemTools::ReplaceString(depfileFlagsStr, "<OBJECT>",
"$out");
cmSystemTools::ReplaceString(depfileFlagsStr, "<CMAKE_C_COMPILER>",
- this->GetMakefile()->GetDefinition("CMAKE_C_COMPILER"));
+ mf->GetDefinition("CMAKE_C_COMPILER"));
flags += " " + depfileFlagsStr;
}
vars.Flags = flags.c_str();
@@ -361,8 +355,7 @@ cmNinjaTargetGenerator
std::string compileCmdVar = "CMAKE_";
compileCmdVar += language;
compileCmdVar += "_COMPILE_OBJECT";
- std::string compileCmd =
- this->GetMakefile()->GetRequiredDefinition(compileCmdVar.c_str());
+ std::string compileCmd = mf->GetRequiredDefinition(compileCmdVar.c_str());
std::vector<std::string> compileCmds;
cmSystemTools::ExpandListArgument(compileCmd, compileCmds);
@@ -373,10 +366,10 @@ cmNinjaTargetGenerator
std::string cmdLine =
this->GetLocalGenerator()->BuildCommandLine(compileCmds);
- if(cldeps && showIncludePrefix)
+ if(clDepsBinary && clShowPrefix)
{
- std::string prefix = showIncludePrefix;
- cmdLine = std::string(cldeps) + " $in $out.d $out " + "\"" + prefix + "\" " + cmdLine;
+ std::string prefix = clShowPrefix;
+ cmdLine = "\"" + std::string(clDepsBinary) + "\" $in $out.d $out \"" + prefix + "\" " + cmdLine;
}
// Write the rule for compiling file of the given language.
-----------------------------------------------------------------------
Summary of changes:
Modules/CMakeCCompiler.cmake.in | 5 +++++
Modules/CMakeCXXCompiler.cmake.in | 5 +++++
Modules/CMakeClDeps.cmake | 14 ++++++++++++++
Modules/CMakeDetermineCCompiler.cmake | 4 +---
Modules/CMakeDetermineCXXCompiler.cmake | 1 +
Modules/Platform/Windows-cl.cmake | 18 ------------------
Source/cmGlobalNinjaGenerator.cxx | 14 +-------------
Source/cmNinjaTargetGenerator.cxx | 27 ++++++++++-----------------
8 files changed, 37 insertions(+), 51 deletions(-)
create mode 100644 Modules/CMakeClDeps.cmake
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list