cabal-version: 3.0

name: oplang
version: 0.3.0.0
synopsis: Stack-based esoteric programming language
description: Please see the README on GitHub at <https://github.com/aionescu/oplang#readme>
homepage: https://github.com/aionescu/oplang#readme
bug-reports: https://github.com/aionescu/oplang/issues
license: GPL-3.0-only
license-file: LICENSE.txt
author: Alex Ionescu
maintainer: alxi.2001@gmail.com
copyright: Copyright (C) 2019-2022 Alex Ionescu
category: Compilers/Interpreters, Language
build-type: Simple

extra-source-files:
  CHANGELOG.md
  README.md

source-repository head
  type: git
  location: https://github.com/aionescu/oplang

executable oplang
  main-is: Main.hs

  other-modules:
    Language.OpLang.Codegen
    Language.OpLang.CompT
    Language.OpLang.IR
    Language.OpLang.Optimize
    Language.OpLang.Parse
    Language.OpLang.Validate
    Opts

  hs-source-dirs: src

  build-depends:
    base >=4.14 && <5
    , containers ^>= 0.6.5
    , directory ^>= 1.3.7
    , filepath ^>= 1.4.2
    , megaparsec ^>= 9.2
    , mtl ^>= 2.3
    , optparse-applicative ^>= 0.17
    , process ^>= 1.6.14
    , text ^>= 2
    , text-builder-linear ^>= 0.1
    , transformers ^>= 0.6

  ghc-options:
    -threaded
    -rtsopts
    -with-rtsopts=-N
    -Wall
    -Wcompat
    -Wincomplete-uni-patterns
    -Wprepositive-qualified-module
    -Wmissing-deriving-strategies
    -Wunused-packages
    -Widentities
    -Wredundant-constraints
    -Wunticked-promoted-constructors
    -Wpartial-fields
    -Wmissing-exported-signatures
    -Wno-name-shadowing

  default-extensions:
    ApplicativeDo
    BangPatterns
    BlockArguments
    ConstraintKinds
    DataKinds
    DefaultSignatures
    DeriveAnyClass
    DeriveFoldable
    DeriveFunctor
    DeriveGeneric
    DeriveLift
    DeriveTraversable
    DerivingStrategies
    DerivingVia
    EmptyCase
    ExistentialQuantification
    FlexibleContexts
    FlexibleInstances
    FunctionalDependencies
    GADTs
    GeneralizedNewtypeDeriving
    ImportQualifiedPost
    InstanceSigs
    KindSignatures
    LambdaCase
    MagicHash
    MultiParamTypeClasses
    MultiWayIf
    NamedFieldPuns
    NegativeLiterals
    NoMonomorphismRestriction
    NoStarIsType
    OverloadedStrings
    PartialTypeSignatures
    PatternSynonyms
    RankNTypes
    RecordWildCards
    RecursiveDo
    ScopedTypeVariables
    StandaloneDeriving
    TupleSections
    TypeApplications
    TypeFamilies
    TypeFamilyDependencies
    TypeOperators
    UnboxedTuples
    UndecidableInstances
    ViewPatterns

  default-language: Haskell2010