Allow to not optimize release build

This commit is contained in:
Rafał Mikrut 2021-03-13 15:29:55 +01:00
parent 942f5f0cb2
commit 0b298d201e
9 changed files with 32 additions and 28 deletions

View file

@ -115,7 +115,7 @@ opts.Add(BoolVariable("tools", "Build the tools (a.k.a. the Godot editor)", True
opts.Add(EnumVariable("target", "Compilation target", "debug", ("debug", "release_debug", "release"))) opts.Add(EnumVariable("target", "Compilation target", "debug", ("debug", "release_debug", "release")))
opts.Add("arch", "Platform-dependent architecture (arm/arm64/x86/x64/mips/...)", "") opts.Add("arch", "Platform-dependent architecture (arm/arm64/x86/x64/mips/...)", "")
opts.Add(EnumVariable("bits", "Target platform bits", "default", ("default", "32", "64"))) opts.Add(EnumVariable("bits", "Target platform bits", "default", ("default", "32", "64")))
opts.Add(EnumVariable("optimize", "Optimization type", "speed", ("speed", "size"))) opts.Add(EnumVariable("optimize", "Optimization type", "speed", ("speed", "size", "none")))
opts.Add(BoolVariable("production", "Set defaults to build Godot for use in production", False)) opts.Add(BoolVariable("production", "Set defaults to build Godot for use in production", False))
opts.Add(BoolVariable("use_lto", "Use link-time optimization", False)) opts.Add(BoolVariable("use_lto", "Use link-time optimization", False))

View file

@ -197,12 +197,11 @@ def configure(env):
if env["optimize"] == "speed": # optimize for speed (default) if env["optimize"] == "speed": # optimize for speed (default)
env.Append(LINKFLAGS=["-O2"]) env.Append(LINKFLAGS=["-O2"])
env.Append(CCFLAGS=["-O2", "-fomit-frame-pointer"]) env.Append(CCFLAGS=["-O2", "-fomit-frame-pointer"])
env.Append(CPPDEFINES=["NDEBUG"]) elif env["optimize"] == "size": # optimize for size
else: # optimize for size
env.Append(CCFLAGS=["-Os"]) env.Append(CCFLAGS=["-Os"])
env.Append(CPPDEFINES=["NDEBUG"])
env.Append(LINKFLAGS=["-Os"]) env.Append(LINKFLAGS=["-Os"])
env.Append(CPPDEFINES=["NDEBUG"])
if can_vectorize: if can_vectorize:
env.Append(CCFLAGS=["-ftree-vectorize"]) env.Append(CCFLAGS=["-ftree-vectorize"])
if env["target"] == "release_debug": if env["target"] == "release_debug":

View file

@ -54,7 +54,7 @@ def configure(env):
if env["optimize"] == "speed": # optimize for speed (default) if env["optimize"] == "speed": # optimize for speed (default)
env.Append(CCFLAGS=["-O2", "-ftree-vectorize", "-fomit-frame-pointer"]) env.Append(CCFLAGS=["-O2", "-ftree-vectorize", "-fomit-frame-pointer"])
env.Append(LINKFLAGS=["-O2"]) env.Append(LINKFLAGS=["-O2"])
else: # optimize for size elif env["optimize"] == "size": # optimize for size
env.Append(CCFLAGS=["-Os", "-ftree-vectorize"]) env.Append(CCFLAGS=["-Os", "-ftree-vectorize"])
env.Append(LINKFLAGS=["-Os"]) env.Append(LINKFLAGS=["-Os"])

View file

@ -64,18 +64,18 @@ def configure(env):
sys.exit(255) sys.exit(255)
## Build type ## Build type
if env["target"] == "release": if env["target"].startswith("release"):
# Use -Os to prioritize optimizing for reduced file size. This is # Use -Os to prioritize optimizing for reduced file size. This is
# particularly valuable for the web platform because it directly # particularly valuable for the web platform because it directly
# decreases download time. # decreases download time.
# -Os reduces file size by around 5 MiB over -O3. -Oz only saves about # -Os reduces file size by around 5 MiB over -O3. -Oz only saves about
# 100 KiB over -Os, which does not justify the negative impact on # 100 KiB over -Os, which does not justify the negative impact on
# run-time performance. # run-time performance.
if env["optimize"] != "none":
env.Append(CCFLAGS=["-Os"]) env.Append(CCFLAGS=["-Os"])
env.Append(LINKFLAGS=["-Os"]) env.Append(LINKFLAGS=["-Os"])
elif env["target"] == "release_debug":
env.Append(CCFLAGS=["-Os"]) if env["target"] == "release_debug":
env.Append(LINKFLAGS=["-Os"])
env.Append(CPPDEFINES=["DEBUG_ENABLED"]) env.Append(CPPDEFINES=["DEBUG_ENABLED"])
# Retain function names for backtraces at the cost of file size. # Retain function names for backtraces at the cost of file size.
env.Append(LINKFLAGS=["--profiling-funcs"]) env.Append(LINKFLAGS=["--profiling-funcs"])

View file

@ -90,7 +90,7 @@ def configure(env):
if env["target"] == "release": if env["target"] == "release":
if env["optimize"] == "speed": # optimize for speed (default) if env["optimize"] == "speed": # optimize for speed (default)
env.Prepend(CCFLAGS=["-O3"]) env.Prepend(CCFLAGS=["-O3"])
else: # optimize for size elif env["optimize"] == "size": # optimize for size
env.Prepend(CCFLAGS=["-Os"]) env.Prepend(CCFLAGS=["-Os"])
if env["debug_symbols"]: if env["debug_symbols"]:
@ -99,7 +99,7 @@ def configure(env):
elif env["target"] == "release_debug": elif env["target"] == "release_debug":
if env["optimize"] == "speed": # optimize for speed (default) if env["optimize"] == "speed": # optimize for speed (default)
env.Prepend(CCFLAGS=["-O2"]) env.Prepend(CCFLAGS=["-O2"])
else: # optimize for size elif env["optimize"] == "size": # optimize for size
env.Prepend(CCFLAGS=["-Os"]) env.Prepend(CCFLAGS=["-Os"])
env.Prepend(CPPDEFINES=["DEBUG_ENABLED"]) env.Prepend(CPPDEFINES=["DEBUG_ENABLED"])

View file

@ -50,7 +50,7 @@ def configure(env):
if env["target"] == "release": if env["target"] == "release":
if env["optimize"] == "speed": # optimize for speed (default) if env["optimize"] == "speed": # optimize for speed (default)
env.Prepend(CCFLAGS=["-O3", "-fomit-frame-pointer", "-ftree-vectorize"]) env.Prepend(CCFLAGS=["-O3", "-fomit-frame-pointer", "-ftree-vectorize"])
else: # optimize for size elif env["optimize"] == "size": # optimize for size
env.Prepend(CCFLAGS=["-Os", "-ftree-vectorize"]) env.Prepend(CCFLAGS=["-Os", "-ftree-vectorize"])
if env["arch"] != "arm64": if env["arch"] != "arm64":
env.Prepend(CCFLAGS=["-msse2"]) env.Prepend(CCFLAGS=["-msse2"])
@ -61,7 +61,7 @@ def configure(env):
elif env["target"] == "release_debug": elif env["target"] == "release_debug":
if env["optimize"] == "speed": # optimize for speed (default) if env["optimize"] == "speed": # optimize for speed (default)
env.Prepend(CCFLAGS=["-O2"]) env.Prepend(CCFLAGS=["-O2"])
else: # optimize for size elif env["optimize"] == "size": # optimize for size
env.Prepend(CCFLAGS=["-Os"]) env.Prepend(CCFLAGS=["-Os"])
env.Prepend(CPPDEFINES=["DEBUG_ENABLED"]) env.Prepend(CPPDEFINES=["DEBUG_ENABLED"])
if env["debug_symbols"]: if env["debug_symbols"]:

View file

@ -56,7 +56,7 @@ def configure(env):
if env["target"] == "release": if env["target"] == "release":
if env["optimize"] == "speed": # optimize for speed (default) if env["optimize"] == "speed": # optimize for speed (default)
env.Prepend(CCFLAGS=["-O3"]) env.Prepend(CCFLAGS=["-O3"])
else: # optimize for size elif env["optimize"] == "size": # optimize for size
env.Prepend(CCFLAGS=["-Os"]) env.Prepend(CCFLAGS=["-Os"])
if env["debug_symbols"]: if env["debug_symbols"]:
@ -65,7 +65,7 @@ def configure(env):
elif env["target"] == "release_debug": elif env["target"] == "release_debug":
if env["optimize"] == "speed": # optimize for speed (default) if env["optimize"] == "speed": # optimize for speed (default)
env.Prepend(CCFLAGS=["-O2"]) env.Prepend(CCFLAGS=["-O2"])
else: # optimize for size elif env["optimize"] == "size": # optimize for size
env.Prepend(CCFLAGS=["-Os"]) env.Prepend(CCFLAGS=["-Os"])
env.Prepend(CPPDEFINES=["DEBUG_ENABLED"]) env.Prepend(CPPDEFINES=["DEBUG_ENABLED"])

View file

@ -54,16 +54,19 @@ def configure(env):
## Build type ## Build type
if env["target"] == "release": if env["target"] == "release":
env.Append(CCFLAGS=["/O2", "/GL"])
env.Append(CCFLAGS=["/MD"]) env.Append(CCFLAGS=["/MD"])
env.Append(LINKFLAGS=["/SUBSYSTEM:WINDOWS", "/LTCG"]) env.Append(LINKFLAGS=["/SUBSYSTEM:WINDOWS"])
if env["optimize"] != "none":
env.Append(CCFLAGS=["/O2", "/GL"])
env.Append(LINKFLAGS=["/LTCG"])
elif env["target"] == "release_debug": elif env["target"] == "release_debug":
env.Append(CCFLAGS=["/O2", "/Zi"])
env.Append(CCFLAGS=["/MD"]) env.Append(CCFLAGS=["/MD"])
env.Append(CPPDEFINES=["DEBUG_ENABLED"])
env.Append(LINKFLAGS=["/SUBSYSTEM:CONSOLE"]) env.Append(LINKFLAGS=["/SUBSYSTEM:CONSOLE"])
env.AppendUnique(CPPDEFINES=["WINDOWS_SUBSYSTEM_CONSOLE"]) env.AppendUnique(CPPDEFINES=["WINDOWS_SUBSYSTEM_CONSOLE"])
env.Append(CPPDEFINES=["DEBUG_ENABLED"])
if env["optimize"] != "none":
env.Append(CCFLAGS=["/O2", "/Zi"])
elif env["target"] == "debug": elif env["target"] == "debug":
env.Append(CCFLAGS=["/Zi"]) env.Append(CCFLAGS=["/Zi"])

View file

@ -190,18 +190,20 @@ def configure_msvc(env, manual_msvc_config):
if env["target"] == "release": if env["target"] == "release":
if env["optimize"] == "speed": # optimize for speed (default) if env["optimize"] == "speed": # optimize for speed (default)
env.Append(CCFLAGS=["/O2"]) env.Append(CCFLAGS=["/O2"])
else: # optimize for size
env.Append(CCFLAGS=["/O1"])
env.Append(LINKFLAGS=["/ENTRY:mainCRTStartup"])
env.Append(LINKFLAGS=["/OPT:REF"]) env.Append(LINKFLAGS=["/OPT:REF"])
elif env["optimize"] == "size": # optimize for size
env.Append(CCFLAGS=["/O1"])
env.Append(LINKFLAGS=["/OPT:REF"])
env.Append(LINKFLAGS=["/ENTRY:mainCRTStartup"])
elif env["target"] == "release_debug": elif env["target"] == "release_debug":
if env["optimize"] == "speed": # optimize for speed (default) if env["optimize"] == "speed": # optimize for speed (default)
env.Append(CCFLAGS=["/O2"]) env.Append(CCFLAGS=["/O2"])
else: # optimize for size
env.Append(CCFLAGS=["/O1"])
env.AppendUnique(CPPDEFINES=["DEBUG_ENABLED"])
env.Append(LINKFLAGS=["/OPT:REF"]) env.Append(LINKFLAGS=["/OPT:REF"])
elif env["optimize"] == "size": # optimize for size
env.Append(CCFLAGS=["/O1"])
env.Append(LINKFLAGS=["/OPT:REF"])
env.AppendUnique(CPPDEFINES=["DEBUG_ENABLED"])
elif env["target"] == "debug": elif env["target"] == "debug":
env.AppendUnique(CCFLAGS=["/Zi", "/FS", "/Od", "/EHsc"]) env.AppendUnique(CCFLAGS=["/Zi", "/FS", "/Od", "/EHsc"])