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  8bbcf863e5d24a91a371ee9dec87381d6e09da9f (commit)
       via  93ac2a78d5e0dbb6607105cc8d2a3f19ebdd8583 (commit)
      from  c0566538859b568a58f23eabe12e49ff2370a140 (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=8bbcf863e5d24a91a371ee9dec87381d6e09da9f
commit 8bbcf863e5d24a91a371ee9dec87381d6e09da9f
Merge: c056653 93ac2a7
Author:     Gregor Jasny <gja...@googlemail.com>
AuthorDate: Tue Aug 9 15:25:55 2016 -0400
Commit:     CMake Topic Stage <kwro...@kitware.com>
CommitDate: Tue Aug 9 15:25:55 2016 -0400

    Merge topic '15687-xcode-support-system-include' into next
    
    93ac2a78 Xcode: Obey SYSTEM keyword for includes (#15687)


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=93ac2a78d5e0dbb6607105cc8d2a3f19ebdd8583
commit 93ac2a78d5e0dbb6607105cc8d2a3f19ebdd8583
Author:     Gregor Jasny <gja...@googlemail.com>
AuthorDate: Mon Aug 31 22:33:37 2015 +0200
Commit:     Gregor Jasny <gja...@googlemail.com>
CommitDate: Tue Aug 9 20:30:07 2016 +0200

    Xcode: Obey SYSTEM keyword for includes (#15687)
    
    CMake used to put all header search paths into HEADER_SEARCH_PATHS
    attribute. Unfortunately this attribute does not support to declare
    a search path as a system include.
    
    As a hack one could add a -isystem /path to the cflags but then include
    ordering is not deterministic. A better approach was chosen with this
    patch by not filling HEADER_SEARCH_PATHS at all and to populate
    the C, C++, and Fortran flags directly. The include paths used by
    Xcode should be now identical to the ones used by Unix Makefiles and
    Ninja generator.

diff --git a/Modules/CMakeSwiftInformation.cmake 
b/Modules/CMakeSwiftInformation.cmake
index 61ad928..85d3143 100644
--- a/Modules/CMakeSwiftInformation.cmake
+++ b/Modules/CMakeSwiftInformation.cmake
@@ -13,6 +13,7 @@
 #  License text for the above reference.)
 
 set(CMAKE_Swift_OUTPUT_EXTENSION .o)
+set(CMAKE_INCLUDE_FLAG_Swift "-I")
 
 # Load compiler-specific information.
 if(CMAKE_Swift_COMPILER_ID)
diff --git a/Source/cmGlobalXCodeGenerator.cxx 
b/Source/cmGlobalXCodeGenerator.cxx
index b396ea1..780ca90 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -1907,23 +1907,40 @@ void 
cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
 
   BuildObjectListOrString dirs(this, this->XcodeVersion >= 30);
   BuildObjectListOrString fdirs(this, this->XcodeVersion >= 30);
-  std::vector<std::string> includes;
-  this->CurrentLocalGenerator->GetIncludeDirectories(includes, gtgt, "C",
-                                                     configName);
   std::set<std::string> emitted;
   emitted.insert("/System/Library/Frameworks");
-  for (std::vector<std::string>::iterator i = includes.begin();
-       i != includes.end(); ++i) {
-    if (this->NameResolvesToFramework(i->c_str())) {
-      std::string frameworkDir = *i;
-      frameworkDir += "/../";
-      frameworkDir = cmSystemTools::CollapseFullPath(frameworkDir);
-      if (emitted.insert(frameworkDir).second) {
-        fdirs.Add(this->XCodeEscapePath(frameworkDir));
+
+  if (this->XcodeVersion < 60) {
+    std::vector<std::string> includes;
+    this->CurrentLocalGenerator->GetIncludeDirectories(includes, gtgt, "C",
+                                                       configName);
+    for (std::vector<std::string>::iterator i = includes.begin();
+         i != includes.end(); ++i) {
+      if (this->NameResolvesToFramework(i->c_str())) {
+        std::string frameworkDir = *i;
+        frameworkDir += "/../";
+        frameworkDir = cmSystemTools::CollapseFullPath(frameworkDir);
+        if (emitted.insert(frameworkDir).second) {
+          fdirs.Add(this->XCodeEscapePath(frameworkDir));
+        }
+      } else {
+        std::string incpath = this->XCodeEscapePath(*i);
+        dirs.Add(incpath);
+      }
+    }
+  } else {
+    for (std::set<std::string>::iterator li = languages.begin();
+         li != languages.end(); ++li) {
+      std::vector<std::string> includes;
+      this->CurrentLocalGenerator->GetIncludeDirectories(includes, gtgt, *li,
+                                                         configName);
+      std::string includeFlags = this->CurrentLocalGenerator->GetIncludeFlags(
+        includes, gtgt, *li, true, false, configName);
+
+      std::string& flags = cflags[*li];
+      if (!includeFlags.empty()) {
+        flags += " " + includeFlags;
       }
-    } else {
-      std::string incpath = this->XCodeEscapePath(*i);
-      dirs.Add(incpath);
     }
   }
   // Add framework search paths needed for linking.
@@ -2008,6 +2025,9 @@ void 
cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
                                   this->CreateString(flags));
     } else if (*li == "C") {
       buildSettings->AddAttribute("OTHER_CFLAGS", this->CreateString(flags));
+    } else if (*li == "Swift") {
+      buildSettings->AddAttribute("OTHER_SWIFT_FLAGS",
+                                  this->CreateString(flags));
     }
   }
 
diff --git a/Tests/IncludeDirectories/CMakeLists.txt 
b/Tests/IncludeDirectories/CMakeLists.txt
index 4920582..db18462 100644
--- a/Tests/IncludeDirectories/CMakeLists.txt
+++ b/Tests/IncludeDirectories/CMakeLists.txt
@@ -3,7 +3,9 @@ project(IncludeDirectories)
 
 if (((CMAKE_C_COMPILER_ID STREQUAL GNU AND CMAKE_C_COMPILER_VERSION 
VERSION_GREATER 4.4)
     OR CMAKE_C_COMPILER_ID STREQUAL Clang OR CMAKE_C_COMPILER_ID STREQUAL 
AppleClang)
-    AND (CMAKE_GENERATOR STREQUAL "Unix Makefiles" OR CMAKE_GENERATOR STREQUAL 
"Ninja"))
+    AND (CMAKE_GENERATOR STREQUAL "Unix Makefiles"
+      OR CMAKE_GENERATOR STREQUAL "Ninja"
+      OR (CMAKE_GENERATOR STREQUAL "Xcode" AND NOT XCODE_VERSION VERSION_LESS 
6.0)))
   include(CheckCXXCompilerFlag)
   check_cxx_compiler_flag(-Wunused-variable run_sys_includes_test)
   if(run_sys_includes_test)
diff --git a/Tests/IncludeDirectories/SystemIncludeDirectories/CMakeLists.txt 
b/Tests/IncludeDirectories/SystemIncludeDirectories/CMakeLists.txt
index dcee85e..5078f30 100644
--- a/Tests/IncludeDirectories/SystemIncludeDirectories/CMakeLists.txt
+++ b/Tests/IncludeDirectories/SystemIncludeDirectories/CMakeLists.txt
@@ -15,10 +15,17 @@ target_include_directories(upstream SYSTEM PUBLIC
 )
 
 add_library(config_specific INTERFACE)
-set(testConfig ${CMAKE_BUILD_TYPE})
-target_include_directories(config_specific SYSTEM INTERFACE
-  "$<$<CONFIG:${testConfig}>:${CMAKE_CURRENT_SOURCE_DIR}/config_specific>"
-)
+if(CMAKE_GENERATOR STREQUAL "Xcode")
+  # CMAKE_BUILD_TYPE does not work here for multi-config generators
+  target_include_directories(config_specific SYSTEM INTERFACE
+    "${CMAKE_CURRENT_SOURCE_DIR}/config_specific"
+  )
+else()
+  set(testConfig ${CMAKE_BUILD_TYPE})
+  target_include_directories(config_specific SYSTEM INTERFACE
+    "$<$<CONFIG:${testConfig}>:${CMAKE_CURRENT_SOURCE_DIR}/config_specific>"
+  )
+endif()
 
 add_library(consumer consumer.cpp)
 target_link_libraries(consumer upstream config_specific)

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

Summary of changes:
 Modules/CMakeSwiftInformation.cmake                |    1 +
 Source/cmGlobalXCodeGenerator.cxx                  |   48 ++++++++++++++------
 Tests/IncludeDirectories/CMakeLists.txt            |    4 +-
 .../SystemIncludeDirectories/CMakeLists.txt        |   15 ++++--
 4 files changed, 49 insertions(+), 19 deletions(-)


hooks/post-receive
-- 
CMake
_______________________________________________
Cmake-commits mailing list
Cmake-commits@cmake.org
http://public.kitware.com/mailman/listinfo/cmake-commits

Reply via email to