Rex Dieter 29094f
From 6b9597ff35170fa14ae333f6b2de73749353d3bc Mon Sep 17 00:00:00 2001
Rex Dieter 29094f
From: Mike Arthur <mike@mikemcquaid.com>
Rex Dieter 29094f
Date: Mon, 15 Mar 2010 22:07:33 +0000
Rex Dieter 29094f
Subject: [PATCH 18/33] Fix framework detection on Mac where Qt is installed
Rex Dieter 29094f
 outside /Library/Frameworks.
Rex Dieter 29094f
Rex Dieter 29094f
svn path=/trunk/kdesupport/automoc/; revision=1103798
Rex Dieter 29094f
---
Rex Dieter 29094f
 kde4automoc.cpp | 16 +++++++++++-----
Rex Dieter 29094f
 1 file changed, 11 insertions(+), 5 deletions(-)
Rex Dieter 29094f
Rex Dieter 29094f
diff --git a/kde4automoc.cpp b/kde4automoc.cpp
Rex Dieter 29094f
index e85ec62..314ab96 100644
Rex Dieter 29094f
--- a/kde4automoc.cpp
Rex Dieter 29094f
+++ b/kde4automoc.cpp
Rex Dieter 29094f
@@ -179,16 +179,22 @@ void AutoMoc::lazyInit()
Rex Dieter 29094f
     dotFilesCheck(line == "MOC_INCLUDES:\n");
Rex Dieter 29094f
     line = dotFiles.readLine().trimmed();
Rex Dieter 29094f
     const QStringList &incPaths = QString::fromUtf8(line).split(';', QString::SkipEmptyParts);
Rex Dieter 29094f
+    QSet<QString> frameworkPaths;
Rex Dieter 29094f
     foreach (const QString &path, incPaths) {
Rex Dieter 29094f
         Q_ASSERT(!path.isEmpty());
Rex Dieter 29094f
         mocIncludes << "-I" + path;
Rex Dieter 29094f
+        if (path.endsWith(".framework/Headers")) {
Rex Dieter 29094f
+            QDir framework(path);
Rex Dieter 29094f
+            // Go up twice to get to the framework root
Rex Dieter 29094f
+            framework.cdUp();
Rex Dieter 29094f
+            framework.cdUp();
Rex Dieter 29094f
+            frameworkPaths << framework.path();
Rex Dieter 29094f
+        }
Rex Dieter 29094f
     }
Rex Dieter 29094f
 
Rex Dieter 29094f
-    // on the Mac, add -F always, otherwise headers in the frameworks won't be found
Rex Dieter 29094f
-    // is it necessary to do this only optionally ? Alex
Rex Dieter 29094f
-#if defined(Q_OS_DARWIN) || defined(Q_OS_MAC)
Rex Dieter 29094f
-    mocIncludes << "-F/Library/Frameworks";
Rex Dieter 29094f
-#endif
Rex Dieter 29094f
+    foreach (const QString &path, frameworkPaths) {
Rex Dieter 29094f
+        mocIncludes << "-F" << path;
Rex Dieter 29094f
+    }
Rex Dieter 29094f
 
Rex Dieter 29094f
     line = dotFiles.readLine();
Rex Dieter 29094f
     dotFilesCheck(line == "CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE:\n");
Rex Dieter 29094f
-- 
Rex Dieter 29094f
2.4.3
Rex Dieter 29094f