2023-12-19 12:43:06 +00:00
|
|
|
import multiprocessing
|
|
|
|
import os
|
|
|
|
|
2022-11-02 15:15:40 +00:00
|
|
|
from fbt.util import (
|
2023-12-19 12:43:06 +00:00
|
|
|
FORWARDED_ENV_VARIABLES,
|
2024-03-20 22:36:38 +00:00
|
|
|
PosixPathWrapper,
|
2023-12-19 12:43:06 +00:00
|
|
|
resolve_real_dir_node,
|
2022-11-02 15:15:40 +00:00
|
|
|
single_quote,
|
2023-12-19 12:43:06 +00:00
|
|
|
tempfile_arg_esc_func,
|
2022-11-02 15:15:40 +00:00
|
|
|
wrap_tempfile,
|
|
|
|
)
|
2023-12-19 12:43:06 +00:00
|
|
|
from SCons.Platform import TempFileMunge
|
2022-06-26 12:00:03 +00:00
|
|
|
|
|
|
|
Import("VAR_ENV")
|
|
|
|
|
|
|
|
forward_os_env = {
|
|
|
|
# Import PATH from OS env - scons doesn't do that by default
|
|
|
|
"PATH": os.environ["PATH"],
|
|
|
|
}
|
2023-12-19 12:43:06 +00:00
|
|
|
|
|
|
|
variables_to_forward = list(FORWARDED_ENV_VARIABLES)
|
|
|
|
|
2022-10-06 13:55:57 +00:00
|
|
|
if proxy_env := GetOption("proxy_env"):
|
|
|
|
variables_to_forward.extend(proxy_env.split(","))
|
|
|
|
|
|
|
|
for env_value_name in variables_to_forward:
|
2022-06-26 12:00:03 +00:00
|
|
|
if environ_value := os.environ.get(env_value_name, None):
|
|
|
|
forward_os_env[env_value_name] = environ_value
|
|
|
|
|
|
|
|
coreenv = VAR_ENV.Clone(
|
|
|
|
tools=[
|
2022-10-25 22:15:02 +00:00
|
|
|
"fbt_tweaks",
|
2022-06-26 12:00:03 +00:00
|
|
|
(
|
|
|
|
"crosscc",
|
|
|
|
{
|
|
|
|
"toolchain_prefix": "arm-none-eabi-",
|
|
|
|
"versions": VAR_ENV["FBT_TOOLCHAIN_VERSIONS"],
|
|
|
|
},
|
|
|
|
),
|
|
|
|
"python3",
|
|
|
|
"sconsmodular",
|
|
|
|
"sconsrecursiveglob",
|
|
|
|
"ccache",
|
|
|
|
],
|
|
|
|
TEMPFILE=TempFileMunge,
|
2024-03-20 22:36:38 +00:00
|
|
|
POSIXPATH=PosixPathWrapper,
|
2022-06-26 12:00:03 +00:00
|
|
|
MAXLINELENGTH=2048,
|
|
|
|
PROGSUFFIX=".elf",
|
|
|
|
ENV=forward_os_env,
|
2022-11-02 15:15:40 +00:00
|
|
|
SINGLEQUOTEFUNC=single_quote,
|
2023-08-10 16:21:56 +00:00
|
|
|
ABSPATHGETTERFUNC=resolve_real_dir_node,
|
2022-11-02 15:15:40 +00:00
|
|
|
# Setting up temp file parameters - to overcome command line length limits
|
|
|
|
TEMPFILEARGESCFUNC=tempfile_arg_esc_func,
|
|
|
|
ROOT_DIR=Dir("#"),
|
2023-11-15 16:27:35 +00:00
|
|
|
FBT_SCRIPT_DIR=Dir("#/scripts"),
|
2022-06-26 12:00:03 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
# If DIST_SUFFIX is set in environment, is has precedence (set by CI)
|
|
|
|
if os_suffix := os.environ.get("DIST_SUFFIX", None):
|
|
|
|
coreenv.Replace(
|
|
|
|
DIST_SUFFIX=os_suffix,
|
|
|
|
)
|
|
|
|
|
|
|
|
# Default value for commandline options
|
|
|
|
|
|
|
|
SetOption("num_jobs", multiprocessing.cpu_count())
|
2022-10-25 22:15:02 +00:00
|
|
|
## NB - disabled both caches since they seem to do more harm then good in our case
|
2022-06-26 12:00:03 +00:00
|
|
|
# Avoiding re-scan of all sources on every startup
|
2022-10-25 22:15:02 +00:00
|
|
|
# SetOption("implicit_cache", True)
|
2022-10-12 16:12:05 +00:00
|
|
|
# SetOption("implicit_deps_unchanged", True)
|
2022-06-26 12:00:03 +00:00
|
|
|
# More aggressive caching
|
|
|
|
SetOption("max_drift", 1)
|
|
|
|
# Random task queue - to discover isses with build logic faster
|
|
|
|
# SetOption("random", 1)
|
|
|
|
|
2022-10-12 16:12:05 +00:00
|
|
|
wrap_tempfile(coreenv, "LINKCOM")
|
|
|
|
wrap_tempfile(coreenv, "ARCOM")
|
2022-06-26 12:00:03 +00:00
|
|
|
|
|
|
|
Return("coreenv")
|