From b2b360c14a6c7823d0bf0e2c17386e76d875ae84 Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Wed, 2 Sep 2026 10:38:26 -0700 Subject: [PATCH] [ports] Pass integer for WASM_LEGACY_EXCEPTIONS when building ports In #27579, `WASM_LEGACY_EXCEPTIONS` was forwarded to sub-compilations when building ports with wasm SjLj. However, `settings.WASM_LEGACY_EXCEPTIONS` defaults to a boolean (`True`) in Python when not explicitly set via `-s` on the command line (e.g. when using `-fwasm-exceptions`). Stringifying it into `-sWASM_LEGACY_EXCEPTIONS={settings.WASM_LEGACY_EXCEPTIONS}` resulted in `-sWASM_LEGACY_EXCEPTIONS=True`, which `emcc` rejects because boolean settings require 1 or 0. Ensure we format it as an integer so `1` or `0` is always passed. Fixes: #27650 --- tools/ports/freetype.py | 6 +++--- tools/ports/libpng.py | 10 +++++----- tools/ports/sdl2_image.py | 6 +++--- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/tools/ports/freetype.py b/tools/ports/freetype.py index ac5983709f47f..9390c27219cad 100644 --- a/tools/ports/freetype.py +++ b/tools/ports/freetype.py @@ -11,8 +11,8 @@ HASH = '460ea4dc9cc879822556d801341a1cf3efcd57a13cd4da64169603ea98873337dd19e3c8c6d9054b27d10acbbaa8d5c59b7f560c697b98dc2640bcd88f57554a' variants = { - 'freetype-wasmsjlj': {'SUPPORT_LONGJMP': 'wasm', 'WASM_LEGACY_EXCEPTIONS': 0}, - 'freetype-legacysjlj': {'SUPPORT_LONGJMP': 'wasm', 'WASM_LEGACY_EXCEPTIONS': 1}, + 'freetype-wasmsjlj': {'SUPPORT_LONGJMP': 'wasm', 'WASM_LEGACY_EXCEPTIONS': False}, + 'freetype-legacysjlj': {'SUPPORT_LONGJMP': 'wasm', 'WASM_LEGACY_EXCEPTIONS': True}, } deps = ['zlib'] @@ -103,7 +103,7 @@ def create(final): if settings.SUPPORT_LONGJMP == 'wasm': flags.append('-sSUPPORT_LONGJMP=wasm') - flags.append(f'-sWASM_LEGACY_EXCEPTIONS={settings.WASM_LEGACY_EXCEPTIONS}') + flags.append(f'-sWASM_LEGACY_EXCEPTIONS={int(settings.WASM_LEGACY_EXCEPTIONS)}') ports.make_pkg_config('freetype2', PKG_VERSION, '-sUSE_FREETYPE') ports.build_port(source_path, final, 'freetype', flags=flags, srcs=srcs) diff --git a/tools/ports/libpng.py b/tools/ports/libpng.py index f603390ec2fb3..911764866589e 100644 --- a/tools/ports/libpng.py +++ b/tools/ports/libpng.py @@ -13,10 +13,10 @@ deps = ['zlib'] variants = { 'libpng-mt': {'PTHREADS': 1}, - 'libpng-wasmsjlj': {'SUPPORT_LONGJMP': 'wasm', 'WASM_LEGACY_EXCEPTIONS': 0}, - 'libpng-mt-wasmsjlj': {'PTHREADS': 1, 'SUPPORT_LONGJMP': 'wasm', 'WASM_LEGACY_EXCEPTIONS': 0}, - 'libpng-legacysjlj': {'SUPPORT_LONGJMP': 'wasm', 'WASM_LEGACY_EXCEPTIONS': 1}, - 'libpng-mt-legacysjlj': {'PTHREADS': 1, 'SUPPORT_LONGJMP': 'wasm', 'WASM_LEGACY_EXCEPTIONS': 1}, + 'libpng-wasmsjlj': {'SUPPORT_LONGJMP': 'wasm', 'WASM_LEGACY_EXCEPTIONS': False}, + 'libpng-mt-wasmsjlj': {'PTHREADS': 1, 'SUPPORT_LONGJMP': 'wasm', 'WASM_LEGACY_EXCEPTIONS': False}, + 'libpng-legacysjlj': {'SUPPORT_LONGJMP': 'wasm', 'WASM_LEGACY_EXCEPTIONS': True}, + 'libpng-mt-legacysjlj': {'PTHREADS': 1, 'SUPPORT_LONGJMP': 'wasm', 'WASM_LEGACY_EXCEPTIONS': True}, } @@ -51,7 +51,7 @@ def create(final): flags += ['-pthread'] if settings.SUPPORT_LONGJMP == 'wasm': flags.append('-sSUPPORT_LONGJMP=wasm') - flags.append(f'-sWASM_LEGACY_EXCEPTIONS={settings.WASM_LEGACY_EXCEPTIONS}') + flags.append(f'-sWASM_LEGACY_EXCEPTIONS={int(settings.WASM_LEGACY_EXCEPTIONS)}') ports.build_port(source_path, final, 'libpng', flags=flags, exclude_files=['pngtest'], exclude_dirs=['scripts', 'contrib']) diff --git a/tools/ports/sdl2_image.py b/tools/ports/sdl2_image.py index b0699dfcfc395..82b5d9eef6c9e 100644 --- a/tools/ports/sdl2_image.py +++ b/tools/ports/sdl2_image.py @@ -8,8 +8,8 @@ deps = ['sdl2'] variants = { - 'sdl2_image-wasmsjlj': {'SUPPORT_LONGJMP': 'wasm', 'WASM_LEGACY_EXCEPTIONS': 0}, - 'sdl2_image-legacysjlj': {'SUPPORT_LONGJMP': 'wasm', 'WASM_LEGACY_EXCEPTIONS': 1}, + 'sdl2_image-wasmsjlj': {'SUPPORT_LONGJMP': 'wasm', 'WASM_LEGACY_EXCEPTIONS': False}, + 'sdl2_image-legacysjlj': {'SUPPORT_LONGJMP': 'wasm', 'WASM_LEGACY_EXCEPTIONS': True}, 'sdl2_image-jpg': {'SDL2_IMAGE_FORMATS': ["jpg"]}, 'sdl2_image-png': {'SDL2_IMAGE_FORMATS': ["png"]}, 'sdl2_image-jpg-mt': {'SDL2_IMAGE_FORMATS': ["jpg"], 'PTHREADS': 1}, @@ -81,7 +81,7 @@ def create(final): if settings.SUPPORT_LONGJMP == 'wasm': flags.append('-sSUPPORT_LONGJMP=wasm') - flags.append(f'-sWASM_LEGACY_EXCEPTIONS={settings.WASM_LEGACY_EXCEPTIONS}') + flags.append(f'-sWASM_LEGACY_EXCEPTIONS={int(settings.WASM_LEGACY_EXCEPTIONS)}') ports.build_port(src_dir, final, 'sdl2_image', flags=flags, srcs=srcs)