Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LLVM 18 #123

Merged
merged 36 commits into from
Mar 12, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
bd60141
gh: bump code version
csegarragonz Feb 9, 2024
1158e8b
faasmtools: bump llvm version
csegarragonz Feb 9, 2024
2aa9661
llvm: changes for latest wasi-libc and wasi-sdk
csegarragonz Feb 12, 2024
6afffa4
llvm: install libclang_rt.builitins-wasm32.a
csegarragonz Feb 13, 2024
9969423
cmake: change system name from Wasm to WASI to align with wasi-sdk
csegarragonz Feb 13, 2024
a61d8b0
faasmtools: enable linker feature sign extension as it is the default…
csegarragonz Feb 13, 2024
852fc4a
libs: install in <sysroot>/lib/wasm32-wasi and copy imports appropria…
csegarragonz Feb 13, 2024
53f6567
docker: enable some features
csegarragonz Feb 13, 2024
4c65d67
libs: install libraries and headers in the right location
csegarragonz Feb 13, 2024
29403d4
llvm: fix libclanv_rt.builitins installation
csegarragonz Feb 13, 2024
f7fe16b
mpi: more fixes to the cmake file
csegarragonz Feb 13, 2024
65cc765
wasi: attempt at having two different targets for threads and non-thr…
csegarragonz Feb 13, 2024
0f0125d
func: comment out temporarily disabled functions
csegarragonz Feb 15, 2024
4242785
func: move threaded functions to separate top-level directory
csegarragonz Feb 16, 2024
d69921e
tasks: configurable compilation for different targets
csegarragonz Feb 16, 2024
47be01e
threads: support for pthread apis
csegarragonz Feb 16, 2024
0b67978
cpython: changes to make cpython build work
csegarragonz Feb 19, 2024
022ab93
llvm: add c compiler target flag for compiler-rt build
csegarragonz Feb 19, 2024
eaaf4d5
libs: fix use of (auto)conf with different sysroots
csegarragonz Feb 19, 2024
6cf9946
more fixes
csegarragonz Feb 19, 2024
ca0d78e
faasmtools: change default target when building a threaded application
csegarragonz Feb 20, 2024
2ca4ee6
llvm: bump to version 18 rc2 to fix the frontend bug with openmp
csegarragonz Feb 20, 2024
17e844e
llvm: no harm in using clang-18 to build llvm-18
csegarragonz Feb 20, 2024
676ce38
llvm: use clang-17 for native compilation
csegarragonz Feb 20, 2024
5a2ec10
nits: fix python formatting
csegarragonz Feb 20, 2024
c785471
nits: fix cpp formatting
csegarragonz Feb 20, 2024
1460297
nit: run python formatting
csegarragonz Feb 21, 2024
4b6e62f
func: build all threads func
csegarragonz Feb 21, 2024
27aae15
gha: skip code formatting with clang-format-17
csegarragonz Feb 21, 2024
89c98da
clang-format: fix formatting after llvm bump
csegarragonz Mar 1, 2024
8d5c4a9
nits: clang-format passing with llvm 17
csegarragonz Mar 4, 2024
e42390a
tasks(libs): build threads/non-threads in different directories
csegarragonz Mar 5, 2024
bfad3a8
docker: fix strange libfaasm overwrite
csegarragonz Mar 5, 2024
731744f
funcs: set the threads target when appropriate
csegarragonz Mar 5, 2024
1e23e89
nits: self-review
csegarragonz Mar 12, 2024
16b97f2
libffi: fix build by passing --host flag to configure
csegarragonz Mar 12, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
llvm: changes for latest wasi-libc and wasi-sdk
  • Loading branch information
csegarragonz committed Feb 13, 2024
commit 2aa96617e17e3d2a58112dc31b4e2e910ffbf48b
145 changes: 72 additions & 73 deletions LLVM.makefile
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
# Project directories
LLVM_PROJ_DIR=${FAASM_LLVM_DIR}

TOOLCHAIN_DIR=${FAASM_CPP_PROJ_ROOT}
TOOLCHAIN_FILE=$(TOOLCHAIN_DIR)/WasiToolchain.cmake

# Install dirs
FAASM_LOCAL_DIR=${FAASM_LOCAL_DIR_ENV}
PREFIX=$(FAASM_LOCAL_DIR)/toolchain
FAASM_SYSROOT=$(FAASM_LOCAL_DIR)/llvm-sysroot
FAASM_TOOLCHAIN_DIR=$(FAASM_LOCAL_DIR)/toolchain
FAASM_TOOLCHAIN_FILE=$(FAASM_TOOLCHAIN_DIR)/tools/WasiToolchain.cmake

CLANG_VERSION=${FAASM_LLVM_VERSION}
CLANG_VERSION_MAJOR := $(shell echo $(CLANG_VERSION) | cut -f1 -d.)
Expand All @@ -27,7 +25,7 @@ default: build

.PHONY: clean-libc
clean-libc:
rm -rf $(BUILD_DIR)/libc.BUILT $(WASI_LIBC_DIR)/build
rm -rf $(BUILD_DIR)/wasi-libc.BUILT $(WASI_LIBC_DIR)/build

.PHONY: very-clean-libc
very-clean-libc: clean-libc
Expand All @@ -38,117 +36,117 @@ very-clean-libc: clean-libc
clean-libs: clean-libc
rm -rf $(BUILD_DIR)/compiler-rt $(BUILD_DIR)/compiler-rt.BUILT
rm -rf $(BUILD_DIR)/libcxx $(BUILD_DIR)/libcxx.BUILT
rm -rf $(BUILD_DIR)/libcxxabi $(BUILD_DIR)/libcxxabi.BUILT

.PHONY: clean-all
clean-all:
rm -rf $(BUILD_DIR) $(PREFIX)
rm -rf $(BUILD_DIR) $(FAASM_TOOLCHAIN_DIR)/bin $(FAASM_TOOLCHAIN_DIR)/libs $(FAASM_SYSROOT)

$(BUILD_DIR)/llvm.BUILT:
mkdir -p $(BUILD_DIR)/llvm
cd $(BUILD_DIR)/llvm; cmake -G Ninja \
-DCMAKE_C_COMPILER=/usr/bin/clang-$(CLANG_VERSION_MAJOR) \
-DCMAKE_CXX_COMPILER=/usr/bin/clang++-$(CLANG_VERSION_MAJOR) \
-DCMAKE_BUILD_TYPE=MinSizeRel \
-DCMAKE_INSTALL_PREFIX=$(PREFIX) \
-DLLVM_ENABLE_TERMINFO=OFF \
-DLLVM_ENABLE_ZLIB=OFF \
-DLLVM_ENABLE_ZSTD=OFF \
-DLLVM_STATIC_LINK_CXX_STDLIB=ON \
-DLLVM_HAVE_LIBXAR=OFF \
-DCMAKE_INSTALL_PREFIX=${FAASM_TOOLCHAIN_DIR} \
-DLLVM_INCLUDE_TESTS=OFF \
-DLLVM_INCLUDE_UTILS=OFF \
-DLLVM_INCLUDE_BENCHMARKS=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_TARGETS_TO_BUILD=WebAssembly \
-DLLVM_DEFAULT_TARGET_TRIPLE=wasm32-wasi \
-DLLVM_EXTERNAL_CLANG_SOURCE_DIR=$(LLVM_PROJ_DIR)/clang \
-DLLVM_EXTERNAL_OPENMP_SOURCE_DIR=$(LLVM_PROJ_DIR)/openmp \
-DLLVM_EXTERNAL_LLD_SOURCE_DIR=$(LLVM_PROJ_DIR)/lld \
-DLLVM_ENABLE_PROJECTS="lld;clang;openmp" \
-DDEFAULT_SYSROOT=$(FAASM_SYSROOT) \
-DLLVM_INSTALL_BINUTILS_SYMLINKS=TRUE \
-DLLVM_ENABLE_LIBXML2=OFF \
$(LLVM_PROJ_DIR)/llvm
ninja -v -C $(BUILD_DIR)/llvm \
install-clang \
install-clang-resource-headers \
install-lld \
install-llc \
install-llvm-ar \
install-llvm-mc \
install-llvm-ranlib \
install-llvm-strip \
install-llvm-dwarfdump \
install-llvm-nm \
install-llvm-size \
install-llvm-config
install-clang-resource-headers \
install-ar \
install-ranlib \
install-strip \
install-nm \
install-size \
install-strings \
install-objdump \
install-objcopy \
install-c++filt \
llvm-config
touch $(BUILD_DIR)/llvm.BUILT

# WASI libc
$(BUILD_DIR)/libc.BUILT: $(BUILD_DIR)/llvm.BUILT
mkdir -p $(WASI_LIBC_DIR)/build
cd $(WASI_LIBC_DIR); $(MAKE) \
$(BUILD_DIR)/wasi-libc.BUILT: $(BUILD_DIR)/compiler-rt.BUILT
mkdir -p $(WASI_LIBC_DIR)/build/wasm32-wasi
$(MAKE) -C ${WASI_LIBC_DIR} \
CC=$(FAASM_TOOLCHAIN_DIR)/bin/clang \
AR=$(FAASM_TOOLCHAIN_DIR)/bin/llvm-ar \
NM=$(FAASM_TOOLCHAIN_DIR)/bin/llvm-nm \
SYSROOT=$(FAASM_SYSROOT) \
THREAD_MODEL=faasm \
CC=$(PREFIX)/bin/clang \
AR=$(PREFIX)/bin/llvm-ar \
NM=$(PREFIX)/bin/llvm-nm \
SYSROOT=$(FAASM_SYSROOT)
touch $(BUILD_DIR)/libc.BUILT
default
touch $(BUILD_DIR)/wasi-libc.BUILT

$(BUILD_DIR)/compiler-rt.BUILT: $(BUILD_DIR)/libc.BUILT
$(BUILD_DIR)/compiler-rt.BUILT: $(BUILD_DIR)/llvm.BUILT
mkdir -p $(BUILD_DIR)/compiler-rt
cd $(BUILD_DIR)/compiler-rt; cmake -G Ninja \
-DCMAKE_SYSROOT=${FAASM_SYSROOT} \
-DCMAKE_C_COMPILER_WORKS=ON \
-DCMAKE_CXX_COMPILER_WORKS=ON \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_TOOLCHAIN_FILE=$(TOOLCHAIN_FILE) \
-DCMAKE_TOOLCHAIN_FILE=${FAASM_TOOLCHAIN_FILE} \
-DCOMPILER_RT_BAREMETAL_BUILD=ON \
-DCOMPILER_RT_BUILD_XRAY=OFF \
-DCOMPILER_RT_INCLUDE_TESTS=OFF \
-DCOMPILER_RT_HAS_FPIC_FLAG=OFF \
-DCOMPILER_RT_ENABLE_IOS=OFF \
-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \
-DLLVM_CONFIG_PATH=$(LLVM_CONFIG) \
-DCMAKE_INSTALL_PREFIX=$(PREFIX)/lib/clang/$(CLANG_VERSION)/ \
-DCMAKE_INSTALL_PREFIX=$(FAASM_TOOLCHAIN_DIR)/lib/clang/$(CLANG_VERSION)/ \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DCOMPILER_RT_OS_DIR=wasi \
$(LLVM_PROJ_DIR)/compiler-rt/lib/builtins
ninja -v -C $(BUILD_DIR)/compiler-rt install
cp -R $(BUILD_DIR)/llvm/lib/clang $(PREFIX)/lib/
cp -R $(BUILD_DIR)/llvm/lib/clang $(FAASM_TOOLCHAIN_DIR)/lib/
touch $(BUILD_DIR)/compiler-rt.BUILT

$(BUILD_DIR)/libcxx.BUILT: $(BUILD_DIR)/compiler-rt.BUILT
$(BUILD_DIR)/libcxx.BUILT: $(BUILD_DIR)/llvm.BUILT ${BUILD_DIR}/wasi-libc.BUILT
mkdir -p $(BUILD_DIR)/libcxx
cd $(BUILD_DIR)/libcxx; cmake -G Ninja \
-DCMAKE_TOOLCHAIN_FILE=$(TOOLCHAIN_FILE) \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_C_COMPILER_WORKS=ON \
-DCMAKE_CXX_COMPILER_WORKS=ON \
-DCMAKE_C_COMPILER_WORKS=ON \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DCMAKE_INSTALL_PREFIX=$(FAASM_SYSROOT) \
-DLLVM_COMPILER_CHECKED=ON \
-DCMAKE_AR=$(FAASM_TOOLCHAIN_DIR)/bin/ar \
-DCMAKE_TOOLCHAIN_FILE=$(FAASM_TOOLCHAIN_FILE) \
-DCMAKE_STAGING_PREFIX=$(FAASM_SYSROOT) \
-DCMAKE_POSITION_INDEPENDENT_CODE=OFF \
-DLLVM_CONFIG_PATH=$(LLVM_CONFIG) \
-DLIBCXX_HAVE_CXX_ATOMICS_WITHOUT_LIB=ON \
-DLIBCXX_USE_COMPILER_RT=ON \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DCXX_SUPPORTS_CXX11=ON \
-DLIBCXX_ENABLE_THREADS:BOOL=ON \
-DLIBCXX_HAS_PTHREAD_API:BOOL=ON \
-DLIBCXX_HAS_EXTERNAL_THREAD_API:BOOL=OFF \
-DLIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY:BOOL=OFF \
-DLIBCXX_HAS_WIN32_THREAD_API:BOOL=OFF \
-DLLVM_COMPILER_CHECKED=ON \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DLIBCXX_ENABLE_SHARED:BOOL=OFF \
-DLIBCXX_ENABLE_PIC:BOOL=OFF \
-DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY:BOOL=OFF \
-DLIBCXX_ENABLE_EXCEPTIONS:BOOL=OFF \
-DLIBCXX_ENABLE_FILESYSTEM:BOOL=OFF \
-DLIBCXX_ENABLE_FILESYSTEM:BOOL=ON \
-DLIBCXX_ENABLE_ABI_LINKER_SCRIPT:BOOL=OFF \
-DLIBCXX_USE_COMPILER_RT=ON \
-DLIBCXX_CXX_ABI=libcxxabi \
-DLIBCXX_CXX_ABI_INCLUDE_PATHS=$(LLVM_PROJ_DIR)/libcxxabi/include \
-DLIBCXX_HAS_MUSL_LIBC:BOOL=ON \
-DLIBCXX_ABI_VERSION=2 \
-DLIBCXX_LIBDIR_SUFFIX=/wasm32-wasi \
--debug-trycompile \
$(LLVM_PROJ_DIR)/libcxx
ninja -v -C $(BUILD_DIR)/libcxx install
touch $(BUILD_DIR)/libcxx.BUILT

$(BUILD_DIR)/libcxxabi.BUILT: $(BUILD_DIR)/libcxx.BUILT
mkdir -p $(BUILD_DIR)/libcxxabi
cd $(BUILD_DIR)/libcxxabi; cmake -G Ninja \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_C_FLAGS="-I$(FAASM_SYSROOT)/include" \
-DCMAKE_CXX_FLAGS="-I$(FAASM_SYSROOT)/include/c++/v1" \
-DCMAKE_TOOLCHAIN_FILE=$(TOOLCHAIN_FILE) \
-DLLVM_CONFIG_PATH=$(LLVM_CONFIG) \
-DCMAKE_CXX_COMPILER_WORKS=ON \
-DCMAKE_C_COMPILER_WORKS=ON \
-DCMAKE_INSTALL_PREFIX=$(FAASM_SYSROOT) \
-DLLVM_COMPILER_CHECKED=ON \
-DLIBCXXABI_USE_COMPILER_RT=ON \
-DLIBCXXABI_ENABLE_EXCEPTIONS:BOOL=OFF \
-DLIBCXXABI_ENABLE_SHARED:BOOL=OFF \
-DLIBCXXABI_SILENT_TERMINATE:BOOL=ON \
Expand All @@ -157,28 +155,29 @@ $(BUILD_DIR)/libcxxabi.BUILT: $(BUILD_DIR)/libcxx.BUILT
-DLIBCXXABI_HAS_EXTERNAL_THREAD_API:BOOL=OFF \
-DLIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY:BOOL=OFF \
-DLIBCXXABI_HAS_WIN32_THREAD_API:BOOL=OFF \
-DLIBCXXABI_ENABLE_PIC:BOOL=OFF \
-DLIBCXXABI_LIBCXX_PATH=$(LLVM_PROJ_DIR)/libcxx \
-DLIBCXXABI_LIBCXX_INCLUDES=$(FAASM_SYSROOT)/include/c++/v1 \
-DLIBCXX_ENABLE_PIC:BOOL=OFF \
-DUNIX:BOOL=ON \
-DLIBCXXABI_LIBDIR_SUFFIX=/wasm32-wasi \
--debug-trycompile \
$(LLVM_PROJ_DIR)/libcxxabi
ninja -v -C $(BUILD_DIR)/libcxxabi install
touch $(BUILD_DIR)/libcxxabi.BUILT
-DCMAKE_SYSROOT=${FAASM_SYSROOT} \
-DCMAKE_C_FLAGS="-I$(FAASM_SYSROOT)/include --target=wasm32-wasi" \
-DCMAKE_CXX_FLAGS="-I$(FAASM_SYSROOT)/include -I$(FAASM_SYSROOT)/include/c++/v1 --target=wasm32-wasi" \
-DLIBCXX_LIBDIR_SUFFIX=/wasm32-wasi \
-DLIBCXXABI_LIBDIR_SUFFIX=/wasm32-wasi \
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \
$(LLVM_PROJ_DIR)/runtimes
ninja -v -C $(BUILD_DIR)/libcxx install
touch $(BUILD_DIR)/libcxx.BUILT

.PHONY: extras
extras: $(BUILD_DIR)/libcxxabi.BUILT
cp $(TOOLCHAIN_DIR)/sysroot_extras/* $(FAASM_SYSROOT)/lib/wasm32-wasi/
extras: $(BUILD_DIR)/libcxx.BUILT
cp $(FAASM_CPP_PROJ_ROOT)/sysroot_extras/* $(FAASM_SYSROOT)/lib/wasm32-wasi/

llvm: $(BUILD_DIR)/llvm.BUILT

libc: $(BUILD_DIR)/libc.BUILT
libc: $(BUILD_DIR)/wasi-libc.BUILT

libcxx: $(BUILD_DIR)/libcxx.BUILT

libcxxabi: $(BUILD_DIR)/libcxxabi.BUILT

compiler-rt: $(BUILD_DIR)/compiler-rt.BUILT

build: $(BUILD_DIR)/llvm.BUILT $(BUILD_DIR)/libc.BUILT $(BUILD_DIR)/compiler-rt.BUILT $(BUILD_DIR)/libcxxabi.BUILT $(BUILD_DIR)/libcxx.BUILT extras
build: $(BUILD_DIR)/llvm.BUILT $(BUILD_DIR)/wasi-libc.BUILT $(BUILD_DIR)/compiler-rt.BUILT $(BUILD_DIR)/libcxx.BUILT extras
20 changes: 11 additions & 9 deletions WasiToolchain.cmake
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.4.0)
cmake_minimum_required(VERSION 3.5.0)
# project("Faasm WASM compilation toolchain" C CXX)

# -----------------------------------------
# A useful reference for this file is the wasi-sdk equivalent:
Expand All @@ -11,15 +12,16 @@ cmake_minimum_required(VERSION 3.4.0)
set(INSTALL_DIR $ENV{FAASM_WASM_INSTALL_DIR})
set(FAASM_SYSROOT $ENV{FAASM_WASM_SYSROOT})

set(EXE_SUFFIX "")

set(UNIX 1)

# Note that system name and processor here are crucial
# Setting system name automatically switches on cross-compiling
set(CMAKE_SYSTEM_NAME Wasm)
set(CMAKE_SYSTEM_NAME WASI)
set(CMAKE_SYSTEM_VERSION 1)
set(CMAKE_SYSTEM_PROCESSOR wasm32)
set(WASM_TRIPLE wasm32-wasi)

set(WASI_HOST_EXE_SUFFIX "")

if(FAASM_BUILD_SHARED)
message(STATUS "Faasm building SHARED libraries")
Expand All @@ -32,16 +34,17 @@ else()
set(WASM_TRIPLE $ENV{FAASM_WASM_HOST_STATIC})
endif()

set(CMAKE_C_COMPILER_TARGET ${WASM_TRIPLE} CACHE STRING "faasm build")
set(CMAKE_CXX_COMPILER_TARGET ${WASM_TRIPLE} CACHE STRING "faasm build")
message(STATUS "Faasm building target ${CMAKE_CXX_COMPILER_TARGET}")

# Specify LLVM toolchain
set(CMAKE_C_COMPILER $ENV{FAASM_WASM_CC})
set(CMAKE_CXX_COMPILER $ENV{FAASM_WASM_CXX})
set(CMAKE_ASM_COMPILER $ENV{FAASM_WASM_CC})
set(CMAKE_AR $ENV{FAASM_WASM_AR} CACHE STRING "faasm build")
set(CMAKE_NM $ENV{FAASM_WASM_NM} CACHE STRING "faasm build")
set(CMAKE_RANLIB $ENV{FAASM_WASM_RANLIB} CACHE STRING "faasm build")
set(CMAKE_C_COMPILER_TARGET ${WASM_TRIPLE} CACHE STRING "faasm build")
set(CMAKE_CXX_COMPILER_TARGET ${WASM_TRIPLE} CACHE STRING "faasm build")
set(CMAKE_ASM_COMPILER_TARGET ${WASM_TRIPLE} CACHE STRING "faasm build")
message(STATUS "Faasm building target ${CMAKE_CXX_COMPILER_TARGET}")

# We define dynamic linking functions in Faasm
unset(CMAKE_DL_LIBS CACHE)
Expand Down Expand Up @@ -72,4 +75,3 @@ set(CMAKE_C_COMPILER_WORKS ON)
set(CMAKE_CXX_COMPILER_WORKS ON)

set(FAASM_BLAS_LIBS $ENV{FAASM_WASM_BLAS_LIBS})

18 changes: 16 additions & 2 deletions docker/llvm.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,26 @@ FROM ubuntu:22.04
SHELL ["/bin/bash", "-c"]
ENV CPP_DOCKER="on"

# Configure APT repositories
ARG LLVM_VERSION_MAJOR
RUN apt update \
&& apt upgrade -y \
&& apt install -y \
curl \
gpg \
software-properties-common \
wget \
&& wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc \
&& add-apt-repository -y "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-${LLVM_VERSION_MAJOR} main"

# Install APT dependencies
ARG DEBIAN_FRONTEND=noninteractive
RUN apt update \
&& apt install -y \
autoconf \
build-essential \
clang-13 \
# This clang version is needed to help us build LLVM from source below
clang-${LLVM_VERSION_MAJOR} \
curl \
git \
gpg \
Expand All @@ -26,7 +39,7 @@ RUN apt remove --purge --auto-remove cmake \
&& mkdir -p /setup \
&& cd /setup \
&& wget -q -O cmake-linux.sh \
https://github.com/Kitware/CMake/releases/download/v3.24.2/cmake-3.24.2-linux-x86_64.sh \
https://github.com/Kitware/CMake/releases/download/v3.28.0/cmake-3.28.0-linux-x86_64.sh \
&& sh cmake-linux.sh -- --skip-license --prefix=/usr/local \
&& apt clean autoclean -y \
&& apt autoremove -y
Expand All @@ -42,6 +55,7 @@ RUN mkdir -p /code \
&& ./bin/create_venv.sh \
&& source venv/bin/activate \
&& inv install \
# This task builds LLVM from source and reads the version from faasmtools/env.py
&& inv llvm.build \
&& /usr/local/faasm/toolchain/bin/clang --version \
&& rm -rf /code
4 changes: 3 additions & 1 deletion tasks/docker.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@
ACR_NAME,
)
from faasmtools.env import (
get_version,
LLVM_VERSION,
PROJ_ROOT,
get_version,
)
from invoke import task
from os.path import join
Expand Down Expand Up @@ -34,6 +35,7 @@ def build(ctx, c, nocache=False, push=False):
build_args = {"SYSROOT_VERSION": get_version()}
for ctr in c:
if ctr == "llvm":
build_args["LLVM_VERSION_MAJOR"] = LLVM_VERSION.split(".")[0]
dockerfile = LLVM_DOCKERFILE
tag = get_llvm_tag()
elif ctr == "cpp-sysroot":
Expand Down
13 changes: 7 additions & 6 deletions tasks/llvm.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,11 @@ def do_llvm_clone():
git_cmd = " ".join(git_cmd)
run(git_cmd, shell=True, check=True)

llvm_patches_dir = join(PATCHES_DIR, "llvm-project")
for patch in listdir(llvm_patches_dir):
git_cmd = "git apply {}".format(join(llvm_patches_dir, patch))
run(git_cmd, shell=True, check=True, cwd=LLVM_DIR)
# TODO: do we even need this patch anymore?
# llvm_patches_dir = join(PATCHES_DIR, "llvm-project")
# for patch in listdir(llvm_patches_dir):
# git_cmd = "git apply {}".format(join(llvm_patches_dir, patch))
# run(git_cmd, shell=True, check=True, cwd=LLVM_DIR)


def do_llvm_build(target, clean_target=None):
Expand Down Expand Up @@ -92,10 +93,10 @@ def build(ctx, clean=False):
@task()
def libs(ctx, clean=False):
"""
Build the compiler-rt, libcxx, and libcxxabi for our LLVM fork
Build the compiler-rt, and libcxx for our LLVM fork
"""
do_llvm_build(
"libcxx libcxxabi compiler-rt", "clean-libs" if clean else None
"libcxx compiler-rt", "clean-libs" if clean else None
)


Expand Down
2 changes: 1 addition & 1 deletion third-party/wasi-libc
Submodule wasi-libc updated 42 files
+43 −17 .github/workflows/main.yml
+219 −40 Makefile
+29 −17 README.md
+18 −23 dlmalloc/src/malloc.c
+8 −3 emmalloc/emmalloc.c
+1,451 −0 expected/wasm32-wasi-preview2/defined-symbols.txt
+173 −0 expected/wasm32-wasi-preview2/include-all.c
+3,478 −0 expected/wasm32-wasi-preview2/predefined-macros.txt
+209 −0 expected/wasm32-wasi-preview2/undefined-symbols.txt
+6 −0 expected/wasm32-wasi-threads/defined-symbols.txt
+2 −0 expected/wasm32-wasi-threads/include-all.c
+32 −7 expected/wasm32-wasi-threads/predefined-macros.txt
+1 −1 expected/wasm32-wasi-threads/undefined-symbols.txt
+6 −0 expected/wasm32-wasi/defined-symbols.txt
+2 −0 expected/wasm32-wasi/include-all.c
+32 −7 expected/wasm32-wasi/predefined-macros.txt
+1 −1 expected/wasm32-wasi/undefined-symbols.txt
+0 −16 libc-bottom-half/cloudlibc/src/libc/unistd/close.c
+0 −5 libc-bottom-half/headers/public/__errno.h
+7 −0 libc-bottom-half/headers/public/__header_dirent.h
+7 −3 libc-bottom-half/headers/public/__header_sys_socket.h
+1 −1 libc-bottom-half/headers/public/__mode_t.h
+6 −0 libc-bottom-half/headers/public/wasi/libc.h
+2,471 −0 libc-bottom-half/headers/public/wasi/preview2.h
+2 −2 libc-bottom-half/signal/signal.c
+11 −0 libc-bottom-half/sources/__main_void.c
+22 −0 libc-bottom-half/sources/__wasilibc_fd_renumber.c
+41 −0 libc-bottom-half/sources/posix.c
+41 −17 libc-bottom-half/sources/preopens.c
+4,448 −0 libc-bottom-half/sources/preview2.c
+ libc-bottom-half/sources/preview2_component_type.o
+0 −1 libc-top-half/musl/arch/wasm32/atomic_arch.h
+11 −1 libc-top-half/musl/include/dlfcn.h
+2 −7 libc-top-half/musl/include/pthread.h
+0 −2 libc-top-half/musl/include/stdlib.h
+0 −2 libc-top-half/musl/include/sys/stat.h
+8 −0 libc-top-half/musl/src/internal/locale_impl.h
+45 −0 libc-top-half/musl/src/misc/dl.c
+49 −21 libc-top-half/musl/src/thread/pthread_create.c
+2 −0 libc-top-half/musl/src/thread/pthread_mutex_trylock.c
+17 −0 libc-top-half/musl/src/thread/wasm32/wasi_thread_start.s
+31 −4 test/Makefile
Loading