content: {-# LANGUAGE DeriveDataTypeable #-}
  {-# LANGUAGE DeriveGeneric #-}
  module Distribution.Types.PkgconfigDependency
    ( PkgconfigDependency(..)
    ) where
  
  import Prelude ()
  import Distribution.Compat.Prelude
  
  import Distribution.Version ( VersionRange, anyVersion )
  
  import qualified Distribution.Compat.ReadP as Parse
  import Distribution.Compat.ReadP
  import Distribution.Text
  import Distribution.Types.PkgconfigName
  
  import Text.PrettyPrint ((<+>))
  
  -- | Describes a dependency on a pkg-config library
  --
  -- @since 2.0
  data PkgconfigDependency = PkgconfigDependency
                             PkgconfigName
                             VersionRange
                           deriving (Generic, Read, Show, Eq, Typeable, Data)
  
  instance Binary PkgconfigDependency
  instance NFData PkgconfigDependency where rnf = genericRnf
  
  instance Text PkgconfigDependency where
    disp (PkgconfigDependency name ver) =
      disp name <+> disp ver
  
    parse = do name <- parse
               Parse.skipSpaces
               ver <- parse <++ return anyVersion
               Parse.skipSpaces
               return $ PkgconfigDependency name ver
  