Distribution.Types.ForeignLib

Cabal-3.0.1.0: 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 Source #

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

Instances details

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 :: forall r r'. (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 Source # buildable :: Lens' ForeignLib Bool Source # buildTools :: Lens' ForeignLib [LegacyExeDependency] Source # buildToolDepends :: Lens' ForeignLib [ExeDependency] Source # cppOptions :: Lens' ForeignLib [String] Source # asmOptions :: Lens' ForeignLib [String] Source # cmmOptions :: Lens' ForeignLib [String] Source # ccOptions :: Lens' ForeignLib [String] Source # cxxOptions :: Lens' ForeignLib [String] Source # ldOptions :: Lens' ForeignLib [String] Source # pkgconfigDepends :: Lens' ForeignLib [PkgconfigDependency] Source # frameworks :: Lens' ForeignLib [String] Source # extraFrameworkDirs :: Lens' ForeignLib [String] Source # asmSources :: Lens' ForeignLib [FilePath] Source # cmmSources :: Lens' ForeignLib [FilePath] Source # cSources :: Lens' ForeignLib [FilePath] Source # cxxSources :: Lens' ForeignLib [FilePath] Source # jsSources :: Lens' ForeignLib [FilePath] Source # hsSourceDirs :: Lens' ForeignLib [FilePath] Source # otherModules :: Lens' ForeignLib [ModuleName] Source # virtualModules :: Lens' ForeignLib [ModuleName] Source # autogenModules :: Lens' ForeignLib [ModuleName] Source # defaultLanguage :: Lens' ForeignLib (Maybe Language) Source # otherLanguages :: Lens' ForeignLib [Language] Source # defaultExtensions :: Lens' ForeignLib [Extension] Source # otherExtensions :: Lens' ForeignLib [Extension] Source # oldExtensions :: Lens' ForeignLib [Extension] Source # extraLibs :: Lens' ForeignLib [String] Source # extraGHCiLibs :: Lens' ForeignLib [String] Source # extraBundledLibs :: Lens' ForeignLib [String] Source # extraLibFlavours :: Lens' ForeignLib [String] Source # extraDynLibFlavours :: Lens' ForeignLib [String] Source # extraLibDirs :: Lens' ForeignLib [String] Source # includeDirs :: Lens' ForeignLib [FilePath] Source # includes :: Lens' ForeignLib [FilePath] Source # autogenIncludes :: Lens' ForeignLib [FilePath] Source # installIncludes :: Lens' ForeignLib [FilePath] Source # options :: Lens' ForeignLib (PerCompilerFlavor [String]) Source # profOptions :: Lens' ForeignLib (PerCompilerFlavor [String]) Source # sharedOptions :: Lens' ForeignLib (PerCompilerFlavor [String]) Source # staticOptions :: Lens' ForeignLib (PerCompilerFlavor [String]) Source # customFieldsBI :: Lens' ForeignLib [(String, String)] Source # targetBuildDepends :: Lens' ForeignLib [Dependency] Source # mixins :: Lens' ForeignLib [Mixin] Source #
type Rep ForeignLib # |
Instance details Defined in Distribution.Types.ForeignLib type Rep ForeignLib = D1 ('MetaData "ForeignLib" "Distribution.Types.ForeignLib" "Cabal-3.0.1.0" '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 Source #

An empty foreign library.

foreignLibModules :: ForeignLib -> [ModuleName] Source #

Modules defined by a foreign library.

foreignLibIsShared :: ForeignLib -> Bool Source #

Is the foreign library shared?

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

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 Source #

#### Instances

Instances details

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 :: forall r r'. (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 Source # prettyVersioned :: CabalSpecVersion -> LibVersionInfo -> Doc Source #
Parsec LibVersionInfo # |
Instance details Defined in Distribution.Types.ForeignLib Methods parsec :: CabalParsing m => m LibVersionInfo Source #
type Rep LibVersionInfo # |
Instance details Defined in Distribution.Types.ForeignLib type Rep LibVersionInfo = D1 ('MetaData "LibVersionInfo" "Distribution.Types.ForeignLib" "Cabal-3.0.1.0" '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 Source #

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) Source #

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

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

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

libVersionNumberShow :: LibVersionInfo -> String Source #

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

libVersionMajor :: LibVersionInfo -> Int Source #

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