module System.Plugins.PackageAPI (
PackageName
, PackageConfig
, packageName
, packageName_
, importDirs
, hsLibraries
, libraryDirs
, extraLibraries
, ldOptions
, packageDeps
, updImportDirs
, updLibraryDirs
) where
#include "../../../config.h"
#if CABAL == 1 || __GLASGOW_HASKELL__ >= 604
import Distribution.InstalledPackageInfo
import Distribution.Package hiding (depends, packageName, PackageName(..))
import Distribution.Text
#else
import System.Plugins.Package
#endif
packageName :: PackageConfig -> PackageName
packageDeps :: PackageConfig -> [PackageName]
updImportDirs :: ([FilePath] -> [FilePath]) -> PackageConfig -> PackageConfig
updLibraryDirs :: ([FilePath] -> [FilePath]) -> PackageConfig -> PackageConfig
#if CABAL == 1 || __GLASGOW_HASKELL__ >= 604
type PackageName = String
type PackageConfig = InstalledPackageInfo
packageName = display . pkgName . sourcePackageId
packageName_ = pkgName . sourcePackageId
packageDeps = (map display) . depends
updImportDirs f pk@(InstalledPackageInfo { importDirs = idirs }) =
pk { importDirs = f idirs }
updLibraryDirs f pk@(InstalledPackageInfo { libraryDirs = ldirs }) =
pk { libraryDirs = f ldirs }
#else
packageName = name
packageName_ = name
packageDeps = package_deps
updImportDirs f pk@(Package {import_dirs = idirs})
= pk {import_dirs = f idirs}
updLibraryDirs f pk@(Package {library_dirs = ldirs})
= pk {library_dirs = f ldirs}
importDirs :: PackageConfig -> [FilePath]
importDirs = import_dirs
hsLibraries :: PackageConfig -> [String]
hsLibraries = hs_libraries
libraryDirs :: PackageConfig -> [FilePath]
libraryDirs = library_dirs
extraLibraries :: PackageConfig -> [String]
extraLibraries = extra_libraries
ldOptions :: PackageConfig -> [String]
ldOptions = extra_ld_opts
#endif