module Development.Shake.ATS.Generate ( generateLinks ) where import Language.ATS import Lens.Micro generateLinks :: String -> Either ATSError String generateLinks = fmap (printATS . generateLinks') . parseM generateLinks' :: ATS a -> ATS a generateLinks' (ATS ds) = ATS (fmap g ds ++ [macDecl]) -- ATS [Local undefined (ATS (fmap g ds ++ [macDecl])) (ATS mempty)] where g f@Func{} = Extern undefined (set (fun.preF.expression) expr f) g x = x expr = Just (StringLit "\"mac#\"") macDecl = Define "#define ATS_MAINATSFLAG 1"