summaryrefslogtreecommitdiff
path: root/tool/m4
diff options
context:
space:
mode:
authorYuta Saito <kateinoigakukun@gmail.com>2022-01-15 23:10:48 +0900
committerYuta Saito <kateinoigakukun@gmail.com>2022-01-19 11:19:06 +0900
commit65f95f26ff0e7b4be4704fedc52344a26d22a4e2 (patch)
treee4bd17869d8dd479855592f3a571aacae19e964c /tool/m4
parente41b121e94ccce9877824e55f865885bbabe40c3 (diff)
[wasm] add asyncify based setjmp, fiber, register scan emulation
configure.ac: setup build tools and register objects main.c: wrap main with rb_wasm_rt_start to handle asyncify unwinds tool/m4/ruby_wasm_tools.m4: setup default command based on WASI_SDK_PATH environment variable. checks wasm-opt which is used for asyncify. tool/wasm-clangw wasm/wasm-opt: a clang wrapper which replaces real wasm-opt with do-nothing wasm-opt to avoid misoptimization before asyncify. asyncify is performed at POSTLINK, but clang linker driver tries to run optimization by wasm-opt unconditionally. inlining pass at wasm level breaks asyncify's assumption, so should not optimize before POSTLIK. wasm/GNUmakefile.in: wasm specific rules to compile objects
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/5407
Diffstat (limited to 'tool/m4')
-rw-r--r--tool/m4/ruby_wasm_tools.m421
1 files changed, 21 insertions, 0 deletions
diff --git a/tool/m4/ruby_wasm_tools.m4 b/tool/m4/ruby_wasm_tools.m4
new file mode 100644
index 0000000000..d58de88ec8
--- /dev/null
+++ b/tool/m4/ruby_wasm_tools.m4
@@ -0,0 +1,21 @@
+dnl -*- Autoconf -*-
+AC_DEFUN([RUBY_WASM_TOOLS],
+[AS_CASE(["$target_os"],
+[wasi*], [
+ AC_CHECK_TOOL(WASMOPT, wasm-opt)
+ AS_IF([test x"${WASMOPT}" = x], [
+ AC_MSG_ERROR([wasm-opt is required])
+ ])
+ AC_SUBST(wasmoptflags)
+ : ${wasmoptflags=-O3}
+
+ AC_MSG_CHECKING([wheather \$WASI_SDK_PATH is set])
+ AS_IF([test x"${WASI_SDK_PATH}" = x], [AC_MSG_RESULT([no])], [
+ AC_MSG_RESULT([yes])
+ CC="${WASI_SDK_PATH}/bin/clang"
+ LD="${WASI_SDK_PATH}/bin/clang"
+ AR="${WASI_SDK_PATH}/bin/llvm-ar"
+ RANLIB="${WASI_SDK_PATH}/bin/llvm-ranlib"
+ ])
+])
+])dnl