|
22 | 22 | shared, |
23 | 23 | utils, |
24 | 24 | ) |
25 | | -from tools.settings import MEM_SIZE_SETTINGS, settings, user_settings |
| 25 | +from tools.settings import MEM_SIZE_SETTINGS, default_settings, settings, user_settings |
26 | 26 | from tools.toolchain_profiler import ToolchainProfiler |
27 | 27 | from tools.utils import exit_with_error, read_file |
28 | 28 |
|
@@ -216,6 +216,8 @@ def parse_args(newargs): # noqa: C901, PLR0912, PLR0915 |
216 | 216 | """ |
217 | 217 | should_exit = False |
218 | 218 | skip = False |
| 219 | + builtin_settings = set(default_settings.keys()) |
| 220 | + user_js_defines = set() |
219 | 221 | LEGACY_ARGS = {'--js-opts', '--llvm-opts', '--llvm-lto', '--memory-init-file'} |
220 | 222 | LEGACY_FLAGS = {'--separate-asm', '--jcache', '--proxy-to-worker', '--default-obj-ext', |
221 | 223 | '--embind-emit-tsd', '--remove-duplicates', '--no-heap-copy'} |
@@ -572,11 +574,12 @@ def consume_arg_file(): |
572 | 574 | elif arg.startswith('-jsD'): |
573 | 575 | key = arg.removeprefix('-jsD') |
574 | 576 | if '=' in key: |
575 | | - key, value = key.split('=') |
| 577 | + key, value = key.split('=', 1) |
576 | 578 | else: |
577 | 579 | value = '1' |
578 | | - if key in settings.keys(): |
| 580 | + if key in builtin_settings and key not in user_js_defines: |
579 | 581 | exit_with_error(f'{arg}: cannot change built-in settings values with a -jsD directive. Pass -s{key}={value} instead!') |
| 582 | + user_js_defines.add(key) |
580 | 583 | # Apply user -jsD settings |
581 | 584 | settings[key] = value |
582 | 585 | newargs[i] = '' |
|
0 commit comments