|
From: <cod...@go...> - 2008-10-08 00:00:22
|
Author: wol...@gm...
Date: Tue Oct 7 16:56:55 2008
New Revision: 335
Modified:
trunk/hoc/InterfaceGenerator2/Headers.hs
Log:
When collecting headers for a framework, include sub-frameworks
Modified: trunk/hoc/InterfaceGenerator2/Headers.hs
==============================================================================
--- trunk/hoc/InterfaceGenerator2/Headers.hs (original)
+++ trunk/hoc/InterfaceGenerator2/Headers.hs Tue Oct 7 16:56:55 2008
@@ -13,7 +13,7 @@
import Data.Char(isAlphaNum, toUpper)
import Data.List(isPrefixOf,isSuffixOf)
import Data.Maybe(mapMaybe)
-import System.Directory(getDirectoryContents)
+import System.Directory(getDirectoryContents, doesDirectoryExist)
import System.Info(os)
import Text.Parsec( runParserT )
import Messages( runMessages )
@@ -43,9 +43,29 @@
prefix ++ "." ++ takeWhile (/= '.') fn)
| fn <- files, ".h" `isSuffixOf` fn {- , fn /= (prefix ++ ".h")
-} ]
+headersForFrameworkAt path framework
+ = do
+ haveHeaders <- doesDirectoryExist (path </> "Headers")
+ baseHeaders <- if haveHeaders then headersIn (path </> "Headers")
framework
+ else return []
+
+ haveFrameworks <- doesDirectoryExist (path </> "Frameworks")
+
+ moreHeaders <- if not haveFrameworks then return [] else do
+ contents <- getDirectoryContents (path </> "Frameworks")
+
+ fmap concat $ mapM (\fw ->
+ headersForFrameworkAt (path </> "Frameworks" </> fw)
+ (framework ++ "." ++ takeWhile
(/= '.') fw)
+ ) $ filter (".framework" `isSuffixOf`) contents
+ return $ baseHeaders ++ moreHeaders
+
headersForFramework prefix framework =
if System.Info.os == "darwin"
- then headersIn (prefix </> "System/Library/Frameworks" </>
(framework ++ ".framework") </> "Headers") framework
+ then do
+ let fwPath = prefix </> "System/Library/Frameworks"
+ </> (framework ++ ".framework")
+ headersForFrameworkAt fwPath framework
else headersIn ("/usr/lib/GNUstep/System/Library/Headers/" ++
framework ++ "/") framework
translateObjCImport imp = haskellizeModuleName $
|