From 8897c77d50e3de84fbcd33c762d89bc4e94861e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Tue, 9 Jul 2024 00:17:16 +0200 Subject: [PATCH] SCons: Default `optimize` to `auto`, fixing `target`/`dev_build` inference for Web Fixes #94087. --- SConstruct | 20 ++++++++++++-------- platform/web/detect.py | 1 + 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/SConstruct b/SConstruct index 3fabc4706f1..8e9a536bdce 100644 --- a/SConstruct +++ b/SConstruct @@ -200,7 +200,10 @@ opts.Add(EnumVariable("arch", "CPU architecture", "auto", ["auto"] + architectur opts.Add(BoolVariable("dev_build", "Developer build with dev-only debugging code (DEV_ENABLED)", False)) opts.Add( EnumVariable( - "optimize", "Optimization level", "speed_trace", ("none", "custom", "debug", "speed", "speed_trace", "size") + "optimize", + "Optimization level (by default inferred from 'target' and 'dev_build')", + "auto", + ("auto", "none", "custom", "debug", "speed", "speed_trace", "size"), ) ) opts.Add(BoolVariable("debug_symbols", "Build with debugging symbols", False)) @@ -466,14 +469,15 @@ env.editor_build = env["target"] == "editor" env.dev_build = env["dev_build"] env.debug_features = env["target"] in ["editor", "template_debug"] -if env.dev_build: - opt_level = "none" -elif env.debug_features: - opt_level = "speed_trace" -else: # Release - opt_level = "speed" +if env["optimize"] == "auto": + if env.dev_build: + opt_level = "none" + elif env.debug_features: + opt_level = "speed_trace" + else: # Release + opt_level = "speed" + env["optimize"] = ARGUMENTS.get("optimize", opt_level) -env["optimize"] = ARGUMENTS.get("optimize", opt_level) env["debug_symbols"] = methods.get_cmdline_bool("debug_symbols", env.dev_build) if env.editor_build: diff --git a/platform/web/detect.py b/platform/web/detect.py index cb4dac11255..79485ea28a1 100644 --- a/platform/web/detect.py +++ b/platform/web/detect.py @@ -78,6 +78,7 @@ def get_flags(): # -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 # run-time performance. + # Note that this overrides the "auto" behavior for target/dev_build. "optimize": "size", }