Repository: godot
Issue: List of pre-processor defines with SCons option (intended for advanced users / platform porters)
Labels: enhancement,topic:buildsystem,topic:porting,documentation

### Godot version

4.0.beta (d331b803b8e63b0dab406a12c21805a17ee0a6a8)

### Issue description

Over the years, Godot's core APIs have accumulated a number of pre-processor defines that can be used to toggle the use of certain platform-specific APIs, or provide a whole alternative implementation.

Those are typically not accessible via a SCons option, and meant only for developers implementing platform ports (notably ports for *some proprietary platforms* under NDA). Some were also needed by open platforms in their earlier days and are now no longer relevant, but never got cleaned up.

Some of these are getting cleaned up by #66803, #66804, and #66807, but the remaining ones should be documented for three reasons:
- For platform porters so they know which options they have available when they need to modify the behavior of Godot's core/drivers.
- For contributors so that they know which options they should strive to keep supporting even if no code in the open source Godot uses it.
- For maintainers to be able to review periodically whether those options are still useful or if they catered to obsolete needs and can thus be cleaned up.

I'll list the ones I find here, and eventually we can move them to a dedicated file (e.g. `platforms/advanced_defines.txt` or similar).

For each of those, the checkbox means whether we've confirmed that the engine can actually compile with this define (and when relevant replacement code implementing what the define disables).

---

- [ ] `BIG_ENDIAN_ENABLED` (`core/io/resource_format_binary.cpp` and a few others): For big-endian platforms. I don't think anyone targets a big-endian platform with Godot currently. Not actively maintained and some code (e.g. animation) have TODOs pending for adding big-endian support – if ever needed.
- [ ] `NO_DEFAULT_BOOT_LOGO` (`main/main.cpp`): Disables the default splash screen shown on the project/editor start. Could be exposed as a SCons option like the existing `no_editor_splash`, though IMO it could make more sense to have this as a project setting instead.
- [ ] `NO_URANDOM` (`drivers/unix/os_unix.cpp`): `OS::get_entropy()` on Unix will rely on the `getentropy` libc function if available (glibc >= 2.26, macOS, Android >= API 28, FreeBSD, OpenBSD). Otherwise it falls back to reading `/dev/urandom`, unless you define `NO_URANDOM`. If `NO_URANDOM` is defined and the platform doesn't support `getentropy`, `OS::get_entropy()` will return `ERR_UNAVAILABLE`.
- [ ] `OPENGL_INCLUDE_H` (`platform/*/platform_config.h`, `drivers/gles3/**/*.h`): Defines the path to the OpenGL entry point (`glad.h`, `ES/gl3.h`, etc.).
- [ ] `PLATFORM_THREAD_OVERRIDE` (`core/os/thread.h`): Can be define to override Godot's `Thread` implementation (which relies on the C++ STL `<thread>`) with one implemented as `platform_thread.h` in the platform folder.
- [ ] `UNIX_SOCKET_UNAVAILABLE` (`drivers/unix/net_socket_posix.cpp`): Can be defined to skip all the NetSocketPosix implementation (both on Unixes and Windows), and let porters write their own socket implementation for the target platform.