aboutsummaryrefslogtreecommitdiffstats
path: root/tool
diff options
context:
space:
mode:
Diffstat (limited to 'tool')
-rw-r--r--tool/m4/ruby_wasm_tools.m421
-rwxr-xr-xtool/wasm-clangw9
2 files changed, 30 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
diff --git a/tool/wasm-clangw b/tool/wasm-clangw
new file mode 100755
index 0000000000..9ebdfda75a
--- /dev/null
+++ b/tool/wasm-clangw
@@ -0,0 +1,9 @@
+#!/bin/sh
+# A Clang wrapper script to fake the clang linker driver.
+# Clang linker automatically uses wasm-opt with -O if it found.
+# However optimization before asyncify causes misoptimization,
+# so wrap clang to insert our fake wasm-opt, which does nothing, in PATH.
+
+src_dir="$(cd "$(dirname "$0")/../wasm" && pwd)"
+export PATH="$src_dir:$PATH"
+exec "$@"