@@ -330,8 +330,9 @@ def _normalize_define(define_string):
330
330
define_string = define_string .strip ()
331
331
if "=" in define_string :
332
332
define , value = define_string .split ("=" , maxsplit = 1 )
333
- if '"' in value and not value .startswith ("\\ " ):
334
- # Escape only raw values
333
+ if any (char in value for char in (' ' , '<' , '>' )):
334
+ value = f'"{ value } "'
335
+ elif '"' in value and not value .startswith ("\\ " ):
335
336
value = value .replace ('"' , '\\ "' )
336
337
return (define , value )
337
338
return define_string
@@ -342,8 +343,11 @@ def _normalize_define(define_string):
342
343
]
343
344
344
345
for f in compile_group .get ("compileCommandFragments" , []):
345
- if f .get ("fragment" , "" ).startswith ("-D" ):
346
- result .append (_normalize_define (f ["fragment" ][2 :]))
346
+ fragment = f .get ("fragment" , "" ).strip ()
347
+ if fragment .startswith ('"' ):
348
+ fragment = fragment .strip ('"' )
349
+ if fragment .startswith ("-D" ):
350
+ result .append (_normalize_define (fragment [2 :]))
347
351
348
352
return result
349
353
@@ -429,8 +433,8 @@ def _extract_flags(config):
429
433
for cg in config ["compileGroups" ]:
430
434
flags [cg ["language" ]] = []
431
435
for ccfragment in cg ["compileCommandFragments" ]:
432
- fragment = ccfragment .get ("fragment" , "" )
433
- if not fragment . strip () or fragment .startswith ("-D" ):
436
+ fragment = ccfragment .get ("fragment" , "" ). strip ( " \" " )
437
+ if not fragment or fragment .startswith ("-D" ):
434
438
continue
435
439
flags [cg ["language" ]].extend (
436
440
click .parser .split_arg_string (fragment .strip ())
@@ -661,7 +665,8 @@ def generate_project_ld_script(sdk_config, ignore_targets=None):
661
665
"sections.ld.in" ,
662
666
)
663
667
664
- if IDF5 :
668
+ framework_version = [int (v ) for v in get_framework_version ().split ("." )]
669
+ if framework_version [:2 ] > [5 , 2 ]:
665
670
initial_ld_script = preprocess_linker_file (
666
671
initial_ld_script ,
667
672
os .path .join (
@@ -714,7 +719,7 @@ def prepare_build_envs(config, default_env, debug_allowed=True):
714
719
build_env = default_env .Clone ()
715
720
build_env .SetOption ("implicit_cache" , 1 )
716
721
for cc in compile_commands :
717
- build_flags = cc .get ("fragment" )
722
+ build_flags = cc .get ("fragment" , "" ). strip ( " \" " )
718
723
if not build_flags .startswith ("-D" ):
719
724
if build_flags .startswith ("-include" ) and ".." in build_flags :
720
725
source_index = cg .get ("sourceIndexes" )[0 ]
@@ -874,6 +879,7 @@ def build_bootloader(sdk_config):
874
879
"-DPYTHON=" + get_python_exe (),
875
880
"-DIDF_PATH=" + FRAMEWORK_DIR ,
876
881
"-DSDKCONFIG=" + SDKCONFIG_PATH ,
882
+ "-DPROJECT_SOURCE_DIR=" + PROJECT_DIR ,
877
883
"-DLEGACY_INCLUDE_COMMON_HEADERS=" ,
878
884
"-DEXTRA_COMPONENT_DIRS="
879
885
+ os .path .join (FRAMEWORK_DIR , "components" , "bootloader" ),
@@ -1419,7 +1425,8 @@ def get_python_exe():
1419
1425
"memory.ld.in" ,
1420
1426
))
1421
1427
1422
- if IDF5 :
1428
+ framework_version = [int (v ) for v in get_framework_version ().split ("." )]
1429
+ if framework_version [:2 ] > [5 , 2 ]:
1423
1430
initial_ld_script = preprocess_linker_file (
1424
1431
initial_ld_script ,
1425
1432
os .path .join (
0 commit comments