38 lines
1.2 KiB
Haskell
38 lines
1.2 KiB
Haskell
import Development.Shake
|
|
import Development.Shake.Command
|
|
import Development.Shake.FilePath
|
|
import Development.Shake.Util
|
|
|
|
main = shakeArgs shakeOptions $ do
|
|
-- action $ do
|
|
-- sourceFiles <- getDirectoryFiles "" ["//*.luasm"]
|
|
-- need $ (-<.> "luac") <$> sourceFiles
|
|
want ["complete.component.wasm"]
|
|
alternatives $ do
|
|
"complete.component.wasm" %> \out -> do
|
|
need ["provider.component.wasm","importing.component.wasm"]
|
|
cmd_
|
|
"wac plug --plug"
|
|
"provider.component.wasm" "importing.component.wasm"
|
|
"-o" "complete.component.wasm"
|
|
"*.component.wasm" %> \out -> do
|
|
let wasm = out `replaceExtensions` "wasm"
|
|
need [wasm]
|
|
cmd_
|
|
"wasm-tools component new"
|
|
[wasm]
|
|
"-o" [out]
|
|
"*.wasm" %> \out -> do
|
|
let wit = out -<.> "wit"
|
|
let wat = out -<.> "wat"
|
|
need [wit,wat]
|
|
cmd_
|
|
"wasm-tools component embed"
|
|
[wit] [wat] "-o" [out]
|
|
phony "run" $ do
|
|
need ["complete.component.wasm"]
|
|
cmd_ "wasmtime run --invoke add(1) complete.component.wasm"
|
|
phony "clean" $ do
|
|
removeFilesAfter ".shake" ["//*"]
|
|
liftIO $ removeFiles "." ["*.wasm"]
|