From: <cod...@go...> - 2008-11-04 22:35:10
|
Author: wol...@gm... Date: Tue Nov 4 14:34:03 2008 New Revision: 353 Modified: trunk/hoc/HOC.cabal trunk/hoc/Setup.hs Log: Try to figure out GNUstep paths Modified: trunk/hoc/HOC.cabal ============================================================================== --- trunk/hoc/HOC.cabal (original) +++ trunk/hoc/HOC.cabal Tue Nov 4 14:34:03 2008 @@ -58,7 +58,7 @@ frameworks: Foundation cpp-options: -DMACOSX else - extra-lib-dirs: /usr/lib/gcc/i486-linux-gnu/4.1.3/, /usr/lib/GNUstep/System/Library/Libraries + -- paths are inserted by Setup.hs extra-libraries: gnustep-base cpp-options: -DGNUSTEP @@ -89,6 +89,5 @@ frameworks: Foundation cpp-options: -DMACOSX else - extra-lib-dirs: /usr/lib/gcc/i486-linux-gnu/4.1.3/, /usr/lib/GNUstep/System/Library/Libraries extra-libraries: gnustep-base cpp-options: -DGNUSTEP Modified: trunk/hoc/Setup.hs ============================================================================== --- trunk/hoc/Setup.hs (original) +++ trunk/hoc/Setup.hs Tue Nov 4 14:34:03 2008 @@ -15,18 +15,31 @@ confHook = customConfig, preBuild = customPreBuild } - -gnustepPaths :: IO (String, String) -gnustepPaths = do - (inp,out,err,pid) <- runInteractiveCommand "gcc --print-libgcc-file-name" + +backquote :: String -> IO String +backquote cmd = do + (inp,out,err,pid) <- runInteractiveCommand cmd hClose inp - libgcc <- hGetContents out + text <- hGetContents out waitForProcess pid hClose err + return $ init text ++ let c = last text in if c == '\n' then [] else [c] + +gnustepPaths :: IO (String, String, String) +gnustepPaths = do + libgcc <- backquote "gcc --print-libgcc-file-name" + headersAndLibraries <- backquote + "opentool /bin/sh -c \ + \'. $GNUSTEP_MAKEFILES/filesystem.sh \ + \; echo $GNUSTEP_SYSTEM_HEADERS ; echo $GNUSTEP_SYSTEM_LIBRARIES'" + let gcclibdir = takeDirectory libgcc - sysroot <- getEnv "GNUSTEP_SYSTEM_ROOT" - return (gcclibdir, sysroot) + let system_headers : system_libs : _ = lines headersAndLibraries + -- sysroot <- getEnv "GNUSTEP_SYSTEM_ROOT" + -- let system_headers = gnustepsysroot </> "Library/Headers" + -- system_libs = gnustepsysroot </> "Library/Libraries" + return (gcclibdir, system_libs, system_headers) customConfig :: (Either GenericPackageDescription PackageDescription, HookedBuildInfo) -> ConfigFlags -> IO LocalBuildInfo customConfig pdbi cf = do @@ -34,8 +47,8 @@ if System.Info.os == "darwin" then return() else do - (gcclibdir, gnustepsysroot) <- gnustepPaths - writeFile "HOC.buildinfo" $ "extra-lib-dirs: " ++ gcclibdir ++ ", " ++ gnustepsysroot </> "Library/Headers" ++ "\n" + (gcclibdir, system_libs, system_headers) <- gnustepPaths + writeFile "HOC.buildinfo" $ "extra-lib-dirs: " ++ gcclibdir ++ ", " ++ system_libs ++ "\n" return lbi @@ -49,11 +62,12 @@ then do return ("-I/usr/include/ffi -DMACOSX", [], ["-framework Foundation"]) else do - (gcclibdir, sysroot) <- gnustepPaths - return ("-I$GNUSTEP_SYSTEM_ROOT/Library/Headers -DGNUSTEP", - ["-L" ++ gcclibdir, "-L" ++ sysroot </> "Library/Libraries"], + (gcclibdir, system_libs, system_headers) <- gnustepPaths + ffi_cflags <- backquote "pkg-config libffi --cflags" + return ("-I" ++ system_headers ++ " -DGNUSTEP" ++ " " ++ ffi_cflags, + ["-L" ++ gcclibdir, "-L" ++ system_libs], ["-lgnustep-base"]) - + exitCode <- system $ "gcc -r -nostdlib -I`ghc --print-libdir`/include " ++ cflags ++ " HOC_cbits/*.m -o dist/build/HOC_cbits.o" |