{-# LANGUAGE DataKinds #-}

module Distribution.Types.BuildInfo.Lens
  ( BuildInfo
  , HasBuildInfo (..)
  , HasBuildInfos (..)
  ) where

import Distribution.Compat.Lens
import Distribution.Compat.Prelude
import Prelude ()

import Distribution.Compiler (PerCompilerFlavor)
import Distribution.ModuleName (ModuleName)
import Distribution.Types.BuildInfo (BuildInfo)
import Distribution.Types.Dependency (Dependency)
import Distribution.Types.ExeDependency (ExeDependency)
import Distribution.Types.LegacyExeDependency (LegacyExeDependency)
import Distribution.Types.Mixin (Mixin)
import Distribution.Types.PkgconfigDependency (PkgconfigDependency)
import Distribution.Utils.Path
import Language.Haskell.Extension (Extension, Language)

import qualified Distribution.Types.BuildInfo as T

-- | Classy lenses for 'BuildInfo'.
class HasBuildInfo a where
  buildInfo :: Lens' a BuildInfo

  buildable :: Lens' a Bool
  buildable = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> ((Bool -> f Bool) -> BuildInfo -> f BuildInfo)
-> (Bool -> f Bool)
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> f Bool) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a Bool
Lens' BuildInfo Bool
buildable
  {-# INLINE buildable #-}

  buildTools :: Lens' a [LegacyExeDependency]
  buildTools = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([LegacyExeDependency] -> f [LegacyExeDependency])
    -> BuildInfo -> f BuildInfo)
-> ([LegacyExeDependency] -> f [LegacyExeDependency])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([LegacyExeDependency] -> f [LegacyExeDependency])
-> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [LegacyExeDependency]
Lens' BuildInfo [LegacyExeDependency]
buildTools
  {-# INLINE buildTools #-}

  buildToolDepends :: Lens' a [ExeDependency]
  buildToolDepends = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([ExeDependency] -> f [ExeDependency])
    -> BuildInfo -> f BuildInfo)
-> ([ExeDependency] -> f [ExeDependency])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([ExeDependency] -> f [ExeDependency]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [ExeDependency]
Lens' BuildInfo [ExeDependency]
buildToolDepends
  {-# INLINE buildToolDepends #-}

  cppOptions :: Lens' a [String]
  cppOptions = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([String] -> f [String]) -> BuildInfo -> f BuildInfo)
-> ([String] -> f [String])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([String] -> f [String]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [String]
Lens' BuildInfo [String]
cppOptions
  {-# INLINE cppOptions #-}

  asmOptions :: Lens' a [String]
  asmOptions = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([String] -> f [String]) -> BuildInfo -> f BuildInfo)
-> ([String] -> f [String])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([String] -> f [String]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [String]
Lens' BuildInfo [String]
asmOptions
  {-# INLINE asmOptions #-}

  cmmOptions :: Lens' a [String]
  cmmOptions = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([String] -> f [String]) -> BuildInfo -> f BuildInfo)
-> ([String] -> f [String])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([String] -> f [String]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [String]
Lens' BuildInfo [String]
cmmOptions
  {-# INLINE cmmOptions #-}

  ccOptions :: Lens' a [String]
  ccOptions = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([String] -> f [String]) -> BuildInfo -> f BuildInfo)
-> ([String] -> f [String])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([String] -> f [String]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [String]
Lens' BuildInfo [String]
ccOptions
  {-# INLINE ccOptions #-}

  cxxOptions :: Lens' a [String]
  cxxOptions = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([String] -> f [String]) -> BuildInfo -> f BuildInfo)
-> ([String] -> f [String])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([String] -> f [String]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [String]
Lens' BuildInfo [String]
cxxOptions
  {-# INLINE cxxOptions #-}

  ldOptions :: Lens' a [String]
  ldOptions = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([String] -> f [String]) -> BuildInfo -> f BuildInfo)
-> ([String] -> f [String])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([String] -> f [String]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [String]
Lens' BuildInfo [String]
ldOptions
  {-# INLINE ldOptions #-}

  hsc2hsOptions :: Lens' a [String]
  hsc2hsOptions = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([String] -> f [String]) -> BuildInfo -> f BuildInfo)
-> ([String] -> f [String])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([String] -> f [String]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [String]
Lens' BuildInfo [String]
hsc2hsOptions
  {-# INLINE hsc2hsOptions #-}

  pkgconfigDepends :: Lens' a [PkgconfigDependency]
  pkgconfigDepends = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([PkgconfigDependency] -> f [PkgconfigDependency])
    -> BuildInfo -> f BuildInfo)
-> ([PkgconfigDependency] -> f [PkgconfigDependency])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([PkgconfigDependency] -> f [PkgconfigDependency])
-> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [PkgconfigDependency]
Lens' BuildInfo [PkgconfigDependency]
pkgconfigDepends
  {-# INLINE pkgconfigDepends #-}

  frameworks :: Lens' a [RelativePath Framework File]
  frameworks = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([RelativePath Framework 'File]
     -> f [RelativePath Framework 'File])
    -> BuildInfo -> f BuildInfo)
-> ([RelativePath Framework 'File]
    -> f [RelativePath Framework 'File])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([RelativePath Framework 'File]
 -> f [RelativePath Framework 'File])
-> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [RelativePath Framework 'File]
Lens' BuildInfo [RelativePath Framework 'File]
frameworks
  {-# INLINE frameworks #-}

  extraFrameworkDirs :: Lens' a [SymbolicPath Pkg (Dir Framework)]
  extraFrameworkDirs = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([SymbolicPath Pkg ('Dir Framework)]
     -> f [SymbolicPath Pkg ('Dir Framework)])
    -> BuildInfo -> f BuildInfo)
-> ([SymbolicPath Pkg ('Dir Framework)]
    -> f [SymbolicPath Pkg ('Dir Framework)])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([SymbolicPath Pkg ('Dir Framework)]
 -> f [SymbolicPath Pkg ('Dir Framework)])
-> BuildInfo -> f BuildInfo
forall a.
HasBuildInfo a =>
Lens' a [SymbolicPath Pkg ('Dir Framework)]
Lens' BuildInfo [SymbolicPath Pkg ('Dir Framework)]
extraFrameworkDirs
  {-# INLINE extraFrameworkDirs #-}

  asmSources :: Lens' a [SymbolicPath Pkg File]
  asmSources = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File])
    -> BuildInfo -> f BuildInfo)
-> ([SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File])
-> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [SymbolicPath Pkg 'File]
Lens' BuildInfo [SymbolicPath Pkg 'File]
asmSources
  {-# INLINE asmSources #-}

  cmmSources :: Lens' a [SymbolicPath Pkg File]
  cmmSources = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File])
    -> BuildInfo -> f BuildInfo)
-> ([SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File])
-> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [SymbolicPath Pkg 'File]
Lens' BuildInfo [SymbolicPath Pkg 'File]
cmmSources
  {-# INLINE cmmSources #-}

  cSources :: Lens' a [SymbolicPath Pkg File]
  cSources = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File])
    -> BuildInfo -> f BuildInfo)
-> ([SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File])
-> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [SymbolicPath Pkg 'File]
Lens' BuildInfo [SymbolicPath Pkg 'File]
cSources
  {-# INLINE cSources #-}

  cxxSources :: Lens' a [SymbolicPath Pkg File]
  cxxSources = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File])
    -> BuildInfo -> f BuildInfo)
-> ([SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File])
-> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [SymbolicPath Pkg 'File]
Lens' BuildInfo [SymbolicPath Pkg 'File]
cxxSources
  {-# INLINE cxxSources #-}

  jsSources :: Lens' a [SymbolicPath Pkg File]
  jsSources = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File])
    -> BuildInfo -> f BuildInfo)
-> ([SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File])
-> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [SymbolicPath Pkg 'File]
Lens' BuildInfo [SymbolicPath Pkg 'File]
jsSources
  {-# INLINE jsSources #-}

  hsSourceDirs :: Lens' a [SymbolicPath Pkg (Dir Source)]
  hsSourceDirs = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([SymbolicPath Pkg ('Dir Source)]
     -> f [SymbolicPath Pkg ('Dir Source)])
    -> BuildInfo -> f BuildInfo)
-> ([SymbolicPath Pkg ('Dir Source)]
    -> f [SymbolicPath Pkg ('Dir Source)])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([SymbolicPath Pkg ('Dir Source)]
 -> f [SymbolicPath Pkg ('Dir Source)])
-> BuildInfo -> f BuildInfo
forall a.
HasBuildInfo a =>
Lens' a [SymbolicPath Pkg ('Dir Source)]
Lens' BuildInfo [SymbolicPath Pkg ('Dir Source)]
hsSourceDirs
  {-# INLINE hsSourceDirs #-}

  otherModules :: Lens' a [ModuleName]
  otherModules = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([ModuleName] -> f [ModuleName]) -> BuildInfo -> f BuildInfo)
-> ([ModuleName] -> f [ModuleName])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([ModuleName] -> f [ModuleName]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [ModuleName]
Lens' BuildInfo [ModuleName]
otherModules
  {-# INLINE otherModules #-}

  virtualModules :: Lens' a [ModuleName]
  virtualModules = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([ModuleName] -> f [ModuleName]) -> BuildInfo -> f BuildInfo)
-> ([ModuleName] -> f [ModuleName])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([ModuleName] -> f [ModuleName]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [ModuleName]
Lens' BuildInfo [ModuleName]
virtualModules
  {-# INLINE virtualModules #-}

  autogenModules :: Lens' a [ModuleName]
  autogenModules = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([ModuleName] -> f [ModuleName]) -> BuildInfo -> f BuildInfo)
-> ([ModuleName] -> f [ModuleName])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([ModuleName] -> f [ModuleName]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [ModuleName]
Lens' BuildInfo [ModuleName]
autogenModules
  {-# INLINE autogenModules #-}

  defaultLanguage :: Lens' a (Maybe Language)
  defaultLanguage = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> ((Maybe Language -> f (Maybe Language))
    -> BuildInfo -> f BuildInfo)
-> (Maybe Language -> f (Maybe Language))
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe Language -> f (Maybe Language)) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a (Maybe Language)
Lens' BuildInfo (Maybe Language)
defaultLanguage
  {-# INLINE defaultLanguage #-}

  otherLanguages :: Lens' a [Language]
  otherLanguages = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([Language] -> f [Language]) -> BuildInfo -> f BuildInfo)
-> ([Language] -> f [Language])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Language] -> f [Language]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [Language]
Lens' BuildInfo [Language]
otherLanguages
  {-# INLINE otherLanguages #-}

  defaultExtensions :: Lens' a [Extension]
  defaultExtensions = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([Extension] -> f [Extension]) -> BuildInfo -> f BuildInfo)
-> ([Extension] -> f [Extension])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Extension] -> f [Extension]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [Extension]
Lens' BuildInfo [Extension]
defaultExtensions
  {-# INLINE defaultExtensions #-}

  otherExtensions :: Lens' a [Extension]
  otherExtensions = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([Extension] -> f [Extension]) -> BuildInfo -> f BuildInfo)
-> ([Extension] -> f [Extension])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Extension] -> f [Extension]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [Extension]
Lens' BuildInfo [Extension]
otherExtensions
  {-# INLINE otherExtensions #-}

  oldExtensions :: Lens' a [Extension]
  oldExtensions = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([Extension] -> f [Extension]) -> BuildInfo -> f BuildInfo)
-> ([Extension] -> f [Extension])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Extension] -> f [Extension]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [Extension]
Lens' BuildInfo [Extension]
oldExtensions
  {-# INLINE oldExtensions #-}

  extraLibs :: Lens' a [String]
  extraLibs = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([String] -> f [String]) -> BuildInfo -> f BuildInfo)
-> ([String] -> f [String])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([String] -> f [String]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [String]
Lens' BuildInfo [String]
extraLibs
  {-# INLINE extraLibs #-}

  extraLibsStatic :: Lens' a [String]
  extraLibsStatic = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([String] -> f [String]) -> BuildInfo -> f BuildInfo)
-> ([String] -> f [String])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([String] -> f [String]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [String]
Lens' BuildInfo [String]
extraLibsStatic
  {-# INLINE extraLibsStatic #-}

  extraGHCiLibs :: Lens' a [String]
  extraGHCiLibs = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([String] -> f [String]) -> BuildInfo -> f BuildInfo)
-> ([String] -> f [String])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([String] -> f [String]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [String]
Lens' BuildInfo [String]
extraGHCiLibs
  {-# INLINE extraGHCiLibs #-}

  extraBundledLibs :: Lens' a [String]
  extraBundledLibs = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([String] -> f [String]) -> BuildInfo -> f BuildInfo)
-> ([String] -> f [String])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([String] -> f [String]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [String]
Lens' BuildInfo [String]
extraBundledLibs
  {-# INLINE extraBundledLibs #-}

  extraLibFlavours :: Lens' a [String]
  extraLibFlavours = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([String] -> f [String]) -> BuildInfo -> f BuildInfo)
-> ([String] -> f [String])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([String] -> f [String]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [String]
Lens' BuildInfo [String]
extraLibFlavours
  {-# INLINE extraLibFlavours #-}

  extraDynLibFlavours :: Lens' a [String]
  extraDynLibFlavours = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([String] -> f [String]) -> BuildInfo -> f BuildInfo)
-> ([String] -> f [String])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([String] -> f [String]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [String]
Lens' BuildInfo [String]
extraDynLibFlavours
  {-# INLINE extraDynLibFlavours #-}

  extraLibDirs :: Lens' a [SymbolicPath Pkg (Dir Lib)]
  extraLibDirs = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([SymbolicPath Pkg ('Dir Lib)]
     -> f [SymbolicPath Pkg ('Dir Lib)])
    -> BuildInfo -> f BuildInfo)
-> ([SymbolicPath Pkg ('Dir Lib)]
    -> f [SymbolicPath Pkg ('Dir Lib)])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([SymbolicPath Pkg ('Dir Lib)] -> f [SymbolicPath Pkg ('Dir Lib)])
-> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [SymbolicPath Pkg ('Dir Lib)]
Lens' BuildInfo [SymbolicPath Pkg ('Dir Lib)]
extraLibDirs
  {-# INLINE extraLibDirs #-}

  extraLibDirsStatic :: Lens' a [SymbolicPath Pkg (Dir Lib)]
  extraLibDirsStatic = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([SymbolicPath Pkg ('Dir Lib)]
     -> f [SymbolicPath Pkg ('Dir Lib)])
    -> BuildInfo -> f BuildInfo)
-> ([SymbolicPath Pkg ('Dir Lib)]
    -> f [SymbolicPath Pkg ('Dir Lib)])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([SymbolicPath Pkg ('Dir Lib)] -> f [SymbolicPath Pkg ('Dir Lib)])
-> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [SymbolicPath Pkg ('Dir Lib)]
Lens' BuildInfo [SymbolicPath Pkg ('Dir Lib)]
extraLibDirsStatic
  {-# INLINE extraLibDirsStatic #-}

  includeDirs :: Lens' a [SymbolicPath Pkg (Dir Include)]
  includeDirs = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([SymbolicPath Pkg ('Dir Include)]
     -> f [SymbolicPath Pkg ('Dir Include)])
    -> BuildInfo -> f BuildInfo)
-> ([SymbolicPath Pkg ('Dir Include)]
    -> f [SymbolicPath Pkg ('Dir Include)])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([SymbolicPath Pkg ('Dir Include)]
 -> f [SymbolicPath Pkg ('Dir Include)])
-> BuildInfo -> f BuildInfo
forall a.
HasBuildInfo a =>
Lens' a [SymbolicPath Pkg ('Dir Include)]
Lens' BuildInfo [SymbolicPath Pkg ('Dir Include)]
includeDirs
  {-# INLINE includeDirs #-}

  includes :: Lens' a [SymbolicPath Include File]
  includes = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([SymbolicPath Include 'File]
     -> f [SymbolicPath Include 'File])
    -> BuildInfo -> f BuildInfo)
-> ([SymbolicPath Include 'File] -> f [SymbolicPath Include 'File])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([SymbolicPath Include 'File] -> f [SymbolicPath Include 'File])
-> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [SymbolicPath Include 'File]
Lens' BuildInfo [SymbolicPath Include 'File]
includes
  {-# INLINE includes #-}

  autogenIncludes :: Lens' a [RelativePath Include File]
  autogenIncludes = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([RelativePath Include 'File]
     -> f [RelativePath Include 'File])
    -> BuildInfo -> f BuildInfo)
-> ([RelativePath Include 'File] -> f [RelativePath Include 'File])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([RelativePath Include 'File] -> f [RelativePath Include 'File])
-> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [RelativePath Include 'File]
Lens' BuildInfo [RelativePath Include 'File]
autogenIncludes
  {-# INLINE autogenIncludes #-}

  installIncludes :: Lens' a [RelativePath Include File]
  installIncludes = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([RelativePath Include 'File]
     -> f [RelativePath Include 'File])
    -> BuildInfo -> f BuildInfo)
-> ([RelativePath Include 'File] -> f [RelativePath Include 'File])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([RelativePath Include 'File] -> f [RelativePath Include 'File])
-> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [RelativePath Include 'File]
Lens' BuildInfo [RelativePath Include 'File]
installIncludes
  {-# INLINE installIncludes #-}

  options :: Lens' a (PerCompilerFlavor [String])
  options = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> ((PerCompilerFlavor [String] -> f (PerCompilerFlavor [String]))
    -> BuildInfo -> f BuildInfo)
-> (PerCompilerFlavor [String] -> f (PerCompilerFlavor [String]))
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (PerCompilerFlavor [String] -> f (PerCompilerFlavor [String]))
-> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a (PerCompilerFlavor [String])
Lens' BuildInfo (PerCompilerFlavor [String])
options
  {-# INLINE options #-}

  profOptions :: Lens' a (PerCompilerFlavor [String])
  profOptions = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> ((PerCompilerFlavor [String] -> f (PerCompilerFlavor [String]))
    -> BuildInfo -> f BuildInfo)
-> (PerCompilerFlavor [String] -> f (PerCompilerFlavor [String]))
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (PerCompilerFlavor [String] -> f (PerCompilerFlavor [String]))
-> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a (PerCompilerFlavor [String])
Lens' BuildInfo (PerCompilerFlavor [String])
profOptions
  {-# INLINE profOptions #-}

  sharedOptions :: Lens' a (PerCompilerFlavor [String])
  sharedOptions = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> ((PerCompilerFlavor [String] -> f (PerCompilerFlavor [String]))
    -> BuildInfo -> f BuildInfo)
-> (PerCompilerFlavor [String] -> f (PerCompilerFlavor [String]))
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (PerCompilerFlavor [String] -> f (PerCompilerFlavor [String]))
-> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a (PerCompilerFlavor [String])
Lens' BuildInfo (PerCompilerFlavor [String])
sharedOptions
  {-# INLINE sharedOptions #-}

  profSharedOptions :: Lens' a (PerCompilerFlavor [String])
  profSharedOptions = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> ((PerCompilerFlavor [String] -> f (PerCompilerFlavor [String]))
    -> BuildInfo -> f BuildInfo)
-> (PerCompilerFlavor [String] -> f (PerCompilerFlavor [String]))
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (PerCompilerFlavor [String] -> f (PerCompilerFlavor [String]))
-> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a (PerCompilerFlavor [String])
Lens' BuildInfo (PerCompilerFlavor [String])
profSharedOptions
  {-# INLINE profSharedOptions #-}

  staticOptions :: Lens' a (PerCompilerFlavor [String])
  staticOptions = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> ((PerCompilerFlavor [String] -> f (PerCompilerFlavor [String]))
    -> BuildInfo -> f BuildInfo)
-> (PerCompilerFlavor [String] -> f (PerCompilerFlavor [String]))
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (PerCompilerFlavor [String] -> f (PerCompilerFlavor [String]))
-> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a (PerCompilerFlavor [String])
Lens' BuildInfo (PerCompilerFlavor [String])
staticOptions
  {-# INLINE staticOptions #-}

  customFieldsBI :: Lens' a [(String, String)]
  customFieldsBI = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([(String, String)] -> f [(String, String)])
    -> BuildInfo -> f BuildInfo)
-> ([(String, String)] -> f [(String, String)])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([(String, String)] -> f [(String, String)])
-> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [(String, String)]
Lens' BuildInfo [(String, String)]
customFieldsBI
  {-# INLINE customFieldsBI #-}

  targetBuildDepends :: Lens' a [Dependency]
  targetBuildDepends = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([Dependency] -> f [Dependency]) -> BuildInfo -> f BuildInfo)
-> ([Dependency] -> f [Dependency])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Dependency] -> f [Dependency]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [Dependency]
Lens' BuildInfo [Dependency]
targetBuildDepends
  {-# INLINE targetBuildDepends #-}

  mixins :: Lens' a [Mixin]
  mixins = LensLike f a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
Lens' a BuildInfo
buildInfo LensLike f a a BuildInfo BuildInfo
-> (([Mixin] -> f [Mixin]) -> BuildInfo -> f BuildInfo)
-> ([Mixin] -> f [Mixin])
-> a
-> f a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Mixin] -> f [Mixin]) -> BuildInfo -> f BuildInfo
forall a. HasBuildInfo a => Lens' a [Mixin]
Lens' BuildInfo [Mixin]
mixins
  {-# INLINE mixins #-}

instance HasBuildInfo BuildInfo where
  buildInfo :: Lens' BuildInfo BuildInfo
buildInfo = (BuildInfo -> f BuildInfo) -> BuildInfo -> f BuildInfo
forall a. a -> a
id
  {-# INLINE buildInfo #-}

  buildable :: Lens' BuildInfo Bool
buildable Bool -> f Bool
f BuildInfo
s = (Bool -> BuildInfo) -> f Bool -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Bool
x -> BuildInfo
s{T.buildable = x}) (Bool -> f Bool
f (BuildInfo -> Bool
T.buildable BuildInfo
s))
  {-# INLINE buildable #-}

  buildTools :: Lens' BuildInfo [LegacyExeDependency]
buildTools [LegacyExeDependency] -> f [LegacyExeDependency]
f BuildInfo
s = ([LegacyExeDependency] -> BuildInfo)
-> f [LegacyExeDependency] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[LegacyExeDependency]
x -> BuildInfo
s{T.buildTools = x}) ([LegacyExeDependency] -> f [LegacyExeDependency]
f (BuildInfo -> [LegacyExeDependency]
T.buildTools BuildInfo
s))
  {-# INLINE buildTools #-}

  buildToolDepends :: Lens' BuildInfo [ExeDependency]
buildToolDepends [ExeDependency] -> f [ExeDependency]
f BuildInfo
s = ([ExeDependency] -> BuildInfo) -> f [ExeDependency] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[ExeDependency]
x -> BuildInfo
s{T.buildToolDepends = x}) ([ExeDependency] -> f [ExeDependency]
f (BuildInfo -> [ExeDependency]
T.buildToolDepends BuildInfo
s))
  {-# INLINE buildToolDepends #-}

  cppOptions :: Lens' BuildInfo [String]
cppOptions [String] -> f [String]
f BuildInfo
s = ([String] -> BuildInfo) -> f [String] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[String]
x -> BuildInfo
s{T.cppOptions = x}) ([String] -> f [String]
f (BuildInfo -> [String]
T.cppOptions BuildInfo
s))
  {-# INLINE cppOptions #-}

  asmOptions :: Lens' BuildInfo [String]
asmOptions [String] -> f [String]
f BuildInfo
s = ([String] -> BuildInfo) -> f [String] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[String]
x -> BuildInfo
s{T.asmOptions = x}) ([String] -> f [String]
f (BuildInfo -> [String]
T.asmOptions BuildInfo
s))
  {-# INLINE asmOptions #-}

  cmmOptions :: Lens' BuildInfo [String]
cmmOptions [String] -> f [String]
f BuildInfo
s = ([String] -> BuildInfo) -> f [String] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[String]
x -> BuildInfo
s{T.cmmOptions = x}) ([String] -> f [String]
f (BuildInfo -> [String]
T.cmmOptions BuildInfo
s))
  {-# INLINE cmmOptions #-}

  ccOptions :: Lens' BuildInfo [String]
ccOptions [String] -> f [String]
f BuildInfo
s = ([String] -> BuildInfo) -> f [String] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[String]
x -> BuildInfo
s{T.ccOptions = x}) ([String] -> f [String]
f (BuildInfo -> [String]
T.ccOptions BuildInfo
s))
  {-# INLINE ccOptions #-}

  cxxOptions :: Lens' BuildInfo [String]
cxxOptions [String] -> f [String]
f BuildInfo
s = ([String] -> BuildInfo) -> f [String] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[String]
x -> BuildInfo
s{T.cxxOptions = x}) ([String] -> f [String]
f (BuildInfo -> [String]
T.cxxOptions BuildInfo
s))
  {-# INLINE cxxOptions #-}

  ldOptions :: Lens' BuildInfo [String]
ldOptions [String] -> f [String]
f BuildInfo
s = ([String] -> BuildInfo) -> f [String] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[String]
x -> BuildInfo
s{T.ldOptions = x}) ([String] -> f [String]
f (BuildInfo -> [String]
T.ldOptions BuildInfo
s))
  {-# INLINE ldOptions #-}

  hsc2hsOptions :: Lens' BuildInfo [String]
hsc2hsOptions [String] -> f [String]
f BuildInfo
s = ([String] -> BuildInfo) -> f [String] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[String]
x -> BuildInfo
s{T.hsc2hsOptions = x}) ([String] -> f [String]
f (BuildInfo -> [String]
T.hsc2hsOptions BuildInfo
s))
  {-# INLINE hsc2hsOptions #-}

  pkgconfigDepends :: Lens' BuildInfo [PkgconfigDependency]
pkgconfigDepends [PkgconfigDependency] -> f [PkgconfigDependency]
f BuildInfo
s = ([PkgconfigDependency] -> BuildInfo)
-> f [PkgconfigDependency] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[PkgconfigDependency]
x -> BuildInfo
s{T.pkgconfigDepends = x}) ([PkgconfigDependency] -> f [PkgconfigDependency]
f (BuildInfo -> [PkgconfigDependency]
T.pkgconfigDepends BuildInfo
s))
  {-# INLINE pkgconfigDepends #-}

  frameworks :: Lens' BuildInfo [RelativePath Framework 'File]
frameworks [RelativePath Framework 'File] -> f [RelativePath Framework 'File]
f BuildInfo
s = ([RelativePath Framework 'File] -> BuildInfo)
-> f [RelativePath Framework 'File] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[RelativePath Framework 'File]
x -> BuildInfo
s{T.frameworks = x}) ([RelativePath Framework 'File] -> f [RelativePath Framework 'File]
f (BuildInfo -> [RelativePath Framework 'File]
T.frameworks BuildInfo
s))
  {-# INLINE frameworks #-}

  extraFrameworkDirs :: Lens' BuildInfo [SymbolicPath Pkg ('Dir Framework)]
extraFrameworkDirs [SymbolicPath Pkg ('Dir Framework)]
-> f [SymbolicPath Pkg ('Dir Framework)]
f BuildInfo
s = ([SymbolicPath Pkg ('Dir Framework)] -> BuildInfo)
-> f [SymbolicPath Pkg ('Dir Framework)] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[SymbolicPath Pkg ('Dir Framework)]
x -> BuildInfo
s{T.extraFrameworkDirs = x}) ([SymbolicPath Pkg ('Dir Framework)]
-> f [SymbolicPath Pkg ('Dir Framework)]
f (BuildInfo -> [SymbolicPath Pkg ('Dir Framework)]
T.extraFrameworkDirs BuildInfo
s))
  {-# INLINE extraFrameworkDirs #-}

  asmSources :: Lens' BuildInfo [SymbolicPath Pkg 'File]
asmSources [SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File]
f BuildInfo
s = ([SymbolicPath Pkg 'File] -> BuildInfo)
-> f [SymbolicPath Pkg 'File] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[SymbolicPath Pkg 'File]
x -> BuildInfo
s{T.asmSources = x}) ([SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File]
f (BuildInfo -> [SymbolicPath Pkg 'File]
T.asmSources BuildInfo
s))
  {-# INLINE asmSources #-}

  cmmSources :: Lens' BuildInfo [SymbolicPath Pkg 'File]
cmmSources [SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File]
f BuildInfo
s = ([SymbolicPath Pkg 'File] -> BuildInfo)
-> f [SymbolicPath Pkg 'File] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[SymbolicPath Pkg 'File]
x -> BuildInfo
s{T.cmmSources = x}) ([SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File]
f (BuildInfo -> [SymbolicPath Pkg 'File]
T.cmmSources BuildInfo
s))
  {-# INLINE cmmSources #-}

  cSources :: Lens' BuildInfo [SymbolicPath Pkg 'File]
cSources [SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File]
f BuildInfo
s = ([SymbolicPath Pkg 'File] -> BuildInfo)
-> f [SymbolicPath Pkg 'File] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[SymbolicPath Pkg 'File]
x -> BuildInfo
s{T.cSources = x}) ([SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File]
f (BuildInfo -> [SymbolicPath Pkg 'File]
T.cSources BuildInfo
s))
  {-# INLINE cSources #-}

  cxxSources :: Lens' BuildInfo [SymbolicPath Pkg 'File]
cxxSources [SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File]
f BuildInfo
s = ([SymbolicPath Pkg 'File] -> BuildInfo)
-> f [SymbolicPath Pkg 'File] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[SymbolicPath Pkg 'File]
x -> BuildInfo
s{T.cSources = x}) ([SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File]
f (BuildInfo -> [SymbolicPath Pkg 'File]
T.cxxSources BuildInfo
s))
  {-# INLINE cxxSources #-}

  jsSources :: Lens' BuildInfo [SymbolicPath Pkg 'File]
jsSources [SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File]
f BuildInfo
s = ([SymbolicPath Pkg 'File] -> BuildInfo)
-> f [SymbolicPath Pkg 'File] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[SymbolicPath Pkg 'File]
x -> BuildInfo
s{T.jsSources = x}) ([SymbolicPath Pkg 'File] -> f [SymbolicPath Pkg 'File]
f (BuildInfo -> [SymbolicPath Pkg 'File]
T.jsSources BuildInfo
s))
  {-# INLINE jsSources #-}

  hsSourceDirs :: Lens' BuildInfo [SymbolicPath Pkg ('Dir Source)]
hsSourceDirs [SymbolicPath Pkg ('Dir Source)]
-> f [SymbolicPath Pkg ('Dir Source)]
f BuildInfo
s = ([SymbolicPath Pkg ('Dir Source)] -> BuildInfo)
-> f [SymbolicPath Pkg ('Dir Source)] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[SymbolicPath Pkg ('Dir Source)]
x -> BuildInfo
s{T.hsSourceDirs = x}) ([SymbolicPath Pkg ('Dir Source)]
-> f [SymbolicPath Pkg ('Dir Source)]
f (BuildInfo -> [SymbolicPath Pkg ('Dir Source)]
T.hsSourceDirs BuildInfo
s))
  {-# INLINE hsSourceDirs #-}

  otherModules :: Lens' BuildInfo [ModuleName]
otherModules [ModuleName] -> f [ModuleName]
f BuildInfo
s = ([ModuleName] -> BuildInfo) -> f [ModuleName] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[ModuleName]
x -> BuildInfo
s{T.otherModules = x}) ([ModuleName] -> f [ModuleName]
f (BuildInfo -> [ModuleName]
T.otherModules BuildInfo
s))
  {-# INLINE otherModules #-}

  virtualModules :: Lens' BuildInfo [ModuleName]
virtualModules [ModuleName] -> f [ModuleName]
f BuildInfo
s = ([ModuleName] -> BuildInfo) -> f [ModuleName] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[ModuleName]
x -> BuildInfo
s{T.virtualModules = x}) ([ModuleName] -> f [ModuleName]
f (BuildInfo -> [ModuleName]
T.virtualModules BuildInfo
s))
  {-# INLINE virtualModules #-}

  autogenModules :: Lens' BuildInfo [ModuleName]
autogenModules [ModuleName] -> f [ModuleName]
f BuildInfo
s = ([ModuleName] -> BuildInfo) -> f [ModuleName] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[ModuleName]
x -> BuildInfo
s{T.autogenModules = x}) ([ModuleName] -> f [ModuleName]
f (BuildInfo -> [ModuleName]
T.autogenModules BuildInfo
s))
  {-# INLINE autogenModules #-}

  defaultLanguage :: Lens' BuildInfo (Maybe Language)
defaultLanguage Maybe Language -> f (Maybe Language)
f BuildInfo
s = (Maybe Language -> BuildInfo) -> f (Maybe Language) -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Maybe Language
x -> BuildInfo
s{T.defaultLanguage = x}) (Maybe Language -> f (Maybe Language)
f (BuildInfo -> Maybe Language
T.defaultLanguage BuildInfo
s))
  {-# INLINE defaultLanguage #-}

  otherLanguages :: Lens' BuildInfo [Language]
otherLanguages [Language] -> f [Language]
f BuildInfo
s = ([Language] -> BuildInfo) -> f [Language] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[Language]
x -> BuildInfo
s{T.otherLanguages = x}) ([Language] -> f [Language]
f (BuildInfo -> [Language]
T.otherLanguages BuildInfo
s))
  {-# INLINE otherLanguages #-}

  defaultExtensions :: Lens' BuildInfo [Extension]
defaultExtensions [Extension] -> f [Extension]
f BuildInfo
s = ([Extension] -> BuildInfo) -> f [Extension] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[Extension]
x -> BuildInfo
s{T.defaultExtensions = x}) ([Extension] -> f [Extension]
f (BuildInfo -> [Extension]
T.defaultExtensions BuildInfo
s))
  {-# INLINE defaultExtensions #-}

  otherExtensions :: Lens' BuildInfo [Extension]
otherExtensions [Extension] -> f [Extension]
f BuildInfo
s = ([Extension] -> BuildInfo) -> f [Extension] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[Extension]
x -> BuildInfo
s{T.otherExtensions = x}) ([Extension] -> f [Extension]
f (BuildInfo -> [Extension]
T.otherExtensions BuildInfo
s))
  {-# INLINE otherExtensions #-}

  oldExtensions :: Lens' BuildInfo [Extension]
oldExtensions [Extension] -> f [Extension]
f BuildInfo
s = ([Extension] -> BuildInfo) -> f [Extension] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[Extension]
x -> BuildInfo
s{T.oldExtensions = x}) ([Extension] -> f [Extension]
f (BuildInfo -> [Extension]
T.oldExtensions BuildInfo
s))
  {-# INLINE oldExtensions #-}

  extraLibs :: Lens' BuildInfo [String]
extraLibs [String] -> f [String]
f BuildInfo
s = ([String] -> BuildInfo) -> f [String] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[String]
x -> BuildInfo
s{T.extraLibs = x}) ([String] -> f [String]
f (BuildInfo -> [String]
T.extraLibs BuildInfo
s))
  {-# INLINE extraLibs #-}

  extraLibsStatic :: Lens' BuildInfo [String]
extraLibsStatic [String] -> f [String]
f BuildInfo
s = ([String] -> BuildInfo) -> f [String] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[String]
x -> BuildInfo
s{T.extraLibsStatic = x}) ([String] -> f [String]
f (BuildInfo -> [String]
T.extraLibsStatic BuildInfo
s))
  {-# INLINE extraLibsStatic #-}

  extraGHCiLibs :: Lens' BuildInfo [String]
extraGHCiLibs [String] -> f [String]
f BuildInfo
s = ([String] -> BuildInfo) -> f [String] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[String]
x -> BuildInfo
s{T.extraGHCiLibs = x}) ([String] -> f [String]
f (BuildInfo -> [String]
T.extraGHCiLibs BuildInfo
s))
  {-# INLINE extraGHCiLibs #-}

  extraBundledLibs :: Lens' BuildInfo [String]
extraBundledLibs [String] -> f [String]
f BuildInfo
s = ([String] -> BuildInfo) -> f [String] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[String]
x -> BuildInfo
s{T.extraBundledLibs = x}) ([String] -> f [String]
f (BuildInfo -> [String]
T.extraBundledLibs BuildInfo
s))
  {-# INLINE extraBundledLibs #-}

  extraLibFlavours :: Lens' BuildInfo [String]
extraLibFlavours [String] -> f [String]
f BuildInfo
s = ([String] -> BuildInfo) -> f [String] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[String]
x -> BuildInfo
s{T.extraLibFlavours = x}) ([String] -> f [String]
f (BuildInfo -> [String]
T.extraLibFlavours BuildInfo
s))
  {-# INLINE extraLibFlavours #-}

  extraDynLibFlavours :: Lens' BuildInfo [String]
extraDynLibFlavours [String] -> f [String]
f BuildInfo
s = ([String] -> BuildInfo) -> f [String] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[String]
x -> BuildInfo
s{T.extraDynLibFlavours = x}) ([String] -> f [String]
f (BuildInfo -> [String]
T.extraDynLibFlavours BuildInfo
s))
  {-# INLINE extraDynLibFlavours #-}

  extraLibDirs :: Lens' BuildInfo [SymbolicPath Pkg ('Dir Lib)]
extraLibDirs [SymbolicPath Pkg ('Dir Lib)] -> f [SymbolicPath Pkg ('Dir Lib)]
f BuildInfo
s = ([SymbolicPath Pkg ('Dir Lib)] -> BuildInfo)
-> f [SymbolicPath Pkg ('Dir Lib)] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[SymbolicPath Pkg ('Dir Lib)]
x -> BuildInfo
s{T.extraLibDirs = x}) ([SymbolicPath Pkg ('Dir Lib)] -> f [SymbolicPath Pkg ('Dir Lib)]
f (BuildInfo -> [SymbolicPath Pkg ('Dir Lib)]
T.extraLibDirs BuildInfo
s))
  {-# INLINE extraLibDirs #-}

  extraLibDirsStatic :: Lens' BuildInfo [SymbolicPath Pkg ('Dir Lib)]
extraLibDirsStatic [SymbolicPath Pkg ('Dir Lib)] -> f [SymbolicPath Pkg ('Dir Lib)]
f BuildInfo
s = ([SymbolicPath Pkg ('Dir Lib)] -> BuildInfo)
-> f [SymbolicPath Pkg ('Dir Lib)] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[SymbolicPath Pkg ('Dir Lib)]
x -> BuildInfo
s{T.extraLibDirsStatic = x}) ([SymbolicPath Pkg ('Dir Lib)] -> f [SymbolicPath Pkg ('Dir Lib)]
f (BuildInfo -> [SymbolicPath Pkg ('Dir Lib)]
T.extraLibDirsStatic BuildInfo
s))
  {-# INLINE extraLibDirsStatic #-}

  includeDirs :: Lens' BuildInfo [SymbolicPath Pkg ('Dir Include)]
includeDirs [SymbolicPath Pkg ('Dir Include)]
-> f [SymbolicPath Pkg ('Dir Include)]
f BuildInfo
s = ([SymbolicPath Pkg ('Dir Include)] -> BuildInfo)
-> f [SymbolicPath Pkg ('Dir Include)] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[SymbolicPath Pkg ('Dir Include)]
x -> BuildInfo
s{T.includeDirs = x}) ([SymbolicPath Pkg ('Dir Include)]
-> f [SymbolicPath Pkg ('Dir Include)]
f (BuildInfo -> [SymbolicPath Pkg ('Dir Include)]
T.includeDirs BuildInfo
s))
  {-# INLINE includeDirs #-}

  includes :: Lens' BuildInfo [SymbolicPath Include 'File]
includes [SymbolicPath Include 'File] -> f [SymbolicPath Include 'File]
f BuildInfo
s = ([SymbolicPath Include 'File] -> BuildInfo)
-> f [SymbolicPath Include 'File] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[SymbolicPath Include 'File]
x -> BuildInfo
s{T.includes = x}) ([SymbolicPath Include 'File] -> f [SymbolicPath Include 'File]
f (BuildInfo -> [SymbolicPath Include 'File]
T.includes BuildInfo
s))
  {-# INLINE includes #-}

  autogenIncludes :: Lens' BuildInfo [RelativePath Include 'File]
autogenIncludes [RelativePath Include 'File] -> f [RelativePath Include 'File]
f BuildInfo
s = ([RelativePath Include 'File] -> BuildInfo)
-> f [RelativePath Include 'File] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[RelativePath Include 'File]
x -> BuildInfo
s{T.autogenIncludes = x}) ([RelativePath Include 'File] -> f [RelativePath Include 'File]
f (BuildInfo -> [RelativePath Include 'File]
T.autogenIncludes BuildInfo
s))
  {-# INLINE autogenIncludes #-}

  installIncludes :: Lens' BuildInfo [RelativePath Include 'File]
installIncludes [RelativePath Include 'File] -> f [RelativePath Include 'File]
f BuildInfo
s = ([RelativePath Include 'File] -> BuildInfo)
-> f [RelativePath Include 'File] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[RelativePath Include 'File]
x -> BuildInfo
s{T.installIncludes = x}) ([RelativePath Include 'File] -> f [RelativePath Include 'File]
f (BuildInfo -> [RelativePath Include 'File]
T.installIncludes BuildInfo
s))
  {-# INLINE installIncludes #-}

  options :: Lens' BuildInfo (PerCompilerFlavor [String])
options PerCompilerFlavor [String] -> f (PerCompilerFlavor [String])
f BuildInfo
s = (PerCompilerFlavor [String] -> BuildInfo)
-> f (PerCompilerFlavor [String]) -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\PerCompilerFlavor [String]
x -> BuildInfo
s{T.options = x}) (PerCompilerFlavor [String] -> f (PerCompilerFlavor [String])
f (BuildInfo -> PerCompilerFlavor [String]
T.options BuildInfo
s))
  {-# INLINE options #-}

  profOptions :: Lens' BuildInfo (PerCompilerFlavor [String])
profOptions PerCompilerFlavor [String] -> f (PerCompilerFlavor [String])
f BuildInfo
s = (PerCompilerFlavor [String] -> BuildInfo)
-> f (PerCompilerFlavor [String]) -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\PerCompilerFlavor [String]
x -> BuildInfo
s{T.profOptions = x}) (PerCompilerFlavor [String] -> f (PerCompilerFlavor [String])
f (BuildInfo -> PerCompilerFlavor [String]
T.profOptions BuildInfo
s))
  {-# INLINE profOptions #-}

  sharedOptions :: Lens' BuildInfo (PerCompilerFlavor [String])
sharedOptions PerCompilerFlavor [String] -> f (PerCompilerFlavor [String])
f BuildInfo
s = (PerCompilerFlavor [String] -> BuildInfo)
-> f (PerCompilerFlavor [String]) -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\PerCompilerFlavor [String]
x -> BuildInfo
s{T.sharedOptions = x}) (PerCompilerFlavor [String] -> f (PerCompilerFlavor [String])
f (BuildInfo -> PerCompilerFlavor [String]
T.sharedOptions BuildInfo
s))
  {-# INLINE sharedOptions #-}

  profSharedOptions :: Lens' BuildInfo (PerCompilerFlavor [String])
profSharedOptions PerCompilerFlavor [String] -> f (PerCompilerFlavor [String])
f BuildInfo
s = (PerCompilerFlavor [String] -> BuildInfo)
-> f (PerCompilerFlavor [String]) -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\PerCompilerFlavor [String]
x -> BuildInfo
s{T.profSharedOptions = x}) (PerCompilerFlavor [String] -> f (PerCompilerFlavor [String])
f (BuildInfo -> PerCompilerFlavor [String]
T.profSharedOptions BuildInfo
s))
  {-# INLINE profSharedOptions #-}

  staticOptions :: Lens' BuildInfo (PerCompilerFlavor [String])
staticOptions PerCompilerFlavor [String] -> f (PerCompilerFlavor [String])
f BuildInfo
s = (PerCompilerFlavor [String] -> BuildInfo)
-> f (PerCompilerFlavor [String]) -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\PerCompilerFlavor [String]
x -> BuildInfo
s{T.staticOptions = x}) (PerCompilerFlavor [String] -> f (PerCompilerFlavor [String])
f (BuildInfo -> PerCompilerFlavor [String]
T.staticOptions BuildInfo
s))
  {-# INLINE staticOptions #-}

  customFieldsBI :: Lens' BuildInfo [(String, String)]
customFieldsBI [(String, String)] -> f [(String, String)]
f BuildInfo
s = ([(String, String)] -> BuildInfo)
-> f [(String, String)] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[(String, String)]
x -> BuildInfo
s{T.customFieldsBI = x}) ([(String, String)] -> f [(String, String)]
f (BuildInfo -> [(String, String)]
T.customFieldsBI BuildInfo
s))
  {-# INLINE customFieldsBI #-}

  targetBuildDepends :: Lens' BuildInfo [Dependency]
targetBuildDepends [Dependency] -> f [Dependency]
f BuildInfo
s = ([Dependency] -> BuildInfo) -> f [Dependency] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[Dependency]
x -> BuildInfo
s{T.targetBuildDepends = x}) ([Dependency] -> f [Dependency]
f (BuildInfo -> [Dependency]
T.targetBuildDepends BuildInfo
s))
  {-# INLINE targetBuildDepends #-}

  mixins :: Lens' BuildInfo [Mixin]
mixins [Mixin] -> f [Mixin]
f BuildInfo
s = ([Mixin] -> BuildInfo) -> f [Mixin] -> f BuildInfo
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[Mixin]
x -> BuildInfo
s{T.mixins = x}) ([Mixin] -> f [Mixin]
f (BuildInfo -> [Mixin]
T.mixins BuildInfo
s))
  {-# INLINE mixins #-}

class HasBuildInfos a where
  traverseBuildInfos :: Traversal' a BuildInfo