diff --git a/build/common_compiler_flags.py b/build/common_compiler_flags.py index bbf54ce..a9e0822 100644 --- a/build/common_compiler_flags.py +++ b/build/common_compiler_flags.py @@ -54,6 +54,15 @@ def generate(env): env.Append(CCFLAGS=["-fvisibility=hidden"]) env.Append(LINKFLAGS=["-fvisibility=hidden"]) + if env["optimize"] == "speed": + env.Append(CPPDEFINES=["OPT_SPEED_ENABLED"]) + elif env["optimize"] == "speed_trace": + env.Append(CPPDEFINES=["OPT_SPEED_TRACE_ENABLED"]) + elif env["optimize"] == "size": + env.Append(CPPDEFINES=["OPT_SIZE_ENABLED"]) + elif env["optimize"] == "debug": + env.Append(CPPDEFINES=["OPT_DEBUG_ENABLED"]) + # Set optimize and debug_symbols flags. # "custom" means do nothing and let users set their own optimization flags. if env.get("is_msvc", False): diff --git a/tools/targets.py b/tools/targets.py index 7786607..34044e9 100644 --- a/tools/targets.py +++ b/tools/targets.py @@ -43,9 +43,10 @@ def options(opts): opts.Add( EnumVariable( "optimize", - "The desired optimization flags", - "speed_trace", - ("none", "custom", "debug", "speed", "speed_trace", "size"), + "Optimization level (by default inferred from 'target' and 'dev_build')", + "auto", + ["auto", "none", "custom", "debug", "speed", "speed_trace", "size"], + ignorecase=2, ) ) opts.Add( @@ -79,14 +80,15 @@ def generate(env): 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"] = get_cmdline_bool("debug_symbols", env.dev_build) if env.use_hot_reload: