Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 17245c8

Browse files
authoredApr 1, 2022
bpo-40280: Add debug Emscripten flavors (GH-32233)
1 parent abdd69c commit 17245c8

File tree

2 files changed

+32
-22
lines changed

2 files changed

+32
-22
lines changed
 

‎configure

+15-11
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎configure.ac

+17-11
Original file line numberDiff line numberDiff line change
@@ -1091,6 +1091,12 @@ AC_ARG_WITH([emscripten-target],
10911091
AS_CASE([$with_emscripten_target],
10921092
[browser], [ac_sys_emscripten_target=browser],
10931093
[node], [ac_sys_emscripten_target=node],
1094+
dnl Debug builds with source map / dwarf symbols. Py_DEBUG builds easily
1095+
dnl run out of stack space. Detached sybmols and map prohibit some
1096+
dnl optimizations and increase file size. Options are undocumented so we
1097+
dnl are free to remove them in the future.
1098+
[browser-debug], [ac_sys_emscripten_target=browser-debug],
1099+
[node-debug], [ac_sys_emscripten_target=node-debug],
10941100
[AC_MSG_ERROR([Invalid argument: --with-emscripten-target=browser|node])]
10951101
)
10961102
], [
@@ -1112,8 +1118,8 @@ AC_ARG_WITH([suffix],
11121118
)
11131119
], [
11141120
AS_CASE([$ac_sys_system/$ac_sys_emscripten_target],
1115-
[Emscripten/browser], [EXEEXT=.html],
1116-
[Emscripten/node], [EXEEXT=.js],
1121+
[Emscripten/browser*], [EXEEXT=.html],
1122+
[Emscripten/node*], [EXEEXT=.js],
11171123
[WASI/*], [EXEEXT=.wasm],
11181124
[EXEEXT=]
11191125
)
@@ -1376,7 +1382,7 @@ AC_MSG_RESULT($LDLIBRARY)
13761382

13771383
# LIBRARY_DEPS, LINK_PYTHON_OBJS and LINK_PYTHON_DEPS variable
13781384
AS_CASE([$ac_sys_system/$ac_sys_emscripten_target],
1379-
[Emscripten/browser], [LIBRARY_DEPS='$(PY3LIBRARY) $(WASM_STDLIB)'],
1385+
[Emscripten/browser*], [LIBRARY_DEPS='$(PY3LIBRARY) $(WASM_STDLIB)'],
13801386
[LIBRARY_DEPS='$(PY3LIBRARY) $(EXPORTSYMS)']
13811387
)
13821388
LINK_PYTHON_DEPS='$(LIBRARY_DEPS)'
@@ -1888,28 +1894,28 @@ fi
18881894
# The option disables code elimination, which increases code size of main
18891895
# binary. All objects must be built with -fPIC.
18901896
AS_CASE([$ac_sys_system/$ac_sys_emscripten_target],
1891-
[Emscripten/browser], [
1897+
[Emscripten/browser*], [
18921898
LDFLAGS_NODIST="$LDFLAGS_NODIST -s ALLOW_MEMORY_GROWTH=1"
18931899
LINKFORSHARED="--preload-file \$(WASM_ASSETS_DIR)"
18941900
WASM_ASSETS_DIR=".\$(prefix)"
18951901
WASM_STDLIB="\$(WASM_ASSETS_DIR)/local/lib/python\$(VERSION)/os.py"
18961902
dnl separate-dwarf does not seem to work in Chrome DevTools Support.
1897-
if test "$Py_DEBUG" = 'true'; then
1903+
if test "$Py_DEBUG" = 'true' -o "$ac_sys_emscripten_target" = "browser-debug"; then
18981904
LDFLAGS_NODIST="$LDFLAGS_NODIST -s ASSERTIONS=1"
18991905
LINKFORSHARED="$LINKFORSHARED -gsource-map --emit-symbol-map"
19001906
else
19011907
LINKFORSHARED="$LINKFORSHARED -O2 -g0"
19021908
fi
19031909
],
1904-
[Emscripten/node], [
1910+
[Emscripten/node*], [
19051911
LDFLAGS_NODIST="$LDFLAGS_NODIST -s ALLOW_MEMORY_GROWTH=1 -s NODERAWFS=1 -s USE_PTHREADS=1"
19061912
LINKFORSHARED="-s PROXY_TO_PTHREAD=1 -s EXIT_RUNTIME=1"
19071913
CFLAGS_NODIST="$CFLAGS_NODIST -pthread"
1908-
if test "$Py_DEBUG" = 'true'; then
1914+
if test "$Py_DEBUG" = 'true' -o "$ac_sys_emscripten_target" = "node-debug"; then
19091915
LDFLAGS_NODIST="$LDFLAGS_NODIST -s ASSERTIONS=1"
19101916
LINKFORSHARED="$LINKFORSHARED -gseparate-dwarf --emit-symbol-map"
19111917
else
1912-
LINKFORSHARED="$LINKFORSHARED -O2 -gseparate-dwarf"
1918+
LINKFORSHARED="$LINKFORSHARED -O2 -g0"
19131919
fi
19141920
],
19151921
[WASI/*], [
@@ -6453,7 +6459,7 @@ if test "$enable_test_modules" = no; then
64536459
TEST_MODULES=no
64546460
else
64556461
AS_CASE([$ac_sys_system/$ac_sys_emscripten_target],
6456-
[Emscripten/browser], [TEST_MODULES=no],
6462+
[Emscripten/browser*], [TEST_MODULES=no],
64576463
[TEST_MODULES=yes]
64586464
)
64596465
fi
@@ -6478,7 +6484,7 @@ AS_CASE([$ac_sys_system/$ac_sys_emscripten_target],
64786484
[CYGWIN*/*], [PY_STDLIB_MOD_SET_NA([_scproxy], [nis])],
64796485
[QNX*/*], [PY_STDLIB_MOD_SET_NA([_scproxy], [nis])],
64806486
[FreeBSD*/*], [PY_STDLIB_MOD_SET_NA([_scproxy], [spwd])],
6481-
[Emscripten/browser], [
6487+
[Emscripten/browser*], [
64826488
PY_STDLIB_MOD_SET_NA(
64836489
[_ctypes],
64846490
[_curses],
@@ -6505,7 +6511,7 @@ AS_CASE([$ac_sys_system/$ac_sys_emscripten_target],
65056511
],
65066512
dnl Some modules like _posixsubprocess do not work. We build them anyway
65076513
dnl so imports in tests do not fail.
6508-
[Emscripten/node], [
6514+
[Emscripten/node*], [
65096515
PY_STDLIB_MOD_SET_NA(
65106516
[_ctypes],
65116517
[_curses],

0 commit comments

Comments
 (0)
Please sign in to comment.