haskell-language-server/haskell-language-server.cabal
Michael Peyton Jones 388fd40ade
Purge GHC 8.8 (#3287)
We're also dropping support for this.
2022-10-18 22:12:53 +01:00

633 lines
16 KiB
Plaintext

cabal-version: 3.0
category: Development
name: haskell-language-server
version: 1.8.0.0
synopsis: LSP server for GHC
description:
Please see the README on GitHub at <https://github.com/haskell/haskell-language-server#readme>
homepage: https://github.com/haskell/haskell-language-server#readme
bug-reports: https://github.com/haskell/haskell-language-server/issues
author: The Haskell IDE Team
maintainer: alan.zimm@gmail.com
copyright: The Haskell IDE Team
license: Apache-2.0
license-file: LICENSE
build-type: Simple
tested-with: GHC == 8.10.7 || == 9.0.2 || == 9.2.3 || == 9.2.4
extra-source-files:
README.md
ChangeLog.md
test/testdata/**/*.project
test/testdata/**/*.cabal
test/testdata/**/*.yaml
test/testdata/**/*.hs
bindist/wrapper.in
flag pedantic
description: Enable -Werror
default: False
manual: True
source-repository head
type: git
location: https://github.com/haskell/haskell-language-server
common common-deps
build-depends:
, base >=4.12 && <5
, directory
, extra
, filepath
, text
, prettyprinter
-- Default warnings in HLS
common warnings
ghc-options: -Wall -Wredundant-constraints -Wno-name-shadowing -Wno-unticked-promoted-constructors
-- Allow compiling in pedantic mode
common pedantic
if flag(pedantic)
ghc-options: -Werror
-- Plugin flags are designed for 'cabal install haskell-language-server':
-- - Bulk flags should be default:False
-- - Individual flags should be default:True
-- The intent of this flag is being able to keep the ghc condition for hackage
-- but skip it via flags in cabal.project as plugins for new ghcs usually
-- are buildable using cabal.project tweaks
flag ignore-plugins-ghc-bounds
description: Force the inclusion of plugins even if they are not buildable by default with a specific ghc version
default: False
manual: True
flag class
description: Enable class plugin
default: True
manual: True
flag callHierarchy
description: Enable call hierarchy plugin
default: True
manual: True
flag haddockComments
description: Enable haddockComments plugin
default: True
manual: True
flag eval
description: Enable eval plugin
default: True
manual: True
flag importLens
description: Enable importLens plugin
default: True
manual: True
flag refineImports
description: Enable refineImports plugin
default: True
manual: True
flag rename
description: Enable rename plugin
default: True
manual: True
flag retrie
description: Enable retrie plugin
default: True
manual: True
flag tactic
description: Enable tactic plugin
default: True
manual: True
flag hlint
description: Enable hlint plugin
default: True
manual: True
flag stan
description: Enable stan plugin
default: True
manual: True
flag moduleName
description: Enable moduleName plugin
default: True
manual: True
flag pragmas
description: Enable pragmas plugin
default: True
manual: True
flag splice
description: Enable splice plugin
default: True
manual: True
flag alternateNumberFormat
description: Enable Alternate Number Format plugin
default: True
manual: True
flag qualifyImportedNames
description: Enable qualifyImportedNames plugin
default: True
manual: True
flag codeRange
description: Enable Code Range plugin
default: True
manual: True
flag changeTypeSignature
description: Enable changeTypeSignature plugin
default: True
manual: True
flag gadt
description: Enable gadt plugin
default: True
manual: True
flag explicitFixity
description: Enable explicitFixity plugin
default: True
manual: True
-- formatters
flag floskell
description: Enable floskell plugin
default: True
manual: True
flag fourmolu
description: Enable fourmolu plugin
default: True
manual: True
flag ormolu
description: Enable ormolu plugin
default: True
manual: True
flag stylishHaskell
description: Enable stylishHaskell plugin
default: True
manual: True
flag brittany
description: Enable brittany plugin
default: True
manual: True
flag refactor
description: Enable refactor plugin
default: True
manual: True
flag dynamic
description: Build with the dyn rts
default: True
manual: True
common class
if flag(class)
build-depends: hls-class-plugin ^>= 1.1
cpp-options: -Dhls_class
common callHierarchy
if flag(callHierarchy)
build-depends: hls-call-hierarchy-plugin ^>= 1.1
cpp-options: -Dhls_callHierarchy
common haddockComments
if flag(haddockComments) && (impl(ghc < 9.2.1) || flag(ignore-plugins-ghc-bounds))
build-depends: hls-haddock-comments-plugin ^>= 1.1
cpp-options: -Dhls_haddockComments
common eval
if flag(eval) && (impl(ghc < 9.4.1) || flag(ignore-plugins-ghc-bounds))
build-depends: hls-eval-plugin ^>= 1.3
cpp-options: -Dhls_eval
common importLens
if flag(importLens)
build-depends: hls-explicit-imports-plugin ^>= 1.1
cpp-options: -Dhls_importLens
common refineImports
if flag(refineImports)
build-depends: hls-refine-imports-plugin ^>=1.0
cpp-options: -Dhls_refineImports
common rename
if flag(rename) && (impl(ghc < 9.4.1) || flag(ignore-plugins-ghc-bounds))
build-depends: hls-rename-plugin ^>= 1.0
cpp-options: -Dhls_rename
common retrie
if flag(retrie) && (impl(ghc < 9.4.1) || flag(ignore-plugins-ghc-bounds))
build-depends: hls-retrie-plugin ^>= 1.0
cpp-options: -Dhls_retrie
common tactic
if flag(tactic) && (impl(ghc < 9.2.1) || flag(ignore-plugins-ghc-bounds))
build-depends: hls-tactics-plugin ^>= 1.7
cpp-options: -Dhls_tactic
common hlint
if flag(hlint) && (impl(ghc < 9.4.1) || flag(ignore-plugins-ghc-bounds))
build-depends: hls-hlint-plugin ^>= 1.1
cpp-options: -Dhls_hlint
common stan
if flag(stan) && (impl(ghc >= 8.10) && impl(ghc < 9.0))
build-depends: hls-stan-plugin ^>= 1.0
cpp-options: -Dhls_stan
common moduleName
if flag(moduleName)
build-depends: hls-module-name-plugin ^>= 1.1
cpp-options: -Dhls_moduleName
common pragmas
if flag(pragmas)
build-depends: hls-pragmas-plugin ^>= 1.0
cpp-options: -Dhls_pragmas
common splice
if flag(splice) && (impl(ghc < 9.2.1) || flag(ignore-plugins-ghc-bounds))
build-depends: hls-splice-plugin ^>=1.0.0.1
cpp-options: -Dhls_splice
common alternateNumberFormat
if flag(alternateNumberFormat)
build-depends: hls-alternate-number-format-plugin ^>= 1.2
cpp-options: -Dhls_alternateNumberFormat
common qualifyImportedNames
if flag(qualifyImportedNames)
build-depends: hls-qualify-imported-names-plugin ^>=1.0
cpp-options: -Dhls_qualifyImportedNames
common codeRange
if flag(codeRange)
build-depends: hls-code-range-plugin ^>= 1.0
cpp-options: -Dhls_codeRange
common changeTypeSignature
if flag(changeTypeSignature)
build-depends: hls-change-type-signature-plugin ^>= 1.0
cpp-options: -Dhls_changeTypeSignature
common gadt
if flag(gadt) && (impl(ghc < 9.4.1) || flag(ignore-plugins-ghc-bounds))
build-depends: hls-gadt-plugin ^>= 1.0
cpp-options: -Dhls_gadt
common explicitFixity
if flag(explicitFixity)
build-depends: hls-explicit-fixity-plugin ^>= 1.0
cpp-options: -DexplicitFixity
-- formatters
common floskell
if flag(floskell) && (impl(ghc < 9.4.1) || flag(ignore-plugins-ghc-bounds))
build-depends: hls-floskell-plugin ^>= 1.0
cpp-options: -Dhls_floskell
common fourmolu
if flag(fourmolu) && (impl(ghc < 9.4.1) || flag(ignore-plugins-ghc-bounds))
build-depends: hls-fourmolu-plugin ^>= 1.1
cpp-options: -Dhls_fourmolu
common ormolu
if flag(ormolu) && (impl(ghc < 9.4.1) || flag(ignore-plugins-ghc-bounds))
build-depends: hls-ormolu-plugin ^>= 1.0
cpp-options: -Dhls_ormolu
common stylishHaskell
if flag(stylishHaskell) && (impl(ghc < 9.4.1) || flag(ignore-plugins-ghc-bounds))
build-depends: hls-stylish-haskell-plugin ^>= 1.0
cpp-options: -Dhls_stylishHaskell
common brittany
if flag(brittany) && (impl(ghc < 9.0.2) || flag(ignore-plugins-ghc-bounds))
build-depends: hls-brittany-plugin ^>= 1.0
cpp-options: -Dhls_brittany
common refactor
if flag(refactor) && (impl(ghc < 9.4.1) || flag(ignore-plugins-ghc-bounds))
build-depends: hls-refactor-plugin ^>= 1.0
cpp-options: -Dhls_refactor
library
import: common-deps
-- configuration
, warnings
, pedantic
-- plugins
, callHierarchy
, changeTypeSignature
, class
, haddockComments
, eval
, importLens
, refineImports
, rename
, retrie
, tactic
, hlint
, stan
, moduleName
, pragmas
, splice
, alternateNumberFormat
, qualifyImportedNames
, codeRange
, gadt
, explicitFixity
, floskell
, fourmolu
, ormolu
, stylishHaskell
, brittany
, refactor
exposed-modules:
Ide.Arguments
Ide.Main
Ide.Version
HlsPlugins
other-modules: Paths_haskell_language_server
autogen-modules: Paths_haskell_language_server
hs-source-dirs: src
build-depends:
, async
, base16-bytestring
, bytestring
, containers
, cryptohash-sha1
, data-default
, ghc
, ghcide ^>=1.8
, githash >=0.1.6.1
, lsp
, hie-bios
, hiedb
, hls-plugin-api ^>=1.5
, optparse-applicative
, optparse-simple
, process
, hls-graph
, safe-exceptions
, sqlite-simple
, unordered-containers
, aeson-pretty
default-language: Haskell2010
default-extensions: DataKinds, TypeOperators
executable haskell-language-server
import: common-deps
-- configuration
, warnings
, pedantic
main-is: Main.hs
hs-source-dirs: exe
ghc-options:
-threaded
-- allow user RTS overrides
-rtsopts
-- disable idle GC
-- increase nursery size
-- Enable collection of heap statistics
"-with-rtsopts=-I0 -A128M -T"
-Wno-unticked-promoted-constructors
if flag(pedantic)
ghc-options: -Werror
if !os(windows) && flag(dynamic)
-- We want to link against the dyn rts just like official GHC binaries do;
-- the linked rts determines how external libs are loaded dynamically by TH.
-- The standard way of doing this is via the --enable-dynamic-executables Cabal option
-- Unfortunately it doesnt' work, see https://github.com/haskell/haskell-language-server/issues/2659
-- One can use --ghc-options=-dynamic but this gets applied to the dependencies as well,
-- which results in massive rebuilds and incompatibilities with profiling.
-- So instead we set the -dynamic flag diretly here.
ghc-options: -dynamic
build-depends:
, aeson
, async
, base16-bytestring
, binary
, bytestring
, containers
, cryptohash-sha1
, deepseq
, ghc
, ghc-boot-th
, ghcide
, hashable
, haskell-language-server
, lsp
, hie-bios
, hiedb
, lens
, regex-tdfa
, optparse-applicative
, hls-plugin-api
, lens
, mtl
, regex-tdfa
, safe-exceptions
, hls-graph
, sqlite-simple
, stm
, temporary
, transformers
, unordered-containers
default-language: Haskell2010
default-extensions: DataKinds, TypeOperators
executable haskell-language-server-wrapper
import: common-deps
, warnings
, pedantic
main-is: Wrapper.hs
hs-source-dirs: exe
other-modules: Paths_haskell_language_server
autogen-modules: Paths_haskell_language_server
ghc-options:
-threaded
-- allow user RTS overrides
-rtsopts
-- disable idle GC
-- increase nursery size
"-with-rtsopts=-I0 -A128M"
build-depends:
, data-default
, ghc
, ghc-paths
, ghcide
, gitrev
, haskell-language-server
, hslogger
, hie-bios
, hls-plugin-api
, lsp
, lsp-types
, mtl
, optparse-applicative
, optparse-simple
, process
, transformers
, unliftio-core
if !os(windows)
build-depends:
unix
, containers
default-language: Haskell2010
test-suite func-test
import: common-deps
, warnings
, pedantic
, refactor
type: exitcode-stdio-1.0
default-language: Haskell2010
build-tool-depends:
haskell-language-server:haskell-language-server -any,
ghcide:ghcide-test-preprocessor -any
build-depends:
, bytestring
, data-default
, hspec-expectations
, lens
, lens-aeson
, ghcide
, ghcide-test-utils
, hls-test-utils ^>=1.4
, lsp-types
, aeson
, hls-plugin-api
, lsp-test
, containers
, unordered-containers
hs-source-dirs: test/functional test/utils
main-is: Main.hs
other-modules:
Command
Completion
Config
Deferred
Definition
Diagnostic
Format
FunctionalBadProject
FunctionalCodeAction
HieBios
Highlight
Progress
Reference
Symbol
TypeDefinition
Test.Hls.Command
Test.Hls.Flags
default-extensions: OverloadedStrings
ghc-options:
-threaded -rtsopts -with-rtsopts=-N
-- Duplicating inclusion plugin conditions until tests are moved to their own packages
if flag(eval)
cpp-options: -Dhls_eval
-- formatters
if flag(floskell) && (impl(ghc < 9.2.1) || flag(ignore-plugins-ghc-bounds))
cpp-options: -Dhls_floskell
if flag(fourmolu)
cpp-options: -Dhls_fourmolu
if flag(ormolu)
cpp-options: -Dhls_ormolu
test-suite wrapper-test
import: common-deps
, warnings
, pedantic
type: exitcode-stdio-1.0
build-tool-depends:
haskell-language-server:haskell-language-server-wrapper -any,
haskell-language-server:haskell-language-server -any
default-language: Haskell2010
build-depends:
process
, hls-test-utils
hs-source-dirs: test/wrapper
main-is: Main.hs
benchmark benchmark
type: exitcode-stdio-1.0
default-language: Haskell2010
ghc-options: -Wall -Wno-name-shadowing -threaded
main-is: Main.hs
hs-source-dirs: bench
build-tool-depends:
ghcide-bench:ghcide-bench,
hp2pretty:hp2pretty,
implicit-hie:gen-hie
default-extensions:
BangPatterns
DeriveFunctor
DeriveGeneric
FlexibleContexts
GeneralizedNewtypeDeriving
LambdaCase
NamedFieldPuns
RecordWildCards
ScopedTypeVariables
StandaloneDeriving
TupleSections
TypeApplications
ViewPatterns
build-depends:
aeson,
base == 4.*,
containers,
data-default,
directory,
extra,
filepath,
ghcide-bench,
haskell-language-server,
hls-plugin-api,
lens,
lens-aeson,
optparse-applicative,
shake,
shake-bench == 0.1.*,
text,
yaml