diff --git a/Misc/NEWS.d/next/Build/2024-10-04-17-29-23.gh-issue-124928.FsGffe.rst b/Misc/NEWS.d/next/Build/2024-10-04-17-29-23.gh-issue-124928.FsGffe.rst new file mode 100644 index 00000000000000..291bf336ef225e --- /dev/null +++ b/Misc/NEWS.d/next/Build/2024-10-04-17-29-23.gh-issue-124928.FsGffe.rst @@ -0,0 +1 @@ +Emscripten builds now require node >= 18. diff --git a/Tools/wasm/emscripten/node_pre.js b/Tools/wasm/emscripten/node_pre.js new file mode 100644 index 00000000000000..3490d3ca591ef6 --- /dev/null +++ b/Tools/wasm/emscripten/node_pre.js @@ -0,0 +1,9 @@ +// If process is undefined, we're not running in the node runtime let it go I +// guess? +if (typeof process !== "undefined") { + const nodeVersion = Number(process.versions.node.split('.',1)[0]); + if (nodeVersion < 18) { + process.stderr.write(`Node version must be >= 18, got version ${process.version}\n`); + process.exit(1); + } +} diff --git a/configure b/configure index 97113f1fd967fe..13c7d8a734ccf5 100755 --- a/configure +++ b/configure @@ -7758,61 +7758,6 @@ else fi HOSTRUNNER="$NODE" - # bigint for ctypes c_longlong, c_longdouble - # no longer available in Node 16 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for node --experimental-wasm-bigint" >&5 -printf %s "checking for node --experimental-wasm-bigint... " >&6; } -if test ${ac_cv_tool_node_wasm_bigint+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - if $NODE -v --experimental-wasm-bigint > /dev/null 2>&1; then - ac_cv_tool_node_wasm_bigint=yes - else - ac_cv_tool_node_wasm_bigint=no - fi - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_tool_node_wasm_bigint" >&5 -printf "%s\n" "$ac_cv_tool_node_wasm_bigint" >&6; } - if test "x$ac_cv_tool_node_wasm_bigint" = xyes -then : - - as_fn_append HOSTRUNNER " --experimental-wasm-bigint" - -fi - - if test "x$enable_wasm_pthreads" = xyes -then : - - as_fn_append HOSTRUNNER " --experimental-wasm-threads" - # no longer available in Node 16 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for node --experimental-wasm-bulk-memory" >&5 -printf %s "checking for node --experimental-wasm-bulk-memory... " >&6; } -if test ${ac_cv_tool_node_wasm_bulk_memory+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - if $NODE -v --experimental-wasm-bulk-memory > /dev/null 2>&1; then - ac_cv_tool_node_wasm_bulk_memory=yes - else - ac_cv_tool_node_wasm_bulk_memory=no - fi - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_tool_node_wasm_bulk_memory" >&5 -printf "%s\n" "$ac_cv_tool_node_wasm_bulk_memory" >&6; } - if test "x$ac_cv_tool_node_wasm_bulk_memory" = xyes -then : - - as_fn_append HOSTRUNNER " --experimental-wasm-bulk-memory" - -fi - -fi - if test "x$host_cpu" = xwasm64 then : as_fn_append HOSTRUNNER " --experimental-wasm-memory64" @@ -9578,6 +9523,7 @@ fi then : wasm_debug=yes fi + as_fn_append LDFLAGS_NODIST " --pre-js=\$(srcdir)/Tools/wasm/emscripten/node_pre.js" as_fn_append LDFLAGS_NODIST " -sALLOW_MEMORY_GROWTH -sNODERAWFS" as_fn_append LINKFORSHARED " -sEXIT_RUNTIME" WASM_LINKFORSHARED_DEBUG="-gseparate-dwarf --emit-symbol-map" diff --git a/configure.ac b/configure.ac index 1534144bab3400..a470fd425880c5 100644 --- a/configure.ac +++ b/configure.ac @@ -1622,34 +1622,6 @@ then [Emscripten/node*], [ AC_PATH_TOOL([NODE], [node], [node]) HOSTRUNNER="$NODE" - # bigint for ctypes c_longlong, c_longdouble - # no longer available in Node 16 - AC_CACHE_CHECK([for node --experimental-wasm-bigint], [ac_cv_tool_node_wasm_bigint], [ - if $NODE -v --experimental-wasm-bigint > /dev/null 2>&1; then - ac_cv_tool_node_wasm_bigint=yes - else - ac_cv_tool_node_wasm_bigint=no - fi - ]) - AS_VAR_IF([ac_cv_tool_node_wasm_bigint], [yes], [ - AS_VAR_APPEND([HOSTRUNNER], [" --experimental-wasm-bigint"]) - ]) - - AS_VAR_IF([enable_wasm_pthreads], [yes], [ - AS_VAR_APPEND([HOSTRUNNER], [" --experimental-wasm-threads"]) - # no longer available in Node 16 - AC_CACHE_CHECK([for node --experimental-wasm-bulk-memory], [ac_cv_tool_node_wasm_bulk_memory], [ - if $NODE -v --experimental-wasm-bulk-memory > /dev/null 2>&1; then - ac_cv_tool_node_wasm_bulk_memory=yes - else - ac_cv_tool_node_wasm_bulk_memory=no - fi - ]) - AS_VAR_IF([ac_cv_tool_node_wasm_bulk_memory], [yes], [ - AS_VAR_APPEND([HOSTRUNNER], [" --experimental-wasm-bulk-memory"]) - ]) - ]) - AS_VAR_IF([host_cpu], [wasm64], [AS_VAR_APPEND([HOSTRUNNER], [" --experimental-wasm-memory64"])]) ], dnl TODO: support other WASI runtimes @@ -2424,6 +2396,7 @@ AS_CASE([$ac_sys_system], ], [node*], [ AS_VAR_IF([ac_sys_emscripten_target], [node-debug], [wasm_debug=yes]) + AS_VAR_APPEND([LDFLAGS_NODIST], [" --pre-js=\$(srcdir)/Tools/wasm/emscripten/node_pre.js"]) AS_VAR_APPEND([LDFLAGS_NODIST], [" -sALLOW_MEMORY_GROWTH -sNODERAWFS"]) AS_VAR_APPEND([LINKFORSHARED], [" -sEXIT_RUNTIME"]) WASM_LINKFORSHARED_DEBUG="-gseparate-dwarf --emit-symbol-map"