init
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
(module
|
||||
(func $add (param $a i32) (param $b i32) (result i32)
|
||||
local.get $a
|
||||
local.get $b
|
||||
i32.add)
|
||||
|
||||
(export "demo:addcomponent/adder@0.1.0#add" (func $add)))
|
||||
@@ -0,0 +1,9 @@
|
||||
package demo:addcomponent@0.1.0;
|
||||
|
||||
interface adder {
|
||||
add: func (a: u32, b: u32) -> u32;
|
||||
}
|
||||
|
||||
world example {
|
||||
export adder;
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
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"]
|
||||
@@ -0,0 +1,12 @@
|
||||
(module
|
||||
(import "demo:importing/provider@0.1.0" "get" (func $get (result i32)))
|
||||
(func $add (param $other i32) (result i32)
|
||||
call $get
|
||||
local.get $other
|
||||
i32.add)
|
||||
(func $mul (param $other i32) (result i32)
|
||||
call $get
|
||||
local.get $other
|
||||
i32.mul)
|
||||
(export "demo:importing/adder@0.1.0#add" (func $add))
|
||||
(export "demo:importing/adder@0.1.0#mul" (func $mul)))
|
||||
@@ -0,0 +1,15 @@
|
||||
package demo:importing@0.1.0;
|
||||
|
||||
interface provider {
|
||||
get: func () -> u32;
|
||||
}
|
||||
|
||||
interface adder {
|
||||
add: func (other: u32) -> u32;
|
||||
mul: func (other: u32) -> u32;
|
||||
}
|
||||
|
||||
world example {
|
||||
import provider;
|
||||
export adder;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
(module
|
||||
(func $get (result i32)
|
||||
i32.const 123)
|
||||
|
||||
(export "demo:importing/provider@0.1.0#get" (func $get)))
|
||||
@@ -0,0 +1,9 @@
|
||||
package demo:importing@0.1.0;
|
||||
|
||||
interface provider {
|
||||
get: func() -> u32;
|
||||
}
|
||||
|
||||
world example {
|
||||
export provider;
|
||||
}
|
||||
Reference in New Issue
Block a user