diff options
author | Brad Richardson <everythingfunctional@protonmail.com> | 2020-10-14 12:51:29 -0500 |
---|---|---|
committer | Brad Richardson <everythingfunctional@protonmail.com> | 2020-10-14 12:51:29 -0500 |
commit | 29356ac6da1a94dbcc0c50c157e8dcb353213793 (patch) | |
tree | e7f307adb296de89b13f7d592a81354304fb2571 /bootstrap/src/BuildModel.hs | |
parent | ed529804fc47d64f78bdbd3b4e366ff9f632c8d3 (diff) | |
download | fpm-29356ac6da1a94dbcc0c50c157e8dcb353213793.tar.gz fpm-29356ac6da1a94dbcc0c50c157e8dcb353213793.zip |
Add test for program object file name
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) |