diff options
| author | Daniel Gröber <dxld@darkboxed.org> | 2017-09-18 01:23:22 +0200 | 
|---|---|---|
| committer | Daniel Gröber <dxld@darkboxed.org> | 2017-09-18 01:35:40 +0200 | 
| commit | f864a5eae8262752162c6b0d124aea4601ed9ac1 (patch) | |
| tree | 1b765d25741b6e47d4ad458c8041c0881dd353b8 /CabalHelper/Shared/Types.hs | |
| parent | 70d743eb6a8b7f8da182524fa0b2c4bf02399d50 (diff) | |
Fix literally everything :)
Sorry for the megacommit
- Seperate modules into:
  - Compiletime, modules which are only used while building the package
  - Runtime, modues included in the wrapper binary to be compiled on the
    users machine at runtime
  - Shared, modues used in both contexts
- Refactor runtime compilation
  - Completely revamp output paths
  - Don't chdir when invoking ghc
- Require cabal-version 1.14 in cabal file
Diffstat (limited to 'CabalHelper/Shared/Types.hs')
| -rw-r--r-- | CabalHelper/Shared/Types.hs | 73 | 
1 files changed, 73 insertions, 0 deletions
| diff --git a/CabalHelper/Shared/Types.hs b/CabalHelper/Shared/Types.hs new file mode 100644 index 0000000..18d532b --- /dev/null +++ b/CabalHelper/Shared/Types.hs @@ -0,0 +1,73 @@ +-- cabal-helper: Simple interface to Cabal's configuration state +-- Copyright (C) 2015  Daniel Gröber <dxld ÄT darkboxed DOT org> +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU Affero General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +-- GNU Affero General Public License for more details. +-- +-- You should have received a copy of the GNU Affero General Public License +-- along with this program.  If not, see <http://www.gnu.org/licenses/>. + +{-# LANGUAGE DeriveGeneric, DeriveDataTypeable, DefaultSignatures #-} +module CabalHelper.Shared.Types where + +import GHC.Generics +import Data.Version + +newtype ChModuleName = ChModuleName String +    deriving (Eq, Ord, Read, Show, Generic) + +data ChComponentName = ChSetupHsName +                     | ChLibName +                     | ChSubLibName String +                     | ChFLibName String +                     | ChExeName String +                     | ChTestName String +                     | ChBenchName String +  deriving (Eq, Ord, Read, Show, Generic) + +data ChResponse +    = ChResponseCompList    [(ChComponentName, [String])] +    | ChResponseEntrypoints [(ChComponentName, ChEntrypoint)] +    | ChResponseList        [String] +    | ChResponsePkgDbs      [ChPkgDb] +    | ChResponseLbi         String +    | ChResponseVersion     String Version +    | ChResponseLicenses    [(String, [(String, Version)])] +    | ChResponseFlags       [(String, Bool)] +  deriving (Eq, Ord, Read, Show, Generic) + +data ChEntrypoint = ChSetupEntrypoint -- ^ Almost like 'ChExeEntrypoint' but +                                      -- @main-is@ could either be @"Setup.hs"@ +                                      -- or @"Setup.lhs"@. Since we don't know +                                      -- where the source directory is you have +                                      -- to find these files. +                  | ChLibEntrypoint { chExposedModules :: [ChModuleName] +                                    , chOtherModules   :: [ChModuleName] +                                    } +                  | ChExeEntrypoint { chMainIs         :: FilePath +                                    , chOtherModules   :: [ChModuleName] +                                    } deriving (Eq, Ord, Read, Show, Generic) + +data ChPkgDb = ChPkgGlobal +             | ChPkgUser +             | ChPkgSpecific FilePath +               deriving (Eq, Ord, Read, Show, Generic) + +data Options = Options { +          verbose       :: Bool +        , ghcProgram    :: FilePath +        , ghcPkgProgram :: FilePath +        , cabalProgram  :: FilePath +        , cabalVersion  :: Maybe Version +        , cabalPkgDb    :: Maybe FilePath +} + +defaultOptions :: Options +defaultOptions = Options False "ghc" "ghc-pkg" "cabal" Nothing Nothing | 
