Working with a codebase which supports building for multiple Operating Systems, it is only sensible, where modifications for Emscripten are required, to integrate them into the same codebase, with the assistance of conditional compilation to let it continue to work in other environments.
There doesn't seem to be any documentation on the topic, though, which seems very poor to me, nor can I find any questions about it, which seems very surprising to me—I expected it to be well-trodden and -documented territory.
How can I do this?
(I have looked at tools/shared.py
, this seems to suggest that #ifdef EMSCRIPTEN
or #ifdef __EMSCRIPTEN__
could be used; I'm still asking this question to determine if I am correct, if this is the correct way of doing it, perhaps even which should be used.)
According to Detecting Emscripten in preprocessor, the correct define to use is __EMSCRIPTEN__
.
In October 2016, a strict build mode was introduced which, when enabled, removes the EMSCRIPTEN
define. Therefore it is not recommended to use EMSCRIPTEN
even though it still works in non-strict build mode.
#ifdef EMSCRIPTEN
is the prefered way AFAIK.
Before cluttering your source code with #ifdef
s, think about whether it would not make more sense to have certain platform dependent files and let the build tool do the work.
Also, emscripten already defines LINUX
, because it handles very much like a Linux system. Normally this behavior already fixes most of the need for platform handling.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With