init
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
.direnv/
|
||||
.shake/
|
||||
*.out
|
||||
*.wasm
|
||||
@@ -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;
|
||||
}
|
||||
Generated
+27
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1781607440,
|
||||
"narHash": "sha256-rxO+uc/KFbSJp+pgyXRuAX6QlG9hJdnt0BXpEQRXY+U=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "3e41b24abd260e8f71dbe2f5737d24122f972158",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||
};
|
||||
|
||||
outputs = inputs:
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
pkgs = import inputs.nixpkgs {
|
||||
inherit system;
|
||||
};
|
||||
shake = pkgs.callPackage ./shake-wrapper.nix {};
|
||||
in {
|
||||
devShells.${system}.default = pkgs.mkShell {
|
||||
packages = [
|
||||
shake
|
||||
pkgs.wabt
|
||||
pkgs.nodejs
|
||||
pkgs.wasmtime
|
||||
pkgs.wasm-tools
|
||||
pkgs.wac-cli
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{ runCommandLocal, makeWrapper, lib, haskellPackages }:
|
||||
|
||||
let
|
||||
our-ghc = haskellPackages.ghc.withPackages (ps: [
|
||||
ps.shake
|
||||
]);
|
||||
in runCommandLocal
|
||||
"shake-wrapper"
|
||||
{ nativeBuildInputs = [ makeWrapper ]; }
|
||||
''
|
||||
mkdir -p $out/bin
|
||||
makeWrapper ${lib.getExe haskellPackages.shake} $out/bin/shake \
|
||||
--prefix PATH : ${lib.makeBinPath [our-ghc]}
|
||||
''
|
||||
Reference in New Issue
Block a user