diff --git a/test/test_sanity.py b/test/test_sanity.py index 62257eedbe6da..17b95aac6824a 100644 --- a/test/test_sanity.py +++ b/test/test_sanity.py @@ -752,7 +752,7 @@ def test_embuilder_wildcards(self): def test_embuilder_with_use_port_syntax(self): restore_and_set_up() self.run_process([EMBUILDER, 'build', 'sdl2_image:formats=png,jpg', '--force']) - self.assertExists(os.path.join(config.CACHE, 'sysroot', 'lib', 'wasm32-emscripten', 'libSDL2_image_jpg-png.a')) + self.assertExists(os.path.join(config.CACHE, 'sysroot', 'lib', 'wasm32-emscripten', 'libSDL2_image-jpg-png.a')) self.assertContained('error building port `sdl2_image:formats=invalid` | invalid is not a supported format', self.do([EMBUILDER, 'build', 'sdl2_image:formats=invalid', '--force'])) def test_embuilder_external_ports(self): diff --git a/tools/ports/sdl2_image.py b/tools/ports/sdl2_image.py index c72ef576b3241..70fa1499a4240 100644 --- a/tools/ports/sdl2_image.py +++ b/tools/ports/sdl2_image.py @@ -11,8 +11,10 @@ deps = ['sdl2'] variants = { - 'sdl2_image_jpg': {'SDL2_IMAGE_FORMATS': ["jpg"]}, - 'sdl2_image_png': {'SDL2_IMAGE_FORMATS': ["png"]}, + 'sdl2_image-jpg': {'SDL2_IMAGE_FORMATS': ["jpg"]}, + 'sdl2_image-png': {'SDL2_IMAGE_FORMATS': ["png"]}, + 'sdl2_image-jpg-mt': {'SDL2_IMAGE_FORMATS': ["jpg"], 'PTHREADS': 1}, + 'sdl2_image-png-mt': {'SDL2_IMAGE_FORMATS': ["png"], 'PTHREADS': 1}, } OPTIONS = { @@ -41,7 +43,9 @@ def get_lib_name(settings): libname = 'libSDL2_image' if formats != '': - libname += '_' + formats + libname += '-' + formats + if settings.PTHREADS: + libname += '-mt' return libname + '.a' @@ -58,20 +62,23 @@ def create(final): IMG_tif.c IMG_xcf.c IMG_xpm.c IMG_xv.c IMG_webp.c IMG_ImageIO.m IMG_avif.c IMG_jxl.c IMG_svg.c IMG_qoi.c'''.split() - defs = ['-O2', '-sUSE_SDL=2', '-Wno-format-security'] + flags = ['-O2', '-sUSE_SDL=2', '-Wno-format-security'] formats = get_formats(settings) for fmt in formats: - defs.append('-DLOAD_' + fmt.upper()) + flags.append('-DLOAD_' + fmt.upper()) if 'png' in formats: - defs += ['-sUSE_LIBPNG'] + flags += ['-sUSE_LIBPNG'] if 'jpg' in formats: - defs += ['-sUSE_LIBJPEG'] + flags += ['-sUSE_LIBJPEG'] - ports.build_port(src_dir, final, 'sdl2_image', flags=defs, srcs=srcs) + if settings.PTHREADS: + flags += ['-pthread'] + + ports.build_port(src_dir, final, 'sdl2_image', flags=flags, srcs=srcs) return [shared.cache.get_lib(libname, create, what='port')] diff --git a/tools/ports/sdl2_ttf.py b/tools/ports/sdl2_ttf.py index 631e06219b319..4e0d75f0e5330 100644 --- a/tools/ports/sdl2_ttf.py +++ b/tools/ports/sdl2_ttf.py @@ -8,11 +8,17 @@ deps = ['freetype', 'sdl2', 'harfbuzz'] +variants = {'sdl2_ttf-mt': {'PTHREADS': 1}} + def needed(settings): return settings.USE_SDL_TTF == 2 +def get_lib_name(settings): + return 'libSDL2_ttf' + ('-mt' if settings.PTHREADS else '') + '.a' + + def get(ports, settings, shared): ports.fetch_project('sdl2_ttf', f'https://github.com/libsdl-org/SDL_ttf/archive/{TAG}.zip', sha512hash=HASH) @@ -20,13 +26,15 @@ def create(final): src_root = ports.get_dir('sdl2_ttf', 'SDL_ttf-' + TAG) ports.install_headers(src_root, target='SDL2') flags = ['-DTTF_USE_HARFBUZZ=1', '-sUSE_SDL=2', '-sUSE_FREETYPE', '-sUSE_HARFBUZZ'] + if settings.PTHREADS: + flags += ['-pthread'] ports.build_port(src_root, final, 'sdl2_ttf', flags=flags, srcs=['SDL_ttf.c']) - return [shared.cache.get_lib('libSDL2_ttf.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('libSDL2_ttf.a') + shared.cache.erase_lib(get_lib_name(settings)) def process_dependencies(settings):