getPreloadPackagesAnd,
collectIncludeDirs, collectLibraryPaths, collectLinkOpts,
+ packageHsLibs,
-- * Utils
isDllName
import PackageConfig
import ParsePkgConf ( loadPackageConfig )
-import DynFlags ( dopt, DynFlag(..), DynFlags(..), PackageFlag(..) )
+import DynFlags ( dopt, DynFlag(..), DynFlags(..), PackageFlag(..), GhcLink(..) )
import StaticFlags ( opt_Static )
import Config ( cProjectVersion )
import Name ( Name, nameModule_maybe )
(basePackageId, [""]),
(rtsPackageId, [""]),
(haskell98PackageId, [""]),
+ (sybPackageId, [""]),
(thPackageId, [""]),
(dphSeqPackageId, [""]),
- (dphParPackageId, [""]),
- (ndpPackageId, ["-seq", "-par"]) ]
+ (dphParPackageId, [""])]
matches :: PackageConfig -> (PackageId, [String]) -> Bool
pc `matches` (pid, suffixes)
-- add base & rts to the preload packages
basicLinkedPackages
- | dopt Opt_AutoLinkPackages dflags
+ | dopt Opt_AutoLinkPackages dflags && (ghcLink dflags) /= LinkDynLib
= filter (flip elemUFM pkg_db) [basePackageId, rtsPackageId]
| otherwise = []
-- but in any case remove the current package from the set of
collectLinkOpts :: DynFlags -> [PackageConfig] -> [String]
collectLinkOpts dflags ps = concat (map all_opts ps)
where
+ libs p = packageHsLibs dflags p ++ extraLibraries p
+ all_opts p = map ("-l" ++) (libs p) ++ ldOptions p
+
+packageHsLibs :: DynFlags -> PackageConfig -> [String]
+packageHsLibs dflags p = map (mkDynName . addSuffix) (hsLibraries p)
+ where
tag = buildTag dflags
rts_tag = rtsBuildTag dflags
mkDynName | opt_Static = id
| otherwise = (++ ("-ghc" ++ cProjectVersion))
- libs p = map (mkDynName . addSuffix) (hsLibraries p)
- ++ extraLibraries p
- all_opts p = map ("-l" ++) (libs p) ++ ldOptions p
addSuffix rts@"HSrts" = rts ++ (expandTag rts_tag)
addSuffix other_lib = other_lib ++ (expandTag tag)