EMBUILDER(1)
π EMBUILDER β the manual page, but make it make sense π
okay bestie, gather round, this is embuilder from section 1 of the User Commands, and it's genuinely one of my faves because it's the little tool that manages the building of Emscripten system libraries and ports. yes. that's the whole job. she's focused. she's iconic. π«Ά
β¨ NAME β¨
embuilder β like, the literal tool to manage building of Emscripten system libraries and ports. that's it, that's the name, we love a girl with a clear purpose π
πΈ DESCRIPTION πΈ
so the usage line, verbatim, no cap:
usage: embuilder.py [-h] [--lto] [--lto=thin] [--pic] [-f] [-v]
[--wasm64]
{build,clear,rebuild} [targets ...]
Tool to manage building of system libraries and ports. π
and here's the tea β β in general, emcc will build them automatically on demand, so you do not strictly need to use this tool. like, she's not a need, she's a want π
but she gives you more control over the process. and specifically β listen, this part matters β if emcc does this automatically and you're running multiple build commands in parallel, confusion can occur. so real talk: parallel builds + auto-building = chaos energy, and embuilder is here to give you your main character control back β¨
π positional arguments π
{build,clear,rebuild}targets β see below, bestie, there's more coming, scroll on π¦
π options π
-h,--helpβ shows this help message and then dips. exits. bye. π--ltoβ build bitcode object for LTO--lto=thinβ build bitcode object for ThinLTO--picβ build relocatable objects suitable for dynamic linking π-f,--forceβ force rebuild of target (by removing it first). yes she will delete it first, that's the whole point, no take-backs π-v,--verboseβ show build commands, so you can see exactly what's happening instead of just vibing in the dark β¨--wasm64β use wasm64 architecture π§
π¦ Available targets π¦
for build / clear:
β¦and that's where part 1 wraps, bestie β more targets incoming, don't go anywhere π
β¦and then the list just KEEPS. GOING. No cap, bestie, it's giving infinite library core. Here's the rest of the roster, every single one, spelled exactly right so you don't have to squint:
boost_headers bullet bzip2 cocos2d contrib.glfw3 contrib.lua crt1
crt1_proxy_main crt1_reactor crtbegin-mt emdawnwebgpu freetype
freetype-legacysjlj giflib harfbuzz harfbuzz-mt icu icu-mt libGL
libGL-emu libGL-emu-full_es3 libGL-emu-full_es3-getprocaddr
libGL-emu-getprocaddr libGL-emu-ofb libGL-emu-ofb-full_es3
libGL-emu-ofb-full_es3-getprocaddr libGL-emu-ofb-getprocaddr
libGL-emu-webgl2 libGL-emu-webgl2-full_es3
libGL-emu-webgl2-full_es3-getprocaddr
libGL-emu-webgl2-getprocaddr libGL-emu-webgl2-ofb
libGL-emu-webgl2-ofb-full_es3
libGL-emu-webgl2-ofb-full_es3-getprocaddr
libGL-emu-webgl2-ofb-getprocaddr libGL-full_es3
libGL-full_es3-getprocaddr libGL-getprocaddr libGL-mt
libGL-mt-emu libGL-mt-emu-full_es3
libGL-mt-emu-full_es3-getprocaddr libGL-mt-emu-getprocaddr
libGL-mt-emu-ofb libGL-mt-emu-ofb-full_es3
libGL-mt-emu-ofb-full_es3-getprocaddr
libGL-mt-emu-ofb-getprocaddr libGL-mt-emu-webgl2
libGL-mt-emu-webgl2-full_es3
libGL-mt-emu-webgl2-full_es3-getprocaddr
libGL-mt-emu-webgl2-getprocaddr libGL-mt-emu-webgl2-ofb
libGL-mt-emu-webgl2-ofb-full_es3
libGL-mt-emu-webgl2-ofb-full_es3-getprocaddr
libGL-mt-emu-webgl2-ofb-getprocaddr libGL-mt-full_es3
libGL-mt-full_es3-getprocaddr libGL-mt-getprocaddr libGL-mt-ofb
libGL-mt-ofb-full_es3 libGL-mt-ofb-full_es3-getprocaddr
libGL-mt-ofb-getprocaddr libGL-mt-webgl2 libGL-mt-webgl2-full_es3
libGL-mt-webgl2-full_es3-getprocaddr libGL-mt-webgl2-getprocaddr
libGL-mt-webgl2-ofb libGL-mt-webgl2-ofb-full_es3
libGL-mt-webgl2-ofb-full_es3-getprocaddr
libGL-mt-webgl2-ofb-getprocaddr libGL-ofb libGL-ofb-full_es3
libGL-ofb-full_es3-getprocaddr libGL-ofb-getprocaddr libGL-webgl2
libGL-webgl2-full_es3 libGL-webgl2-full_es3-getprocaddr
libGL-webgl2-getprocaddr libGL-webgl2-ofb
libGL-webgl2-ofb-full_es3 libGL-webgl2-ofb-full_es3-getprocaddr
libGL-webgl2-ofb-getprocaddr libGL-ww libGL-ww-emu
libGL-ww-emu-full_es3 libGL-ww-emu-full_es3-getprocaddr
libGL-ww-emu-getprocaddr libGL-ww-emu-ofb
libGL-ww-emu-ofb-full_es3 libGL-ww-emu-ofb-full_es3-getprocaddr
libGL-ww-emu-ofb-getprocaddr libGL-ww-emu-webgl2
libGL-ww-emu-webgl2-full_es3
libGL-ww-emu-webgl2-full_es3-getprocaddr
libGL-ww-emu-webgl2-getprocaddr libGL-ww-emu-webgl2-ofb
libGL-ww-emu-webgl2-ofb-full_es3
libGL-ww-emu-webgl2-ofb-full_es3-getprocaddr
libGL-ww-emu-webgl2-ofb-getprocaddr libGL-ww-full_es3
libGL-ww-full_es3-getprocaddr libGL-ww-getprocaddr libGL-ww-ofb
libGL-ww-ofb-full_es3 libGL-ww-ofb-full_es3-getprocaddr
libGL-ww-ofb-getprocaddr libGL-ww-webgl2 libGL-ww-webgl2-full_es3
libGL-ww-webgl2-full_es3-getprocaddr libGL-ww-webgl2-getprocaddr
libGL-ww-webgl2-ofb libGL-ww-webgl2-ofb-full_es3
libGL-ww-webgl2-ofb-full_es3-getprocaddr
libGL-ww-webgl2-ofb-getprocaddr libal libc libc++ libc++-debug
libc++-debug-legacyexcept libc++-debug-mt
libc++-debug-mt-legacyexcept libc++-debug-mt-noexcept
libc++-debug-mt-wasmexcept libc++-debug-noexcept
libc++-debug-wasmexcept libc++-debug-ww
libc++-debug-ww-legacyexcept libc++-debug-ww-noexcept
libc++-debug-ww-wasmexcept libc++-legacyexcept libc++-mt
libc++-mt-legacyexcept libc++-mt-noexcept libc++-mt-wasmexcept
libc++-noexcept libc++-wasmexcept libc++-ww
libc++-ww-legacyexcept libc++-ww-noexcept libc++-ww-wasmexcept
libc++abi libc++abi-debug libc++abi-debug-legacyexcept
libc++abi-debug-mt libc++abi-debug-mt-legacyexcept
libc++abi-debug-mt-noexcept libc++abi-debug-mt-wasmexcept
libc++abi-debug-noexcept libc++abi-debug-wasmexcept
libc++abi-debug-ww libc++abi-debug-ww-legacyexcept
libc++abi-debug-ww-noexcept libc++abi-debug-ww-wasmexcept
libc++abi-legacyexcept libc++abi-mt libc++abi-mt-legacyexcept
libc++abi-mt-noexcept libc++abi-mt-wasmexcept libc++abi-noexcept
libc++abi-wasmexcept libc++abi-ww libc++abi-ww-legacyexcept
libc++abi-ww-noexcept libc++abi-ww-wasmexcept libc-asan
libc-asan-debug libc-debug libc-mt libc-mt-asan
libc-mt-asan-debug libc-mt-debug libc-ww libc-ww-asan
libc-ww-asan-debug libc-ww-debug libc_optz libc_optz-asan
libc_optz-asan-debug libc_optz-debug libc_optz-mt
libc_optz-mt-asan libc_optz-mt-asan-debug libc_optz-mt-debug
libc_optz-ww libc_optz-ww-asan libc_optz-ww-asan-debug
libc_optz-ww-debug libclang_rt.asan libclang_rt.asan-mt
libclang_rt.asan-ww libclang_rt.builtins
libclang_rt.builtins-legacysjlj
libclang_rt.builtins-legacysjlj-mt
libclang_rt.builtins-legacysjlj-ww libclang_rt.builtins-mt
libclang_rt.builtins-wasmsjlj libclang_rt.builtins-wasmsjlj-mt
libclang_rt.builtins-wasmsjlj-ww libclang_rt.builtins-ww
libclang_rt.lsan libclang_rt.lsan-mt libclang_rt.lsan-ww
libclang_rt.lsan_common libclang_rt.lsan_common-mt
libclang_rt.lsan_common-ww libclang_rt.sanitizer_common
libclang_rt.sanitizer_common-mt libclang_rt.sanitizer_common-ww
libclang_rt.ubsan libclang_rt.ubsan-mt libclang_rt.ubsan-ww
libclang_rt.ubsan_minimal libclang_rt.ubsan_minimal-mt
libclang_rt.ubsan_minimal-ww libdlmalloc libdlmalloc-debug
libdlmalloc-debug-tracing libdlmalloc-mt libdlmalloc-mt-debug
libdlmalloc-mt-debug-tracing libdlmalloc-mt-tracing
libdlmalloc-tracing libdlmalloc-ww libdlmalloc-ww-debug
libdlmalloc-ww-debug-tracing libdlmalloc-ww-tracing libembind
libembind-mt libembind-mt-rtti libembind-rtti libembind-ww
libembind-ww-rtti libemmalloc libemmalloc-debug
libemmalloc-debug-tracing libemmalloc-memvalidate
libemmalloc-memvalidate-mt libemmalloc-memvalidate-mt-tracing
libemmalloc-memvalidate-tracing libemmalloc-memvalidate-verbose
libemmalloc-memvalidate-verbose-mt
libemmalloc-memvalidate-verbose-mt-tracing
libemmalloc-memvalidate-verbose-tracing
libemmalloc-memvalidate-verbose-ww
libemmalloc-memvalidate-verbose-ww-tracing
libemmalloc-memvalidate-ww libemmalloc-memvalidate-ww-tracing
libemmalloc-mt libemmalloc-mt-debug libemmalloc-mt-debug-tracing
libemmalloc-mt-tracing libemmalloc-tracing libemmalloc-verbose
libemmalloc-verbose-mt libemmalloc-verbose-mt-tracing
libemmalloc-verbose-tracing libemmalloc-verbose-ww
libemmalloc-verbose-ww-tracing libemmalloc-ww
libemmalloc-ww-debug libemmalloc-ww-debug-tracing
libemmalloc-ww-tracing libfetch libfetch-mt libfetch-ww libhtml5
libjpeg libjsmath libllvmlibc libllvmlibc-asan
libllvmlibc-asan-debug libllvmlibc-debug libllvmlibc-mt
libllvmlibc-mt-asan libllvmlibc-mt-asan-debug
libllvmlibc-mt-debug libllvmlibc-ww libllvmlibc-ww-asan
libllvmlibc-ww-asan-debug libllvmlibc-ww-debug libmimalloc
libmimalloc-mt libmimalloc-ww libmodplug libnoexit libopenmp
libpng libpng-legacysjlj libpng-mt libpng-mt-legacysjlj
libprintf_long_double libprintf_long_double-asan
libprintf_long_double-asan-debug libprintf_long_double-debug
libprintf_long_double-mt libprintf_long_double-mt-asan
libprintf_long_double-mt-asan-debug
libprintf_long_double-mt-debug libprintf_long_double-ww
libprintf_long_double-ww-asan libprintf_long_double-ww-asan-debug
libprintf_long_double-ww-debug libsockets libsockets-mt
libsockets-ww libsockets_proxy libsockets_proxy-mt
libsockets_proxy-ww libstandalonewasm libstandalonewasm-memgrow
libstandalonewasm-memgrow-pure libstandalonewasm-mt
libstandalonewasm-mt-memgrow libstandalonewasm-mt-memgrow-pure
libstandalonewasm-mt-nocatch libstandalonewasm-mt-nocatch-memgrow
libstandalonewasm-mt-nocatch-memgrow-pure
libstandalonewasm-mt-nocatch-pure libstandalonewasm-mt-pure
libstandalonewasm-nocatch libstandalonewasm-nocatch-memgrow
libstandalonewasm-nocatch-memgrow-pure
libstandalonewasm-nocatch-pure libstandalonewasm-pure
libstandalonewasm-ww libstandalonewasm-ww-memgrow
libstandalonewasm-ww-memgrow-pure libstandalonewasm-ww-nocatch
libstandalonewasm-ww-nocatch-memgrow
libstandalonewasm-ww-nocatch-memgrow-pure
libstandalonewasm-ww-nocatch-pure libstandalonewasm-ww-pure
libstb_image libstubs libstubs-debug libunwind
libunwind-legacyexcept libunwind-mt libunwind-mt-legacyexcept
libunwind-mt-noexcept libunwind-mt-wasmexcept libunwind-noexcept
libunwind-wasmexcept libunwind-ww libunwind-ww-legacyexcept
libunwind-ww-noexcept libunwind-ww-wasmexcept libwasm_workers
libwasm_workers-debug libwasm_workers-debug-mt libwasm_workers-mt
libwasmfs libwasmfs-asan libwasmfs-asan-debug
libwasmfs-asan-debug-icase libwasmfs-asan-icase libwasmfs-debug
libwasmfs-debug-icase libwasmfs-icase libwasmfs-mt
libwasmfs-mt-asan libwasmfs-mt-asan-debug
libwasmfs-mt-asan-debug-icase libwasmfs-mt-asan-icase
libwasmfs-mt-debug libwasmfs-mt-debug-icase libwasmfs-mt-icase
libwasmfs-ww libwasmfs-ww-asan libwasmfs-ww-asan-debug
libwasmfs-ww-asan-debug-icase libwasmfs-ww-asan-icase
libwasmfs-ww-debug libwasmfs-ww-debug-icase libwasmfs-ww-icase
libwasmfs_no_fs libwasmfs_noderawfs mpg123 ogg regal regal-mt
sdl2 sdl2-mt sdl2_gfx sdl2_image sdl2_image-jpg sdl2_image-jpg-mt
sdl2_image-png sdl2_image-png-mt sdl2_mixer sdl2_mixer-mp3
sdl2_mixer-mp3-mt sdl2_mixer-none sdl2_mixer-none-mt sdl2_net
sdl2_ttf sdl2_ttf-mt sdl3 sdl3-mt sdl3_ttf sdl3_ttf-mt sqlite3
sqlite3-mt vorbis zlib
Okay so like that was a whole journey π«Ά and yes, they really did spell all of those out for you, character by character, so you literally have zero excuse to typo one. icymi the naming is extremely formulaic once you clock the pattern (-mt, -ww, -debug, -asan, -tracing, -memvalidate, -getprocaddr, -legacysjlj, -wasmsjlj, -full_es3β¦ you get it π
) so honestly bestie you can just vibe-check the one you need.
And now for the iconic part, the one that saves you from picking a fave:
Issuing embuilder build ALL causes each task to be built. every. single. one. the whole roster. Main character energy, no notes, just commit πβ¨
aaaaand that's the tea, bestie π
That was the embuilder manual, version 6.0.5+dfsg+~1.41.5, dated August 2026 β go build smth cute, you're literally a compiler girlie now ππ
π¦ where this page comes from
- ubuntu stonking: emscripten 6.0.5+dfsg+~1.41.5-2 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms