Skip to content

Commit 8f09a60

Browse files
committed
[WIP] Add exception handling support.
1 parent 77ba98a commit 8f09a60

File tree

3 files changed

+43
-9
lines changed

3 files changed

+43
-9
lines changed

.gitmodules

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[submodule "src/llvm-project"]
22
path = src/llvm-project
3-
url = https://github.com/llvm/llvm-project
3+
url = https://github.com/whitequark/llvm-project
44
[submodule "src/wasi-libc"]
55
path = src/wasi-libc
66
url = https://github.com/CraneStation/wasi-libc

Makefile

+41-7
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ LIBCXX_CMAKE_FLAGS = \
141141
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
142142
-DLIBCXX_ENABLE_SHARED:BOOL=OFF \
143143
-DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY:BOOL=OFF \
144-
-DLIBCXX_ENABLE_EXCEPTIONS:BOOL=OFF \
144+
-DLIBCXX_ENABLE_EXCEPTIONS:BOOL=ON \
145145
-DLIBCXX_ENABLE_FILESYSTEM:BOOL=OFF \
146146
-DLIBCXX_CXX_ABI=libcxxabi \
147147
-DLIBCXX_CXX_ABI_INCLUDE_PATHS=$(LLVM_PROJ_DIR)/libcxxabi/include \
@@ -154,8 +154,8 @@ build/libcxx.BUILT: build/llvm.BUILT build/compiler-rt.BUILT build/wasi-libc.BUI
154154
# Do the build.
155155
mkdir -p build/libcxx
156156
cd build/libcxx && cmake -G Ninja $(LIBCXX_CMAKE_FLAGS) \
157-
-DCMAKE_C_FLAGS="$(DEBUG_PREFIX_MAP) --sysroot=$(BUILD_PREFIX)/share/wasi-sysroot" \
158-
-DCMAKE_CXX_FLAGS="$(DEBUG_PREFIX_MAP) --sysroot=$(BUILD_PREFIX)/share/wasi-sysroot" \
157+
-DCMAKE_C_FLAGS="$(DEBUG_PREFIX_MAP) --sysroot=$(BUILD_PREFIX)/share/wasi-sysroot -fwasm-exceptions" \
158+
-DCMAKE_CXX_FLAGS="$(DEBUG_PREFIX_MAP) --sysroot=$(BUILD_PREFIX)/share/wasi-sysroot -fwasm-exceptions" \
159159
-DLIBCXX_LIBDIR_SUFFIX=$(ESCAPE_SLASH)/wasm32-wasi \
160160
$(LLVM_PROJ_DIR)/libcxx
161161
ninja $(NINJA_FLAGS) -v -C build/libcxx
@@ -170,7 +170,7 @@ LIBCXXABI_CMAKE_FLAGS = \
170170
-DCMAKE_AR=$(BUILD_PREFIX)/bin/ar \
171171
-DCMAKE_MODULE_PATH=$(ROOT_DIR)/cmake \
172172
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
173-
-DLIBCXXABI_ENABLE_EXCEPTIONS:BOOL=OFF \
173+
-DLIBCXXABI_ENABLE_EXCEPTIONS:BOOL=ON \
174174
-DLIBCXXABI_ENABLE_SHARED:BOOL=OFF \
175175
-DLIBCXXABI_SILENT_TERMINATE:BOOL=ON \
176176
-DLIBCXXABI_ENABLE_THREADS:BOOL=OFF \
@@ -195,23 +195,57 @@ build/libcxxabi.BUILT: build/libcxx.BUILT build/llvm.BUILT
195195
# Do the build.
196196
mkdir -p build/libcxxabi
197197
cd build/libcxxabi && cmake -G Ninja $(LIBCXXABI_CMAKE_FLAGS) \
198-
-DCMAKE_C_FLAGS="$(DEBUG_PREFIX_MAP) --sysroot=$(BUILD_PREFIX)/share/wasi-sysroot" \
199-
-DCMAKE_CXX_FLAGS="$(DEBUG_PREFIX_MAP) --sysroot=$(BUILD_PREFIX)/share/wasi-sysroot" \
198+
-DCMAKE_C_FLAGS="$(DEBUG_PREFIX_MAP) --sysroot=$(BUILD_PREFIX)/share/wasi-sysroot -fwasm-exceptions" \
199+
-DCMAKE_CXX_FLAGS="$(DEBUG_PREFIX_MAP) --sysroot=$(BUILD_PREFIX)/share/wasi-sysroot -fwasm-exceptions" \
200200
-DLIBCXXABI_LIBDIR_SUFFIX=$(ESCAPE_SLASH)/wasm32-wasi \
201201
$(LLVM_PROJ_DIR)/libcxxabi
202202
ninja $(NINJA_FLAGS) -v -C build/libcxxabi
203203
# Do the install.
204204
DESTDIR=$(DESTDIR) ninja $(NINJA_FLAGS) -v -C build/libcxxabi install
205205
touch build/libcxxabi.BUILT
206206

207+
# Flags for libunwind.
208+
LIBUNWIND_CMAKE_FLAGS = \
209+
-DCMAKE_C_COMPILER_WORKS=ON \
210+
-DCMAKE_CXX_COMPILER_WORKS=ON \
211+
-DCMAKE_AR=$(BUILD_PREFIX)/bin/ar \
212+
-DCMAKE_MODULE_PATH=$(ROOT_DIR)/cmake \
213+
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
214+
-DLIBUNWIND_ENABLE_SHARED:BOOL=OFF \
215+
-DLIBUNWIND_ENABLE_THREADS:BOOL=OFF \
216+
-DLIBUNWIND_ENABLE_ASSERTIONS:BOOL=OFF \
217+
-DLIBUNWIND_USE_COMPILER_RT:BOOL=ON \
218+
-DCXX_SUPPORTS_CXX11=ON \
219+
-DLLVM_COMPILER_CHECKED=ON \
220+
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
221+
-DLIBUNWIND_LIBCXX_PATH=$(LLVM_PROJ_DIR)/libcxx \
222+
-DCMAKE_TOOLCHAIN_FILE=$(ROOT_DIR)/wasi-sdk.cmake \
223+
-DCMAKE_STAGING_PREFIX=$(PREFIX)/share/wasi-sysroot \
224+
-DWASI_SDK_PREFIX=$(BUILD_PREFIX) \
225+
-DUNIX:BOOL=ON \
226+
--debug-trycompile
227+
228+
build/libunwind.BUILT: build/libcxx.BUILT build/llvm.BUILT
229+
# Do the build.
230+
mkdir -p build/libunwind
231+
cd build/libunwind && cmake -G Ninja $(LIBUNWIND_CMAKE_FLAGS) \
232+
-DCMAKE_C_FLAGS="$(DEBUG_PREFIX_MAP) --sysroot=$(BUILD_PREFIX)/share/wasi-sysroot -fwasm-exceptions" \
233+
-DCMAKE_CXX_FLAGS="$(DEBUG_PREFIX_MAP) --sysroot=$(BUILD_PREFIX)/share/wasi-sysroot -fwasm-exceptions" \
234+
-DLIBUNWIND_LIBDIR_SUFFIX=$(ESCAPE_SLASH)/wasm32-wasi \
235+
$(LLVM_PROJ_DIR)/libunwind
236+
ninja $(NINJA_FLAGS) -v -C build/libunwind
237+
# Do the install.
238+
DESTDIR=$(DESTDIR) ninja $(NINJA_FLAGS) -v -C build/libunwind install
239+
touch build/libunwind.BUILT
240+
207241
build/config.BUILT:
208242
mkdir -p $(BUILD_PREFIX)/share/misc
209243
cp src/config/config.sub src/config/config.guess $(BUILD_PREFIX)/share/misc
210244
mkdir -p $(BUILD_PREFIX)/share/cmake
211245
cp wasi-sdk.cmake $(BUILD_PREFIX)/share/cmake
212246
touch build/config.BUILT
213247

214-
build: build/llvm.BUILT build/wasi-libc.BUILT build/compiler-rt.BUILT build/libcxxabi.BUILT build/libcxx.BUILT build/config.BUILT
248+
build: build/llvm.BUILT build/wasi-libc.BUILT build/compiler-rt.BUILT build/libcxxabi.BUILT build/libcxx.BUILT build/libunwind.BUILT build/config.BUILT
215249

216250
strip: build/llvm.BUILT
217251
./strip_symbols.sh $(BUILD_PREFIX)

src/llvm-project

0 commit comments

Comments
 (0)