copilot-c99 0.2.2 → 0.2.3
raw patch · 2 files changed
+24/−11 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- copilot-c99.cabal +1/−1
- src/Copilot/Compile/C99.hs +23/−10
copilot-c99.cabal view
@@ -1,6 +1,6 @@ cabal-version : >= 1.10 name : copilot-c99-version : 0.2.2+version : 0.2.3 synopsis : A compiler for Copilot targeting C99. description : This is a back-end from Copilot to the Atom DSL. Please see README.mk for more details. license : BSD3
src/Copilot/Compile/C99.hs view
@@ -22,13 +22,18 @@ import Language.Atom (Atom) import qualified Language.Atom as Atom -import Control.Monad (when)-import System.Directory (createDirectory, renameFile, removeFile)+import Data.Char (toUpper)+import Control.Monad (when, unless)+import System.Directory ( doesDirectoryExist+ , createDirectory+ , removeDirectoryRecursive+ , renameFile+ , removeFile) -------------------------------------------------------------------------------- c99DirName :: String-c99DirName = "copilot-c99"+c99DirName = "copilot-c99-codegen" c99FileRoot :: String c99FileRoot = "copilot"@@ -37,14 +42,22 @@ compile :: Params -> Core.Spec -> IO () compile params spec0 = do- createDirectory dirName- (schedule, _, _, _, _) <- Atom.compile programName atomDefaults atomProgram- when (verbose params) $ putStrLn (Atom.reportSchedule schedule)- genC99Header (prefix params) dirName spec- mv ".c" -- the C file Atom generates- removeFile (programName ++ ".h") -- We don't want Atom's .h file, but our own-+ b <- doesDirectoryExist dirName+ when b $ do putStrLn "Directory exists. Delete? [y/N]:"+ input <- getLine+ if (map toUpper input == "Y") + then (removeDirectoryRecursive dirName) >> build+ else putStrLn "Ok, nothing done. Terminating."+ unless b build where+ build = do + createDirectory dirName+ (schedule, _, _, _, _) <- Atom.compile programName atomDefaults atomProgram+ when (verbose params) $ putStrLn (Atom.reportSchedule schedule)+ genC99Header (prefix params) dirName spec+ mv ".c" -- the C file Atom generates+ removeFile (programName ++ ".h") -- We don't want Atom's .h file, but our own+ mv ext = renameFile p (dirName ++ "/" ++ p) where p = programName ++ ext