module Distribution.Simple.Program.Ar (
    createArLibArchive,
    multiStageProgramInvocation,
  ) where
import Distribution.Simple.Program.Types
         ( ConfiguredProgram(..) )
import Distribution.Simple.Program.Run
         ( programInvocation, multiStageProgramInvocation
         , runProgramInvocation )
import Distribution.System
         ( OS(..), buildOS )
import Distribution.Verbosity
         ( Verbosity, deafening, verbose )
createArLibArchive :: Verbosity -> ConfiguredProgram
                   -> FilePath -> [FilePath] -> IO ()
createArLibArchive verbosity ar target files =
  
  
  
  
  
  
  
  
  
  
  
  
  
  let simpleArgs  = case buildOS of
             OSX -> ["-r", "-s"]
             _   -> ["-r"]
      initialArgs = ["-q"]
      finalArgs   = case buildOS of
             OSX -> ["-q", "-s"]
             _   -> ["-q"]
      extraArgs   = verbosityOpts verbosity ++ [target]
      simple  = programInvocation ar (simpleArgs  ++ extraArgs)
      initial = programInvocation ar (initialArgs ++ extraArgs)
      middle  = initial
      final   = programInvocation ar (finalArgs   ++ extraArgs)
   in sequence_
        [ runProgramInvocation verbosity inv
        | inv <- multiStageProgramInvocation
                   simple (initial, middle, final) files ]
  where
    verbosityOpts v | v >= deafening = ["-v"]
                    | v >= verbose   = []
                    | otherwise      = ["-c"]