@@ -386,18 +386,22 @@ def kconfig_snippet(meta, path, kconfig_file=None, blobs=False, taint_blobs=Fals
386386 return '\n ' .join (snippet )
387387
388388
389+ def process_kconfig_module_dir (module , meta ):
390+ module_path = PurePath (module )
391+ name_sanitized = meta ['name-sanitized' ]
392+ return f'ZEPHYR_{ name_sanitized .upper ()} _MODULE_DIR={ module_path .as_posix ()} \n '
393+
394+
389395def process_kconfig (module , meta ):
390396 blobs = process_blobs (module , meta )
391397 taint_blobs = any (b ['status' ] != BLOB_NOT_PRESENT for b in blobs )
392398 section = meta .get ('build' , dict ())
393399 module_path = PurePath (module )
394400 module_yml = module_path .joinpath ('zephyr/module.yml' )
395401 kconfig_extern = section .get ('kconfig-ext' , False )
396- name_sanitized = meta ['name-sanitized' ]
397- snippet = f'ZEPHYR_{ name_sanitized .upper ()} _MODULE_DIR := { module_path .as_posix ()} \n '
398402
399403 if kconfig_extern :
400- return snippet + kconfig_snippet (meta , module_path , blobs = blobs , taint_blobs = taint_blobs )
404+ return kconfig_snippet (meta , module_path , blobs = blobs , taint_blobs = taint_blobs )
401405
402406 kconfig_setting = section .get ('kconfig' , None )
403407 if not validate_setting (kconfig_setting , module ):
@@ -407,10 +411,11 @@ def process_kconfig(module, meta):
407411
408412 kconfig_file = os .path .join (module , kconfig_setting or 'zephyr/Kconfig' )
409413 if os .path .isfile (kconfig_file ):
410- return snippet + kconfig_snippet (meta , module_path , Path (kconfig_file ),
411- blobs = blobs , taint_blobs = taint_blobs )
414+ return kconfig_snippet (meta , module_path , Path (kconfig_file ),
415+ blobs = blobs , taint_blobs = taint_blobs )
412416 else :
413- return snippet + '\n ' .join (kconfig_module_opts (name_sanitized , blobs , taint_blobs )) + '\n '
417+ name_sanitized = meta ['name-sanitized' ]
418+ return '\n ' .join (kconfig_module_opts (name_sanitized , blobs , taint_blobs )) + '\n '
414419
415420
416421def process_sysbuildkconfig (module , meta ):
@@ -419,10 +424,9 @@ def process_sysbuildkconfig(module, meta):
419424 module_yml = module_path .joinpath ('zephyr/module.yml' )
420425 kconfig_extern = section .get ('sysbuild-kconfig-ext' , False )
421426 name_sanitized = meta ['name-sanitized' ]
422- snippet = f'ZEPHYR_{ name_sanitized .upper ()} _MODULE_DIR := { module_path .as_posix ()} \n '
423427
424428 if kconfig_extern :
425- return snippet + kconfig_snippet (meta , module_path , sysbuild = True )
429+ return kconfig_snippet (meta , module_path , sysbuild = True )
426430
427431 kconfig_setting = section .get ('sysbuild-kconfig' , None )
428432 if not validate_setting (kconfig_setting , module ):
@@ -433,10 +437,9 @@ def process_sysbuildkconfig(module, meta):
433437 if kconfig_setting is not None :
434438 kconfig_file = os .path .join (module , kconfig_setting )
435439 if os .path .isfile (kconfig_file ):
436- return snippet + kconfig_snippet (meta , module_path , Path (kconfig_file ))
440+ return kconfig_snippet (meta , module_path , Path (kconfig_file ))
437441
438- return snippet + \
439- (f'config ZEPHYR_{ name_sanitized .upper ()} _MODULE\n '
442+ return (f'config ZEPHYR_{ name_sanitized .upper ()} _MODULE\n '
440443 f' bool\n '
441444 f' default y\n ' )
442445
@@ -861,6 +864,7 @@ def main():
861864 help = 'Path to zephyr repository' )
862865 args = parser .parse_args ()
863866
867+ kconfig_module_dirs = ""
864868 kconfig = ""
865869 cmake = ""
866870 sysbuild_kconfig = ""
@@ -873,6 +877,7 @@ def main():
873877 args .modules , args .extra_modules )
874878
875879 for module in modules :
880+ kconfig_module_dirs += process_kconfig_module_dir (module .project , module .meta )
876881 kconfig += process_kconfig (module .project , module .meta )
877882 cmake += process_cmake (module .project , module .meta )
878883 sysbuild_kconfig += process_sysbuildkconfig (
@@ -881,6 +886,16 @@ def main():
881886 settings += process_settings (module .project , module .meta )
882887 twister += process_twister (module .project , module .meta )
883888
889+ if args .kconfig_out or args .sysbuild_kconfig_out :
890+ if args .kconfig_out :
891+ kconfig_module_dirs_out = PurePath (args .kconfig_out ).parent / 'kconfig_module_dirs.env'
892+ elif args .sysbuild_kconfig_out :
893+ kconfig_module_dirs_out = PurePath (args .sysbuild_kconfig_out ).parent / \
894+ 'kconfig_module_dirs.env'
895+
896+ with open (kconfig_module_dirs_out , 'w' , encoding = "utf-8" ) as fp :
897+ fp .write (kconfig_module_dirs )
898+
884899 if args .kconfig_out :
885900 with open (args .kconfig_out , 'w' , encoding = "utf-8" ) as fp :
886901 fp .write (kconfig )
0 commit comments