Skip to content

Commit

Permalink
SCons: Process platform-specific flags earlier
Browse files Browse the repository at this point in the history
Some of the logic in SCons depends on flags that get overridden in the
platform-specific `detect.py`, so it needs to be processed first.

For example the Android/iOS/Web platforms override the default `target`
to `template_debug`, but this was processed too late so e.g. the logic
that sets `env.editor_build` would set it to true due to the default
`target` value in the environment being `editor`.
  • Loading branch information
akien-mga committed May 13, 2024
1 parent 4219af2 commit c794d7e
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 11 deletions.
17 changes: 8 additions & 9 deletions SConstruct
Original file line number Diff line number Diff line change
Expand Up @@ -361,6 +361,14 @@ if env["platform"] in platform_opts:
for opt in platform_opts[env["platform"]]:
opts.Add(opt)

# Platform-specific flags.
# These can sometimes override default options, so they need to be processed
# as early as possible to ensure that we're using the correct values.
flag_list = platform_flags[env["platform"]]
for f in flag_list:
if not (f[0] in ARGUMENTS) or ARGUMENTS[f[0]] == "auto": # Allow command line to override platform flags
env[f[0]] = f[1]

# Update the environment to take platform-specific options into account.
opts.Update(env, {**ARGUMENTS, **env})

Expand Down Expand Up @@ -551,17 +559,8 @@ if env["build_profile"] != "":
print_error('Failed to open feature build profile: "{}"'.format(env["build_profile"]))
Exit(255)

# Platform specific flags.
# These can sometimes override default options.
flag_list = platform_flags[env["platform"]]
for f in flag_list:
if not (f[0] in ARGUMENTS) or ARGUMENTS[f[0]] == "auto": # Allow command line to override platform flags
env[f[0]] = f[1]

# 'dev_mode' and 'production' are aliases to set default options if they haven't been
# set manually by the user.
# These need to be checked *after* platform specific flags so that different
# default values can be set (e.g. to keep LTO off for `production` on some platforms).
if env["dev_mode"]:
env["verbose"] = methods.get_cmdline_bool("verbose", True)
env["warnings"] = ARGUMENTS.get("warnings", "extra")
Expand Down
2 changes: 1 addition & 1 deletion platform/android/detect.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ def get_min_target_api():

def get_flags():
return [
("arch", "arm64"), # Default for convenience.
("arch", "arm64"),
("target", "template_debug"),
("supported", ["mono"]),
]
Expand Down
2 changes: 1 addition & 1 deletion platform/ios/detect.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def get_doc_path():

def get_flags():
return [
("arch", "arm64"), # Default for convenience.
("arch", "arm64"),
("target", "template_debug"),
("use_volk", False),
("supported", ["mono"]),
Expand Down

0 comments on commit c794d7e

Please sign in to comment.