SCons: Disable C++ exception handling by default

Counterpart to https://github.com/godotengine/godot/pull/80612.

(cherry picked from commit bf1c03ab5f)
This commit is contained in:
Rémi Verschelde
2023-08-16 11:47:19 +02:00
committed by David Snopek
parent 698da13d66
commit ef8a499eac
4 changed files with 56 additions and 7 deletions

View File

@@ -175,6 +175,14 @@ def options(opts, env):
)
)
opts.Add(
BoolVariable(
"disable_exceptions",
"Force disabling exception handling code",
default=env.get("disable_exceptions", False),
)
)
# Add platform options
for pl in platforms:
tool = Tool(pl, toolpath=["tools"])
@@ -231,6 +239,16 @@ def generate(env):
print("Building for architecture " + env["arch"] + " on platform " + env["platform"])
# Disable exception handling. Godot doesn't use exceptions anywhere, and this
# saves around 20% of binary size and very significant build time.
if env["disable_exceptions"]:
if env.get("is_msvc", False):
env.Append(CPPDEFINES=[("_HAS_EXCEPTIONS", 0)])
else:
env.Append(CXXFLAGS=["-fno-exceptions"])
elif env.get("is_msvc", False):
env.Append(CXXFLAGS=["/EHsc"])
tool = Tool(env["platform"], toolpath=["tools"])
if tool is None or not tool.exists(env):