summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.patch139
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, &gtgt, "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, &gtgt, "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