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 $ |