mirror of
https://github.com/bkaradzic/bx.git
synced 2026-06-13 10:48:54 +00:00
emscripten <= 4.0.23 only defined the lowercase forms (`__EMSCRIPTEN_major__`, `__EMSCRIPTEN_minor__`, `__EMSCRIPTEN_tiny__`) in `<emscripten/version.h>`. Starting with 4.0.24 (PR emscripten-core/emscripten#26180), uppercase became primary and lowercase was kept as deprecated aliases. bx PR #374 switched all references to the uppercase form, which is the right forward-looking direction — but it leaves users on emsdk <= 4.0.23 unable to build, because `__EMSCRIPTEN_MAJOR__` is undefined there and the preprocessor expression `(__EMSCRIPTEN_MAJOR__ * 10000 + …)` evaluates to 0. That tanks `BX_PLATFORM_EMSCRIPTEN`, which tanks `BX_PLATFORM_POSIX`, which makes `bx/src/os.cpp` skip its `<time.h>` / `<sched.h>` includes, which causes the build to fail on `unknown type name 'timespec'`. Add a small bridge: if the uppercase macros aren't defined but the lowercase ones are, alias the uppercase forms to lowercase. The rest of bx continues to use uppercase uniformly. Newer emsdk versions are unaffected (the bridge block is skipped because uppercase is already defined). Co-authored-by: Shuang Liu <[email protected]>