packages feed

base32-1.0: base32.cabal

cabal-version:      3.0
name:               base32
version:            1.0
synopsis:           Fast RFC 4648-compliant Base32 encoding
description:
  RFC 4648-compliant Base32 encodings and decodings.
  This library provides performant encoding and decoding primitives,
  as well as support for textual values.

homepage:           https://github.com/emilypi/base32
bug-reports:        https://github.com/emilypi/base32/issues
license:            BSD-3-Clause
license-file:       LICENSE
author:             Emily Pillmore
maintainer:         emilypi@cohomolo.gy
copyright:          (c) 2020-2026 Emily Pillmore
category:           Data
build-type:         Simple
extra-doc-files:
  CHANGELOG.md
  README.md
  MIGRATION-1.0.md

tested-with:
  GHC ==9.6.7 || ==9.8.4 || ==9.10.3 || ==9.12.4 || ==9.14.1

extra-source-files:
  cbits/base32_simd.h
  test/simd-native.c
  test/typecheck.sh

flag simd
  description:     Enable bundled SIMD kernels with portable scalar fallback
  default:         False
  manual:          True

source-repository head
  type:     git
  location: https://github.com/emilypi/base32.git

library
  exposed-modules:
    Data.Base32.Types
    Data.ByteString.Base32
    Data.ByteString.Base32.Hex
    Data.ByteString.Lazy.Base32
    Data.ByteString.Lazy.Base32.Hex
    Data.ByteString.Short.Base32
    Data.ByteString.Short.Base32.Hex
    Data.Text.Encoding.Base32
    Data.Text.Encoding.Base32.Error
    Data.Text.Encoding.Base32.Hex
    Data.Text.Lazy.Encoding.Base32
    Data.Text.Lazy.Encoding.Base32.Hex
    Data.Text.Short.Encoding.Base32
    Data.Text.Short.Encoding.Base32.Hex

    Data.ByteString.Base32.Internal.Short
    Data.ByteString.Base32.Internal.Head
    Data.ByteString.Base32.Internal.Loop
    Data.ByteString.Base32.Internal.Tables
    Data.ByteString.Base32.Internal.Tail
    Data.ByteString.Base32.Internal.Utils

  if flag(simd)
    exposed-modules: Data.ByteString.Base32.Internal.SIMD
    cpp-options:    -DBASE32_SIMD
    c-sources:      cbits/base32_simd.c
    include-dirs:   cbits
    cc-options:     -O2 -std=c99

  build-depends:
      base            >=4.18     && <4.23
    , bytestring      >=0.11     && <0.13
    , deepseq         >=1.4.4.0  && <1.6
    , primitive       >=0.6      && <0.10
    , text            >=2.0      && <2.3
    , text-short     ^>=0.1

  hs-source-dirs:   src
  default-language: Haskell2010
  ghc-options:      -Wall

test-suite base32-tests
  default-language: Haskell2010
  type:             exitcode-stdio-1.0
  hs-source-dirs:   test
  other-modules:    Internal
                    Regression
  main-is:          Main.hs
  ghc-options:      -Wall -threaded -rtsopts
  build-depends:
      base               >=4.18 && <4.23
    , base32
    , bytestring        >=0.11 && <0.13
    , deepseq
    , memory
    , QuickCheck
    , tasty
    , tasty-hunit
    , tasty-quickcheck
    , text              >=2.0
    , text-short

benchmark bench
  default-language: Haskell2010
  type:             exitcode-stdio-1.0
  hs-source-dirs:   benchmarks
  main-is:          Base32Bench.hs
  build-depends:
      base               >=4.18 && <4.23
    , base32
    , bytestring        >=0.11 && <0.13
    , criterion
    , deepseq
    , text              >=2.0
    , text-short

  if flag(simd)
    cpp-options:    -DBASE32_SIMD

  ghc-options:      -Wall -rtsopts