diff options
Diffstat (limited to 'bootstrap/src/BuildModel.hs')
-rw-r--r-- | bootstrap/src/BuildModel.hs | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/bootstrap/src/BuildModel.hs b/bootstrap/src/BuildModel.hs index 711f977..b8bc122 100644 --- a/bootstrap/src/BuildModel.hs +++ b/bootstrap/src/BuildModel.hs @@ -1,11 +1,34 @@ module BuildModel where +import Data.List ( intercalate ) +import System.FilePath ( (</>) + , (<.>) + , splitDirectories + ) + data RawSource = RawSource { rawSourceFilename :: FilePath , rawSourceContents :: String } -data Source = Program { programSourceFileName :: String} +data Source = Program { + programSourceFileName :: FilePath + , programObjectFileName :: FilePath -> FilePath +} processRawSource :: RawSource -> Source -processRawSource rawSource = Program $ rawSourceFilename rawSource +processRawSource rawSource = + let sourceFileName = rawSourceFilename rawSource + in Program + { programSourceFileName = sourceFileName + , programObjectFileName = \buildDirectory -> + buildDirectory + </> (pathSeparatorsToUnderscores + sourceFileName + ) + <.> "o" + } + +pathSeparatorsToUnderscores :: FilePath -> FilePath +pathSeparatorsToUnderscores fileName = + intercalate "_" (splitDirectories fileName) |