Skip to content

Commit 89574cb

Browse files
committed
Fix check_emscripten_port() function.
Match the autoconf macro behavior: set per-package variables (ZLIB_CFLAGS, ZLIB_LIBS, etc.) only when the system is Emscripten and the user hasn't already provided values.
1 parent 8d19cea commit 89574cb

File tree

2 files changed

+25
-10
lines changed

2 files changed

+25
-10
lines changed

Tools/configure/pyconf.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3233,19 +3233,25 @@ def pkg_check_modules(pkg_var: str, module_spec: str) -> Any:
32333233

32343234

32353235
def check_emscripten_port(pkg_var: str, emport_args: str) -> None:
3236-
"""Check for an Emscripten port (e.g. USE_ZLIB). Sets CFLAGS/LDFLAGS.
3236+
"""Check for an Emscripten port (e.g. USE_ZLIB).
32373237
3238-
Only active when CC is emcc; otherwise a no-op.
3238+
Sets ``{pkg_var}_CFLAGS`` and ``{pkg_var}_LIBS`` to *emport_args*
3239+
when building with emcc and the user hasn't already provided values.
3240+
Matches autoconf's PY_CHECK_EMSCRIPTEN_PORT macro.
3241+
Only active when ac_sys_system is Emscripten; otherwise a no-op.
32393242
"""
3240-
if "emcc" not in CC:
3243+
if vars.ac_sys_system != "Emscripten":
32413244
return
32423245
flag = (
32433246
f"-s{emport_args}" if not emport_args.startswith("-") else emport_args
32443247
)
3245-
existing_cflags = substs.get("CFLAGS", "")
3246-
existing_ldflags = substs.get("LDFLAGS", "")
3247-
substs["CFLAGS"] = f"{existing_cflags} {flag}".strip()
3248-
substs["LDFLAGS"] = f"{existing_ldflags} {flag}".strip()
3248+
cflags_name = f"{pkg_var}_CFLAGS"
3249+
libs_name = f"{pkg_var}_LIBS"
3250+
# Only set if user hasn't already provided values (Vars.__getattr__
3251+
# returns "" for unset attributes, matching shell empty-variable checks).
3252+
if not getattr(vars, cflags_name) and not getattr(vars, libs_name):
3253+
setattr(vars, cflags_name, flag)
3254+
setattr(vars, libs_name, flag)
32493255

32503256

32513257
# ---------------------------------------------------------------------------

Tools/configure/transpiler/pyconf.awk

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2006,9 +2006,18 @@ function pyconf_find_compiler(user_cc, user_cpp, cc, cpp, ver) {
20062006
pyconf_ac_cv_prog_cc_g = "yes"
20072007
}
20082008

2009-
function pyconf_check_emscripten_port(port, name) {
2010-
# Stub for emscripten port checks
2011-
return 0
2009+
function pyconf_check_emscripten_port(pkg_var, emport_args, flag, cname, lname) {
2010+
# Set {pkg_var}_CFLAGS and {pkg_var}_LIBS to emport_args when
2011+
# building with Emscripten and user hasn't provided values.
2012+
if (V["ac_sys_system"] != "Emscripten") return
2013+
flag = emport_args
2014+
if (substr(flag, 1, 1) != "-") flag = "-s" flag
2015+
cname = pkg_var "_CFLAGS"
2016+
lname = pkg_var "_LIBS"
2017+
if (V[cname] == "" && V[lname] == "") {
2018+
V[cname] = flag
2019+
V[lname] = flag
2020+
}
20122021
}
20132022

20142023
function pyconf_ax_c_float_words_bigendian(on_big, on_little, on_unknown, src, conftest, exe, cmd, rc, has_big, has_little, pre, post) {

0 commit comments

Comments
 (0)