metabrush/brush-strokes/brush-strokes.cabal

374 lines
7.2 KiB
Plaintext
Raw Normal View History

2024-02-17 12:58:40 +00:00
cabal-version: 3.0
name: brush-strokes
version: 0.1.0.0
synopsis: Stroking brush paths
category: Calligraphy, Geometry, Graphics
license: BSD-3-Clause
homepage: https://gitlab.com/sheaf/MetaBrush
build-type: Simple
description:
Computing brush strokes using Bézier curves.
extra-source-files:
2024-08-28 22:26:19 +00:00
cbits/**/*.{S,c,h,cpp,hpp}
2024-08-01 19:36:44 +00:00
flag use-simd
description: Use SIMD instructions to implement interval arithmetic.
default: False
2024-08-01 19:36:44 +00:00
manual: True
2024-02-17 12:58:40 +00:00
flag use-fma
description: Use fused-muliply add instructions to implement interval arithmetic.
2024-08-01 19:36:44 +00:00
default: False
manual: True
2024-02-17 12:58:40 +00:00
flag asserts
description: Enable debugging assertions.
default: False
manual: True
2024-02-17 12:58:40 +00:00
common common
build-depends:
base
2024-05-23 09:17:36 +00:00
>= 4.17 && < 5.0
2024-04-22 20:11:07 +00:00
, code-page
^>= 0.2.1
2024-02-17 12:58:40 +00:00
, containers
>= 0.6.0.1 && < 0.8
2024-09-06 11:08:40 +00:00
, deepseq
>= 1.4.4.0 && < 1.6
, tree-view
^>= 0.5
2024-02-17 12:58:40 +00:00
default-extensions:
BangPatterns
BlockArguments
ConstraintKinds
DataKinds
DeriveAnyClass
DeriveTraversable
DeriveGeneric
DerivingVia
FlexibleContexts
FlexibleInstances
FunctionalDependencies
GADTs
GeneralisedNewtypeDeriving
InstanceSigs
LambdaCase
LexicalNegation
MagicHash
MultiWayIf
NamedFieldPuns
NoStarIsType
PatternSynonyms
RankNTypes
RecordWildCards
RoleAnnotations
StandaloneDeriving
StandaloneKindSignatures
TupleSections
TypeApplications
TypeFamilyDependencies
2024-02-17 12:58:40 +00:00
TypeOperators
UnboxedTuples
ViewPatterns
2024-04-22 20:11:07 +00:00
if impl(ghc >= 9.8)
default-extensions:
TypeAbstractions
2024-02-17 12:58:40 +00:00
ghc-options:
-O2
-fexpose-all-unfoldings
2024-04-22 20:11:07 +00:00
-- -funfolding-use-threshold=1000
2024-02-17 12:58:40 +00:00
-fspecialise-aggressively
-flate-dmd-anal
-fmax-worker-args=200
-optc-O3
-Wall
-Wcompat
-fwarn-missing-local-signatures
-fwarn-incomplete-patterns
-fwarn-incomplete-uni-patterns
-fwarn-missing-deriving-strategies
-fno-warn-unticked-promoted-constructors
if flag(use-fma)
cpp-options:
-DUSE_FMA
ghc-options:
-mfma
build-depends:
base
>= 4.19
2024-08-01 19:36:44 +00:00
if flag(use-simd)
cpp-options:
-DUSE_SIMD
ghc-options:
2024-08-28 22:26:19 +00:00
-mavx
2024-08-01 19:36:44 +00:00
if flag(asserts)
cpp-options:
-DASSERTS
2024-02-28 16:20:34 +00:00
common extra
build-depends:
acts
^>= 0.3.1.0
, generic-lens
>= 2.2 && < 2.3
, groups
^>= 0.5.3
2024-02-17 12:58:40 +00:00
library
import:
2024-02-28 16:20:34 +00:00
common, extra
2024-02-17 12:58:40 +00:00
hs-source-dirs:
2024-02-28 16:20:34 +00:00
src/lib
2024-02-17 12:58:40 +00:00
default-language:
Haskell2010
exposed-modules:
2024-02-23 16:03:28 +00:00
Calligraphy.Brushes
, Math.Algebra.Dual
2024-02-17 12:58:40 +00:00
, Math.Bezier.Cubic
, Math.Bezier.Cubic.Fit
, Math.Bezier.Quadratic
, Math.Bezier.Spline
, Math.Bezier.Stroke
, Math.Bezier.Stroke.EnvelopeEquation
, Math.Differentiable
, Math.Epsilon
, Math.Float.Utils
2024-02-17 12:58:40 +00:00
, Math.Interval
, Math.Linear
, Math.Linear.Solve
, Math.Module
, Math.Monomial
, Math.Orientation
, Math.Ring
, Math.Roots
, Math.Root.Isolation
, Math.Root.Isolation.Bisection
2024-04-22 20:11:07 +00:00
, Math.Root.Isolation.Core
, Math.Root.Isolation.Degree
, Math.Root.Isolation.Narrowing
, Math.Root.Isolation.Newton
, Math.Root.Isolation.Newton.GaussSeidel
, Math.Root.Isolation.Newton.LP
, Math.Root.Isolation.Utils
2024-02-17 12:58:40 +00:00
, Debug.Utils
other-modules:
Math.Algebra.Dual.Internal
, Math.Interval.Internal
, Math.Linear.Internal
, Math.Module.Internal
, TH.Utils
2024-08-01 19:36:44 +00:00
if flag(use-simd)
other-modules:
Math.Interval.Internal.SIMD
2024-09-06 11:08:40 +00:00
build-depends:
simd-interval
, ghc-prim
>= 0.11
2024-08-01 19:36:44 +00:00
if flag(use-fma) && !flag(use-simd)
other-modules:
Math.Interval.Internal.FMA
if !flag(use-fma) && !flag(use-simd)
2024-02-17 12:58:40 +00:00
other-modules:
2024-08-01 19:36:44 +00:00
Math.Interval.Internal.RoundedHW
2024-02-17 12:58:40 +00:00
build-depends:
2024-02-23 16:03:28 +00:00
template-haskell
2024-05-23 09:17:36 +00:00
>= 2.18 && < 3.0
2024-02-23 16:03:28 +00:00
, bifunctors
2024-02-17 12:58:40 +00:00
>= 5.5.4 && < 5.7
2024-02-23 16:03:28 +00:00
, directory
>= 1.3.7.1 && < 1.4
2024-02-17 12:58:40 +00:00
, eigen
^>= 3.3.7.0
2024-02-23 16:03:28 +00:00
, filepath
>= 1.4 && < 1.6
, fp-ieee
^>= 0.1.0.4
2024-02-23 16:03:28 +00:00
, groups-generic
^>= 0.3.1.0
2024-02-17 12:58:40 +00:00
, parallel
^>= 3.2.2.0
2024-02-23 16:03:28 +00:00
, primitive
^>= 0.9.0.0
, rounded-hw
^>= 0.4
, time
2024-08-28 22:26:19 +00:00
>= 1.12.2 && < 1.15
2024-02-23 16:03:28 +00:00
, transformers
>= 0.5.6.2 && < 0.7
include-dirs:
cbits
2024-08-28 22:26:19 +00:00
c-sources:
-- C code for: setting the rounding mode
cbits/rounding.c
cxx-sources:
2024-08-28 22:26:19 +00:00
-- Walter's C++ code for 2D linear systems of interval equations
cbits/lp_2d.cpp
cxx-options:
-std=c++20
2024-07-29 11:39:13 +00:00
-mavx2
-mfma
-frounding-math
-ffp-contract=off
-fno-math-errno
-fno-signed-zeros
-fno-trapping-math
-Wno-unused-result
-Wno-sign-compare
-Wno-switch
-march=native
-mtune=native
-O3 -DNDEBUG
build-depends:
system-cxx-std-lib
2024-09-06 11:08:40 +00:00
-- Separate library to implement interval arithmetic using SIMD,
-- to work around TH linking bugs:
--
-- - https://gitlab.haskell.org/ghc/ghc/-/issues/25240
-- - https://github.com/haskell/cabal/issues/5623
library simd-interval
import: common
hs-source-dirs:
src/simd-interval
exposed-modules:
Math.Interval.Internal.SIMD.Internal
include-dirs:
cbits
asm-sources:
-- X86 assembly for interval multiplication using SIMD instructions
cbits/mul.S
build-depends:
base
>= 4.20
-- 4.21
, deepseq
, ghc-prim
>= 0.11
2024-02-28 16:20:34 +00:00
--executable convert-metafont
--
-- import:
-- common
--
-- hs-source-dirs:
-- src/metafont
--
-- default-language:
-- Haskell2010
--
-- main-is:
-- Main.hs
--
-- other-modules:
-- Calligraphy.MetaFont.Convert
--
-- build-depends:
-- diagrams-contrib,
-- diagrams-lib,
-- linear,
-- parsec
executable inspect
import:
common, extra
hs-source-dirs:
src/cusps/inspect
default-language:
Haskell2010
main-is:
Main.hs
other-modules:
Math.Interval.Abstract
build-depends:
brush-strokes
, data-reify
2024-02-28 16:20:34 +00:00
^>= 0.6.3
test-suite tests
import:
common
type:
exitcode-stdio-1.0
hs-source-dirs:
src/test
default-language:
Haskell2010
main-is:
Main.hs
build-depends:
brush-strokes
, falsify
^>= 0.2
, hspray
^>= 0.1.3
, tasty
^>= 1.5
, unordered-containers
>= 0.2.15 && < 0.3
2024-02-23 16:03:28 +00:00
benchmark cusps
import:
common
hs-source-dirs:
2024-02-28 16:20:34 +00:00
src/cusps/bench
2024-02-23 16:03:28 +00:00
main-is:
Main.hs
2024-04-22 20:11:07 +00:00
other-modules:
Bench.Types
Bench.Cases
2024-02-23 16:03:28 +00:00
build-depends:
brush-strokes
, deepseq
2024-02-23 16:03:28 +00:00
type:
exitcode-stdio-1.0
default-language:
Haskell2010
ghc-options:
-threaded
-rtsopts