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 4653dc36efc23e6a35449521a7d7a7688b0ab288 (commit) via c4c34af1a8e951026178db532f18660e0a7f28bf (commit) via 40a85b503c9eaa579c5b497f7f7155911f7a67c3 (commit) from 35f46e30fe43345610408874db2504614bc72d47 (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=4653dc36efc23e6a35449521a7d7a7688b0ab288 commit 4653dc36efc23e6a35449521a7d7a7688b0ab288 Merge: 35f46e3 c4c34af Author: Gregor Jasny <gja...@googlemail.com> AuthorDate: Mon Sep 14 15:18:41 2015 -0400 Commit: CMake Topic Stage <kwro...@kitware.com> CommitDate: Mon Sep 14 15:18:41 2015 -0400 Merge topic 'xcode-support-system-include' into next c4c34af1 Swift: Add includes to OTHER_SWIFT_FLAGS in Xcode 40a85b50 Xcode: Obey SYSTEM keyword for includes (#15687) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c4c34af1a8e951026178db532f18660e0a7f28bf commit c4c34af1a8e951026178db532f18660e0a7f28bf Author: Gregor Jasny <gja...@googlemail.com> AuthorDate: Mon Sep 14 21:04:17 2015 +0200 Commit: Gregor Jasny <gja...@googlemail.com> CommitDate: Mon Sep 14 21:15:28 2015 +0200 Swift: Add includes to OTHER_SWIFT_FLAGS in Xcode 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 e131ddc..de1e506 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -2300,6 +2300,11 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target, buildSettings->AddAttribute("OTHER_CFLAGS", this->CreateString(flags.c_str())); } + else if (*li == "Swift") + { + buildSettings->AddAttribute("OTHER_SWIFT_FLAGS", + this->CreateString(flags.c_str())); + } } // Add Fortran source format attribute if property is set. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=40a85b503c9eaa579c5b497f7f7155911f7a67c3 commit 40a85b503c9eaa579c5b497f7f7155911f7a67c3 Author: Gregor Jasny <gja...@googlemail.com> AuthorDate: Mon Aug 31 22:33:37 2015 +0200 Commit: Gregor Jasny <gja...@googlemail.com> CommitDate: Mon Sep 14 21:15:11 2015 +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/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index 33babec..e131ddc 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -2177,34 +2177,27 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target, this->CreateString("NO")); } - 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) + for(std::set<std::string>::iterator li = languages.begin(); + li != languages.end(); ++li) { - if(this->NameResolvesToFramework(i->c_str())) - { - std::string frameworkDir = *i; - frameworkDir += "/../"; - frameworkDir = cmSystemTools::CollapseFullPath(frameworkDir.c_str()); - if(emitted.insert(frameworkDir).second) - { - fdirs.Add(this->XCodeEscapePath(frameworkDir.c_str()).c_str()); - } - } - else + std::vector<std::string> includes; + this->CurrentLocalGenerator->GetIncludeDirectories(includes, gtgt, *li); + + std::string includeFlags = this->CurrentLocalGenerator + ->GetIncludeFlags(includes, gtgt, *li, true, false, configName); + + std::string& flags = cflags[*li]; + + if (!includeFlags.empty()) { - std::string incpath = - this->XCodeEscapePath(i->c_str()); - dirs.Add(incpath.c_str()); + flags += " " + includeFlags; } } + // Add framework search paths needed for linking. + BuildObjectListOrString fdirs(this, this->XcodeVersion >= 30); + std::set<std::string> emitted; + emitted.insert("/System/Library/Frameworks"); if(cmComputeLinkInformation* cli = gtgt->GetLinkInformation(configName)) { std::vector<std::string> const& fwDirs = cli->GetFrameworkPaths(); @@ -2222,11 +2215,6 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target, buildSettings->AddAttribute("FRAMEWORK_SEARCH_PATHS", fdirs.CreateList()); } - if(!dirs.IsEmpty()) - { - buildSettings->AddAttribute("HEADER_SEARCH_PATHS", - dirs.CreateList()); - } bool same_gflags = true; std::map<std::string, std::string> gflags; diff --git a/Tests/IncludeDirectories/CMakeLists.txt b/Tests/IncludeDirectories/CMakeLists.txt index 9ee1957..1a4f43a 100644 --- a/Tests/IncludeDirectories/CMakeLists.txt +++ b/Tests/IncludeDirectories/CMakeLists.txt @@ -3,7 +3,8 @@ 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")) 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 | 49 +++++++++----------- Tests/IncludeDirectories/CMakeLists.txt | 3 +- .../SystemIncludeDirectories/CMakeLists.txt | 15 ++++-- 4 files changed, 35 insertions(+), 33 deletions(-) hooks/post-receive -- CMake _______________________________________________ Cmake-commits mailing list Cmake-commits@cmake.org http://public.kitware.com/mailman/listinfo/cmake-commits