From 6cc219bd69fedcee6037d3b24546ae81c175c189 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Sun, 21 Aug 2022 08:23:11 +0800 Subject: [PATCH] =?UTF-8?q?3rdparty/wabt:=20=E6=94=AF=E6=8C=81=E7=BA=AF=20?= =?UTF-8?q?Go=20=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 10 +++++----- README.md | 4 +++- internal/3rdparty/float/binary128/gen.go | 2 +- internal/{ => 3rdparty}/wabt/wabt_nocgo.go | 21 +++++++++++---------- internal/wabt/wabt_cgo.go | 22 ---------------------- main.go | 12 ++++++++---- 6 files changed, 28 insertions(+), 43 deletions(-) rename internal/{ => 3rdparty}/wabt/wabt_nocgo.go (55%) delete mode 100644 internal/wabt/wabt_cgo.go diff --git a/Makefile b/Makefile index e5aea6c..384493c 100644 --- a/Makefile +++ b/Makefile @@ -1,17 +1,17 @@ # 版权 @2019 凹语言 作者。保留所有权利。 hello: - go run main.go run _examples/hello + CGO_ENABLED=0 go run main.go run _examples/hello hi: - go run main.go run _examples/hi + CGO_ENABLED=0 go run main.go run _examples/hi prime: - go run main.go run _examples/prime + CGO_ENABLED=0 go run main.go run _examples/prime wasm: - go run main.go ssa _examples/hi - go run main.go wasm _examples/hi + CGO_ENABLED=0 go run main.go ssa _examples/hi + CGO_ENABLED=0 go run main.go wasm _examples/hi wasm2wat a.out.wasm -o a.out.wast cd ./tools/wa-wasmer-run && go run main.go -file=../../a.out.wasm diff --git a/README.md b/README.md index 4e97517..c4b52e7 100644 --- a/README.md +++ b/README.md @@ -28,13 +28,15 @@ +------------+ ``` -安装和测试: +安装和测试(默认使用了 CGO,可选择关闭): 1. 安装 [Clang](https://clang.llvm.org), 确保本地 `clang` 命令有效 2. `go install github.com/wa-lang/wa@latest` 3. `wa init -name=_examples/hi` 4. `wa run _examples/hi` +> 如果本地安装了 `wabt` 工具,可以通过设置 `CGO_ENABLED` 环境变量为 `0` 关闭 CGO 特性,提升 `go build` 编译性能。 + > 项目尚处于原型开源阶段,如果有共建和PR需求请 [入群交流](https://wa-lang.org/community/index.html)。 > [VS Code 插件支持](https://marketplace.visualstudio.com/items?itemName=xxxDeveloper.vscode-wa) diff --git a/internal/3rdparty/float/binary128/gen.go b/internal/3rdparty/float/binary128/gen.go index e34a45d..636947e 100644 --- a/internal/3rdparty/float/binary128/gen.go +++ b/internal/3rdparty/float/binary128/gen.go @@ -4,6 +4,7 @@ package main import ( + "errors" "flag" "fmt" "log" @@ -13,7 +14,6 @@ import ( "os" "sort" "text/template" - "errors" ) func main() { diff --git a/internal/wabt/wabt_nocgo.go b/internal/3rdparty/wabt/wabt_nocgo.go similarity index 55% rename from internal/wabt/wabt_nocgo.go rename to internal/3rdparty/wabt/wabt_nocgo.go index 72d4dad..6288d4d 100644 --- a/internal/wabt/wabt_nocgo.go +++ b/internal/3rdparty/wabt/wabt_nocgo.go @@ -1,30 +1,31 @@ // 版权 @2022 凹语言 作者。保留所有权利。 -//go:build !wabt_cgo -// +build !wabt_cgo +//go:build !cgo +// +build !cgo package wabt import ( "fmt" - "os" "os/exec" "runtime" ) -func Wat2WasmCmd(args ...string) { +const Version = "1.0.29" + +func Wat2WasmCmd(args ...string) error { exe := "wat2wasm" if runtime.GOOS == "windows" { exe += ".exe" } cmd := exec.Command(exe, args...) stdoutStderr, err := cmd.CombinedOutput() + if len(stdoutStderr) != 0 { + fmt.Printf("%s\n", stdoutStderr) + } if err != nil { - if len(stdoutStderr) != 0 { - fmt.Printf("%s\n", stdoutStderr) - } - fmt.Printf("ERROR: %v\n", err) - os.Exit(1) + return err } - fmt.Printf("%s\n", stdoutStderr) + + return nil } diff --git a/internal/wabt/wabt_cgo.go b/internal/wabt/wabt_cgo.go deleted file mode 100644 index ca64d17..0000000 --- a/internal/wabt/wabt_cgo.go +++ /dev/null @@ -1,22 +0,0 @@ -// 版权 @2022 凹语言 作者。保留所有权利。 - -// go build -tags="wabt_cgo" - -//go:build wabt_cgo -// +build wabt_cgo - -package wabt - -import ( - "fmt" - "os" - - "github.com/wa-lang/wa/internal/3rdparty/wabt" -) - -func Wat2WasmCmd(args ...string) { - if err := wabt.Wat2WasmCmd(args...); err != nil { - fmt.Printf("ERROR: %v\n", err) - os.Exit(1) - } -} diff --git a/main.go b/main.go index 018edbe..33b2845 100644 --- a/main.go +++ b/main.go @@ -11,9 +11,9 @@ import ( "runtime/debug" "github.com/wa-lang/wa/internal/3rdparty/cli" + "github.com/wa-lang/wa/internal/3rdparty/wabt" "github.com/wa-lang/wa/internal/app" "github.com/wa-lang/wa/internal/config" - "github.com/wa-lang/wa/internal/wabt" ) func main() { @@ -270,11 +270,15 @@ func main() { }, }, { - Name: "wat2wasm", - Usage: "convert wat to the wasm", + Name: "wat2wasm", + Usage: "convert wat to the wasm", Hidden: true, Action: func(c *cli.Context) error { - wabt.Wat2WasmCmd(c.Args().Slice()...) + err := wabt.Wat2WasmCmd(c.Args().Slice()...) + if err != nil { + fmt.Println(err) + os.Exit(1) + } return nil }, }, -- GitLab