Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build: enable WAMR and WAVM runtimes. #162

Merged
merged 27 commits into from
May 16, 2021
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
9337c10
build: enable WAMR and LLVM builds.
mathetake May 12, 2021
fe09128
Add WAVM.
mathetake May 12, 2021
26a0890
Use clang.
mathetake May 12, 2021
8357bea
Fix test path
mathetake May 12, 2021
9d15fb0
Cache on runtime dependency versions.
mathetake May 12, 2021
8296f8e
Fix WAVM build and disable runtime_test temporarily.
mathetake May 12, 2021
cf4978d
Fix bazelrc.
mathetake May 12, 2021
0e077c4
Fix runtime name.
mathetake May 12, 2021
5770ad4
review: add Ninja options.
mathetake May 12, 2021
6abbc2d
Merge remote-tracking branch 'origin/master' into llvm-wamr
mathetake May 12, 2021
c67261f
review: remove deprecated options, LLVM patch.
mathetake May 13, 2021
117534a
Use cache@v2 for better compression
mathetake May 13, 2021
db4b0ce
Fix runtime tests.
mathetake May 13, 2021
180cfd0
Fix WAVM build with unresolved TODO.
mathetake May 13, 2021
72a8153
review: use simple cache key.
mathetake May 13, 2021
f3d9496
Update WAMR and use Ninja.
mathetake May 13, 2021
90dc748
review: Delete trap2 test.
mathetake May 13, 2021
0bb696f
Add missing header in NullVm.
mathetake May 13, 2021
cb274d3
review: restore seprate trap2 test with TODO for WAVM and fix nits.
mathetake May 13, 2021
86002c8
Merge remote-tracking branch 'origin/master' into llvm-wamr
mathetake May 13, 2021
6fed6fe
review: fix style.
mathetake May 14, 2021
502c42e
try removing -v.
mathetake May 14, 2021
7492878
review: disable LLVM benchmark build.
mathetake May 15, 2021
cb4a607
Merge branch 'master' into llvm-wamr
PiotrSikora May 15, 2021
7822e89
Fix merge (missing new line at the end).
PiotrSikora May 15, 2021
d6ba6ab
review: use --per_file_copt.
PiotrSikora May 15, 2021
6cf8d7b
review: wipe cache.
PiotrSikora May 15, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
build --action_env=CC=clang
build --action_env=CXX=clang++

build --enable_platform_specific_config
mathetake marked this conversation as resolved.
Show resolved Hide resolved

build:linux --cxxopt=-std=c++17
Expand Down
15 changes: 9 additions & 6 deletions .github/workflows/cpp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,23 +55,26 @@ jobs:
addlicense -check .

build:
name: build (${{ matrix.runtime }})

runs-on: ubuntu-latest

strategy:
matrix:
mathetake marked this conversation as resolved.
Show resolved Hide resolved
# TODO(mathetake): Add other runtimes.
runtime: [ "wasmtime" ]
runtime: ["wamr", "wasmtime", "wavm"]

steps:
- uses: actions/checkout@v2

- name: Install dependency
run: sudo apt-get install ninja-build

- name: Mount bazel cache
mathetake marked this conversation as resolved.
Show resolved Hide resolved
uses: actions/cache@v1
uses: actions/cache@v2
with:
path: "/home/runner/.cache/bazel"
mathetake marked this conversation as resolved.
Show resolved Hide resolved
key: bazel-${{ matrix.runtime }}
key: bazel-${{ hashFiles('WORKSPACE', '.bazelrc', '.bazelversion', 'bazel/cargo/Cargo.raze.lock', 'bazel/dependencies.bzl', 'bazel/repositories.bzl') }}-${{ matrix.runtime }}

- name: Test
run: |
bazel test --define runtime=${{ matrix.runtime }} //...

bazel test --define runtime=${{ matrix.runtime }} //test/...
19 changes: 11 additions & 8 deletions BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,12 @@ cc_library(
cc_library(
name = "wamr_lib",
srcs = glob([
# TODO(@mathetake): Add WAMR lib.
# "src/wamr/*.h",
# "src/wamr/*.cc",
"src/wamr/*.h",
"src/wamr/*.cc",
]),
deps = [
":common_lib",
# TODO(@mathetake): Add WAMR lib.
"@wamr//:wamr_lib",
],
)

Expand All @@ -78,13 +77,17 @@ cc_library(
cc_library(
name = "wavm_lib",
srcs = glob([
# TODO(@mathetake): Add WAVM lib.
# "src/wavm/*.h",
# "src/wavm/*.cc",
"src/wavm/*.h",
"src/wavm/*.cc",
]),
copts = [
'-DWAVM_API=""',
"-Wno-non-virtual-dtor",
"-Wno-old-style-cast",
],
deps = [
":common_lib",
# TODO(@mathetake): Add WAVM lib.
"@wavm//:wavm_lib",
],
)

Expand Down
114 changes: 114 additions & 0 deletions bazel/external/llvm.BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
load("@rules_foreign_cc//foreign_cc:defs.bzl", "cmake")

licenses(["notice"]) # Apache 2

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

filegroup(
name = "srcs",
srcs = glob(["**"]),
)

cmake(
name = "llvm_lib",
mathetake marked this conversation as resolved.
Show resolved Hide resolved
build_args = ["-v"],
cache_entries = {
# Disable both: BUILD and INCLUDE, since some of the INCLUDE
# targets build code instead of only generating build files.
"LLVM_BUILD_DOCS": "off",
"LLVM_INCLUDE_DOCS": "off",
"LLVM_BUILD_EXAMPLES": "off",
"LLVM_INCLUDE_EXAMPLES": "off",
PiotrSikora marked this conversation as resolved.
Show resolved Hide resolved
"LLVM_BUILD_RUNTIME": "off",
"LLVM_BUILD_RUNTIMES": "off",
"LLVM_INCLUDE_RUNTIMES": "off",
"LLVM_BUILD_TESTS": "off",
"LLVM_INCLUDE_TESTS": "off",
"LLVM_BUILD_TOOLS": "off",
"LLVM_INCLUDE_TOOLS": "off",
"LLVM_BUILD_UTILS": "off",
"LLVM_INCLUDE_UTILS": "off",
"LLVM_ENABLE_LIBEDIT": "off",
"LLVM_ENABLE_LIBXML2": "off",
"LLVM_ENABLE_TERMINFO": "off",
"LLVM_ENABLE_ZLIB": "off",
"LLVM_TARGETS_TO_BUILD": "X86",
# Workaround for the issue with statically linked libstdc++
# using -l:libstdc++.a.
"CMAKE_CXX_FLAGS": "-lstdc++",
},
env_vars = {
# Workaround for the -DDEBUG flag added in fastbuild on macOS,
# which conflicts with DEBUG macro used in LLVM.
"CFLAGS": "-UDEBUG",
"CXXFLAGS": "-UDEBUG",
"ASMFLAGS": "-UDEBUG",
},
generate_args = ["-GNinja"],
lib_source = ":srcs",
out_static_libs = [
"libLLVMInterpreter.a",
"libLLVMWindowsManifest.a",
"libLLVMLibDriver.a",
"libLLVMObjectYAML.a",
"libLLVMCoverage.a",
"libLLVMLineEditor.a",
"libLLVMDlltoolDriver.a",
"libLLVMOption.a",
"libLLVMTableGen.a",
"libLLVMFuzzMutate.a",
"libLLVMSymbolize.a",
"libLLVMCoroutines.a",
"libLLVMDebugInfoPDB.a",
"libLLVMLTO.a",
"libLLVMObjCARCOpts.a",
"libLLVMMIRParser.a",
"libLLVMOrcJIT.a",
"libLLVMOrcError.a",
"libLLVMJITLink.a",
"libLLVMPasses.a",
"libLLVMipo.a",
"libLLVMInstrumentation.a",
"libLLVMVectorize.a",
"libLLVMLinker.a",
"libLLVMIRReader.a",
"libLLVMAsmParser.a",
"libLLVMX86Disassembler.a",
"libLLVMX86AsmParser.a",
"libLLVMX86CodeGen.a",
"libLLVMCFGuard.a",
"libLLVMGlobalISel.a",
"libLLVMSelectionDAG.a",
"libLLVMAsmPrinter.a",
"libLLVMDebugInfoDWARF.a",
"libLLVMCodeGen.a",
"libLLVMScalarOpts.a",
"libLLVMInstCombine.a",
"libLLVMAggressiveInstCombine.a",
"libLLVMTransformUtils.a",
"libLLVMBitWriter.a",
"libLLVMX86Desc.a",
"libLLVMMCDisassembler.a",
"libLLVMX86Utils.a",
"libLLVMX86Info.a",
"libLLVMMCJIT.a",
"libLLVMExecutionEngine.a",
"libLLVMTarget.a",
"libLLVMAnalysis.a",
"libLLVMProfileData.a",
"libLLVMRuntimeDyld.a",
"libLLVMObject.a",
"libLLVMTextAPI.a",
"libLLVMMCParser.a",
"libLLVMBitReader.a",
"libLLVMMC.a",
"libLLVMDebugInfoCodeView.a",
"libLLVMDebugInfoMSF.a",
"libLLVMCore.a",
"libLLVMRemarks.a",
"libLLVMBitstreamReader.a",
"libLLVMBinaryFormat.a",
"libLLVMSupport.a",
"libLLVMDemangle.a",
],
)
2 changes: 2 additions & 0 deletions bazel/external/proxy-wasm-cpp-sdk.BUILD
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
load("@rules_cc//cc:defs.bzl", "cc_library")

licenses(["notice"]) # Apache 2

package(default_visibility = ["//visibility:public"])
Expand Down
17 changes: 12 additions & 5 deletions bazel/external/wamr.BUILD
Original file line number Diff line number Diff line change
@@ -1,25 +1,32 @@
licenses(["notice"]) # Apache 2

load("@rules_foreign_cc//foreign_cc:defs.bzl", "cmake")

licenses(["notice"]) # Apache 2

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

filegroup(
name = "srcs",
srcs = glob(["**"]),
visibility = ["//visibility:public"],
)

cmake(
name = "libiwasm",
name = "wamr_lib",
build_args = ["-v"],
cache_entries = {
"LLVM_DIR": "$EXT_BUILD_DEPS/copy_llvm/llvm/lib/cmake/llvm",
"WAMR_BUILD_INTERP": "1",
"WAMR_BUILD_JIT": "0",
"WAMR_BUILD_AOT": "0",
"WAMR_BUILD_SIMD": "0",
"WAMR_BUILD_MULTI_MODULE": "1",
"WAMR_BUILD_LIBC_WASI": "0",
"WAMR_BUILD_TAIL_CALL": "1",
},
defines = ["WASM_WAMR"],
generate_args = ["-GNinja"],
lib_source = ":srcs",
out_shared_libs = ["libiwasm.so"],
out_static_libs = ["libvmlib.a"],
deps = [
"@llvm//:llvm_lib",
],
)
2 changes: 2 additions & 0 deletions bazel/external/wasm-c-api.BUILD
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
load("@rules_cc//cc:defs.bzl", "cc_library")

licenses(["notice"]) # Apache 2

package(default_visibility = ["//visibility:public"])
Expand Down
1 change: 1 addition & 0 deletions bazel/external/wasmtime.BUILD
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
load("@rules_cc//cc:defs.bzl", "cc_library")
load("@rules_rust//rust:rust.bzl", "rust_library")

licenses(["notice"]) # Apache 2
Expand Down
39 changes: 39 additions & 0 deletions bazel/external/wavm.BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
load("@rules_foreign_cc//foreign_cc:defs.bzl", "cmake")

licenses(["notice"]) # Apache 2

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

filegroup(
name = "srcs",
srcs = glob(["**"]),
)

cmake(
name = "wavm_lib",
build_args = ["-v"],
cache_entries = {
"LLVM_DIR": "$EXT_BUILD_DEPS/copy_llvm/llvm/lib/cmake/llvm",
"WAVM_ENABLE_STATIC_LINKING": "on",
"WAVM_ENABLE_RELEASE_ASSERTS": "on",
"WAVM_ENABLE_UNWIND": "on",
# Workaround for the issue with statically linked libstdc++
# using -l:libstdc++.a.
"CMAKE_CXX_FLAGS": "-lstdc++ -Wno-unused-command-line-argument",
},
defines = ["WASM_WAVM"],
env_vars = {
# Workaround for the -DDEBUG flag added in fastbuild on macOS,
# which conflicts with DEBUG macro used in LLVM.
"CFLAGS": "-UDEBUG",
"CXXFLAGS": "-UDEBUG",
"ASMFLAGS": "-UDEBUG",
},
generate_args = ["-GNinja"],
lib_source = ":srcs",
out_static_libs = [
"libWAVM.a",
"libWAVMUnwind.a",
],
deps = ["@llvm//:llvm_lib"],
)
22 changes: 19 additions & 3 deletions bazel/repositories.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ def proxy_wasm_cpp_host_repositories():
http_archive(
name = "wamr",
build_file = "@proxy_wasm_cpp_host//bazel/external:wamr.BUILD",
sha256 = "1d870f396bb6bdcb5c816326655b19a2877bbdf879255c335b8e84ce4ee37780",
strip_prefix = "wasm-micro-runtime-9710d9325f426121cc1f2c62386a71d0c022d613",
url = "https://github.com/bytecodealliance/wasm-micro-runtime/archive/9710d9325f426121cc1f2c62386a71d0c022d613.tar.gz",
sha256 = "46ad365a1c0668797e69cb868574fd526cd8e26a503213caf782c39061e6d2e1",
strip_prefix = "wasm-micro-runtime-17a216748574499bd3a5130e7e6a20b84fe76798",
url = "https://github.com/bytecodealliance/wasm-micro-runtime/archive/17a216748574499bd3a5130e7e6a20b84fe76798.tar.gz",
)

http_archive(
Expand Down Expand Up @@ -80,3 +80,19 @@ def proxy_wasm_cpp_host_repositories():
strip_prefix = "rules_foreign_cc-0.2.0",
url = "https://github.com/bazelbuild/rules_foreign_cc/archive/0.2.0.tar.gz",
)

http_archive(
name = "llvm",
build_file = "@proxy_wasm_cpp_host//bazel/external:llvm.BUILD",
sha256 = "df83a44b3a9a71029049ec101fb0077ecbbdf5fe41e395215025779099a98fdf",
strip_prefix = "llvm-10.0.0.src",
url = "https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.0/llvm-10.0.0.src.tar.xz",
)

http_archive(
name = "wavm",
build_file = "@proxy_wasm_cpp_host//bazel/external:wavm.BUILD",
sha256 = "ce899269516313b400005a8cc9bc3bcd8329663f43f7b4baae211ea0cd456a39",
strip_prefix = "WAVM-79c3aa29366615d9b1593cd527e5b4b94cc6072a",
url = "https://github.com/WAVM/WAVM/archive/79c3aa29366615d9b1593cd527e5b4b94cc6072a.tar.gz",
)
1 change: 1 addition & 0 deletions src/null/null_vm.cc
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

#include <string.h>

#include <limits>
#include <memory>
#include <unordered_map>
#include <utility>
Expand Down
2 changes: 1 addition & 1 deletion src/wavm/wavm.cc
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ namespace {
} while (0)

std::string getFailMessage(std::string_view function_name, WAVM::Runtime::Exception *exception) {
std::string message = "Function " + std::string(function_name) +
std::string message = "Function: " + std::string(function_name) +
PiotrSikora marked this conversation as resolved.
Show resolved Hide resolved
" failed: " + WAVM::Runtime::describeExceptionType(exception->type) +
"\nProxy-Wasm plugin in-VM backtrace:\n";
std::vector<std::string> callstack_descriptions =
Expand Down
Loading