ICU4C_SOURCE ?= $(HOME)/icu/icu4c/source
CXX := clang++
WASM2WAT := wasm2wat
.PHONY: all clean
all: ucptrie_wrap.wasm
wasm_obj/icu4c/%.o: $(ICU4C_SOURCE)/%.cpp
mkdir -p wasm_obj/icu4c/common
$(CXX) --target=wasm32-unknown-wasi \
-DTRUE=1 \
-DU_DISABLE_RENAMING=1 \
--compile \
-flto \
-I$(ICU4C_SOURCE)/common \
$< \
-o $@
wasm_obj/ucptrie_wrap.o: ucptrie_wrap.cpp
mkdir -p wasm_obj
$(CXX) --target=wasm32-unknown-wasi \
-I/usr/include/wasm32-wasi \
--compile \
-flto \
-I$(ICU4C_SOURCE)/common \
$< \
-o $@
wasm_obj_files = \
wasm_obj/icu4c/common/cmemory.o \
wasm_obj/icu4c/common/errorcode.o \
wasm_obj/icu4c/common/ucptrie.o \
wasm_obj/icu4c/common/umutablecptrie.o \
wasm_obj/icu4c/common/uobject.o \
wasm_obj/icu4c/common/utypes.o \
wasm_obj/ucptrie_wrap.o
ucptrie_wrap.wasm: $(wasm_obj_files)
$(CXX) --target=wasm32-unknown-wasi \
-mexec-model=reactor \
-DTRUE=1 \
-flto \
-Wl,--gc-sections \
-Wl,--strip-all \
-Wl,--export=umutablecptrie_open \
-Wl,--export=umutablecptrie_set \
-Wl,--export=umutablecptrie_setRange \
-Wl,--export=umutablecptrie_buildImmutable \
-Wl,--export=ucptrie_close \
-Wl,--export=umutablecptrie_close \
-Wl,--export=create_uerrorcode \
-Wl,--export=read_uerrorcode \
-Wl,--export=read_ucptrie_highStart \
-Wl,--export=read_ucptrie_shifted12HighStart \
-Wl,--export=read_ucptrie_index3NullOffset \
-Wl,--export=read_ucptrie_dataNullOffset \
-Wl,--export=read_ucptrie_nullValue \
-Wl,--export=get_index_ptr \
-Wl,--export=get_index_length \
-Wl,--export=get_data_ptr \
-Wl,--export=get_data_length \
-I$(ICU4C_SOURCE)/common \
-I$(ICU4C_SOURCE)/tools/toolutil \
$(wasm_obj_files) \
-g \
-o ucptrie_wrap.wasm
%.wat: %.wasm
$(WASM2WAT) $< -o $@
clean:
rm -rf wasm_obj
rm -f ucptrie_wrap.wasm