97 lines
2.8 KiB
Haskell
Raw Normal View History

2005-04-24 08:51:33 +00:00
{-# OPTIONS -cpp #-}
--
-- Copyright (C) 2005 Sean Seefried - http://www.cse.unsw.edu.au/~sseefried
--
-- This library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public
-- License as published by the Free Software Foundation; either
-- version 2.1 of the License, or (at your option) any later version.
--
-- This library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- Lesser General Public License for more details.
--
-- You should have received a copy of the GNU Lesser General Public
-- License along with this library; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-- USA
--
-- We export an abstract interface to package conf`s because we have
-- to handle either traditional or Cabal style package conf`s.
--
module System.Plugins.PackageAPI (
2005-04-24 08:51:33 +00:00
PackageName
, PackageConfig
, packageName
, packageName_
, importDirs
, hsLibraries
, libraryDirs
, extraLibraries
, ldOptions
2005-04-24 08:51:33 +00:00
, packageDeps
, updImportDirs
, updLibraryDirs
) where
#include "../../../config.h"
2005-04-24 08:51:33 +00:00
#if CABAL == 1 || __GLASGOW_HASKELL__ >= 604
import Distribution.InstalledPackageInfo
import Distribution.Package
#else
import System.Plugins.Package
2005-04-24 08:51:33 +00:00
#endif
packageName :: PackageConfig -> PackageName
packageDeps :: PackageConfig -> [PackageName]
updImportDirs :: ([FilePath] -> [FilePath]) -> PackageConfig -> PackageConfig
updLibraryDirs :: ([FilePath] -> [FilePath]) -> PackageConfig -> PackageConfig
-- We use different package.conf parsers when running on 6.2.x or 6.4
#if CABAL == 1 || __GLASGOW_HASKELL__ >= 604
type PackageName = String
type PackageConfig = InstalledPackageInfo
packageName = showPackageId . package
packageName_ = pkgName . package
packageDeps = (map showPackageId) . 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
2005-04-24 08:51:33 +00:00
#endif