ladybird/Libraries/LibWasm/CMakeLists.txt

57 lines
1.8 KiB
CMake

set(SOURCES
AbstractMachine/AbstractMachine.cpp
AbstractMachine/BytecodeInterpreter.cpp
AbstractMachine/Configuration.cpp
AbstractMachine/Validator.cpp
Parser/Parser.cpp
Printer/Printer.cpp
TypeSystem.cpp
)
# FIXME: Add Windows support
if (NOT WIN32)
list(APPEND SOURCES WASI/Wasi.cpp)
endif()
option(ENABLE_CRANELIFT_JIT "Enable Cranelift-based AOT compilation for WebAssembly" ON)
set(WASM_COMPILED_FAULT_RECOVERY_SUPPORTED 0)
if(WIN32 AND (CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|AMD64|amd64|aarch64|ARM64|arm64)$"))
set(WASM_COMPILED_FAULT_RECOVERY_SUPPORTED 1)
elseif(APPLE)
set(WASM_COMPILED_FAULT_RECOVERY_SUPPORTED 1)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND (CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|aarch64)$"))
set(WASM_COMPILED_FAULT_RECOVERY_SUPPORTED 1)
endif()
if (ENABLE_CRANELIFT_JIT)
list(APPEND SOURCES CraneliftBridge.cpp)
build_rust_binary(
MANIFEST_PATH Rust/Cargo.toml
CRATE_NAME libwasm_cranelift
BINARY_NAME cranelift-compiler
OUTPUT_PATH_VAR WASM_CRANELIFT_COMPILER_BINARY
FFI_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}"
)
else()
list(APPEND SOURCES CraneliftStubs.cpp)
endif()
ladybird_lib(LibWasm wasm EXPLICIT_SYMBOL_EXPORT)
target_link_libraries(LibWasm PRIVATE LibCore PUBLIC LibSync LibGC)
target_compile_definitions(LibWasm PRIVATE
WASM_COMPILED_FAULT_RECOVERY_SUPPORTED=${WASM_COMPILED_FAULT_RECOVERY_SUPPORTED}
)
if (ENABLE_CRANELIFT_JIT)
add_dependencies(LibWasm cranelift-compiler-build)
target_include_directories(LibWasm PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
target_compile_definitions(LibWasm PRIVATE
WASM_CRANELIFT=1
WASM_CRANELIFT_COMPILER_PATH="${WASM_CRANELIFT_COMPILER_BINARY}"
)
endif()
include(wasm_spec_tests)