packages feed

ghcide-0.3.0: ghcide.cabal

cabal-version:      1.20
build-type:         Simple
category:           Development
name:               ghcide
version:            0.3.0
license:            Apache-2.0
license-file:       LICENSE
author:             Digital Asset and Ghcide contributors
maintainer:         Ghcide contributors
copyright:          Digital Asset and Ghcide contributors 2018-2020
synopsis:           The core of an IDE
description:
    A library for building Haskell IDE's on top of the GHC API.
homepage:           https://github.com/haskell/ghcide#readme
bug-reports:        https://github.com/haskell/ghcide/issues
tested-with:        GHC==8.6.5
extra-source-files: include/ghc-api-version.h README.md CHANGELOG.md
                    test/data/hover/*.hs
                    test/data/multi/cabal.project
                    test/data/multi/hie.yaml
                    test/data/multi/a/a.cabal
                    test/data/multi/a/*.hs
                    test/data/multi/b/b.cabal
                    test/data/multi/b/*.hs

source-repository head
    type:     git
    location: https://github.com/haskell/ghcide.git

flag ghc-lib
  description: build against ghc-lib instead of the ghc package
  default: False
  manual: True

library
    default-language:   Haskell2010
    build-depends:
        aeson,
        array,
        async,
        base == 4.*,
        binary,
        bytestring,
        containers,
        data-default,
        deepseq,
        directory,
        extra,
        fuzzy,
        filepath,
        haddock-library >= 1.8,
        hashable,
        haskell-lsp-types == 0.22.*,
        haskell-lsp == 0.22.*,
        mtl,
        network-uri,
        prettyprinter-ansi-terminal,
        prettyprinter-ansi-terminal,
        prettyprinter,
        regex-tdfa >= 1.3.1.0,
        rope-utf16-splay,
        safe,
        safe-exceptions,
        shake >= 0.18.4,
        sorted-list,
        stm,
        syb,
        text,
        time,
        transformers,
        unordered-containers >= 0.2.10.0,
        utf8-string,
        hslogger
    if flag(ghc-lib)
      build-depends:
        ghc-lib >= 8.8,
        ghc-lib-parser >= 8.8
      cpp-options: -DGHC_LIB
    else
      build-depends:
        ghc-boot-th,
        ghc-boot,
        ghc >= 8.4,
        -- These dependencies are used by Development.IDE.Session and are
        -- Haskell specific. So don't use them when building with -fghc-lib!
        ghc-check,
        ghc-paths,
        cryptohash-sha1 >=0.11.100 && <0.12,
        hie-bios == 0.6.*,
        base16-bytestring >=0.1.1 && <0.2
    if os(windows)
      build-depends:
        Win32
    else
      build-depends:
        unix
      c-sources:
        cbits/getmodtime.c

    default-extensions:
        BangPatterns
        DeriveFunctor
        DeriveGeneric
        GeneralizedNewtypeDeriving
        LambdaCase
        NamedFieldPuns
        OverloadedStrings
        RecordWildCards
        ScopedTypeVariables
        StandaloneDeriving
        TupleSections
        TypeApplications
        ViewPatterns

    hs-source-dirs:
        src
    include-dirs:
        include
    exposed-modules:
        Development.IDE.Compat
        Development.IDE.Core.Debouncer
        Development.IDE.Core.FileStore
        Development.IDE.Core.IdeConfiguration
        Development.IDE.Core.OfInterest
        Development.IDE.Core.PositionMapping
        Development.IDE.Core.Rules
        Development.IDE.Core.RuleTypes
        Development.IDE.Core.Service
        Development.IDE.Core.Shake
        Development.IDE.GHC.Compat
        Development.IDE.GHC.Error
        Development.IDE.GHC.Util
        Development.IDE.Import.DependencyInformation
        Development.IDE.LSP.HoverDefinition
        Development.IDE.LSP.LanguageServer
        Development.IDE.LSP.Outline
        Development.IDE.LSP.Protocol
        Development.IDE.LSP.Server
        Development.IDE.Spans.Common
        Development.IDE.Types.Diagnostics
        Development.IDE.Types.Location
        Development.IDE.Types.Logger
        Development.IDE.Types.Options
        Development.IDE.Plugin
        Development.IDE.Plugin.Completions
        Development.IDE.Plugin.CodeAction

    -- Unfortunately, we cannot use loadSession with ghc-lib since hie-bios uses
    -- the real GHC library and the types are incompatible. Furthermore, when
    -- building with ghc-lib we need to make this Haskell agnostic, so no
    -- hie-bios!
    -- We also put these modules into a separate hs-source-dirs so we can avoid
    -- compiling them at all if ghc-lib is not set
    if !flag(ghc-lib)
      hs-source-dirs:
        session-loader
      exposed-modules:
        Development.IDE.Session
      other-modules:
        Development.IDE.Session.VersionCheck
    other-modules:
        Development.IDE.Core.Compile
        Development.IDE.Core.Preprocessor
        Development.IDE.Core.FileExists
        Development.IDE.GHC.CPP
        Development.IDE.GHC.Orphans
        Development.IDE.GHC.Warnings
        Development.IDE.GHC.WithDynFlags
        Development.IDE.Import.FindImports
        Development.IDE.LSP.Notifications
        Development.IDE.Spans.AtPoint
        Development.IDE.Spans.Calculate
        Development.IDE.Spans.Documentation
        Development.IDE.Spans.Type
        Development.IDE.Plugin.CodeAction.PositionIndexed
        Development.IDE.Plugin.CodeAction.Rules
        Development.IDE.Plugin.CodeAction.RuleTypes
        Development.IDE.Plugin.Completions.Logic
        Development.IDE.Plugin.Completions.Types
    if (impl(ghc > 8.5) && impl(ghc < 8.7)) && !flag(ghc-lib)
      hs-source-dirs: src-ghc86
      other-modules:
        Development.IDE.GHC.HieAst
        Development.IDE.GHC.HieBin
        Development.IDE.GHC.HieTypes
        Development.IDE.GHC.HieDebug
        Development.IDE.GHC.HieUtils
    if (impl(ghc > 8.7) && impl(ghc < 8.10)) || flag(ghc-lib)
      hs-source-dirs: src-ghc88
      other-modules:
        Development.IDE.GHC.HieAst
        Development.IDE.GHC.HieBin
    if (impl(ghc > 8.9))
      hs-source-dirs: src-ghc810
      other-modules:
        Development.IDE.GHC.HieAst
        Development.IDE.GHC.HieBin
    ghc-options: -Wall -Wno-name-shadowing
    -- This is needed to prevent a GHC crash when building
    -- Development.IDE.Session with stack on 8.10.1 on Windows
    if (impl(ghc > 8.9) && os(windows))
      ghc-options: -fexternal-interpreter

executable ghcide-test-preprocessor
    default-language: Haskell2010
    hs-source-dirs: test/preprocessor
    ghc-options: -Wall -Wno-name-shadowing
    main-is: Main.hs
    build-depends:
        base == 4.*

benchmark benchHist
    type: exitcode-stdio-1.0
    default-language: Haskell2010
    ghc-options: -Wall -Wno-name-shadowing -threaded
    main-is: bench/hist/Main.hs
    build-tool-depends:
        ghcide:ghcide,
        ghcide:ghcide-bench
    default-extensions:
        BangPatterns
        DeriveFunctor
        DeriveGeneric
        GeneralizedNewtypeDeriving
        LambdaCase
        NamedFieldPuns
        OverloadedStrings
        RecordWildCards
        ScopedTypeVariables
        StandaloneDeriving
        TupleSections
        TypeApplications
        ViewPatterns

    build-depends:
        aeson,
        base == 4.*,
        Chart,
        Chart-diagrams,
        diagrams,
        diagrams-svg,
        directory,
        extra >= 1.7.2,
        filepath,
        shake,
        text,
        yaml

executable ghcide
    if flag(ghc-lib)
      buildable: False
    default-language:   Haskell2010
    hs-source-dirs:     exe
    ghc-options:
                -threaded
                -Wall
                -Wno-name-shadowing
                -- allow user RTS overrides
                -rtsopts
                -- disable idle GC
                -- disable parallel GC
                -- increase nursery size
                "-with-rtsopts=-I0 -qg -A128M"
    main-is: Main.hs
    build-depends:
        base == 4.*,
        data-default,
        directory,
        extra,
        filepath,
        gitrev,
        hashable,
        haskell-lsp,
        haskell-lsp-types,
        hie-bios >= 0.6.0 && < 0.7,
        ghcide,
        optparse-applicative,
        text,
        unordered-containers
    other-modules:
        Arguments
        Paths_ghcide

    default-extensions:
        BangPatterns
        DeriveFunctor
        DeriveGeneric
        GeneralizedNewtypeDeriving
        LambdaCase
        NamedFieldPuns
        OverloadedStrings
        RecordWildCards
        ScopedTypeVariables
        StandaloneDeriving
        TupleSections
        TypeApplications
        ViewPatterns

test-suite ghcide-tests
    if flag(ghc-lib)
      buildable: False
    type: exitcode-stdio-1.0
    default-language: Haskell2010
    build-tool-depends:
        ghcide:ghcide,
        ghcide:ghcide-test-preprocessor
    build-depends:
        aeson,
        base,
        binary,
        bytestring,
        containers,
        directory,
        extra,
        filepath,
        --------------------------------------------------------------
        -- The MIN_GHC_API_VERSION macro relies on MIN_VERSION pragmas
        -- which require depending on ghc. So the tests need to depend
        -- on ghc if they need to use MIN_GHC_API_VERSION. Maybe a
        -- better solution can be found, but this is a quick solution
        -- which works for now.
        ghc,
        --------------------------------------------------------------
        ghcide,
        ghc-typelits-knownnat,
        haddock-library,
        haskell-lsp,
        haskell-lsp-types,
        network-uri,
        lens,
        lsp-test >= 0.11.0.1 && < 0.12,
        optparse-applicative,
        process,
        QuickCheck,
        quickcheck-instances,
        rope-utf16-splay,
        safe,
        safe-exceptions,
        shake,
        tasty,
        tasty-expected-failure,
        tasty-hunit,
        tasty-quickcheck,
        tasty-rerun,
        text
    hs-source-dirs: test/cabal test/exe test/src bench/lib
    include-dirs: include
    ghc-options: -threaded -Wall -Wno-name-shadowing
    main-is: Main.hs
    other-modules:
        Development.IDE.Test
        Development.IDE.Test.Runfiles
        Experiments
    default-extensions:
        BangPatterns
        DeriveFunctor
        DeriveGeneric
        GeneralizedNewtypeDeriving
        LambdaCase
        NamedFieldPuns
        OverloadedStrings
        RecordWildCards
        ScopedTypeVariables
        StandaloneDeriving
        TupleSections
        TypeApplications
        ViewPatterns

executable ghcide-bench
    default-language: Haskell2010
    build-tool-depends:
        ghcide:ghcide
    build-depends:
        aeson,
        base,
        bytestring,
        containers,
        directory,
        extra,
        filepath,
        ghcide,
        lsp-test >= 0.11.0.2 && < 0.12,
        optparse-applicative,
        process,
        safe-exceptions
    hs-source-dirs: bench/lib bench/exe
    include-dirs: include
    ghc-options: -threaded -Wall -Wno-name-shadowing
    main-is: Main.hs
    other-modules:
        Experiments
    default-extensions:
        BangPatterns
        DeriveFunctor
        DeriveGeneric
        GeneralizedNewtypeDeriving
        LambdaCase
        NamedFieldPuns
        OverloadedStrings
        RecordWildCards
        ScopedTypeVariables
        StandaloneDeriving
        TupleSections
        TypeApplications
        ViewPatterns