Skip to content

Commit b940700

Browse files
committed
Bump wamr version to 2.0.0 and apply higress requirements
- aot by default - use local compiled llvm libraries. llvm-15-0-7 - enable higress required features - linux perf support - dump call stack when hitting a trap - read name section
1 parent ae07f9a commit b940700

File tree

3 files changed

+180
-14
lines changed

3 files changed

+180
-14
lines changed

bazel/foreign_cc/BUILD

Lines changed: 144 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -465,24 +465,162 @@ envoy_cmake(
465465
}),
466466
)
467467

468+
envoy_cmake(
469+
name = "llvm_15_0_7",
470+
cache_entries = {
471+
# Disable both: BUILD and INCLUDE, since some of the INCLUDE
472+
# targets build code instead of only generating build files.
473+
"LLVM_BUILD_BENCHMARKS": "off",
474+
"LLVM_BUILD_DOCS": "off",
475+
"LLVM_BUILD_EXAMPLES": "off",
476+
"LLVM_BUILD_TESTS": "off",
477+
"LLVM_BUILD_TOOLS": "off",
478+
"LLVM_ENABLE_IDE": "off",
479+
"LLVM_ENABLE_LIBEDIT": "off",
480+
"LLVM_ENABLE_LIBXML2": "off",
481+
"LLVM_ENABLE_TERMINFO": "off",
482+
"LLVM_ENABLE_ZLIB": "off",
483+
"LLVM_ENABLE_ZSTD": "off",
484+
"LLVM_INCLUDE_BENCHMARKS": "off",
485+
"LLVM_INCLUDE_DOCS": "off",
486+
"LLVM_INCLUDE_EXAMPLES": "off",
487+
"LLVM_INCLUDE_TESTS": "off",
488+
"LLVM_INCLUDE_TOOLS": "off",
489+
"LLVM_TARGETS_TO_BUILD": "X86",
490+
"LLVM_USE_PERF": "on",
491+
"CMAKE_CXX_FLAGS": "-Wno-unused-command-line-argument",
492+
},
493+
generate_args = ["-GNinja"] + select({
494+
# `lld` doesn't work on MacOS
495+
"@platforms//os:linux": ["-DLLVM_USE_LINKER=lld"],
496+
"//conditions:default": [],
497+
}) + select({
498+
"//bazel:dbg_build": ["-DCMAKE_BUILD_TYPE=Debug"],
499+
"//conditions:default": ["-DCMAKE_BUILD_TYPE=MinSizeRel"],
500+
}),
501+
lib_source = "@org_llvm_llvm_15_0_7//:all",
502+
out_data_dirs = [
503+
"bin",
504+
"include",
505+
"lib",
506+
"libexec",
507+
"share",
508+
],
509+
out_static_libs = [
510+
# How to get the library list:
511+
# build LLVM with "-DLLVM_INCLUDE_TOOLS=ON"
512+
# cd bin and run "./llvm-config --libnames"
513+
"libLLVMWindowsManifest.a",
514+
"libLLVMXRay.a",
515+
"libLLVMLibDriver.a",
516+
"libLLVMDlltoolDriver.a",
517+
"libLLVMCoverage.a",
518+
"libLLVMLineEditor.a",
519+
"libLLVMX86Disassembler.a",
520+
"libLLVMX86AsmParser.a",
521+
"libLLVMX86CodeGen.a",
522+
"libLLVMX86Desc.a",
523+
"libLLVMX86Info.a",
524+
"libLLVMOrcJIT.a",
525+
"libLLVMMCJIT.a",
526+
"libLLVMJITLink.a",
527+
"libLLVMInterpreter.a",
528+
"libLLVMExecutionEngine.a",
529+
"libLLVMRuntimeDyld.a",
530+
"libLLVMOrcTargetProcess.a",
531+
"libLLVMOrcShared.a",
532+
"libLLVMDWP.a",
533+
"libLLVMSymbolize.a",
534+
"libLLVMDebugInfoPDB.a",
535+
"libLLVMDebugInfoGSYM.a",
536+
"libLLVMOption.a",
537+
"libLLVMObjectYAML.a",
538+
"libLLVMMCA.a",
539+
"libLLVMMCDisassembler.a",
540+
"libLLVMLTO.a",
541+
"libLLVMPasses.a",
542+
"libLLVMCFGuard.a",
543+
"libLLVMCoroutines.a",
544+
"libLLVMObjCARCOpts.a",
545+
"libLLVMipo.a",
546+
"libLLVMVectorize.a",
547+
"libLLVMLinker.a",
548+
"libLLVMInstrumentation.a",
549+
"libLLVMFrontendOpenMP.a",
550+
"libLLVMFrontendOpenACC.a",
551+
"libLLVMExtensions.a",
552+
"libLLVMDWARFLinker.a",
553+
"libLLVMGlobalISel.a",
554+
"libLLVMMIRParser.a",
555+
"libLLVMAsmPrinter.a",
556+
"libLLVMDebugInfoMSF.a",
557+
"libLLVMDebugInfoDWARF.a",
558+
"libLLVMSelectionDAG.a",
559+
"libLLVMCodeGen.a",
560+
"libLLVMIRReader.a",
561+
"libLLVMAsmParser.a",
562+
"libLLVMInterfaceStub.a",
563+
"libLLVMFileCheck.a",
564+
"libLLVMFuzzMutate.a",
565+
"libLLVMTarget.a",
566+
"libLLVMScalarOpts.a",
567+
"libLLVMInstCombine.a",
568+
"libLLVMAggressiveInstCombine.a",
569+
"libLLVMTransformUtils.a",
570+
"libLLVMBitWriter.a",
571+
"libLLVMAnalysis.a",
572+
"libLLVMProfileData.a",
573+
"libLLVMObject.a",
574+
"libLLVMTextAPI.a",
575+
"libLLVMMCParser.a",
576+
"libLLVMMC.a",
577+
"libLLVMDebugInfoCodeView.a",
578+
"libLLVMBitReader.a",
579+
"libLLVMCore.a",
580+
"libLLVMRemarks.a",
581+
"libLLVMBitstreamReader.a",
582+
"libLLVMBinaryFormat.a",
583+
"libLLVMTableGen.a",
584+
"libLLVMSupport.a",
585+
"libLLVMDemangle.a",
586+
"libLLVMPerfJITEvents.a",
587+
],
588+
working_directory = "llvm",
589+
)
590+
468591
envoy_cmake(
469592
name = "wamr",
470593
cache_entries = {
471-
"WAMR_BUILD_AOT": "0",
472-
"WAMR_BUILD_FAST_INTERP": "1",
594+
# aot/jit by default
595+
"LLVM_DIR": "$EXT_BUILD_DEPS/copy_llvm_15_0_7/llvm/lib/cmake/llvm",
596+
"WAMR_BUILD_AOT": "1",
597+
"WAMR_BUILD_FAST_INTERP": "0",
473598
"WAMR_BUILD_INTERP": "1",
474-
"WAMR_BUILD_JIT": "0",
599+
"WAMR_BUILD_JIT": "1",
600+
# disable WASI
475601
"WAMR_BUILD_LIBC_WASI": "0",
476-
"WAMR_BUILD_MULTI_MODULE": "0",
602+
"WAMR_BUILD_LIBC_BUILTIN": "0",
603+
# MVP
604+
"WAMR_BUILD_BULK_MEMORY": "1",
605+
"WAMR_BUILD_REF_TYPES": "1",
606+
# only for jit and aot
477607
"WAMR_BUILD_SIMD": "0",
478608
"WAMR_BUILD_TAIL_CALL": "1",
479609
"WAMR_BUILD_WASM_CACHE": "0",
480-
"WAMR_DISABLE_HW_BOUND_CHECK": "0",
481-
"WAMR_DISABLE_STACK_HW_BOUND_CHECK": "1",
610+
"WAMR_BUILD_MULTI_MODULE": "0",
611+
# enable below to enhance development experience
612+
# name section
613+
"WAMR_BUILD_CUSTOM_NAME_SECTION": "1",
614+
"WAMR_BUILD_LOAD_CUSTOM_SECTION": "1",
615+
# output call stack if meet a trap
616+
"WAMR_BUILD_DUMP_CALL_STACK": "1",
617+
# linux perf. only for jit and aot
618+
"WAMR_BUILD_LINUX_PERF": "1",
482619
},
483620
lib_source = "@com_github_wamr//:all",
484621
out_static_libs = ["libvmlib.a"],
485622
tags = ["skip_on_windows"],
623+
deps = [":llvm_15_0_7"],
486624
)
487625

488626
envoy_cmake(

bazel/repositories.bzl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,7 @@ def envoy_dependencies(skip_targets = []):
343343
_kafka_deps()
344344

345345
_org_llvm_llvm()
346+
_org_llvm_llvm_15_0_7()
346347
_com_github_wamr()
347348
_com_github_wavm_wavm()
348349
_com_github_wasmtime()
@@ -1243,6 +1244,16 @@ def _org_llvm_llvm():
12431244
actual = "@envoy//bazel/foreign_cc:llvm",
12441245
)
12451246

1247+
def _org_llvm_llvm_15_0_7():
1248+
external_http_archive(
1249+
name = "org_llvm_llvm_15_0_7",
1250+
build_file_content = BUILD_ALL_CONTENT,
1251+
)
1252+
native.bind(
1253+
name = "llvm-15_0_7",
1254+
actual = "@envoy//bazel/foreign_cc:llvm_15_0_7",
1255+
)
1256+
12461257
def _com_github_wamr():
12471258
external_http_archive(
12481259
name = "com_github_wamr",

bazel/repository_locations.bzl

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -988,22 +988,38 @@ REPOSITORY_LOCATIONS_SPEC = dict(
988988
release_date = "2021-07-09",
989989
use_category = ["dataplane_ext"],
990990
extensions = [
991-
"envoy.wasm.runtime.wamr",
992991
"envoy.wasm.runtime.wavm",
993992
],
994993
cpe = "cpe:2.3:a:llvm:*:*",
995994
license = "Apache-2.0",
996995
license_url = "https://github.com/llvm/llvm-project/blob/llvmorg-{version}/llvm/LICENSE.TXT",
997996
),
997+
org_llvm_llvm_15_0_7 = dict(
998+
project_name = "LLVM_15_0_7",
999+
project_desc = "LLVM Compiler Infrastructure",
1000+
project_url = "https://llvm.org",
1001+
version = "15.0.7",
1002+
sha256 = "8b5fcb24b4128cf04df1b0b9410ce8b1a729cb3c544e6da885d234280dedeac6",
1003+
strip_prefix = "llvm-project-{version}.src",
1004+
urls = ["https://github.com/llvm/llvm-project/releases/download/llvmorg-{version}/llvm-project-{version}.src.tar.xz"],
1005+
release_date = "2023-01-12",
1006+
use_category = ["dataplane_ext"],
1007+
extensions = [
1008+
"envoy.wasm.runtime.wamr",
1009+
],
1010+
cpe = "cpe:2.3:a:llvm:*:*",
1011+
license = "Apache-2.0",
1012+
license_url = "https://github.com/llvm/llvm-project/blob/llvmorg-{version}/llvm/LICENSE.TXT",
1013+
),
9981014
com_github_wamr = dict(
9991015
project_name = "Webassembly Micro Runtime",
10001016
project_desc = "A standalone runtime with a small footprint for WebAssembly",
10011017
project_url = "https://github.com/bytecodealliance/wasm-micro-runtime",
1002-
version = "WAMR-1.2.2",
1003-
sha256 = "d328fc1e19c54cfdb4248b861de54b62977b9b85c0a40eaaeb9cd9b628c0c788",
1018+
version = "WAMR-2.0.0",
1019+
sha256 = "7663a34b61d6d0ff90778d9be37efde92e2f28ec9baad89f7b18555f0db435ab",
10041020
strip_prefix = "wasm-micro-runtime-{version}",
10051021
urls = ["https://github.com/bytecodealliance/wasm-micro-runtime/archive/{version}.tar.gz"],
1006-
release_date = "2023-05-16",
1022+
release_date = "2024-04-23",
10071023
use_category = ["dataplane_ext"],
10081024
extensions = ["envoy.wasm.runtime.wamr"],
10091025
cpe = "N/A",
@@ -1336,14 +1352,15 @@ REPOSITORY_LOCATIONS_SPEC = dict(
13361352
license = "Apache-2.0",
13371353
license_url = "https://github.com/proxy-wasm/proxy-wasm-cpp-sdk/blob/{version}/LICENSE",
13381354
),
1355+
# FIXME: switch to proxy-wasm-cpp-host repo when it is back to stable
13391356
proxy_wasm_cpp_host = dict(
13401357
project_name = "WebAssembly for Proxies (C++ host implementation)",
13411358
project_desc = "WebAssembly for Proxies (C++ host implementation)",
1342-
project_url = "https://github.com/proxy-wasm/proxy-wasm-cpp-host",
1343-
version = "5d76116c449d6892b298b7ae79a84ef1cf5752bf",
1344-
sha256 = "a5825a1a5bbd5b0178c6189b227d5cf4370ac713a883b41f6a54edd768a03cb7",
1359+
project_url = "https://github.com/lum1n0us/proxy-wasm-cpp-host",
1360+
version = "3ed8a53ff4e251805a13f72db3cb8e524a78d765",
1361+
sha256 = "d2519847a985f3e38a10032ef8428adea225940da45b1f6bcf9b92e433df03ef",
13451362
strip_prefix = "proxy-wasm-cpp-host-{version}",
1346-
urls = ["https://github.com/proxy-wasm/proxy-wasm-cpp-host/archive/{version}.tar.gz"],
1363+
urls = ["https://github.com/lum1n0us/proxy-wasm-cpp-host/archive/{version}.tar.gz"],
13471364
use_category = ["dataplane_ext"],
13481365
extensions = [
13491366
"envoy.access_loggers.wasm",

0 commit comments

Comments
 (0)