I think clarifying what we mean by "I want wasm" is indeed the best place to start. Especially whether or not it's going to be equivalent to something you'd use on a web page (i.e. embedded in a JS environment). (And if not, you're going to build your own wasm embedding, which is a separate interesting discussion).
It's not necessary to use emscripten proper to build wasm (if this is a non-JS embedding, then it's not what you want anyway).
Emscripten does not have any downstream diffs in LLVM or lld; it does have a separate tool (binaryen, for post-compilation optimization), and its own C runtime libraries. It does not need anything else beyond what's already in the Chromium build (Python and node).
If you want a JS embedding without emscripten, then you need to implement those bindings yourself; i.e. you need a C/C++ runtime library, and you need JS code that implements the "syscalls" that your C code uses. Emscripten generates JS code customized for each wasm module it compiles (and it does dead-code elimination across the JS<->wasm boundary). You could do that, or you could implement one monolithic JS library that has every function you'll ever need, and loads the wasm module. Which approach is best depends a lot on the specifics of how you want to use the wasm modules.