mfmts-1.2.0.0: mfmts.cabal
cabal-version: 3.0
version: 1.2.0.0
name: mfmts
build-type: Simple
author: Zoey McBride
maintainer: zoeymcbride@mailbox.org
license: AGPL-3.0-or-later
license-file: LICENSE.txt
category: Hash, Codec, Protocol
synopsis: Implements multiformats specification
description:
Implments the multiformats specification used in IPFS and other distributed
systems.
extra-doc-files:
README.md
CHANGELOG.md
source-repository head {
type: git
location: https://git.sr.ht/~z0/mfmts
}
-- | Sets flag for CI build toggle
flag CI {
Description: CI Build options
Default: False
Manual: True
}
-- | Configures the Haskell toolchain for the library clause
common HaskellConfig {
default-language: GHC2021
default-extensions: StrictData
hs-source-dirs: cid varint multihash multibase multicodec
}
-- | These dependency versions are known to be compatable with mfmts
common DefaultVersions {
build-depends:
base >= 4.18 && < 5,
basesystems ^>= 1.2,
xcodec ^>= 1.1,
text >= 2.1 && < 2.2,
array ^>= 0.5,
bytestring ^>= 0.12,
containers >= 0.7 && < 0.8,
deepseq ^>= 1.4,
crypton ^>= 1.1,
ram >= 0.20.1 && < 0.23
}
-- | BuildUser: strict compilation + optimize for executable speed
common BuildUser {
import: DefaultVersions
ghc-options: -Wall -Wextra -Wno-unused-top-binds
}
-- | BuildCI: strict compilation + optimize for compile time
common BuildCI {
import: DefaultVersions
ghc-options: -Wall -Wextra -Werror -Wno-unused-top-binds
}
-- | Configures mfmts
library {
import: HaskellConfig
if flag(CI) { import: BuildCI }
else { import: BuildUser }
exposed-modules:
-- * Unsigned binary varints
MultiFormats.VarInt,
MultiFormats.VarInt.Errors,
-- * Multicodecs for identifying data in CID
MultiFormats.MultiCodec,
-- * Multibase for labeling identifying basesystems via prefix
-- for ShortByteString, LazyByteString, and strict ByteString
MultiFormats.MultiBase,
MultiFormats.MultiBase.Lazy,
MultiFormats.MultiBase.Strict,
-- * Data.BaseSystem.DigitSystems with prefix identifiers for MultiBase
MultiFormats.MultiBase.DigitSystems,
-- * Instance of Data.BaseSystem.DigitTranscoder for MultiBase
MultiFormats.MultiBase.DigitTranscoder,
-- * Associates various hash functions with their Mutlicodec identifier
MultiFormats.MultiHash,
-- * CID definitions
MultiFormats.CID,
MultiFormats.CID.Errors,
MultiFormats.CID.Constants,
-- * CID interfaces
MultiFormats.CID.Serializer,
MultiFormats.CID.Extractor,
MultiFormats.CID.Parser,
-- * Implements Extractors, Serializers, and Parsers for CID components
MultiFormats.CID.Component.Codec,
MultiFormats.CID.Component.Decoder,
MultiFormats.CID.Component.Hash,
MultiFormats.CID.Component.Version,
}