Skip to content

Commit 9337c10

Browse files
committed
build: enable WAMR and LLVM builds.
Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
1 parent 314743b commit 9337c10

File tree

9 files changed

+168
-9
lines changed

9 files changed

+168
-9
lines changed

.github/workflows/cpp.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ jobs:
6060
strategy:
6161
matrix:
6262
# TODO(mathetake): Add other runtimes.
63-
runtime: [ "wasmtime" ]
63+
runtime: [ "wamr", "wasmtime" ]
6464

6565
steps:
6666
- uses: actions/checkout@v2

BUILD

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,12 @@ cc_library(
5454
cc_library(
5555
name = "wamr_lib",
5656
srcs = glob([
57-
# TODO(@mathetake): Add WAMR lib.
58-
# "src/wamr/*.h",
59-
# "src/wamr/*.cc",
57+
"src/wamr/*.h",
58+
"src/wamr/*.cc",
6059
]),
6160
deps = [
6261
":common_lib",
63-
# TODO(@mathetake): Add WAMR lib.
62+
"@wamr//:wamr_lib",
6463
],
6564
)
6665

bazel/external/llvm.BUILD

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

bazel/external/llvm.patch

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Workaround for Envoy's CMAKE_BUILD_TYPE=Bazel.
2+
--- a/CMakeLists.txt
3+
+++ b/CMakeLists.txt
4+
@@ -247,7 +247,7 @@
5+
string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)
6+
7+
if (CMAKE_BUILD_TYPE AND
8+
- NOT uppercase_CMAKE_BUILD_TYPE MATCHES "^(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)$")
9+
+ NOT uppercase_CMAKE_BUILD_TYPE MATCHES "^(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL|BAZEL)$")
10+
message(FATAL_ERROR "Invalid value for CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
11+
endif()
12+
13+
# Workaround for a missing -fuse-ld flag in CXXFLAGS, which results in
14+
# different linkers being used during configure and compilation phases.
15+
--- a/cmake/modules/HandleLLVMOptions.cmake
16+
+++ b/cmake/modules/HandleLLVMOptions.cmake
17+
@@ -718,8 +718,6 @@ endif()
18+
if (UNIX AND CMAKE_GENERATOR STREQUAL "Ninja")
19+
include(CheckLinkerFlag)
20+
check_linker_flag("-Wl,--color-diagnostics" LINKER_SUPPORTS_COLOR_DIAGNOSTICS)
21+
- append_if(LINKER_SUPPORTS_COLOR_DIAGNOSTICS "-Wl,--color-diagnostics"
22+
- CMAKE_EXE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS)
23+
endif()
24+
25+
# Add flags for add_dead_strip().

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: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
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(
@@ -11,15 +11,21 @@ filegroup(
1111
)
1212

1313
cmake(
14-
name = "libiwasm",
14+
name = "wamr_lib",
1515
cache_entries = {
16+
"LLVM_DIR": "$EXT_BUILD_DEPS/copy_llvm/llvm/lib/cmake/llvm",
1617
"WAMR_BUILD_INTERP": "1",
1718
"WAMR_BUILD_JIT": "0",
1819
"WAMR_BUILD_AOT": "0",
1920
"WAMR_BUILD_SIMD": "0",
2021
"WAMR_BUILD_MULTI_MODULE": "1",
2122
"WAMR_BUILD_LIBC_WASI": "0",
23+
"WAMR_BUILD_TAIL_CALL": "1",
2224
},
25+
defines = ["WASM_WAMR"],
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/repositories.bzl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,13 @@ 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+
patch_args = ["-p1"],
91+
patches = ["@proxy_wasm_cpp_host//bazel/external:llvm.patch"],
92+
)

0 commit comments

Comments
 (0)