@@ -1126,6 +1126,21 @@ AC_ARG_ENABLE([wasm-dynamic-linking],
11261126] )
11271127AC_MSG_RESULT ( [ $enable_wasm_dynamic_linking] )
11281128
1129+ AC_MSG_CHECKING ( [ for --enable-wasm-pthreads] )
1130+ AC_ARG_ENABLE ( [ wasm-pthreads] ,
1131+ [ AS_HELP_STRING ( [ --enable-wasm-pthreads] ,
1132+ [ Enable pthread emulation for WebAssembly (default is no)] ) ] ,
1133+ [
1134+ AS_CASE ( [ $ac_sys_system] ,
1135+ [ Emscripten] , [ ] ,
1136+ [ WASI] , [ AC_MSG_ERROR ( [ WASI threading is not implemented yet.] ) ] ,
1137+ [ AC_MSG_ERROR ( [ --enable-wasm-pthreads only applies to Emscripten and WASI] ) ]
1138+ )
1139+ ] , [
1140+ enable_wasm_pthreads=missing
1141+ ] )
1142+ AC_MSG_RESULT ( [ $enable_wasm_pthreads] )
1143+
11291144AC_MSG_CHECKING ( [ for --with-suffix] )
11301145AC_ARG_WITH ( [ suffix] ,
11311146 [ AS_HELP_STRING ( [ --with-suffix=SUFFIX] , [ set executable suffix to SUFFIX (default is empty, yes is mapped to '.exe')] ) ] ,
@@ -1909,38 +1924,53 @@ then
19091924fi
19101925
19111926# WASM flags
1912- AS_CASE ( [ $ac_sys_system/$ac_sys_emscripten_target] ,
1913- [ Emscripten/browser*] , [
1914- LDFLAGS_NODIST="$LDFLAGS_NODIST -sALLOW_MEMORY_GROWTH"
1915- LINKFORSHARED="--preload-file=\$(WASM_ASSETS_DIR)"
1927+ AS_CASE ( [ $ac_sys_system] ,
1928+ [ Emscripten] , [
1929+ dnl build with WASM debug info if either Py_DEBUG is set or the target is
1930+ dnl node-debug or browser-debug.
1931+ AS_VAR_IF ( [ Py_DEBUG] , [ yes] , [ wasm_debug=yes] , [ wasm_debug=no] )
1932+
1933+ dnl Start with 20 MB and allow to grow
1934+ AS_VAR_APPEND ( [ LDFLAGS_NODIST] , [ " -sALLOW_MEMORY_GROWTH -sTOTAL_MEMORY=20971520"] )
1935+
1936+ dnl Include file system support
1937+ AS_VAR_APPEND ( [ LDFLAGS_NODIST] , [ " -sFORCE_FILESYSTEM -lidbfs.js -lnodefs.js -lproxyfs.js -lworkerfs.js"] )
1938+
19161939 AS_VAR_IF ( [ enable_wasm_dynamic_linking] , [ yes] , [
19171940 AS_VAR_APPEND ( [ LINKFORSHARED] , [ " -sMAIN_MODULE"] )
19181941 ] )
1919- WASM_ASSETS_DIR=".\$(prefix)"
1920- WASM_STDLIB="\$(WASM_ASSETS_DIR)/local/lib/python\$(VERSION)/os.py"
1921- dnl separate-dwarf does not seem to work in Chrome DevTools Support.
1922- if test "$Py_DEBUG" = 'true' -o "$ac_sys_emscripten_target" = "browser-debug"; then
1923- LDFLAGS_NODIST="$LDFLAGS_NODIST -sASSERTIONS"
1924- LINKFORSHARED="$LINKFORSHARED -gsource-map --emit-symbol-map"
1925- else
1926- LINKFORSHARED="$LINKFORSHARED -O2 -g0"
1927- fi
1928- ] ,
1929- [ Emscripten/node*] , [
1930- LDFLAGS_NODIST="$LDFLAGS_NODIST -sALLOW_MEMORY_GROWTH -sNODERAWFS -sUSE_PTHREADS"
1931- LINKFORSHARED="-sPROXY_TO_PTHREAD -sEXIT_RUNTIME"
1932- AS_VAR_IF ( [ enable_wasm_dynamic_linking] , [ yes] , [
1933- AS_VAR_APPEND ( [ LINKFORSHARED] , [ " -sMAIN_MODULE"] )
1942+
1943+ AS_VAR_IF ( [ enable_wasm_pthreads] , [ yes] , [
1944+ AS_VAR_APPEND ( [ CFLAGS_NODIST] , [ " -pthread"] )
1945+ AS_VAR_APPEND ( [ LDFLAGS_NODIST] , [ " -sUSE_PTHREADS"] )
1946+ AS_VAR_APPEND ( [ LINKFORSHARED] , [ " -sPROXY_TO_PTHREAD"] )
1947+ ] )
1948+
1949+ AS_CASE ( [ $ac_sys_emscripten_target] ,
1950+ [ browser*] , [
1951+ AS_VAR_IF ( [ ac_sys_emscripten_target] , [ browser-debug] , [ wasm_debug=yes] )
1952+ AS_VAR_APPEND ( [ LINKFORSHARED] , [ " --preload-file=\$(WASM_ASSETS_DIR)"] )
1953+ WASM_ASSETS_DIR=".\$(prefix)"
1954+ WASM_STDLIB="\$(WASM_ASSETS_DIR)/local/lib/python\$(VERSION)/os.py"
1955+ dnl separate-dwarf does not seem to work in Chrome DevTools Support.
1956+ WASM_LINKFORSHARED_DEBUG="-gsource-map --emit-symbol-map"
1957+ ] ,
1958+ [ node*] , [
1959+ AS_VAR_IF ( [ ac_sys_emscripten_target] , [ node-debug] , [ wasm_debug=yes] )
1960+ AS_VAR_APPEND ( [ LDFLAGS_NODIST] , [ " -sALLOW_MEMORY_GROWTH -sNODERAWFS"] )
1961+ AS_VAR_APPEND ( [ LINKFORSHARED] , [ " -sEXIT_RUNTIME"] )
1962+ WASM_LINKFORSHARED_DEBUG="-gseparate-dwarf --emit-symbol-map"
1963+ ]
1964+ )
1965+
1966+ AS_VAR_IF ( [ wasm_debug] , [ yes] , [
1967+ AS_VAR_APPEND ( [ LDFLAGS_NODIST] , [ " -sASSERTIONS"] )
1968+ AS_VAR_APPEND ( [ LINKFORSHARED] , [ " $WASM_LINKFORSHARED_DEBUG"] )
1969+ ] , [
1970+ AS_VAR_APPEND ( [ LINKFORSHARED] , [ " -O2 -g0"] )
19341971 ] )
1935- CFLAGS_NODIST="$CFLAGS_NODIST -pthread"
1936- if test "$Py_DEBUG" = 'true' -o "$ac_sys_emscripten_target" = "node-debug"; then
1937- LDFLAGS_NODIST="$LDFLAGS_NODIST -sASSERTIONS"
1938- LINKFORSHARED="$LINKFORSHARED -gseparate-dwarf --emit-symbol-map"
1939- else
1940- LINKFORSHARED="$LINKFORSHARED -O2 -g0"
1941- fi
19421972 ] ,
1943- [ WASI/* ] , [
1973+ [ WASI] , [
19441974 AC_DEFINE ( [ _WASI_EMULATED_SIGNAL] , [ 1] , [ Define to 1 if you want to emulate signals on WASI] )
19451975 AC_DEFINE ( [ _WASI_EMULATED_GETPID] , [ 1] , [ Define to 1 if you want to emulate getpid() on WASI] )
19461976 AC_DEFINE ( [ _WASI_EMULATED_PROCESS_CLOCKS] , [ 1] , [ Define to 1 if you want to emulate process clocks on WASI] )
0 commit comments