🔨 Minor build script changes
This commit is contained in:
parent
c9445cfc41
commit
6e02f15dd6
@ -70,10 +70,9 @@ if pioutil.is_pio_build():
|
|||||||
feat['lib_deps'] = list(filter(lib_re.match, feat['lib_deps'])) + [dep]
|
feat['lib_deps'] = list(filter(lib_re.match, feat['lib_deps'])) + [dep]
|
||||||
blab("[%s] lib_deps = %s" % (feature, dep), 3)
|
blab("[%s] lib_deps = %s" % (feature, dep), 3)
|
||||||
|
|
||||||
def load_config():
|
def load_features():
|
||||||
blab("========== Gather [features] entries...")
|
blab("========== Gather [features] entries...")
|
||||||
items = ProjectConfig().items('features')
|
for key in ProjectConfig().items('features'):
|
||||||
for key in items:
|
|
||||||
feature = key[0].upper()
|
feature = key[0].upper()
|
||||||
if not feature in FEATURE_CONFIG:
|
if not feature in FEATURE_CONFIG:
|
||||||
FEATURE_CONFIG[feature] = { 'lib_deps': [] }
|
FEATURE_CONFIG[feature] = { 'lib_deps': [] }
|
||||||
@ -81,8 +80,7 @@ if pioutil.is_pio_build():
|
|||||||
|
|
||||||
# Add options matching custom_marlin.MY_OPTION to the pile
|
# Add options matching custom_marlin.MY_OPTION to the pile
|
||||||
blab("========== Gather custom_marlin entries...")
|
blab("========== Gather custom_marlin entries...")
|
||||||
all_opts = env.GetProjectOptions()
|
for n in env.GetProjectOptions():
|
||||||
for n in all_opts:
|
|
||||||
key = n[0]
|
key = n[0]
|
||||||
mat = re.match(r'custom_marlin\.(.+)', key)
|
mat = re.match(r'custom_marlin\.(.+)', key)
|
||||||
if mat:
|
if mat:
|
||||||
@ -127,10 +125,10 @@ if pioutil.is_pio_build():
|
|||||||
set_env_field('lib_ignore', lib_ignore)
|
set_env_field('lib_ignore', lib_ignore)
|
||||||
|
|
||||||
def apply_features_config():
|
def apply_features_config():
|
||||||
load_config()
|
load_features()
|
||||||
blab("========== Apply enabled features...")
|
blab("========== Apply enabled features...")
|
||||||
for feature in FEATURE_CONFIG:
|
for feature in FEATURE_CONFIG:
|
||||||
if not env.MarlinFeatureIsEnabled(feature):
|
if not env.MarlinHas(feature):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
feat = FEATURE_CONFIG[feature]
|
feat = FEATURE_CONFIG[feature]
|
||||||
@ -212,7 +210,7 @@ if pioutil.is_pio_build():
|
|||||||
#
|
#
|
||||||
# Return True if a matching feature is enabled
|
# Return True if a matching feature is enabled
|
||||||
#
|
#
|
||||||
def MarlinFeatureIsEnabled(env, feature):
|
def MarlinHas(env, feature):
|
||||||
load_marlin_features()
|
load_marlin_features()
|
||||||
r = re.compile('^' + feature + '$')
|
r = re.compile('^' + feature + '$')
|
||||||
found = list(filter(r.match, env['MARLIN_FEATURES']))
|
found = list(filter(r.match, env['MARLIN_FEATURES']))
|
||||||
@ -225,7 +223,7 @@ if pioutil.is_pio_build():
|
|||||||
if val in [ '', '1', 'true' ]:
|
if val in [ '', '1', 'true' ]:
|
||||||
some_on = True
|
some_on = True
|
||||||
elif val in env['MARLIN_FEATURES']:
|
elif val in env['MARLIN_FEATURES']:
|
||||||
some_on = env.MarlinFeatureIsEnabled(val)
|
some_on = env.MarlinHas(val)
|
||||||
|
|
||||||
return some_on
|
return some_on
|
||||||
|
|
||||||
@ -239,7 +237,7 @@ if pioutil.is_pio_build():
|
|||||||
#
|
#
|
||||||
# Add a method for other PIO scripts to query enabled features
|
# Add a method for other PIO scripts to query enabled features
|
||||||
#
|
#
|
||||||
env.AddMethod(MarlinFeatureIsEnabled)
|
env.AddMethod(MarlinHas)
|
||||||
|
|
||||||
#
|
#
|
||||||
# Add dependencies for enabled Marlin features
|
# Add dependencies for enabled Marlin features
|
||||||
|
@ -10,7 +10,7 @@ if pioutil.is_pio_build():
|
|||||||
|
|
||||||
Import("env")
|
Import("env")
|
||||||
|
|
||||||
if env.MarlinFeatureIsEnabled("POSTMORTEM_DEBUGGING"):
|
if env.MarlinHas("POSTMORTEM_DEBUGGING"):
|
||||||
FRAMEWORK_DIR = env.PioPlatform().get_package_dir("framework-arduinoststm32-maple")
|
FRAMEWORK_DIR = env.PioPlatform().get_package_dir("framework-arduinoststm32-maple")
|
||||||
patchflag_path = join(FRAMEWORK_DIR, ".exc-patching-done")
|
patchflag_path = join(FRAMEWORK_DIR, ".exc-patching-done")
|
||||||
|
|
||||||
|
@ -40,7 +40,10 @@ def run_preprocessor(env, fn=None):
|
|||||||
depcmd = cmd + [ filename ]
|
depcmd = cmd + [ filename ]
|
||||||
cmd = ' '.join(depcmd)
|
cmd = ' '.join(depcmd)
|
||||||
blab(cmd)
|
blab(cmd)
|
||||||
|
try:
|
||||||
define_list = subprocess.check_output(cmd, shell=True).splitlines()
|
define_list = subprocess.check_output(cmd, shell=True).splitlines()
|
||||||
|
except:
|
||||||
|
define_list = {}
|
||||||
preprocessor_cache[filename] = define_list
|
preprocessor_cache[filename] = define_list
|
||||||
return define_list
|
return define_list
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
# Configuration Embedding
|
# Configuration Embedding
|
||||||
|
|
||||||
Starting with version 2.0.9.3, Marlin automatically extracts the configuration used to generate the firmware and stores it in the firmware binary. This is enabled by defining `CONFIGURATION_EMBEDDING` in `Configuration_adv.h`.
|
Starting with version 2.0.9.3, Marlin can automatically extract the configuration used to generate the firmware and store it in the firmware binary. This is enabled by defining `CONFIGURATION_EMBEDDING` in `Configuration_adv.h`.
|
||||||
|
|
||||||
## How it's done
|
## How it's done
|
||||||
To create the embedded configuration, we do a compiler pass to process the Configuration files and extract all active options. The active options are parsed into key/value pairs, serialized to JSON format, and stored in a file called `marlin_config.json`, which also includes specific build information (like the git revision, the build date, and some version information. The JSON file is then compressed in a ZIP archive called `.pio/build/mc.zip` which is converted into a C array and stored in a C++ file called `mc.h` which is included in the build.
|
At the start of the PlatformIO build process, we create an embedded configuration by extracting all active options from the Configuration files and writing them out as JSON to `marlin_config.json`, which also includes specific build information (like the git revision, the build date, and some version information. The JSON file is then compressed in a ZIP archive called `.pio/build/mc.zip` which is converted into a C array and stored in a C++ file called `mc.h` which is included in the build.
|
||||||
|
|
||||||
## Extracting configurations from a Marlin binary
|
## Extracting configurations from a Marlin binary
|
||||||
To get the configuration out of a binary firmware, you'll need a non-write-protected SD card inserted into the printer while running the firmware.
|
To get the configuration out of a binary firmware, you'll need a non-write-protected SD card inserted into the printer while running the firmware.
|
||||||
|
Loading…
Reference in New Issue
Block a user