Distribution.Types.ForeignLib

Cabal-2.4.0.1: A framework for packaging Haskell software

Safe Haskell | None
Language | Haskell2010

Distribution.Types.ForeignLib

Synopsis

- data ForeignLib = ForeignLib {
  - foreignLibName :: UnqualComponentName
  - foreignLibType :: ForeignLibType
  - foreignLibOptions :: [ForeignLibOption]
  - foreignLibBuildInfo :: BuildInfo
  - foreignLibVersionInfo :: Maybe LibVersionInfo
  - foreignLibVersionLinux :: Maybe Version
  - foreignLibModDefFile :: [FilePath]
  }
- emptyForeignLib :: ForeignLib
- foreignLibModules :: ForeignLib -> [ModuleName]
- foreignLibIsShared :: ForeignLib -> Bool
- foreignLibVersion :: ForeignLib -> OS -> [Int]
- data LibVersionInfo
- mkLibVersionInfo :: (Int, Int, Int) -> LibVersionInfo
- libVersionInfoCRA :: LibVersionInfo -> (Int, Int, Int)
- libVersionNumber :: LibVersionInfo -> (Int, Int, Int)
- libVersionNumberShow :: LibVersionInfo -> String
- libVersionMajor :: LibVersionInfo -> Int

# Documentation

data ForeignLib #

A foreign library stanza is like a library stanza, except that the built code is intended for consumption by a non-Haskell client.

Constructors

ForeignLib |
Fields foreignLibName :: UnqualComponentName Name of the foreign library foreignLibType :: ForeignLibType What kind of foreign library is this (static or dynamic). foreignLibOptions :: [ForeignLibOption] What options apply to this foreign library (e.g., are we merging in all foreign dependencies.) foreignLibBuildInfo :: BuildInfo Build information for this foreign library. foreignLibVersionInfo :: Maybe LibVersionInfo Libtool-style version-info data to compute library version. Refer to the libtool documentation on the current:revision:age versioning scheme. foreignLibVersionLinux :: Maybe Version Linux library version foreignLibModDefFile :: [FilePath] (Windows-specific) module definition files This is a list rather than a maybe field so that we can flatten the condition trees (for instance, when creating an sdist)

Instances

Eq ForeignLib # |
Instance details Defined in Distribution.Types.ForeignLib Methods (==) :: ForeignLib -> ForeignLib -> Bool # (/=) :: ForeignLib -> ForeignLib -> Bool #
Data ForeignLib # |
Instance details Defined in Distribution.Types.ForeignLib Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ForeignLib -> c ForeignLib Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ForeignLib Source # toConstr :: ForeignLib -> Constr Source # dataTypeOf :: ForeignLib -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ForeignLib) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ForeignLib) Source # gmapT :: (forall b. Data b => b -> b) -> ForeignLib -> ForeignLib Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ForeignLib -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ForeignLib -> r Source # gmapQ :: (forall d. Data d => d -> u) -> ForeignLib -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> ForeignLib -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ForeignLib -> m ForeignLib Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ForeignLib -> m ForeignLib Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ForeignLib -> m ForeignLib Source #
Read ForeignLib # |
Instance details Defined in Distribution.Types.ForeignLib Methods readsPrec :: Int -> ReadS ForeignLib Source # readList :: ReadS [ForeignLib] Source # readPrec :: ReadPrec ForeignLib Source # readListPrec :: ReadPrec [ForeignLib] Source #
Show ForeignLib # |
Instance details Defined in Distribution.Types.ForeignLib Methods showsPrec :: Int -> ForeignLib -> ShowS Source # show :: ForeignLib -> String Source # showList :: [ForeignLib] -> ShowS Source #
Generic ForeignLib # |
Instance details Defined in Distribution.Types.ForeignLib Associated Types type Rep ForeignLib :: Type -> Type Source # Methods from :: ForeignLib -> Rep ForeignLib x Source # to :: Rep ForeignLib x -> ForeignLib Source #
Semigroup ForeignLib # |
Instance details Defined in Distribution.Types.ForeignLib Methods (<>) :: ForeignLib -> ForeignLib -> ForeignLib Source # sconcat :: NonEmpty ForeignLib -> ForeignLib Source # stimes :: Integral b => b -> ForeignLib -> ForeignLib Source #
Monoid ForeignLib # |
Instance details Defined in Distribution.Types.ForeignLib Methods mempty :: ForeignLib Source # mappend :: ForeignLib -> ForeignLib -> ForeignLib Source # mconcat :: [ForeignLib] -> ForeignLib Source #
Binary ForeignLib # |
Instance details Defined in Distribution.Types.ForeignLib Methods put :: ForeignLib -> Put Source # get :: Get ForeignLib Source # putList :: [ForeignLib] -> Put Source #
NFData ForeignLib # |
Instance details Defined in Distribution.Types.ForeignLib Methods rnf :: ForeignLib -> () Source #
HasBuildInfo ForeignLib # |
Instance details Defined in Distribution.Types.ForeignLib Methods buildInfo :: Lens' ForeignLib BuildInfo # buildable :: Lens' ForeignLib Bool # buildTools :: Lens' ForeignLib [LegacyExeDependency] # buildToolDepends :: Lens' ForeignLib [ExeDependency] # cppOptions :: Lens' ForeignLib [String] # asmOptions :: Lens' ForeignLib [String] # cmmOptions :: Lens' ForeignLib [String] # ccOptions :: Lens' ForeignLib [String] # cxxOptions :: Lens' ForeignLib [String] # ldOptions :: Lens' ForeignLib [String] # pkgconfigDepends :: Lens' ForeignLib [PkgconfigDependency] # frameworks :: Lens' ForeignLib [String] # extraFrameworkDirs :: Lens' ForeignLib [String] # asmSources :: Lens' ForeignLib [FilePath] # cmmSources :: Lens' ForeignLib [FilePath] # cSources :: Lens' ForeignLib [FilePath] # cxxSources :: Lens' ForeignLib [FilePath] # jsSources :: Lens' ForeignLib [FilePath] # hsSourceDirs :: Lens' ForeignLib [FilePath] # otherModules :: Lens' ForeignLib [ModuleName] # virtualModules :: Lens' ForeignLib [ModuleName] # autogenModules :: Lens' ForeignLib [ModuleName] # defaultLanguage :: Lens' ForeignLib (Maybe Language) # otherLanguages :: Lens' ForeignLib [Language] # defaultExtensions :: Lens' ForeignLib [Extension] # otherExtensions :: Lens' ForeignLib [Extension] # oldExtensions :: Lens' ForeignLib [Extension] # extraLibs :: Lens' ForeignLib [String] # extraGHCiLibs :: Lens' ForeignLib [String] # extraBundledLibs :: Lens' ForeignLib [String] # extraLibFlavours :: Lens' ForeignLib [String] # extraLibDirs :: Lens' ForeignLib [String] # includeDirs :: Lens' ForeignLib [FilePath] # includes :: Lens' ForeignLib [FilePath] # installIncludes :: Lens' ForeignLib [FilePath] # options :: Lens' ForeignLib [(CompilerFlavor, [String])] # profOptions :: Lens' ForeignLib [(CompilerFlavor, [String])] # sharedOptions :: Lens' ForeignLib [(CompilerFlavor, [String])] # staticOptions :: Lens' ForeignLib [(CompilerFlavor, [String])] # customFieldsBI :: Lens' ForeignLib [(String, String)] # targetBuildDepends :: Lens' ForeignLib [Dependency] # mixins :: Lens' ForeignLib [Mixin] #
type Rep ForeignLib # |
Instance details Defined in Distribution.Types.ForeignLib type Rep ForeignLib = D1 (MetaData "ForeignLib" "Distribution.Types.ForeignLib" "Cabal-2.4.0.1" False) (C1 (MetaCons "ForeignLib" PrefixI True) ((S1 (MetaSel (Just "foreignLibName") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 UnqualComponentName) :*: (S1 (MetaSel (Just "foreignLibType") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 ForeignLibType) :*: S1 (MetaSel (Just "foreignLibOptions") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [ForeignLibOption]))) :*: ((S1 (MetaSel (Just "foreignLibBuildInfo") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 BuildInfo) :*: S1 (MetaSel (Just "foreignLibVersionInfo") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe LibVersionInfo))) :*: (S1 (MetaSel (Just "foreignLibVersionLinux") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Version)) :*: S1 (MetaSel (Just "foreignLibModDefFile") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [FilePath])))))

emptyForeignLib :: ForeignLib #

An empty foreign library.

foreignLibModules :: ForeignLib -> [ModuleName] #

Modules defined by a foreign library.

foreignLibIsShared :: ForeignLib -> Bool #

Is the foreign library shared?

foreignLibVersion :: ForeignLib -> OS -> [Int] #

Get a version number for a foreign library. If we're on Linux, and a Linux version is specified, use that. If we're on Linux, and libtool-style version-info is specified, translate that field into appropriate version numbers. Otherwise, this feature is unsupported so we don't return any version data.

data LibVersionInfo #

Instances

Eq LibVersionInfo # |
Instance details Defined in Distribution.Types.ForeignLib Methods (==) :: LibVersionInfo -> LibVersionInfo -> Bool # (/=) :: LibVersionInfo -> LibVersionInfo -> Bool #
Data LibVersionInfo # |
Instance details Defined in Distribution.Types.ForeignLib Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> LibVersionInfo -> c LibVersionInfo Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c LibVersionInfo Source # toConstr :: LibVersionInfo -> Constr Source # dataTypeOf :: LibVersionInfo -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c LibVersionInfo) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c LibVersionInfo) Source # gmapT :: (forall b. Data b => b -> b) -> LibVersionInfo -> LibVersionInfo Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> LibVersionInfo -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> LibVersionInfo -> r Source # gmapQ :: (forall d. Data d => d -> u) -> LibVersionInfo -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> LibVersionInfo -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> LibVersionInfo -> m LibVersionInfo Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> LibVersionInfo -> m LibVersionInfo Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> LibVersionInfo -> m LibVersionInfo Source #
Ord LibVersionInfo # |
Instance details Defined in Distribution.Types.ForeignLib Methods compare :: LibVersionInfo -> LibVersionInfo -> Ordering # (<) :: LibVersionInfo -> LibVersionInfo -> Bool # (<=) :: LibVersionInfo -> LibVersionInfo -> Bool # (>) :: LibVersionInfo -> LibVersionInfo -> Bool # (>=) :: LibVersionInfo -> LibVersionInfo -> Bool # max :: LibVersionInfo -> LibVersionInfo -> LibVersionInfo # min :: LibVersionInfo -> LibVersionInfo -> LibVersionInfo #
Read LibVersionInfo # |
Instance details Defined in Distribution.Types.ForeignLib Methods readsPrec :: Int -> ReadS LibVersionInfo Source # readList :: ReadS [LibVersionInfo] Source # readPrec :: ReadPrec LibVersionInfo Source # readListPrec :: ReadPrec [LibVersionInfo] Source #
Show LibVersionInfo # |
Instance details Defined in Distribution.Types.ForeignLib Methods showsPrec :: Int -> LibVersionInfo -> ShowS Source # show :: LibVersionInfo -> String Source # showList :: [LibVersionInfo] -> ShowS Source #
Generic LibVersionInfo # |
Instance details Defined in Distribution.Types.ForeignLib Associated Types type Rep LibVersionInfo :: Type -> Type Source # Methods from :: LibVersionInfo -> Rep LibVersionInfo x Source # to :: Rep LibVersionInfo x -> LibVersionInfo Source #
Binary LibVersionInfo # |
Instance details Defined in Distribution.Types.ForeignLib Methods put :: LibVersionInfo -> Put Source # get :: Get LibVersionInfo Source # putList :: [LibVersionInfo] -> Put Source #
NFData LibVersionInfo # |
Instance details Defined in Distribution.Types.ForeignLib Methods rnf :: LibVersionInfo -> () Source #
Pretty LibVersionInfo # |
Instance details Defined in Distribution.Types.ForeignLib Methods pretty :: LibVersionInfo -> Doc #
Parsec LibVersionInfo # |
Instance details Defined in Distribution.Types.ForeignLib Methods parsec :: CabalParsing m => m LibVersionInfo #
Text LibVersionInfo # |
Instance details Defined in Distribution.Types.ForeignLib Methods disp :: LibVersionInfo -> Doc # parse :: ReadP r LibVersionInfo #
type Rep LibVersionInfo # |
Instance details Defined in Distribution.Types.ForeignLib type Rep LibVersionInfo = D1 (MetaData "LibVersionInfo" "Distribution.Types.ForeignLib" "Cabal-2.4.0.1" False) (C1 (MetaCons "LibVersionInfo" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int) :*: (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int))))

mkLibVersionInfo :: (Int, Int, Int) -> LibVersionInfo #

Construct `LibVersionInfo` from `(current, revision, age)` numbers.

For instance, `mkLibVersionInfo (3,0,0)` constructs a `LibVersionInfo` representing the version-info `3:0:0`.

All version components must be non-negative.

libVersionInfoCRA :: LibVersionInfo -> (Int, Int, Int) #

From a given `LibVersionInfo`, extract the `(current, revision, age)` numbers.

libVersionNumber :: LibVersionInfo -> (Int, Int, Int) #

Given a version-info field, produce a `major.minor.build` version

libVersionNumberShow :: LibVersionInfo -> String #

Given a version-info field, return `"major.minor.build"` as a `String`

libVersionMajor :: LibVersionInfo -> Int #

Return the `major` version of a version-info field.