aboutsummaryrefslogtreecommitdiff
path: root/bootstrap/src/BuildModel.hs
diff options
context:
space:
mode:
authorBrad Richardson <everythingfunctional@protonmail.com>2020-10-14 12:51:29 -0500
committerBrad Richardson <everythingfunctional@protonmail.com>2020-10-14 12:51:29 -0500
commit29356ac6da1a94dbcc0c50c157e8dcb353213793 (patch)
treee7f307adb296de89b13f7d592a81354304fb2571 /bootstrap/src/BuildModel.hs
parented529804fc47d64f78bdbd3b4e366ff9f632c8d3 (diff)
downloadfpm-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.hs27
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)