Cabal-3.12.0.0: src/Distribution/Types/TargetInfo.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TypeFamilies #-}
module Distribution.Types.TargetInfo
( TargetInfo (..)
) where
import Distribution.Compat.Prelude
import Prelude ()
import Distribution.Types.Component
import Distribution.Types.ComponentLocalBuildInfo
import Distribution.Types.UnitId
import Distribution.Compat.Graph (IsNode (..))
-- | The 'TargetInfo' contains all the information necessary to build a
-- specific target (e.g., component/module/file) in a package. In
-- principle, one can get the 'Component' from a
-- 'ComponentLocalBuildInfo' and 'LocalBuildInfo', but it is much more
-- convenient to have the component in hand.
data TargetInfo = TargetInfo
{ targetCLBI :: ComponentLocalBuildInfo
, targetComponent :: Component
-- TODO: BuildTargets supporting parsing these is dumb,
-- we don't have support for compiling single modules or
-- file paths. Accommodating it now is premature
-- generalization. Figure it out later.
-- targetSub :: Maybe (Either ModuleName FilePath)
}
deriving (Generic, Show)
instance Binary TargetInfo
instance Structured TargetInfo
instance IsNode TargetInfo where
type Key TargetInfo = UnitId
nodeKey = nodeKey . targetCLBI
nodeNeighbors = nodeNeighbors . targetCLBI