@@ -1126,6 +1126,21 @@ AC_ARG_ENABLE([wasm-dynamic-linking],
1126
1126
] )
1127
1127
AC_MSG_RESULT ( [ $enable_wasm_dynamic_linking] )
1128
1128
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
+
1129
1144
AC_MSG_CHECKING ( [ for --with-suffix] )
1130
1145
AC_ARG_WITH ( [ suffix] ,
1131
1146
[ AS_HELP_STRING ( [ --with-suffix=SUFFIX] , [ set executable suffix to SUFFIX (default is empty, yes is mapped to '.exe')] ) ] ,
@@ -1909,38 +1924,53 @@ then
1909
1924
fi
1910
1925
1911
1926
# 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
+
1916
1939
AS_VAR_IF ( [ enable_wasm_dynamic_linking] , [ yes] , [
1917
1940
AS_VAR_APPEND ( [ LINKFORSHARED] , [ " -sMAIN_MODULE"] )
1918
1941
] )
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"] )
1934
1971
] )
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
1942
1972
] ,
1943
- [ WASI/* ] , [
1973
+ [ WASI] , [
1944
1974
AC_DEFINE ( [ _WASI_EMULATED_SIGNAL] , [ 1] , [ Define to 1 if you want to emulate signals on WASI] )
1945
1975
AC_DEFINE ( [ _WASI_EMULATED_GETPID] , [ 1] , [ Define to 1 if you want to emulate getpid() on WASI] )
1946
1976
AC_DEFINE ( [ _WASI_EMULATED_PROCESS_CLOCKS] , [ 1] , [ Define to 1 if you want to emulate process clocks on WASI] )
0 commit comments