diff --git a/test/test_other.py b/test/test_other.py index a41b1cfa83e71..6655371a6ac74 100644 --- a/test/test_other.py +++ b/test/test_other.py @@ -92,6 +92,20 @@ def metafunc(self, wasmfs): return metafunc +def also_with_wasm_longjmp(f): + def metafunc(self, wasmfs): + if wasmfs: + self.require_wasm_eh() + self.emcc_args.append('-sSUPPORT_LONGJMP=wasm') + f(self) + else: + f(self) + + metafunc._parameterize = {'': (False,), + 'wasm_longjmp': (True,)} + return metafunc + + def wasmfs_all_backends(f): def metafunc(self, backend): self.set_setting('WASMFS') @@ -2205,6 +2219,7 @@ def test_bzip2(self): self.do_runf(test_file('bzip2_test.c'), 'usage: unzcrash filename', emcc_args=['-sUSE_BZIP2', '-Wno-pointer-sign']) + @also_with_wasm_longjmp def test_freetype(self): # copy the Liberation Sans Bold truetype file located in the # /test/freetype to the compilation folder diff --git a/tools/ports/freetype.py b/tools/ports/freetype.py index c7fe77e92b598..51ccc80a2b03c 100644 --- a/tools/ports/freetype.py +++ b/tools/ports/freetype.py @@ -8,11 +8,20 @@ TAG = 'version_1' HASH = '0d0b1280ba0501ad0a23cf1daa1f86821c722218b59432734d3087a89acd22aabd5c3e5e1269700dcd41e87073046e906060f167c032eb91a3ac8c5808a02783' +variants = {'freetype-wasm-longjmp': {'SUPPORT_LONGJMP': 'wasm'}} + def needed(settings): return settings.USE_FREETYPE +def get_lib_name(settings): + if settings.SUPPORT_LONGJMP == 'wasm': + return 'libfreetype-wasm-eh.a' + else: + return 'libfreetype.a' + + def get(ports, settings, shared): ports.fetch_project('freetype', f'https://github.com/emscripten-ports/FreeType/archive/{TAG}.zip', sha512hash=HASH) @@ -90,13 +99,16 @@ def create(final): '-pthread' ] + if settings.SUPPORT_LONGJMP == 'wasm': + flags.append('-sSUPPORT_LONGJMP=wasm') + ports.build_port(source_path, final, 'freetype', flags=flags, srcs=srcs) - return [shared.cache.get_lib('libfreetype.a', create, what='port')] + return [shared.cache.get_lib(get_lib_name(settings), create, what='port')] def clear(ports, settings, shared): - shared.cache.erase_lib('libfreetype.a') + shared.cache.erase_lib(get_lib_name(settings)) def process_args(ports): diff --git a/tools/ports/libpng.py b/tools/ports/libpng.py index 1e9c91b3670a6..0de4a7ef47d5d 100644 --- a/tools/ports/libpng.py +++ b/tools/ports/libpng.py @@ -312,17 +312,17 @@ def show(): #define PNG_SAVE_INT_32_SUPPORTED #define PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED #define PNG_SEQUENTIAL_READ_SUPPORTED -#define PNG_SETJMP_SUPPORTED +/*define PNG_SETJMP_SUPPORTED*/ #define PNG_SET_OPTION_SUPPORTED #define PNG_SET_UNKNOWN_CHUNKS_SUPPORTED #define PNG_SET_USER_LIMITS_SUPPORTED #define PNG_SIMPLIFIED_READ_AFIRST_SUPPORTED #define PNG_SIMPLIFIED_READ_BGR_SUPPORTED -#define PNG_SIMPLIFIED_READ_SUPPORTED +/*#define PNG_SIMPLIFIED_READ_SUPPORTED*/ #define PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED #define PNG_SIMPLIFIED_WRITE_BGR_SUPPORTED #define PNG_SIMPLIFIED_WRITE_STDIO_SUPPORTED -#define PNG_SIMPLIFIED_WRITE_SUPPORTED +/*#define PNG_SIMPLIFIED_WRITE_SUPPORTED*/ #define PNG_STDIO_SUPPORTED #define PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED #define PNG_TEXT_SUPPORTED diff --git a/tools/ports/sdl2_image.py b/tools/ports/sdl2_image.py index 9af62c32fab73..9f37d57b0718d 100644 --- a/tools/ports/sdl2_image.py +++ b/tools/ports/sdl2_image.py @@ -5,8 +5,8 @@ import os -TAG = 'version_4' -HASH = '30a7b04652239bccff3cb1fa7cd8ae602791b5f502a96df39585c13ebc4bb2b64ba1598c0d1f5382028d94e04a5ca02185ea06bf7f4b3520f6df4cc253f9dd24' +TAG = 'release-2.6.3' +HASH = 'f8759721702f81d147e15b54d0d9e6ef5cc8d6d15951f9d69fb88f9ce8f0ac3b4f3de4410fc0dea4c708af5b302bb5e1d1300e306369861fde8e95b7c9e98436' deps = ['sdl2'] variants = { @@ -32,11 +32,11 @@ def get_lib_name(settings): def get(ports, settings, shared): sdl_build = os.path.join(ports.get_build_dir(), 'sdl2') assert os.path.exists(sdl_build), 'You must use SDL2 to use SDL2_image' - ports.fetch_project('sdl2_image', f'https://github.com/emscripten-ports/SDL2_image/archive/{TAG}.zip', sha512hash=HASH) + ports.fetch_project('sdl2_image', f'https://github.com/libsdl-org/SDL_image/archive/refs/tags/{TAG}.zip', sha512hash=HASH) libname = get_lib_name(settings) def create(final): - src_dir = os.path.join(ports.get_dir(), 'sdl2_image', 'SDL2_image-' + TAG) + src_dir = os.path.join(ports.get_dir(), 'sdl2_image', 'SDL_image-' + TAG) ports.install_headers(src_dir, target='SDL2') srcs = '''IMG.c IMG_bmp.c IMG_gif.c IMG_jpg.c IMG_lbm.c IMG_pcx.c IMG_png.c IMG_pnm.c IMG_tga.c IMG_tif.c IMG_xcf.c IMG_xpm.c IMG_xv.c IMG_webp.c IMG_ImageIO.m'''.split()