name:                inline-r
version:             0.9.1
license:             BSD3
license-file:        LICENSE
copyright:           Copyright (c) 2013-2015 Amgen, Inc.
                     Copyright (c) 2015-2017 Tweag I/O Limited.
author:              Mathieu Boespflug, Facundo Dominguez, Alexander Vershilov
maintainer:          Mathieu Boespflug <m@tweag.io>
cabal-version:       >=1.10
build-type:          Simple
Category:            FFI
Synopsis:            Seamlessly call R from Haskell and vice versa. No FFI required.
description:

  For up to date Haddock documentation, please see
  <http://www.stackage.org/package/inline-r>.

homepage:            https://tweag.github.io/HaskellR
cabal-version:       >=1.10

extra-source-files:   CHANGELOG.md
                      cbits/missing_r.h
                      tests/shootout/binarytrees.R
                      tests/shootout/fasta.R
                      tests/shootout/knucleotide.R
                      tests/shootout/fastaredux.R
                      tests/shootout/mandelbrot.R
                      tests/shootout/mandelbrot-noout.R
                      tests/shootout/nbody.R
                      tests/shootout/pidigits.R
                      tests/shootout/regexdna.R
                      tests/shootout/reversecomplement.R
                      tests/shootout/spectralnorm.R
                      tests/shootout/spectralnorm-math.R
                      tests/shootout/fannkuchredux.R
                      tests/R/fib.R
                      tests/R/fib-benchmark.R

source-repository head
  type:     git
  location: git://github.com/tweag/HaskellR.git
  subdir: inline-r

library
  exposed-modules:     Control.Memory.Region
                       Data.Vector.SEXP
                       Data.Vector.SEXP.Base
                       Data.Vector.SEXP.Mutable
                       Foreign.R
                       Foreign.R.Constraints
                       Foreign.R.Context
                       Foreign.R.Embedded
                       Foreign.R.Error
                       Foreign.R.Internal
                       Foreign.R.Parse
                       Foreign.R.Type
                       H.Prelude
                       H.Prelude.Interactive
                       Language.R
                       Language.R.Debug
                       Language.R.GC
                       Language.R.Globals
                       Language.R.HExp
                       Language.R.Instance
                       Language.R.Internal
                       Language.R.Internal.FunWrappers
                       Language.R.Internal.FunWrappers.TH
                       Language.R.Literal
                       Language.R.Matcher
                       Language.R.QQ
  if !os(windows)
    exposed-modules:   Foreign.R.EventLoop
                       Language.R.Event
  other-modules:       Control.Monad.R.Class
                       Control.Monad.R.Internal
                       Data.Vector.SEXP.Mutable.Internal
                       Internal.Error
  build-depends:       base >= 4.7 && < 5
                     , aeson >= 0.6
                     , bytestring >= 0.10
                     , containers >= 0.5
                     , data-default-class
                     , deepseq >= 1.3
                     , exceptions >= 0.6 && < 1.1
                     , mtl >= 2.1
                     , pretty >= 1.1
                     , primitive >= 0.5
                     , process >= 1.2
                     , reflection >= 2
                     , setenv >= 0.1.1
                     , singletons >= 0.9
                     , template-haskell >= 2.8
                     , text >= 0.11
                     , th-lift >= 0.6
                     , th-orphans >= 0.8
                     , transformers >= 0.3
                     , vector >= 0.10 && < 0.13
  if impl(ghc < 8.2.1)
    build-depends:
      inline-c >=0.5.6.1 && <0.6
    c-sources:
      src/Foreign/R.c
  else
    build-depends:
      inline-c >=0.6 && <0.7
  hs-source-dirs:      src
  includes:            cbits/missing_r.h
  c-sources:           cbits/missing_r.c
  include-dirs:        cbits
  default-language:    Haskell2010
  other-extensions:    CPP
                       ForeignFunctionInterface
  build-tools:         hsc2hs
  if os(windows)
    extra-libraries:   R
  else
    build-depends:     unix >= 2.6
    pkgconfig-depends: libR >= 3.0
  -- XXX -fcontext-stack=32 required on GHC >= 7.8 to allow foreign
  -- export function -wrappers of high arities.
  ghc-options:         -Wall -freduction-depth=32

test-suite tests
  main-is:             tests.hs
  type:                exitcode-stdio-1.0
  build-depends:       inline-r
                     , base >= 4.6 && < 5
                     , bytestring >= 0.10
                     , directory >= 1.2
                     , filepath >= 1.3
                     , ieee754 >= 0.7
                     , mtl >= 2.0
                     , process >= 1.2
                     , quickcheck-assertions >= 0.1.1
                     , singletons >= 0.10
                     , strict >= 0.3.2
                     , tasty >= 0.11
                     , tasty-expected-failure >= 0.11
                     , tasty-golden >= 2.3
                     , tasty-hunit >= 0.4.1
                     , tasty-quickcheck >= 0.4.1
                     , temporary >= 1.2
                     , text >= 0.11
                     , vector
  if !os(windows)
    build-depends:     unix >= 2.5
  other-modules:       Test.GC
                       Test.FunPtr
                       Test.Constraints
                       Test.Event
                       Test.Regions
                       Test.Vector
                       Test.Matcher
  -- Adding -j4 causes quasiquoters to be compiled concurrently
  -- in tests, which helps testing for race conditions when
  -- trying to initialize R from multiple threads.
  ghc-options:         -Wall -threaded -j4
  hs-source-dirs:      tests
  default-language:    Haskell2010

test-suite test-qq
  main-is:             test-qq.hs
  type:                exitcode-stdio-1.0
  build-depends:       inline-r
                     , base >= 4.6 && < 5
                     , mtl >= 2.0
                     , process >= 1.2
                     , tasty-hunit >= 0.4.1
                     , singletons >= 0.9
                     , text >= 0.11
  ghc-options:         -Wall -threaded
  hs-source-dirs:      tests
  default-language:    Haskell2010

test-suite test-shootout
  main-is:             test-shootout.hs
  type:                exitcode-stdio-1.0
  other-modules:       Test.Scripts
  build-depends:       inline-r
                     , base >= 4.6 && < 5
                     , filepath >= 1.3
                     , process >= 1.2
                     , silently >= 1.2
                     , tasty >= 0.3
                     , tasty-hunit >= 0.4.1
                     , template-haskell >= 2.8
  ghc-options:         -Wall -threaded -O0
  hs-source-dirs:      tests
  default-language:    Haskell2010
  if os(windows)
    buildable:         False

benchmark bench-qq
  main-is:             bench-qq.hs
  type:                exitcode-stdio-1.0
  build-depends:       inline-r
                     , base >= 4.6 && < 5
                     , criterion >= 0.8
                     , filepath >= 1.3
                     , process >= 1.2
                     , template-haskell >= 2.8
  ghc-options:         -Wall -threaded
  hs-source-dirs:      tests
  default-language:    Haskell2010

benchmark bench-hexp
  main-is:             bench-hexp.hs
  type:                exitcode-stdio-1.0
  build-depends:       inline-r
                     , base >= 4.6 && < 5
                     , criterion >= 0.8
                     , primitive >= 0.5
                     , vector >= 0.10
                     , singletons
  ghc-options:         -Wall -threaded
  hs-source-dirs:      tests
  default-language:    Haskell2010