diff options
Diffstat (limited to 'dev-util/cmake/files/cmake-2.8.10.2-implicit-include.patch')
-rw-r--r-- | dev-util/cmake/files/cmake-2.8.10.2-implicit-include.patch | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/dev-util/cmake/files/cmake-2.8.10.2-implicit-include.patch b/dev-util/cmake/files/cmake-2.8.10.2-implicit-include.patch new file mode 100644 index 0000000..f0ea5e8 --- /dev/null +++ b/dev-util/cmake/files/cmake-2.8.10.2-implicit-include.patch @@ -0,0 +1,139 @@ +--- a/Source/cmLocalGenerator.cxx ++++ b/Source/cmLocalGenerator.cxx +@@ -1329,7 +1329,9 @@ std::string cmLocalGenerator::GetIncludeFlags( + void cmLocalGenerator::GetIncludeDirectories(std::vector<std::string>& dirs, + cmGeneratorTarget* target, + const char* lang, +- const char *config) ++ const char *config, ++ bool stripImplicitInclDirs ++ ) + { + // Need to decide whether to automatically include the source and + // binary directories at the beginning of the include path. +@@ -1404,18 +1406,21 @@ void cmLocalGenerator::GetIncludeDirectories(std::vector<std::string>& dirs, + return; + } + +- // Load implicit include directories for this language. +- std::string impDirVar = "CMAKE_"; +- impDirVar += lang; +- impDirVar += "_IMPLICIT_INCLUDE_DIRECTORIES"; +- if(const char* value = this->Makefile->GetDefinition(impDirVar.c_str())) ++ if (stripImplicitInclDirs) + { +- std::vector<std::string> impDirVec; +- cmSystemTools::ExpandListArgument(value, impDirVec); +- for(std::vector<std::string>::const_iterator i = impDirVec.begin(); +- i != impDirVec.end(); ++i) ++ // Load implicit include directories for this language. ++ std::string impDirVar = "CMAKE_"; ++ impDirVar += lang; ++ impDirVar += "_IMPLICIT_INCLUDE_DIRECTORIES"; ++ if(const char* value = this->Makefile->GetDefinition(impDirVar.c_str())) + { +- emitted.insert(*i); ++ std::vector<std::string> impDirVec; ++ cmSystemTools::ExpandListArgument(value, impDirVec); ++ for(std::vector<std::string>::const_iterator i = impDirVec.begin(); ++ i != impDirVec.end(); ++i) ++ { ++ emitted.insert(*i); ++ } + } + } + +--- a/Source/cmLocalGenerator.h ++++ b/Source/cmLocalGenerator.h +@@ -212,7 +212,8 @@ public: + /** Get the include flags for the current makefile and language. */ + void GetIncludeDirectories(std::vector<std::string>& dirs, + cmGeneratorTarget* target, +- const char* lang = "C", const char *config = 0); ++ const char* lang = "C", const char *config = 0, ++ bool stripImplicitInclDirs = true); + + /** Compute the language used to compile the given source file. */ + const char* GetSourceFileLanguage(const cmSourceFile& source); +--- a/Source/cmQtAutomoc.cxx ++++ b/Source/cmQtAutomoc.cxx +@@ -212,36 +212,11 @@ void cmQtAutomoc::SetupAutomocTarget(cmTarget* target) + } + + +- const char* qtIncDir = 0; +- const char* qtCoreIncDir = 0; +- +- // check whether ${QT_INCLUDE_DIR} is part of the implicit include dirs, +- // see http://public.kitware.com/Bug/view.php?id=13667 +- bool qtIncludeDirMayHaveBeenRemoved = false; +- if (makefile->IsSet("QT_INCLUDE_DIR")) +- { +- qtIncDir = makefile->GetDefinition("QT_INCLUDE_DIR"); +- std::string s = +- makefile->GetSafeDefinition("CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES"); +- std::vector<std::string> implIncDirs; +- cmSystemTools::ExpandListArgument(s, implIncDirs); +- if (std::find(implIncDirs.begin(), implIncDirs.end(),std::string(qtIncDir)) +- != implIncDirs.end()) +- { +- qtIncludeDirMayHaveBeenRemoved = true; +- if (makefile->IsSet("QT_QTCORE_INCLUDE_DIR")) +- { +- qtCoreIncDir = makefile->GetDefinition("QT_QTCORE_INCLUDE_DIR"); +- } +- } +- } +- +- bool haveQtCoreIncDir = false; +- bool haveQtIncDir = false; +- + std::vector<std::string> includeDirs; + cmGeneratorTarget gtgt(target); +- localGen->GetIncludeDirectories(includeDirs, >gt, "CXX"); ++ // Get the include dirs for this target, without stripping the implicit ++ // include dirs off, see http://public.kitware.com/Bug/view.php?id=13667 ++ localGen->GetIncludeDirectories(includeDirs, >gt, "CXX", 0, false); + std::string _moc_incs = ""; + const char* sep = ""; + for(std::vector<std::string>::const_iterator incDirIt = includeDirs.begin(); +@@ -251,37 +226,6 @@ void cmQtAutomoc::SetupAutomocTarget(cmTarget* target) + _moc_incs += sep; + sep = ";"; + _moc_incs += *incDirIt; +- +- if (qtIncludeDirMayHaveBeenRemoved && qtCoreIncDir && qtIncDir) // #13667 +- { +- if (*incDirIt == qtIncDir) +- { +- haveQtIncDir = true; +- qtIncludeDirMayHaveBeenRemoved = false; // it's here, i.e. not removed +- } +- if (*incDirIt == qtCoreIncDir) +- { +- haveQtCoreIncDir = true; +- } +- } +- } +- +- // Some projects (kdelibs, phonon) query the compiler for its default +- // include search dirs, and add those to +- // CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES. +- // These may include e.g./usr/lib/qt/include . This is typically also part +- // of ${QT_INCLUDES}. If this directory is then contained in the implicit +- // include dirs, it is removed from the include dirs returned from the +- // target above. So we add ${QT_INCLUDE_DIR} manually for moc if we detected +- // that ${QT_QTCORE_INCLUDE_DIR} is among the include dirs (there shouldn't +- // be a way to use Qt4 without using ${QT_QTCORE_INCLUDE_DIR} I think. +- // See #13646 and #13667. +- if (qtIncludeDirMayHaveBeenRemoved && qtCoreIncDir && qtIncDir +- && (haveQtCoreIncDir == true) && (haveQtIncDir == false)) +- { +- _moc_incs += sep; +- sep = ";"; +- _moc_incs += qtIncDir; + } + + const char* tmp = target->GetProperty("COMPILE_DEFINITIONS"); +-- +1.7.0 |