import Distribution.Simple import Distribution.Simple.Setup import Distribution.Simple.LocalBuildInfo import Distribution.PackageDescription import Distribution.Version -- This checks the direct dependency of the bytestring package being -- compiled against to set the bytestring_has_itoa_c and -- bytestring_has_builder flags accordingly. main = defaultMainWithHooks simpleUserHooks { confHook = \pkg flags -> if null (configConstraints flags) then do confHook simpleUserHooks pkg flags else do let bytestring_version = case [ versionBranch v | (Dependency pkg ver) <- configConstraints flags , pkg == PackageName "bytestring" , (Just v) <- [isSpecificVersion ver] ] of [v] -> v vs -> error ("error detecting bytestring version " ++ show vs) let has_itoa_c = ( FlagName "bytestring_has_itoa_c" , bytestring_version >= [0,10] ) let has_builder = ( FlagName "bytestring_has_builder" , bytestring_version >= [0,10,4] ) let update fs gs = fs ++ [ g | g <- gs, not $ any (\f -> fst f == fst g) fs] let flags' = flags { configConfigurationsFlags = update [has_itoa_c, has_builder] (configConfigurationsFlags flags) } confHook simpleUserHooks pkg flags' }