Skip to content

Commit

Permalink
build: enable WAMR and LLVM builds.
Browse files Browse the repository at this point in the history
Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
  • Loading branch information
mathetake committed May 11, 2021
1 parent 314743b commit f0696bf
Show file tree
Hide file tree
Showing 8 changed files with 167 additions and 9 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/cpp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ jobs:
strategy:
matrix:
# TODO(mathetake): Add other runtimes.
runtime: [ "wasmtime" ]
runtime: [ "wamr", "wasmtime" ]

steps:
- uses: actions/checkout@v2
Expand Down
7 changes: 3 additions & 4 deletions BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,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 Down
115 changes: 115 additions & 0 deletions bazel/external/llvm.BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
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 = "llvm_lib",
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",
"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",
"CMAKE_CXX_COMPILER_FORCED": "on",
# 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",
},
lib_source = ":srcs",
static_libraries = [
# Order from llvm-config --libnames.
"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",
],
)
25 changes: 25 additions & 0 deletions bazel/external/llvm.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Workaround for Envoy's CMAKE_BUILD_TYPE=Bazel.
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -247,7 +247,7 @@
string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)

if (CMAKE_BUILD_TYPE AND
- NOT uppercase_CMAKE_BUILD_TYPE MATCHES "^(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)$")
+ NOT uppercase_CMAKE_BUILD_TYPE MATCHES "^(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL|BAZEL)$")
message(FATAL_ERROR "Invalid value for CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
endif()

# Workaround for a missing -fuse-ld flag in CXXFLAGS, which results in
# different linkers being used during configure and compilation phases.
--- a/cmake/modules/HandleLLVMOptions.cmake
+++ b/cmake/modules/HandleLLVMOptions.cmake
@@ -718,8 +718,6 @@ endif()
if (UNIX AND CMAKE_GENERATOR STREQUAL "Ninja")
include(CheckLinkerFlag)
check_linker_flag("-Wl,--color-diagnostics" LINKER_SUPPORTS_COLOR_DIAGNOSTICS)
- append_if(LINKER_SUPPORTS_COLOR_DIAGNOSTICS "-Wl,--color-diagnostics"
- CMAKE_EXE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS)
endif()

# Add flags for add_dead_strip().
14 changes: 10 additions & 4 deletions bazel/external/wamr.BUILD
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
licenses(["notice"]) # Apache 2

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

licenses(["notice"]) # Apache 2

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

filegroup(
Expand All @@ -11,15 +11,21 @@ filegroup(
)

cmake(
name = "libiwasm",
name = "wamr_lib",
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"],
lib_source = ":srcs",
out_shared_libs = ["libiwasm.so"],
static_libraries = ["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
10 changes: 10 additions & 0 deletions bazel/repositories.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -80,3 +80,13 @@ 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",
patch_args = ["-p1"],
patches = ["@proxy_wasm_cpp_host//bazel/external:llvm.patch"],
)

0 comments on commit f0696bf

Please sign in to comment.