[Cmake-commits] CMake branch, master, updated. v3.11.1-557-gfe00828

Kitware Robot kwrobot at kitware.com
Fri Apr 20 07:55:08 EDT 2018


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  fe0082875aeecead23b2351629abca4990dfba43 (commit)
       via  293bb0f47555e5795f46c2415300a050c187ebda (commit)
       via  3fa423bbc183d4ecce8ed5b6586b6d47338154b2 (commit)
       via  6ec3e880e75761edcbb1e84fa4a596e69ac5a94f (commit)
       via  5650ba1d6af4256b8c4ff6428b57a280e7bf552e (commit)
       via  7855e4d6b77e6c05ced4a0f2f9e64dc8da479c64 (commit)
      from  f6da39260931e1d4fb3f92d417c3fbbbe4a6bdc1 (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=fe0082875aeecead23b2351629abca4990dfba43
commit fe0082875aeecead23b2351629abca4990dfba43
Merge: 293bb0f 6ec3e88
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri Apr 20 11:51:56 2018 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Fri Apr 20 07:52:02 2018 -0400

    Merge topic 'vs-sdk-dirs'
    
    6ec3e880e7 VS: Add variables to set SDK directories in vcxproj files
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Merge-request: !1965


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=293bb0f47555e5795f46c2415300a050c187ebda
commit 293bb0f47555e5795f46c2415300a050c187ebda
Merge: 3fa423b 5650ba1
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri Apr 20 11:49:53 2018 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Fri Apr 20 07:49:57 2018 -0400

    Merge topic 'ninja-simplify-paths'
    
    5650ba1d6a Ninja: Drop unnecessary ident encoding logic for paths
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Merge-request: !1983


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3fa423bbc183d4ecce8ed5b6586b6d47338154b2
commit 3fa423bbc183d4ecce8ed5b6586b6d47338154b2
Merge: f6da392 7855e4d
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri Apr 20 11:48:02 2018 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Fri Apr 20 07:48:29 2018 -0400

    Merge topic 'FindPython-debian-cross-comp'
    
    7855e4d6b7 FindPython: Add cross-compilation support for Debian-based systems.
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Reviewed-by: Marc Chevrier <marc.chevrier at sap.com>
    Merge-request: !1961


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6ec3e880e75761edcbb1e84fa4a596e69ac5a94f
commit 6ec3e880e75761edcbb1e84fa4a596e69ac5a94f
Author:     Bastien Schatt <bastien.schatt at magestik.fr>
AuthorDate: Sun Apr 15 22:14:52 2018 +0200
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Apr 19 09:39:34 2018 -0400

    VS: Add variables to set SDK directories in vcxproj files
    
    Create `CMAKE_VS_SDK_*_DIRECTORIES` variables to tell the VS generator
    how to populate fields in `.vcxproj` files that specify SDK directories.
    
    Fixes: #17908

diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst
index c1b0316..44271c1 100644
--- a/Help/manual/cmake-variables.7.rst
+++ b/Help/manual/cmake-variables.7.rst
@@ -369,6 +369,13 @@ Variables that Control the Build
    /variable/CMAKE_VISIBILITY_INLINES_HIDDEN
    /variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD
    /variable/CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD
+   /variable/CMAKE_VS_SDK_EXCLUDE_DIRECTORIES
+   /variable/CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES
+   /variable/CMAKE_VS_SDK_INCLUDE_DIRECTORIES
+   /variable/CMAKE_VS_SDK_LIBRARY_DIRECTORIES
+   /variable/CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES
+   /variable/CMAKE_VS_SDK_REFERENCE_DIRECTORIES
+   /variable/CMAKE_VS_SDK_SOURCE_DIRECTORIES
    /variable/CMAKE_WIN32_EXECUTABLE
    /variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS
    /variable/CMAKE_XCODE_ATTRIBUTE_an-attribute
diff --git a/Help/release/dev/vs-sdk-dirs.rst b/Help/release/dev/vs-sdk-dirs.rst
new file mode 100644
index 0000000..3377775
--- /dev/null
+++ b/Help/release/dev/vs-sdk-dirs.rst
@@ -0,0 +1,15 @@
+vs-sdk-dirs
+-----------
+
+* ``CMAKE_VS_SDK_*_DIRECTORIES`` variables were defined to tell
+  :ref:`Visual Studio Generators` for VS 2010 and above how to populate
+  fields in ``.vcxproj`` files that specify SDK directories.  The
+  variables are:
+
+  - :variable:`CMAKE_VS_SDK_EXCLUDE_DIRECTORIES`
+  - :variable:`CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES`
+  - :variable:`CMAKE_VS_SDK_INCLUDE_DIRECTORIES`
+  - :variable:`CMAKE_VS_SDK_LIBRARY_DIRECTORIES`
+  - :variable:`CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES`
+  - :variable:`CMAKE_VS_SDK_REFERENCE_DIRECTORIES`
+  - :variable:`CMAKE_VS_SDK_SOURCE_DIRECTORIES`
diff --git a/Help/variable/CMAKE_VS_SDK_EXCLUDE_DIRECTORIES.rst b/Help/variable/CMAKE_VS_SDK_EXCLUDE_DIRECTORIES.rst
new file mode 100644
index 0000000..36c4dcc
--- /dev/null
+++ b/Help/variable/CMAKE_VS_SDK_EXCLUDE_DIRECTORIES.rst
@@ -0,0 +1,4 @@
+CMAKE_VS_SDK_EXCLUDE_DIRECTORIES
+--------------------------------
+
+This variable allows to override Visual Studio default Exclude Directories.
diff --git a/Help/variable/CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES.rst b/Help/variable/CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES.rst
new file mode 100644
index 0000000..3ec755b
--- /dev/null
+++ b/Help/variable/CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES.rst
@@ -0,0 +1,4 @@
+CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES
+-----------------------------------
+
+This variable allows to override Visual Studio default Executable Directories.
diff --git a/Help/variable/CMAKE_VS_SDK_INCLUDE_DIRECTORIES.rst b/Help/variable/CMAKE_VS_SDK_INCLUDE_DIRECTORIES.rst
new file mode 100644
index 0000000..da10bde
--- /dev/null
+++ b/Help/variable/CMAKE_VS_SDK_INCLUDE_DIRECTORIES.rst
@@ -0,0 +1,4 @@
+CMAKE_VS_SDK_INCLUDE_DIRECTORIES
+--------------------------------
+
+This variable allows to override Visual Studio default Include Directories.
diff --git a/Help/variable/CMAKE_VS_SDK_LIBRARY_DIRECTORIES.rst b/Help/variable/CMAKE_VS_SDK_LIBRARY_DIRECTORIES.rst
new file mode 100644
index 0000000..b33754a
--- /dev/null
+++ b/Help/variable/CMAKE_VS_SDK_LIBRARY_DIRECTORIES.rst
@@ -0,0 +1,4 @@
+CMAKE_VS_SDK_LIBRARY_DIRECTORIES
+--------------------------------
+
+This variable allows to override Visual Studio default Library Directories.
diff --git a/Help/variable/CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES.rst b/Help/variable/CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES.rst
new file mode 100644
index 0000000..b022215
--- /dev/null
+++ b/Help/variable/CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES.rst
@@ -0,0 +1,5 @@
+CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES
+--------------------------------------
+
+This variable allows to override Visual Studio default Library WinRT
+Directories.
diff --git a/Help/variable/CMAKE_VS_SDK_REFERENCE_DIRECTORIES.rst b/Help/variable/CMAKE_VS_SDK_REFERENCE_DIRECTORIES.rst
new file mode 100644
index 0000000..c03f0ae
--- /dev/null
+++ b/Help/variable/CMAKE_VS_SDK_REFERENCE_DIRECTORIES.rst
@@ -0,0 +1,4 @@
+CMAKE_VS_SDK_REFERENCE_DIRECTORIES
+----------------------------------
+
+This variable allows to override Visual Studio default Reference Directories.
diff --git a/Help/variable/CMAKE_VS_SDK_SOURCE_DIRECTORIES.rst b/Help/variable/CMAKE_VS_SDK_SOURCE_DIRECTORIES.rst
new file mode 100644
index 0000000..0c73f06
--- /dev/null
+++ b/Help/variable/CMAKE_VS_SDK_SOURCE_DIRECTORIES.rst
@@ -0,0 +1,4 @@
+CMAKE_VS_SDK_SOURCE_DIRECTORIES
+-------------------------------
+
+This variable allows to override Visual Studio default Source Directories.
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx
index 13af167..0d32b3a 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -2235,6 +2235,55 @@ void cmVisualStudio10TargetGenerator::WritePathAndIncrementalLinkOptions()
       *this->BuildFileStream << cmVS10EscapeXML(intermediateDir)
                              << "</IntDir>\n";
 
+      if (const char* sdkExecutableDirectories = this->Makefile->GetDefinition(
+            "CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES")) {
+        this->WritePlatformConfigTag("ExecutablePath", config, 2);
+        *this->BuildFileStream << cmVS10EscapeXML(sdkExecutableDirectories)
+                               << "</ExecutablePath>\n";
+      }
+
+      if (const char* sdkIncludeDirectories = this->Makefile->GetDefinition(
+            "CMAKE_VS_SDK_INCLUDE_DIRECTORIES")) {
+        this->WritePlatformConfigTag("IncludePath", config, 2);
+        *this->BuildFileStream << cmVS10EscapeXML(sdkIncludeDirectories)
+                               << "</IncludePath>\n";
+      }
+
+      if (const char* sdkReferenceDirectories = this->Makefile->GetDefinition(
+            "CMAKE_VS_SDK_REFERENCE_DIRECTORIES")) {
+        this->WritePlatformConfigTag("ReferencePath", config, 2);
+        *this->BuildFileStream << cmVS10EscapeXML(sdkReferenceDirectories)
+                               << "</ReferencePath>\n";
+      }
+
+      if (const char* sdkLibraryDirectories = this->Makefile->GetDefinition(
+            "CMAKE_VS_SDK_LIBRARY_DIRECTORIES")) {
+        this->WritePlatformConfigTag("LibraryPath", config, 2);
+        *this->BuildFileStream << cmVS10EscapeXML(sdkLibraryDirectories)
+                               << "</LibraryPath>\n";
+      }
+
+      if (const char* sdkLibraryWDirectories = this->Makefile->GetDefinition(
+            "CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES")) {
+        this->WritePlatformConfigTag("LibraryWPath", config, 2);
+        *this->BuildFileStream << cmVS10EscapeXML(sdkLibraryWDirectories)
+                               << "</LibraryWPath>\n";
+      }
+
+      if (const char* sdkSourceDirectories =
+            this->Makefile->GetDefinition("CMAKE_VS_SDK_SOURCE_DIRECTORIES")) {
+        this->WritePlatformConfigTag("SourcePath", config, 2);
+        *this->BuildFileStream << cmVS10EscapeXML(sdkSourceDirectories)
+                               << "</SourcePath>\n";
+      }
+
+      if (const char* sdkExcludeDirectories = this->Makefile->GetDefinition(
+            "CMAKE_VS_SDK_EXCLUDE_DIRECTORIES")) {
+        this->WritePlatformConfigTag("ExcludePath", config, 2);
+        *this->BuildFileStream << cmVS10EscapeXML(sdkExcludeDirectories)
+                               << "</ExcludePath>\n";
+      }
+
       if (const char* workingDir = this->GeneratorTarget->GetProperty(
             "VS_DEBUGGER_WORKING_DIRECTORY")) {
         this->WritePlatformConfigTag("LocalDebuggerWorkingDirectory", config,
diff --git a/Tests/RunCMake/VS10Project/RunCMakeTest.cmake b/Tests/RunCMake/VS10Project/RunCMakeTest.cmake
index afe9d6d..359cdfb 100644
--- a/Tests/RunCMake/VS10Project/RunCMakeTest.cmake
+++ b/Tests/RunCMake/VS10Project/RunCMakeTest.cmake
@@ -7,3 +7,4 @@ run_cmake(VsDebuggerCommand)
 run_cmake(VsCSharpCustomTags)
 run_cmake(VsCSharpReferenceProps)
 run_cmake(VsCSharpWithoutSources)
+run_cmake(VsSdkDirectories)
diff --git a/Tests/RunCMake/VS10Project/VsSdkDirectories-check.cmake b/Tests/RunCMake/VS10Project/VsSdkDirectories-check.cmake
new file mode 100644
index 0000000..c21afb6
--- /dev/null
+++ b/Tests/RunCMake/VS10Project/VsSdkDirectories-check.cmake
@@ -0,0 +1,88 @@
+set(vcProjectFile "${RunCMake_TEST_BINARY_DIR}/foo.vcxproj")
+if(NOT EXISTS "${vcProjectFile}")
+  set(RunCMake_TEST_FAILED "Project file ${vcProjectFile} does not exist.")
+  return()
+endif()
+
+set(ExecutablePathSet FALSE)
+set(IncludePathSet FALSE)
+set(ReferencePathSet FALSE)
+set(LibraryPathSet FALSE)
+set(LibraryWPathSet FALSE)
+set(SourcePathSet FALSE)
+set(ExcludePathSet FALSE)
+
+file(STRINGS "${vcProjectFile}" lines)
+foreach(line IN LISTS lines)
+  if(line MATCHES "^ *<ExecutablePath[^>]*>([^<>]+)</ExecutablePath>$")
+    if("${CMAKE_MATCH_1}" STREQUAL "$(VC_ExecutablePath_x86);C:\\Program Files\\Custom-SDK\\;")
+        message(STATUS "foo.vcxproj has executable path set")
+        set(ExecutablePathSet TRUE)
+    endif()
+  elseif(line MATCHES "^ *<IncludePath[^>]*>([^<>]+)</IncludePath>$")
+    if("${CMAKE_MATCH_1}" STREQUAL "$(VC_IncludePath);C:\\Program Files\\Custom-SDK\\;")
+        message(STATUS "foo.vcxproj has include path set")
+        set(IncludePathSet TRUE)
+    endif()
+  elseif(line MATCHES "^ *<ReferencePath[^>]*>([^<>]+)</ReferencePath>$")
+    if("${CMAKE_MATCH_1}" STREQUAL "$(VC_ReferencesPath_x86);C:\\Program Files\\Custom-SDK\\;")
+        message(STATUS "foo.vcxproj has reference path set")
+        set(ReferencePathSet TRUE)
+    endif()
+  elseif(line MATCHES "^ *<LibraryPath[^>]*>([^<>]+)</LibraryPath>$")
+    if("${CMAKE_MATCH_1}" STREQUAL "$(VC_LibraryPath_x86);C:\\Program Files\\Custom-SDK\\;")
+        message(STATUS "foo.vcxproj has library path set")
+        set(LibraryPathSet TRUE)
+    endif()
+  elseif(line MATCHES "^ *<LibraryWPath[^>]*>([^<>]+)</LibraryWPath>$")
+    if("${CMAKE_MATCH_1}" STREQUAL "$(WindowsSDK_MetadataPath);C:\\Program Files\\Custom-SDK\\;")
+        message(STATUS "foo.vcxproj has library WinRT path set")
+        set(LibraryWPathSet TRUE)
+    endif()
+  elseif(line MATCHES "^ *<SourcePath[^>]*>([^<>]+)</SourcePath>$")
+    if("${CMAKE_MATCH_1}" STREQUAL "$(VC_SourcePath);C:\\Program Files\\Custom-SDK\\;")
+        message(STATUS "foo.vcxproj has source path set")
+        set(SourcePathSet TRUE)
+    endif()
+  elseif(line MATCHES "^ *<ExcludePath[^>]*>([^<>]+)</ExcludePath>$")
+    if("${CMAKE_MATCH_1}" STREQUAL "$(VC_IncludePath);C:\\Program Files\\Custom-SDK\\;")
+        message(STATUS "foo.vcxproj has exclude path set")
+        set(ExcludePathSet TRUE)
+    endif()
+  endif()
+endforeach()
+
+if(NOT ExecutablePathSet)
+  set(RunCMake_TEST_FAILED "ExecutablePath not found or not set correctly.")
+  return()
+endif()
+
+if(NOT IncludePathSet)
+  set(RunCMake_TEST_FAILED "IncludePath not found or not set correctly.")
+  return()
+endif()
+
+if(NOT ReferencePathSet)
+  set(RunCMake_TEST_FAILED "ReferencePath not found or not set correctly.")
+  return()
+endif()
+
+if(NOT LibraryPathSet)
+  set(RunCMake_TEST_FAILED "LibraryPath not found or not set correctly.")
+  return()
+endif()
+
+if(NOT LibraryWPathSet)
+  set(RunCMake_TEST_FAILED "LibraryWPath not found or not set correctly.")
+  return()
+endif()
+
+if(NOT SourcePathSet)
+  set(RunCMake_TEST_FAILED "SourcePath not found or not set correctly.")
+  return()
+endif()
+
+if(NOT ExcludePathSet)
+  set(RunCMake_TEST_FAILED "ExcludePath not found or not set correctly.")
+  return()
+endif()
diff --git a/Tests/RunCMake/VS10Project/VsSdkDirectories.cmake b/Tests/RunCMake/VS10Project/VsSdkDirectories.cmake
new file mode 100644
index 0000000..c8f2a5a
--- /dev/null
+++ b/Tests/RunCMake/VS10Project/VsSdkDirectories.cmake
@@ -0,0 +1,11 @@
+enable_language(CXX)
+
+set(CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES "$(VC_ExecutablePath_x86);C:\\Program Files\\Custom-SDK\\;")
+set(CMAKE_VS_SDK_INCLUDE_DIRECTORIES "$(VC_IncludePath);C:\\Program Files\\Custom-SDK\\;")
+set(CMAKE_VS_SDK_REFERENCE_DIRECTORIES "$(VC_ReferencesPath_x86);C:\\Program Files\\Custom-SDK\\;")
+set(CMAKE_VS_SDK_LIBRARY_DIRECTORIES "$(VC_LibraryPath_x86);C:\\Program Files\\Custom-SDK\\;")
+set(CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES "$(WindowsSDK_MetadataPath);C:\\Program Files\\Custom-SDK\\;")
+set(CMAKE_VS_SDK_SOURCE_DIRECTORIES "$(VC_SourcePath);C:\\Program Files\\Custom-SDK\\;")
+set(CMAKE_VS_SDK_EXCLUDE_DIRECTORIES "$(VC_IncludePath);C:\\Program Files\\Custom-SDK\\;")
+
+add_library(foo foo.cpp)

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5650ba1d6af4256b8c4ff6428b57a280e7bf552e
commit 5650ba1d6af4256b8c4ff6428b57a280e7bf552e
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Apr 18 17:59:23 2018 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Apr 19 08:17:39 2018 -0400

    Ninja: Drop unnecessary ident encoding logic for paths
    
    The only uses of `EncodeIdent` are surrounding `EncodePath`, but the
    special ident encoding is not needed for path contexts in a ninja build
    manifest.

diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx
index d562df7..599e27c 100644
--- a/Source/cmGlobalNinjaGenerator.cxx
+++ b/Source/cmGlobalNinjaGenerator.cxx
@@ -101,31 +101,6 @@ std::string cmGlobalNinjaGenerator::EncodeRuleName(std::string const& name)
   return encoded;
 }
 
-static bool IsIdentChar(char c)
-{
-  return ('a' <= c && c <= 'z') ||
-    ('+' <= c && c <= '9') || // +,-./ and numbers
-    ('A' <= c && c <= 'Z') || (c == '_') || (c == '$') || (c == '\\') ||
-    (c == ' ') || (c == ':');
-}
-
-std::string cmGlobalNinjaGenerator::EncodeIdent(const std::string& ident,
-                                                std::ostream& vars)
-{
-  if (std::find_if(ident.begin(), ident.end(),
-                   [](char c) { return !IsIdentChar(c); }) != ident.end()) {
-    static unsigned VarNum = 0;
-    std::ostringstream names;
-    names << "ident" << VarNum++;
-    vars << names.str() << " = " << ident << "\n";
-    return "$" + names.str();
-  }
-  std::string result = ident;
-  cmSystemTools::ReplaceString(result, " ", "$ ");
-  cmSystemTools::ReplaceString(result, ":", "$:");
-  return result;
-}
-
 std::string cmGlobalNinjaGenerator::EncodeLiteral(const std::string& lit)
 {
   std::string result = lit;
@@ -143,7 +118,10 @@ std::string cmGlobalNinjaGenerator::EncodePath(const std::string& path)
   else
     std::replace(result.begin(), result.end(), '/', '\\');
 #endif
-  return EncodeLiteral(result);
+  result = EncodeLiteral(result);
+  cmSystemTools::ReplaceString(result, " ", "$ ");
+  cmSystemTools::ReplaceString(result, ":", "$:");
+  return result;
 }
 
 void cmGlobalNinjaGenerator::WriteBuild(
@@ -177,14 +155,14 @@ void cmGlobalNinjaGenerator::WriteBuild(
 
   // Write explicit dependencies.
   for (std::string const& explicitDep : explicitDeps) {
-    arguments += " " + EncodeIdent(EncodePath(explicitDep), os);
+    arguments += " " + EncodePath(explicitDep);
   }
 
   // Write implicit dependencies.
   if (!implicitDeps.empty()) {
     arguments += " |";
     for (std::string const& implicitDep : implicitDeps) {
-      arguments += " " + EncodeIdent(EncodePath(implicitDep), os);
+      arguments += " " + EncodePath(implicitDep);
     }
   }
 
@@ -192,7 +170,7 @@ void cmGlobalNinjaGenerator::WriteBuild(
   if (!orderOnlyDeps.empty()) {
     arguments += " ||";
     for (std::string const& orderOnlyDep : orderOnlyDeps) {
-      arguments += " " + EncodeIdent(EncodePath(orderOnlyDep), os);
+      arguments += " " + EncodePath(orderOnlyDep);
     }
   }
 
@@ -203,7 +181,7 @@ void cmGlobalNinjaGenerator::WriteBuild(
   // Write outputs files.
   build += "build";
   for (std::string const& output : outputs) {
-    build += " " + EncodeIdent(EncodePath(output), os);
+    build += " " + EncodePath(output);
     if (this->ComputingUnknownDependencies) {
       this->CombinedBuildOutputs.insert(output);
     }
@@ -211,7 +189,7 @@ void cmGlobalNinjaGenerator::WriteBuild(
   if (!implicitOuts.empty()) {
     build += " |";
     for (std::string const& implicitOut : implicitOuts) {
-      build += " " + EncodeIdent(EncodePath(implicitOut), os);
+      build += " " + EncodePath(implicitOut);
     }
   }
   build += ":";
diff --git a/Source/cmGlobalNinjaGenerator.h b/Source/cmGlobalNinjaGenerator.h
index a779919..bfff3d9 100644
--- a/Source/cmGlobalNinjaGenerator.h
+++ b/Source/cmGlobalNinjaGenerator.h
@@ -73,7 +73,6 @@ public:
   static void WriteDivider(std::ostream& os);
 
   static std::string EncodeRuleName(std::string const& name);
-  static std::string EncodeIdent(const std::string& ident, std::ostream& vars);
   static std::string EncodeLiteral(const std::string& lit);
   std::string EncodePath(const std::string& path);
 
diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx
index c714299..b5ae939 100644
--- a/Source/cmLocalNinjaGenerator.cxx
+++ b/Source/cmLocalNinjaGenerator.cxx
@@ -251,8 +251,7 @@ void cmLocalNinjaGenerator::WriteNinjaFilesInclusion(std::ostream& os)
   cmGlobalNinjaGenerator* ng = this->GetGlobalNinjaGenerator();
   std::string const ninjaRulesFile =
     ng->NinjaOutputPath(cmGlobalNinjaGenerator::NINJA_RULES_FILE);
-  std::string const rulesFilePath =
-    ng->EncodeIdent(ng->EncodePath(ninjaRulesFile), os);
+  std::string const rulesFilePath = ng->EncodePath(ninjaRulesFile);
   cmGlobalNinjaGenerator::WriteInclude(os, rulesFilePath,
                                        "Include rules file.");
   os << "\n";

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7855e4d6b77e6c05ced4a0f2f9e64dc8da479c64
commit 7855e4d6b77e6c05ced4a0f2f9e64dc8da479c64
Author:     Yee Fan <yeefan80 at yahoo.com.sg>
AuthorDate: Wed Apr 18 00:05:27 2018 +0800
Commit:     Yee Fan <yeefan80 at yahoo.com.sg>
CommitDate: Thu Apr 19 02:53:46 2018 +0800

    FindPython: Add cross-compilation support for Debian-based systems.
    
    Debian-based Linux distributions locate their architecture-specific
    pythonX.Y-config tool at /usr/bin/<arch>-python<X.Y>-config.
    
    We first attempt to find and use the architecture-specific
    pythonX.Y-config tool. If the pythonX.Y-config tools are absent, then we
    proceed to find the architecture-specific Python libraries.
    
    Fixes: #17912

diff --git a/Modules/FindPython/Support.cmake b/Modules/FindPython/Support.cmake
index 179b394..67bda7a 100644
--- a/Modules/FindPython/Support.cmake
+++ b/Modules/FindPython/Support.cmake
@@ -436,10 +436,16 @@ if ("Development" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
     string (REPLACE "." "" _${_PYTHON_PREFIX}_VERSION_NO_DOTS ${_${_PYTHON_PREFIX}_VERSION})
 
     # try to use pythonX.Y-config tool
+    set (_${_PYTHON_PREFIX}_CONFIG_NAMES)
+    if (DEFINED CMAKE_LIBRARY_ARCHITECTURE)
+      set (_${_PYTHON_PREFIX}_CONFIG_NAMES "${CMAKE_LIBRARY_ARCHITECTURE}-python${_${_PYTHON_PREFIX}_VERSION}-config")
+    endif()
+    list (APPEND _${_PYTHON_PREFIX}_CONFIG_NAMES "python${_${_PYTHON_PREFIX}_VERSION}-config")
     find_program (_${_PYTHON_PREFIX}_CONFIG
-                  NAMES python${_${_PYTHON_PREFIX}_VERSION}-config
+                  NAMES ${_${_PYTHON_PREFIX}_CONFIG_NAMES}
                   HINTS ${_${_PYTHON_PREFIX}_HINTS}
                   PATH_SUFFIXES bin)
+    unset (_${_PYTHON_PREFIX}_CONFIG_NAMES)
 
     if (NOT _${_PYTHON_PREFIX}_CONFIG)
       continue()
@@ -481,17 +487,17 @@ if ("Development" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
                     PATH_SUFFIXES lib
                     NO_SYSTEM_ENVIRONMENT_PATH
                     NO_CMAKE_SYSTEM_PATH)
-       # retrieve runtime library
-       if (${_PYTHON_PREFIX}_LIBRARY_RELEASE)
-         get_filename_component (_${_PYTHON_PREFIX}_PATH "${${_PYTHON_PREFIX}_LIBRARY_RELEASE}" DIRECTORY)
-         _python_find_runtime_library (${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE
-                                       NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
-                                       NAMES_PER_DIR
-                                       HINTS ${_${_PYTHON_PREFIX}_PATH} ${_${_PYTHON_PREFIX}_HINTS}
-                                       PATH_SUFFIXES bin
-                                       NO_SYSTEM_ENVIRONMENT_PATH
-                                       NO_CMAKE_SYSTEM_PATH)
-       endif()
+      # retrieve runtime library
+      if (${_PYTHON_PREFIX}_LIBRARY_RELEASE)
+        get_filename_component (_${_PYTHON_PREFIX}_PATH "${${_PYTHON_PREFIX}_LIBRARY_RELEASE}" DIRECTORY)
+        _python_find_runtime_library (${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE
+                                      NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
+                                      NAMES_PER_DIR
+                                      HINTS ${_${_PYTHON_PREFIX}_PATH} ${_${_PYTHON_PREFIX}_HINTS}
+                                      PATH_SUFFIXES bin
+                                      NO_SYSTEM_ENVIRONMENT_PATH
+                                      NO_CMAKE_SYSTEM_PATH)
+      endif()
     endif()
 
     # retrieve include directory
@@ -538,7 +544,7 @@ if ("Development" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
                           [HKEY_CURRENT_USER\\SOFTWARE\\Python\\ContinuumAnalytics\\Anaconda${_${_PYTHON_PREFIX}_VERSION_NO_DOTS}-${_${_PYTHON_PREFIX}_ARCH}\\InstallPath]
                           [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_${_PYTHON_PREFIX}_VERSION}\\InstallPath]
                           [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\ContinuumAnalytics\\Anaconda${_${_PYTHON_PREFIX}_VERSION_NO_DOTS}-${_${_PYTHON_PREFIX}_ARCH}\\InstallPath]
-                    PATH_SUFFIXES lib libs
+                    PATH_SUFFIXES lib/${CMAKE_LIBRARY_ARCHITECTURE} lib libs
                                   lib/python${_${_PYTHON_PREFIX}_VERSION}/config-${_${_PYTHON_PREFIX}_VERSION}mu
                                   lib/python${_${_PYTHON_PREFIX}_VERSION}/config-${_${_PYTHON_PREFIX}_VERSION}m
                                   lib/python${_${_PYTHON_PREFIX}_VERSION}/config-${_${_PYTHON_PREFIX}_VERSION}u
@@ -546,7 +552,7 @@ if ("Development" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
                                   lib/python${_${_PYTHON_PREFIX}_VERSION}/config)
       # retrieve runtime library
       if (${_PYTHON_PREFIX}_LIBRARY_RELEASE)
-         get_filename_component (_${_PYTHON_PREFIX}_PATH "${${_PYTHON_PREFIX}_LIBRARY_RELEASE}" DIRECTORY)
+        get_filename_component (_${_PYTHON_PREFIX}_PATH "${${_PYTHON_PREFIX}_LIBRARY_RELEASE}" DIRECTORY)
         _python_find_runtime_library (${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE
                                       NAMES python${_${_PYTHON_PREFIX}_VERSION_NO_DOTS}
                                             python${_${_PYTHON_PREFIX}_VERSION}mu
@@ -585,7 +591,7 @@ if ("Development" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
                         PATH_SUFFIXES lib libs)
         endif()
         if (${_PYTHON_PREFIX}_LIBRARY_DEBUG)
-         get_filename_component (_${_PYTHON_PREFIX}_PATH "${${_PYTHON_PREFIX}_LIBRARY_DEBUG}" DIRECTORY)
+          get_filename_component (_${_PYTHON_PREFIX}_PATH "${${_PYTHON_PREFIX}_LIBRARY_DEBUG}" DIRECTORY)
           _python_find_runtime_library (${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG
                                         NAMES python${_${_PYTHON_PREFIX}_VERSION_NO_DOTS}_d
                                         NAMES_PER_DIR
@@ -608,6 +614,8 @@ if ("Development" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
               list (APPEND _${_PYTHON_PREFIX}_INCLUDE_HINTS "${CMAKE_MATCH_1}")
             elseif (${_${_PYTHON_PREFIX}_LIB} MATCHES "^(.+)/lib(64|32)?/python[0-9.]+/config")
               list (APPEND _${_PYTHON_PREFIX}_INCLUDE_HINTS "${CMAKE_MATCH_1}")
+            elseif (DEFINED CMAKE_LIBRARY_ARCHITECTURE AND ${_${_PYTHON_PREFIX}_LIB} MATCHES "^(.+)/lib/${CMAKE_LIBRARY_ARCHITECTURE}")
+              list (APPEND _${_PYTHON_PREFIX}_INCLUDE_HINTS "${CMAKE_MATCH_1}")
             else()
               # assume library is in a directory under root
               get_filename_component (_${_PYTHON_PREFIX}_PREFIX "${${_${_PYTHON_PREFIX}_LIB}}" DIRECTORY)

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

Summary of changes:
 Help/manual/cmake-variables.7.rst                  |    7 ++
 Help/release/dev/vs-sdk-dirs.rst                   |   15 ++++
 Help/variable/CMAKE_VS_SDK_EXCLUDE_DIRECTORIES.rst |    4 +
 .../CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES.rst        |    4 +
 Help/variable/CMAKE_VS_SDK_INCLUDE_DIRECTORIES.rst |    4 +
 Help/variable/CMAKE_VS_SDK_LIBRARY_DIRECTORIES.rst |    4 +
 .../CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES.rst     |    5 ++
 .../CMAKE_VS_SDK_REFERENCE_DIRECTORIES.rst         |    4 +
 Help/variable/CMAKE_VS_SDK_SOURCE_DIRECTORIES.rst  |    4 +
 Modules/FindPython/Support.cmake                   |   38 +++++----
 Source/cmGlobalNinjaGenerator.cxx                  |   40 ++-------
 Source/cmGlobalNinjaGenerator.h                    |    1 -
 Source/cmLocalNinjaGenerator.cxx                   |    3 +-
 Source/cmVisualStudio10TargetGenerator.cxx         |   49 +++++++++++
 Tests/RunCMake/VS10Project/RunCMakeTest.cmake      |    1 +
 .../VS10Project/VsSdkDirectories-check.cmake       |   88 ++++++++++++++++++++
 Tests/RunCMake/VS10Project/VsSdkDirectories.cmake  |   11 +++
 17 files changed, 233 insertions(+), 49 deletions(-)
 create mode 100644 Help/release/dev/vs-sdk-dirs.rst
 create mode 100644 Help/variable/CMAKE_VS_SDK_EXCLUDE_DIRECTORIES.rst
 create mode 100644 Help/variable/CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES.rst
 create mode 100644 Help/variable/CMAKE_VS_SDK_INCLUDE_DIRECTORIES.rst
 create mode 100644 Help/variable/CMAKE_VS_SDK_LIBRARY_DIRECTORIES.rst
 create mode 100644 Help/variable/CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES.rst
 create mode 100644 Help/variable/CMAKE_VS_SDK_REFERENCE_DIRECTORIES.rst
 create mode 100644 Help/variable/CMAKE_VS_SDK_SOURCE_DIRECTORIES.rst
 create mode 100644 Tests/RunCMake/VS10Project/VsSdkDirectories-check.cmake
 create mode 100644 Tests/RunCMake/VS10Project/VsSdkDirectories.cmake


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list