blob: fa07a1d6c238361a9d201b5275941a4a3a69bbd5 [file]
# Copyright 2026 The IREE Authors
#
# Licensed under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
# Freestanding libc for wasm32.
#
# Provides C standard library headers and implementations for building the
# IREE runtime as a standalone wasm module. No system libc, no Emscripten —
# just enough to compile and link C code targeting wasm32-unknown-unknown.
#
# Headers are in include/ and are exposed via -isystem in the wasm32 toolchain
# file (build_tools/cmake/wasm32.cmake). The implementations are compiled here
# into iree_wasm_libc.
# JS implementation of the iree_syscall wasm imports.
iree_wasm_cc_library(
NAME
syscall_imports
SRCS
"src/syscall_imports.js"
MODULE
"iree_syscall"
PUBLIC
)
add_library(iree_wasm_libc STATIC
src/abort.c
src/aligned_alloc.c
src/ctype.c
src/dlmalloc.c
src/errno.c
src/sbrk.c
src/stdio.c
src/stdlib.c
src/strtol.c
src/string.c
src/unistd.c
)
target_include_directories(iree_wasm_libc PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}/include"
)
# dlmalloc.c textually #includes "malloc.c" from third_party/dlmalloc/.
target_link_libraries(iree_wasm_libc PRIVATE dlmalloc::dlmalloc)