Compiler versions

Isaac Jones ijones at
Wed Apr 7 11:33:04 EDT 2004

"Simon Peyton-Jones" <simonpj at> writes:

> Would anyone like to run with this to get an interface agreed?  From the
> GHC end we'd be happy to implement any agreed interface.

To bring this around a little, I think I had proposed somewhere along
the line that each library (and even Main modules perhaps) export a
"toolInfo" variable which is based on
Distribution.Package.PackageConfig type (which itself is based on
types used in ghc-pkg).  So I'm a little less sure at this point
exactly which datatype should be exported, but it should have at least
some of the fields in PackageConfig (which is below for your

I think it would be nice for most tools to export something along the lines of:

ToolInfo PkgIdentifier {- includes version and name -}
         String -- copyright
         String -- maintainer
         String -- stability

But let's make sure I have the various configuration data types down
first.  Hopefully that'll happen Real Soon Now :)



data PackageConfig
   = Package {
        pkgIdent        :: PkgIdentifier,
        license         :: License,
        copyright       :: String,
        maintainer      :: String,
        stability       :: String,
        auto            :: Bool,
        importDirs     :: [FilePath],
        sourceDirs     :: [FilePath],
        libraryDirs    :: [FilePath],
        hsLibraries    :: [String],
        extraLibraries :: [String],
        includeDirs    :: [FilePath],
        cIncludes      :: [String],
        depends         :: [Dependency], -- use dependencies
        extraHugsOpts :: [Opt],
        extraCcOpts   :: [Opt],
        extraLdOpts   :: [Opt],
        frameworkDirs  :: [FilePath],
        extraFrameworks:: [String]}
    deriving (Read, Show)

data PkgIdentifier
    = PkgIdentifier {pkgName::String, pkgVersion::Version}

data License = GPL | LGPL | BSD3 | BSD4 | PublicDomain | AllRightsReserved
             | {- ... | -} OtherLicense FilePath
               deriving (Read, Show)

data SourcePackage
    = SourcePackage { pkgIdent    :: PkgIdentifier,
                      depends     :: [Dependency],
                      setupScript :: Either FilePath (String, FilePath)
                    } deriving (Show, Read)

More information about the Libraries mailing list