Skip to content

Commit 21af4d7

Browse files
build: enable WAMR and WAVM runtimes. (#162)
Signed-off-by: Takeshi Yoneda <[email protected]> Co-authored-by: Piotr Sikora <[email protected]>
1 parent e4042ae commit 21af4d7

File tree

14 files changed

+259
-31
lines changed

14 files changed

+259
-31
lines changed

.bazelrc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
build --action_env=CC=clang
2+
build --action_env=CXX=clang++
3+
14
build --enable_platform_specific_config
25

36
build:linux --cxxopt=-std=c++17

.github/workflows/cpp.yml

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,26 +55,33 @@ jobs:
5555
addlicense -check .
5656
5757
build:
58+
name: build (${{ matrix.runtime }})
59+
5860
runs-on: ubuntu-latest
5961

6062
strategy:
63+
fail-fast: false
6164
matrix:
62-
# TODO(mathetake): Add other runtimes.
63-
runtime: [ "wasmtime" ]
65+
runtime: ["wamr", "wasmtime", "wavm"]
6466

6567
steps:
6668
- uses: actions/checkout@v2
6769

68-
- name: Mount bazel cache
69-
uses: actions/cache@v1
70+
- name: Install dependency
71+
run: sudo apt-get install ninja-build
72+
73+
- name: Mount Bazel cache
74+
uses: actions/cache@v2
7075
with:
71-
path: "/home/runner/.cache/bazel"
72-
key: bazel-${{ matrix.runtime }}
76+
path: |
77+
~/.cache/bazel
78+
~/.cache/bazelisk
79+
key: bazel-${{ matrix.runtime }}-${{ hashFiles('WORKSPACE', '.bazelrc', '.bazelversion', 'bazel/cargo/Cargo.raze.lock', 'bazel/dependencies.bzl', 'bazel/repositories.bzl') }}
7380

7481
- name: Test
7582
run: |
76-
bazel test --define runtime=${{ matrix.runtime }} //...
83+
bazel test --define runtime=${{ matrix.runtime }} //test/...
7784
7885
- name: Test (signed Wasm module)
7986
run: |
80-
bazel test --define runtime=${{ matrix.runtime }} --cxxopt=-DPROXY_WASM_VERIFY_WITH_ED25519_PUBKEY=\"$(xxd -p -c 256 test/test_data/signature_key1.pub | cut -b9-)\" //test:signature_util_test
87+
bazel test --define runtime=${{ matrix.runtime }} --per_file_copt=//...@-DPROXY_WASM_VERIFY_WITH_ED25519_PUBKEY=\"$(xxd -p -c 256 test/test_data/signature_key1.pub | cut -b9-)\" //test:signature_util_test

BUILD

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,12 @@ cc_library(
5353
cc_library(
5454
name = "wamr_lib",
5555
srcs = glob([
56-
# TODO(@mathetake): Add WAMR lib.
57-
# "src/wamr/*.h",
58-
# "src/wamr/*.cc",
56+
"src/wamr/*.h",
57+
"src/wamr/*.cc",
5958
]),
6059
deps = [
6160
":common_lib",
62-
# TODO(@mathetake): Add WAMR lib.
61+
"@wamr//:wamr_lib",
6362
],
6463
)
6564

@@ -78,13 +77,17 @@ cc_library(
7877
cc_library(
7978
name = "wavm_lib",
8079
srcs = glob([
81-
# TODO(@mathetake): Add WAVM lib.
82-
# "src/wavm/*.h",
83-
# "src/wavm/*.cc",
80+
"src/wavm/*.h",
81+
"src/wavm/*.cc",
8482
]),
83+
copts = [
84+
'-DWAVM_API=""',
85+
"-Wno-non-virtual-dtor",
86+
"-Wno-old-style-cast",
87+
],
8588
deps = [
8689
":common_lib",
87-
# TODO(@mathetake): Add WAVM lib.
90+
"@wavm//:wavm_lib",
8891
],
8992
)
9093

bazel/external/llvm.BUILD

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
load("@rules_foreign_cc//foreign_cc:defs.bzl", "cmake")
2+
3+
licenses(["notice"]) # Apache 2
4+
5+
package(default_visibility = ["//visibility:public"])
6+
7+
filegroup(
8+
name = "srcs",
9+
srcs = glob(["**"]),
10+
)
11+
12+
cmake(
13+
name = "llvm_lib",
14+
cache_entries = {
15+
# Disable both: BUILD and INCLUDE, since some of the INCLUDE
16+
# targets build code instead of only generating build files.
17+
"LLVM_BUILD_BENCHMARKS": "off",
18+
"LLVM_INCLUDE_BENCHMARKS": "off",
19+
"LLVM_BUILD_DOCS": "off",
20+
"LLVM_INCLUDE_DOCS": "off",
21+
"LLVM_BUILD_EXAMPLES": "off",
22+
"LLVM_INCLUDE_EXAMPLES": "off",
23+
"LLVM_BUILD_RUNTIME": "off",
24+
"LLVM_BUILD_RUNTIMES": "off",
25+
"LLVM_INCLUDE_RUNTIMES": "off",
26+
"LLVM_BUILD_TESTS": "off",
27+
"LLVM_INCLUDE_TESTS": "off",
28+
"LLVM_BUILD_TOOLS": "off",
29+
"LLVM_INCLUDE_TOOLS": "off",
30+
"LLVM_BUILD_UTILS": "off",
31+
"LLVM_INCLUDE_UTILS": "off",
32+
"LLVM_ENABLE_LIBEDIT": "off",
33+
"LLVM_ENABLE_LIBXML2": "off",
34+
"LLVM_ENABLE_TERMINFO": "off",
35+
"LLVM_ENABLE_ZLIB": "off",
36+
"LLVM_TARGETS_TO_BUILD": "X86",
37+
# Workaround for the issue with statically linked libstdc++
38+
# using -l:libstdc++.a.
39+
"CMAKE_CXX_FLAGS": "-lstdc++",
40+
},
41+
env_vars = {
42+
# Workaround for the -DDEBUG flag added in fastbuild on macOS,
43+
# which conflicts with DEBUG macro used in LLVM.
44+
"CFLAGS": "-UDEBUG",
45+
"CXXFLAGS": "-UDEBUG",
46+
"ASMFLAGS": "-UDEBUG",
47+
},
48+
generate_args = ["-GNinja"],
49+
lib_source = ":srcs",
50+
out_static_libs = [
51+
"libLLVMInterpreter.a",
52+
"libLLVMWindowsManifest.a",
53+
"libLLVMLibDriver.a",
54+
"libLLVMObjectYAML.a",
55+
"libLLVMCoverage.a",
56+
"libLLVMLineEditor.a",
57+
"libLLVMDlltoolDriver.a",
58+
"libLLVMOption.a",
59+
"libLLVMTableGen.a",
60+
"libLLVMFuzzMutate.a",
61+
"libLLVMSymbolize.a",
62+
"libLLVMCoroutines.a",
63+
"libLLVMDebugInfoPDB.a",
64+
"libLLVMLTO.a",
65+
"libLLVMObjCARCOpts.a",
66+
"libLLVMMIRParser.a",
67+
"libLLVMOrcJIT.a",
68+
"libLLVMOrcError.a",
69+
"libLLVMJITLink.a",
70+
"libLLVMPasses.a",
71+
"libLLVMipo.a",
72+
"libLLVMInstrumentation.a",
73+
"libLLVMVectorize.a",
74+
"libLLVMLinker.a",
75+
"libLLVMIRReader.a",
76+
"libLLVMAsmParser.a",
77+
"libLLVMX86Disassembler.a",
78+
"libLLVMX86AsmParser.a",
79+
"libLLVMX86CodeGen.a",
80+
"libLLVMCFGuard.a",
81+
"libLLVMGlobalISel.a",
82+
"libLLVMSelectionDAG.a",
83+
"libLLVMAsmPrinter.a",
84+
"libLLVMDebugInfoDWARF.a",
85+
"libLLVMCodeGen.a",
86+
"libLLVMScalarOpts.a",
87+
"libLLVMInstCombine.a",
88+
"libLLVMAggressiveInstCombine.a",
89+
"libLLVMTransformUtils.a",
90+
"libLLVMBitWriter.a",
91+
"libLLVMX86Desc.a",
92+
"libLLVMMCDisassembler.a",
93+
"libLLVMX86Utils.a",
94+
"libLLVMX86Info.a",
95+
"libLLVMMCJIT.a",
96+
"libLLVMExecutionEngine.a",
97+
"libLLVMTarget.a",
98+
"libLLVMAnalysis.a",
99+
"libLLVMProfileData.a",
100+
"libLLVMRuntimeDyld.a",
101+
"libLLVMObject.a",
102+
"libLLVMTextAPI.a",
103+
"libLLVMMCParser.a",
104+
"libLLVMBitReader.a",
105+
"libLLVMMC.a",
106+
"libLLVMDebugInfoCodeView.a",
107+
"libLLVMDebugInfoMSF.a",
108+
"libLLVMCore.a",
109+
"libLLVMRemarks.a",
110+
"libLLVMBitstreamReader.a",
111+
"libLLVMBinaryFormat.a",
112+
"libLLVMSupport.a",
113+
"libLLVMDemangle.a",
114+
],
115+
)

bazel/external/proxy-wasm-cpp-sdk.BUILD

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
load("@rules_cc//cc:defs.bzl", "cc_library")
2+
13
licenses(["notice"]) # Apache 2
24

35
package(default_visibility = ["//visibility:public"])

bazel/external/wamr.BUILD

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,31 @@
1-
licenses(["notice"]) # Apache 2
2-
31
load("@rules_foreign_cc//foreign_cc:defs.bzl", "cmake")
42

3+
licenses(["notice"]) # Apache 2
4+
55
package(default_visibility = ["//visibility:public"])
66

77
filegroup(
88
name = "srcs",
99
srcs = glob(["**"]),
10-
visibility = ["//visibility:public"],
1110
)
1211

1312
cmake(
14-
name = "libiwasm",
13+
name = "wamr_lib",
1514
cache_entries = {
15+
"LLVM_DIR": "$EXT_BUILD_DEPS/copy_llvm/llvm/lib/cmake/llvm",
1616
"WAMR_BUILD_INTERP": "1",
1717
"WAMR_BUILD_JIT": "0",
1818
"WAMR_BUILD_AOT": "0",
1919
"WAMR_BUILD_SIMD": "0",
2020
"WAMR_BUILD_MULTI_MODULE": "1",
2121
"WAMR_BUILD_LIBC_WASI": "0",
22+
"WAMR_BUILD_TAIL_CALL": "1",
2223
},
24+
defines = ["WASM_WAMR"],
25+
generate_args = ["-GNinja"],
2326
lib_source = ":srcs",
24-
out_shared_libs = ["libiwasm.so"],
27+
out_static_libs = ["libvmlib.a"],
28+
deps = [
29+
"@llvm//:llvm_lib",
30+
],
2531
)

bazel/external/wasm-c-api.BUILD

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
load("@rules_cc//cc:defs.bzl", "cc_library")
2+
13
licenses(["notice"]) # Apache 2
24

35
package(default_visibility = ["//visibility:public"])

bazel/external/wasmtime.BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
load("@rules_cc//cc:defs.bzl", "cc_library")
12
load("@rules_rust//rust:rust.bzl", "rust_library")
23

34
licenses(["notice"]) # Apache 2

bazel/external/wavm.BUILD

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
load("@rules_foreign_cc//foreign_cc:defs.bzl", "cmake")
2+
3+
licenses(["notice"]) # Apache 2
4+
5+
package(default_visibility = ["//visibility:public"])
6+
7+
filegroup(
8+
name = "srcs",
9+
srcs = glob(["**"]),
10+
)
11+
12+
cmake(
13+
name = "wavm_lib",
14+
cache_entries = {
15+
"LLVM_DIR": "$EXT_BUILD_DEPS/copy_llvm/llvm/lib/cmake/llvm",
16+
"WAVM_ENABLE_STATIC_LINKING": "on",
17+
"WAVM_ENABLE_RELEASE_ASSERTS": "on",
18+
"WAVM_ENABLE_UNWIND": "on",
19+
# Workaround for the issue with statically linked libstdc++
20+
# using -l:libstdc++.a.
21+
"CMAKE_CXX_FLAGS": "-lstdc++ -Wno-unused-command-line-argument",
22+
},
23+
defines = ["WASM_WAVM"],
24+
env_vars = {
25+
# Workaround for the -DDEBUG flag added in fastbuild on macOS,
26+
# which conflicts with DEBUG macro used in LLVM.
27+
"CFLAGS": "-UDEBUG",
28+
"CXXFLAGS": "-UDEBUG",
29+
"ASMFLAGS": "-UDEBUG",
30+
},
31+
generate_args = ["-GNinja"],
32+
lib_source = ":srcs",
33+
out_static_libs = [
34+
"libWAVM.a",
35+
"libWAVMUnwind.a",
36+
],
37+
deps = ["@llvm//:llvm_lib"],
38+
)

bazel/repositories.bzl

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ def proxy_wasm_cpp_host_repositories():
3939
http_archive(
4040
name = "wamr",
4141
build_file = "@proxy_wasm_cpp_host//bazel/external:wamr.BUILD",
42-
sha256 = "1d870f396bb6bdcb5c816326655b19a2877bbdf879255c335b8e84ce4ee37780",
43-
strip_prefix = "wasm-micro-runtime-9710d9325f426121cc1f2c62386a71d0c022d613",
44-
url = "https://github.com/bytecodealliance/wasm-micro-runtime/archive/9710d9325f426121cc1f2c62386a71d0c022d613.tar.gz",
42+
sha256 = "46ad365a1c0668797e69cb868574fd526cd8e26a503213caf782c39061e6d2e1",
43+
strip_prefix = "wasm-micro-runtime-17a216748574499bd3a5130e7e6a20b84fe76798",
44+
url = "https://github.com/bytecodealliance/wasm-micro-runtime/archive/17a216748574499bd3a5130e7e6a20b84fe76798.tar.gz",
4545
)
4646

4747
http_archive(
@@ -80,3 +80,19 @@ def proxy_wasm_cpp_host_repositories():
8080
strip_prefix = "rules_foreign_cc-0.2.0",
8181
url = "https://github.com/bazelbuild/rules_foreign_cc/archive/0.2.0.tar.gz",
8282
)
83+
84+
http_archive(
85+
name = "llvm",
86+
build_file = "@proxy_wasm_cpp_host//bazel/external:llvm.BUILD",
87+
sha256 = "df83a44b3a9a71029049ec101fb0077ecbbdf5fe41e395215025779099a98fdf",
88+
strip_prefix = "llvm-10.0.0.src",
89+
url = "https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.0/llvm-10.0.0.src.tar.xz",
90+
)
91+
92+
http_archive(
93+
name = "wavm",
94+
build_file = "@proxy_wasm_cpp_host//bazel/external:wavm.BUILD",
95+
sha256 = "ce899269516313b400005a8cc9bc3bcd8329663f43f7b4baae211ea0cd456a39",
96+
strip_prefix = "WAVM-79c3aa29366615d9b1593cd527e5b4b94cc6072a",
97+
url = "https://github.com/WAVM/WAVM/archive/79c3aa29366615d9b1593cd527e5b4b94cc6072a.tar.gz",
98+
)

src/null/null_vm.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
#include <string.h>
1919

20+
#include <limits>
2021
#include <memory>
2122
#include <unordered_map>
2223
#include <utility>

src/wavm/wavm.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ namespace {
101101
} while (0)
102102

103103
std::string getFailMessage(std::string_view function_name, WAVM::Runtime::Exception *exception) {
104-
std::string message = "Function " + std::string(function_name) +
104+
std::string message = "Function: " + std::string(function_name) +
105105
" failed: " + WAVM::Runtime::describeExceptionType(exception->type) +
106106
"\nProxy-Wasm plugin in-VM backtrace:\n";
107107
std::vector<std::string> callstack_descriptions =

0 commit comments

Comments
 (0)