{-# LANGUAGE CPP, TemplateHaskell #-}
module ToySolver.Version
  ( version
  , packageVersions
  , gitHash
  , compilationTime
  ) where

import Data.List
import Data.Time
import Data.Version
import ToySolver.Version.TH
import Paths_toysolver

packageVersions :: [(String, String)]
packageVersions = sort $ tail
  [ (undefined, undefined) -- dummy
#ifdef VERSION_OpenCL
  , ("OpenCL", VERSION_OpenCL)
#endif
#ifdef VERSION_OptDir
  , ("OptDir", VERSION_OptDir)
#endif
#ifdef VERSION_array
  , ("array", VERSION_array)
#endif
#ifdef VERSION_attoparsec
  , ("attoparsec", VERSION_attoparsec)
#endif
#ifdef VERSION_base
  , ("base", VERSION_base)
#endif
#ifdef VERSION_bytestring
  , ("bytestring", VERSION_bytestring)
#endif
#ifdef VERSION_bytestring_builder
  , ("bytestring-builder", VERSION_bytestring_builder)
#endif
#ifdef VERSION_clock
  , ("clock", VERSION_clock)
#endif
#ifdef VERSION_containers
  , ("containers", VERSION_containers)
#endif
#ifdef VERSION_data_default
  , ("data-default", VERSION_data_default)
#endif
#ifdef VERSION_data_default_class
  , ("data-default-class", VERSION_data_default_class)
#endif
#ifdef VERSION_data_interval
  , ("data-interval", VERSION_data_interval)
#endif
#ifdef VERSION_deepseq
  , ("deepseq", VERSION_deepseq)
#endif
#ifdef VERSION_directory
  , ("directory", VERSION_directory)
#endif
#ifdef VERSION_extended_reals
  , ("extended-reals", VERSION_extended_reals)
#endif
#ifdef VERSION_filepath
  , ("filepath", VERSION_filepath)
#endif
#ifdef VERSION_finite_field
  , ("finite-field", VERSION_finite_field)
#endif
#ifdef VERSION_ghc_prim
  , ("ghc-prim", VERSION_ghc_prim)
#endif
#ifdef VERSION_hashable
  , ("hashable", VERSION_hashable)
#endif
#ifdef VERSION_hashtables
  , ("hashtables", VERSION_hashtables)
#endif
#ifdef VERSION_haskeline
  , ("haskeline", VERSION_haskeline)
#endif
#ifdef VERSION_heaps
  , ("heaps", VERSION_heaps)
#endif
#ifdef VERSION_intern
  , ("intern", VERSION_intern)
#endif
#ifdef VERSION_lattices
  , ("lattices", VERSION_lattices)
#endif
#ifdef VERSION_log_domain
  , ("log-domain", VERSION_log_domain)
#endif
#ifdef VERSION_logic_TPTP
  , ("logic-TPTP", VERSION_logic_TPTP)
#endif
#ifdef VERSION_loop
  , ("loop", VERSION_loop)
#endif
#ifdef VERSION_megaparsec
  , ("megaparsec", VERSION_megaparsec)
#endif
#ifdef VERSION_mtl
  , ("mtl", VERSION_mtl)
#endif
#ifdef VERSION_multiset
  , ("multiset", VERSION_multiset)
#endif
#ifdef VERSION_mwc_random
  , ("mwc-random", VERSION_mwc_random)
#endif
#ifdef VERSION_parsec
  , ("parsec", VERSION_parsec)
#endif
#ifdef VERSION_prettyclass
  , ("prettyclass", VERSION_prettyclass)
#endif
#ifdef VERSION_primes
  , ("primes", VERSION_primes)
#endif
#ifdef VERSION_primitive
  , ("primitive", VERSION_primitive)
#endif
#ifdef VERSION_process
  , ("process", VERSION_process)
#endif
#ifdef VERSION_pseudo_boolean
  , ("pseudo-boolean", VERSION_pseudo_boolean)
#endif
#ifdef VERSION_queue
  , ("queue", VERSION_queue)
#endif
#ifdef VERSION_scientific
  , ("scientific", VERSION_scientific)
#endif
#ifdef VERSION_semigroups
  , ("semigroups", VERSION_semigroups)
#endif
#ifdef VERSION_sign
  , ("sign", VERSION_sign)
#endif
#ifdef VERSION_split
  , ("split", VERSION_split)
#endif
#ifdef VERSION_stm
  , ("stm", VERSION_stm)
#endif
#ifdef VERSION_template_haskell
  , ("template-haskell", VERSION_template_haskell)
#endif
#ifdef VERSION_temporary
  , ("temporary", VERSION_temporary)
#endif
#ifdef VERSION_text
  , ("text", VERSION_text)
#endif
#ifdef VERSION_time
  , ("time", VERSION_time)
#endif
#ifdef VERSION_transformers
  , ("transformers", VERSION_transformers)
#endif
#ifdef VERSION_transformers_compat
  , ("transformers-compat", VERSION_transformers_compat)
#endif
#ifdef VERSION_unbounded_delays
  , ("unbounded-delays", VERSION_unbounded_delays)
#endif
#ifdef VERSION_unordered_containers
  , ("unordered-containers", VERSION_unordered_containers)
#endif
#ifdef VERSION_vector
  , ("vector", VERSION_vector)
#endif
#ifdef VERSION_vector_space
  , ("vector-space", VERSION_vector_space)
#endif
#ifdef VERSION_xml_conduit
  , ("xml-conduit", VERSION_xml_conduit)
#endif
  ]

gitHash :: Maybe String
gitHash = $(gitHashQ)

compilationTime :: UTCTime
compilationTime = $(compilationTimeQ)