packages feed

Cabal-3.18.1.0: src/Distribution/Simple/BuildWay.hs

{-# LANGUAGE LambdaCase #-}

module Distribution.Simple.BuildWay
  ( BuildWay (..)
  , buildWayObjectExtension
  , buildWayInterfaceExtension
  ) where

data BuildWay = StaticWay | DynWay | ProfWay | ProfDynWay
  deriving (Eq, Ord, Show, Read, Enum)

-- | Returns the object extension for the given build way (e.g. "dyn_o" for 'DynWay' on ELF)
buildWayObjectExtension :: String -> BuildWay -> String
buildWayObjectExtension ext = \case
  StaticWay -> ext
  ProfWay -> "p_" ++ ext
  DynWay -> "dyn_" ++ ext
  ProfDynWay -> "p_dyn_" ++ ext

buildWayInterfaceExtension :: BuildWay -> String
buildWayInterfaceExtension = buildWayObjectExtension "hi"