diff --git a/bsp/ESP/ESP32_C3/rtconfig.py b/bsp/ESP/ESP32_C3/rtconfig.py index 6ed986349dc..1188d14f20b 100644 --- a/bsp/ESP/ESP32_C3/rtconfig.py +++ b/bsp/ESP/ESP32_C3/rtconfig.py @@ -8,7 +8,7 @@ if os.getenv('RTT_CC'): CROSS_TOOL = os.getenv('RTT_CC') -if CROSS_TOOL == 'gcc': +if CROSS_TOOL == 'gcc': PLATFORM = 'gcc' EXEC_PATH = r'~/.espressif/tools/riscv32-esp-elf/esp-2022r1-11.2.0/riscv32-esp-elf/bin' else: @@ -21,6 +21,20 @@ BUILD = 'debug' +def _get_package_path(package_name): + bsp_root = os.path.dirname(os.path.abspath(__file__)) + candidates = [ + os.path.join(bsp_root, 'libraries', package_name), + os.path.join(os.path.dirname(bsp_root), 'libraries', package_name), + os.path.join(bsp_root, 'packages', package_name), + ] + + for path in candidates: + if os.path.isdir(path): + return os.path.relpath(path, bsp_root).replace('\\', '/') + + return os.path.join('packages', package_name).replace('\\', '/') + if PLATFORM == 'gcc': # toolchains PREFIX = 'riscv32-esp-elf-' @@ -38,8 +52,9 @@ DEVICE = ' -nostartfiles -march=rv32imc --specs=nosys.specs -fasynchronous-unwind-tables ' CFLAGS = DEVICE + '-include ../../components/libc/compilers/common/include/sys/ioctl.h -gdwarf-4 -ggdb -Og ' AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp' - LFLAGS = DEVICE + ' -Wl,--cref -Wl,--defsym=IDF_TARGET_ESP32C3=0 -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,_start -T idf_port/ld/memory.ld -T idf_port/ld/sections.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.api.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.libgcc.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.newlib.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.version.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.eco3.ld -T packages/ESP-IDF-latest/components/soc/esp32c3/ld/esp32c3.peripherals.ld -Wl,--wrap=_Unwind_SetEnableExceptionFdeSorting -Wl,--wrap=__register_frame_info_bases -Wl,--wrap=__register_frame_info -Wl,--wrap=__register_frame -Wl,--wrap=__register_frame_info_table_bases -Wl,--wrap=__register_frame_info_table -Wl,--wrap=__register_frame_table -Wl,--wrap=__deregister_frame_info_bases -Wl,--wrap=__deregister_frame_info -Wl,--wrap=_Unwind_Find_FDE -Wl,--wrap=_Unwind_GetGR -Wl,--wrap=_Unwind_GetCFA -Wl,--wrap=_Unwind_GetIP -Wl,--wrap=_Unwind_GetIPInfo -Wl,--wrap=_Unwind_GetRegionStart -Wl,--wrap=_Unwind_GetDataRelBase -Wl,--wrap=_Unwind_GetTextRelBase -Wl,--wrap=_Unwind_SetIP -Wl,--wrap=_Unwind_SetGR -Wl,--wrap=_Unwind_GetLanguageSpecificData -Wl,--wrap=_Unwind_FindEnclosingFunction -Wl,--wrap=_Unwind_Resume -Wl,--wrap=_Unwind_RaiseException -Wl,--wrap=_Unwind_DeleteException -Wl,--wrap=_Unwind_ForcedUnwind -Wl,--wrap=_Unwind_Resume_or_Rethrow -Wl,--wrap=_Unwind_Backtrace -Wl,--wrap=__cxa_call_unexpected -Wl,--eh-frame-hdr -Wl,--wrap=__gxx_personality_v0 -Wl,--cref -Wl,--defsym=IDF_TARGET_ESP32C3=0' - CXXFLAGS = CFLAGS + idf_path = _get_package_path('ESP-IDF-latest') + LFLAGS = DEVICE + ' -Wl,--cref -Wl,--defsym=IDF_TARGET_ESP32C3=0 -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,_start -T idf_port/ld/memory.ld -T idf_port/ld/sections.ld -T ' + idf_path + '/components/esp_rom/esp32c3/ld/esp32c3.rom.ld -T ' + idf_path + '/components/esp_rom/esp32c3/ld/esp32c3.rom.api.ld -T ' + idf_path + '/components/esp_rom/esp32c3/ld/esp32c3.rom.libgcc.ld -T ' + idf_path + '/components/esp_rom/esp32c3/ld/esp32c3.rom.newlib.ld -T ' + idf_path + '/components/esp_rom/esp32c3/ld/esp32c3.rom.version.ld -T ' + idf_path + '/components/esp_rom/esp32c3/ld/esp32c3.rom.eco3.ld -T ' + idf_path + '/components/soc/esp32c3/ld/esp32c3.peripherals.ld -Wl,--wrap=_Unwind_SetEnableExceptionFdeSorting -Wl,--wrap=__register_frame_info_bases -Wl,--wrap=__register_frame_info -Wl,--wrap=__register_frame -Wl,--wrap=__register_frame_info_table_bases -Wl,--wrap=__register_frame_info_table -Wl,--wrap=__register_frame_table -Wl,--wrap=__deregister_frame_info_bases -Wl,--wrap=__deregister_frame_info -Wl,--wrap=_Unwind_Find_FDE -Wl,--wrap=_Unwind_GetGR -Wl,--wrap=_Unwind_GetCFA -Wl,--wrap=_Unwind_GetIP -Wl,--wrap=_Unwind_GetIPInfo -Wl,--wrap=_Unwind_GetRegionStart -Wl,--wrap=_Unwind_GetDataRelBase -Wl,--wrap=_Unwind_GetTextRelBase -Wl,--wrap=_Unwind_SetIP -Wl,--wrap=_Unwind_SetGR -Wl,--wrap=_Unwind_GetLanguageSpecificData -Wl,--wrap=_Unwind_FindEnclosingFunction -Wl,--wrap=_Unwind_Resume -Wl,--wrap=_Unwind_RaiseException -Wl,--wrap=_Unwind_DeleteException -Wl,--wrap=_Unwind_ForcedUnwind -Wl,--wrap=_Unwind_Resume_or_Rethrow -Wl,--wrap=_Unwind_Backtrace -Wl,--wrap=__cxa_call_unexpected -Wl,--eh-frame-hdr -Wl,--wrap=__gxx_personality_v0 -Wl,--cref -Wl,--defsym=IDF_TARGET_ESP32C3=0' + CXXFLAGS = CFLAGS POST_ACTION = OBJCPY + ' -Oihex $TARGET rtthread.hex\n' + SIZE + ' $TARGET \n' diff --git a/bsp/Infineon/libraries/templates/XMC7200D/SConstruct b/bsp/Infineon/libraries/templates/XMC7200D/SConstruct index 926eb83567a..e754114ad09 100644 --- a/bsp/Infineon/libraries/templates/XMC7200D/SConstruct +++ b/bsp/Infineon/libraries/templates/XMC7200D/SConstruct @@ -36,10 +36,30 @@ Export('rtconfig') SDK_ROOT = os.path.abspath('./') -if os.path.exists(SDK_ROOT + '/packages'): - libraries_path_prefix = SDK_ROOT + '/packages' -else: +def _contains_infineon_package(path): + if not os.path.isdir(path): + return False + + for name in os.listdir(path): + package_path = os.path.join(path, name) + if name.startswith('Infineon_mtb-pdl-cat1') and os.path.isdir(package_path): + return True + + return False + +libraries_path_prefix = None +for path in [ + os.path.join(SDK_ROOT, 'libraries'), + os.path.join(os.path.dirname(SDK_ROOT), 'libraries'), + os.path.join(SDK_ROOT, 'packages') +]: + if _contains_infineon_package(path): + libraries_path_prefix = path + break + +if not libraries_path_prefix: print("Error: Packages for HAL_Driver does not exist, pull it in ENV using `pkg --update`.") + libraries_path_prefix = os.path.join(SDK_ROOT, 'packages') SDK_LIB = libraries_path_prefix Export('SDK_LIB') diff --git a/bsp/Infineon/psoc6-cy8ckit-062-BLE/SConstruct b/bsp/Infineon/psoc6-cy8ckit-062-BLE/SConstruct index 332a1f967ef..e754114ad09 100644 --- a/bsp/Infineon/psoc6-cy8ckit-062-BLE/SConstruct +++ b/bsp/Infineon/psoc6-cy8ckit-062-BLE/SConstruct @@ -36,12 +36,30 @@ Export('rtconfig') SDK_ROOT = os.path.abspath('./') -libraries_path_prefix = SDK_ROOT +def _contains_infineon_package(path): + if not os.path.isdir(path): + return False -if os.path.exists(SDK_ROOT + '/packages'): - libraries_path_prefix = SDK_ROOT + '/packages' -else: + for name in os.listdir(path): + package_path = os.path.join(path, name) + if name.startswith('Infineon_mtb-pdl-cat1') and os.path.isdir(package_path): + return True + + return False + +libraries_path_prefix = None +for path in [ + os.path.join(SDK_ROOT, 'libraries'), + os.path.join(os.path.dirname(SDK_ROOT), 'libraries'), + os.path.join(SDK_ROOT, 'packages') +]: + if _contains_infineon_package(path): + libraries_path_prefix = path + break + +if not libraries_path_prefix: print("Error: Packages for HAL_Driver does not exist, pull it in ENV using `pkg --update`.") + libraries_path_prefix = os.path.join(SDK_ROOT, 'packages') SDK_LIB = libraries_path_prefix Export('SDK_LIB') diff --git a/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/SConstruct b/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/SConstruct index 332a1f967ef..e754114ad09 100644 --- a/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/SConstruct +++ b/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/SConstruct @@ -36,12 +36,30 @@ Export('rtconfig') SDK_ROOT = os.path.abspath('./') -libraries_path_prefix = SDK_ROOT +def _contains_infineon_package(path): + if not os.path.isdir(path): + return False -if os.path.exists(SDK_ROOT + '/packages'): - libraries_path_prefix = SDK_ROOT + '/packages' -else: + for name in os.listdir(path): + package_path = os.path.join(path, name) + if name.startswith('Infineon_mtb-pdl-cat1') and os.path.isdir(package_path): + return True + + return False + +libraries_path_prefix = None +for path in [ + os.path.join(SDK_ROOT, 'libraries'), + os.path.join(os.path.dirname(SDK_ROOT), 'libraries'), + os.path.join(SDK_ROOT, 'packages') +]: + if _contains_infineon_package(path): + libraries_path_prefix = path + break + +if not libraries_path_prefix: print("Error: Packages for HAL_Driver does not exist, pull it in ENV using `pkg --update`.") + libraries_path_prefix = os.path.join(SDK_ROOT, 'packages') SDK_LIB = libraries_path_prefix Export('SDK_LIB') diff --git a/bsp/Infineon/psoc6-cy8ckit-062S2-43012/SConstruct b/bsp/Infineon/psoc6-cy8ckit-062S2-43012/SConstruct index 332a1f967ef..e754114ad09 100644 --- a/bsp/Infineon/psoc6-cy8ckit-062S2-43012/SConstruct +++ b/bsp/Infineon/psoc6-cy8ckit-062S2-43012/SConstruct @@ -36,12 +36,30 @@ Export('rtconfig') SDK_ROOT = os.path.abspath('./') -libraries_path_prefix = SDK_ROOT +def _contains_infineon_package(path): + if not os.path.isdir(path): + return False -if os.path.exists(SDK_ROOT + '/packages'): - libraries_path_prefix = SDK_ROOT + '/packages' -else: + for name in os.listdir(path): + package_path = os.path.join(path, name) + if name.startswith('Infineon_mtb-pdl-cat1') and os.path.isdir(package_path): + return True + + return False + +libraries_path_prefix = None +for path in [ + os.path.join(SDK_ROOT, 'libraries'), + os.path.join(os.path.dirname(SDK_ROOT), 'libraries'), + os.path.join(SDK_ROOT, 'packages') +]: + if _contains_infineon_package(path): + libraries_path_prefix = path + break + +if not libraries_path_prefix: print("Error: Packages for HAL_Driver does not exist, pull it in ENV using `pkg --update`.") + libraries_path_prefix = os.path.join(SDK_ROOT, 'packages') SDK_LIB = libraries_path_prefix Export('SDK_LIB') diff --git a/bsp/Infineon/psoc6-cy8ckit-062s4/SConstruct b/bsp/Infineon/psoc6-cy8ckit-062s4/SConstruct index 332a1f967ef..e754114ad09 100644 --- a/bsp/Infineon/psoc6-cy8ckit-062s4/SConstruct +++ b/bsp/Infineon/psoc6-cy8ckit-062s4/SConstruct @@ -36,12 +36,30 @@ Export('rtconfig') SDK_ROOT = os.path.abspath('./') -libraries_path_prefix = SDK_ROOT +def _contains_infineon_package(path): + if not os.path.isdir(path): + return False -if os.path.exists(SDK_ROOT + '/packages'): - libraries_path_prefix = SDK_ROOT + '/packages' -else: + for name in os.listdir(path): + package_path = os.path.join(path, name) + if name.startswith('Infineon_mtb-pdl-cat1') and os.path.isdir(package_path): + return True + + return False + +libraries_path_prefix = None +for path in [ + os.path.join(SDK_ROOT, 'libraries'), + os.path.join(os.path.dirname(SDK_ROOT), 'libraries'), + os.path.join(SDK_ROOT, 'packages') +]: + if _contains_infineon_package(path): + libraries_path_prefix = path + break + +if not libraries_path_prefix: print("Error: Packages for HAL_Driver does not exist, pull it in ENV using `pkg --update`.") + libraries_path_prefix = os.path.join(SDK_ROOT, 'packages') SDK_LIB = libraries_path_prefix Export('SDK_LIB') diff --git a/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/SConstruct b/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/SConstruct index 332a1f967ef..e754114ad09 100644 --- a/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/SConstruct +++ b/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/SConstruct @@ -36,12 +36,30 @@ Export('rtconfig') SDK_ROOT = os.path.abspath('./') -libraries_path_prefix = SDK_ROOT +def _contains_infineon_package(path): + if not os.path.isdir(path): + return False -if os.path.exists(SDK_ROOT + '/packages'): - libraries_path_prefix = SDK_ROOT + '/packages' -else: + for name in os.listdir(path): + package_path = os.path.join(path, name) + if name.startswith('Infineon_mtb-pdl-cat1') and os.path.isdir(package_path): + return True + + return False + +libraries_path_prefix = None +for path in [ + os.path.join(SDK_ROOT, 'libraries'), + os.path.join(os.path.dirname(SDK_ROOT), 'libraries'), + os.path.join(SDK_ROOT, 'packages') +]: + if _contains_infineon_package(path): + libraries_path_prefix = path + break + +if not libraries_path_prefix: print("Error: Packages for HAL_Driver does not exist, pull it in ENV using `pkg --update`.") + libraries_path_prefix = os.path.join(SDK_ROOT, 'packages') SDK_LIB = libraries_path_prefix Export('SDK_LIB') diff --git a/bsp/Infineon/psoc6-evaluationkit-062S2/SConstruct b/bsp/Infineon/psoc6-evaluationkit-062S2/SConstruct index 332a1f967ef..e754114ad09 100644 --- a/bsp/Infineon/psoc6-evaluationkit-062S2/SConstruct +++ b/bsp/Infineon/psoc6-evaluationkit-062S2/SConstruct @@ -36,12 +36,30 @@ Export('rtconfig') SDK_ROOT = os.path.abspath('./') -libraries_path_prefix = SDK_ROOT +def _contains_infineon_package(path): + if not os.path.isdir(path): + return False -if os.path.exists(SDK_ROOT + '/packages'): - libraries_path_prefix = SDK_ROOT + '/packages' -else: + for name in os.listdir(path): + package_path = os.path.join(path, name) + if name.startswith('Infineon_mtb-pdl-cat1') and os.path.isdir(package_path): + return True + + return False + +libraries_path_prefix = None +for path in [ + os.path.join(SDK_ROOT, 'libraries'), + os.path.join(os.path.dirname(SDK_ROOT), 'libraries'), + os.path.join(SDK_ROOT, 'packages') +]: + if _contains_infineon_package(path): + libraries_path_prefix = path + break + +if not libraries_path_prefix: print("Error: Packages for HAL_Driver does not exist, pull it in ENV using `pkg --update`.") + libraries_path_prefix = os.path.join(SDK_ROOT, 'packages') SDK_LIB = libraries_path_prefix Export('SDK_LIB') diff --git a/bsp/Infineon/xmc7100d-f144k4160aa/SConstruct b/bsp/Infineon/xmc7100d-f144k4160aa/SConstruct index 332a1f967ef..e754114ad09 100644 --- a/bsp/Infineon/xmc7100d-f144k4160aa/SConstruct +++ b/bsp/Infineon/xmc7100d-f144k4160aa/SConstruct @@ -36,12 +36,30 @@ Export('rtconfig') SDK_ROOT = os.path.abspath('./') -libraries_path_prefix = SDK_ROOT +def _contains_infineon_package(path): + if not os.path.isdir(path): + return False -if os.path.exists(SDK_ROOT + '/packages'): - libraries_path_prefix = SDK_ROOT + '/packages' -else: + for name in os.listdir(path): + package_path = os.path.join(path, name) + if name.startswith('Infineon_mtb-pdl-cat1') and os.path.isdir(package_path): + return True + + return False + +libraries_path_prefix = None +for path in [ + os.path.join(SDK_ROOT, 'libraries'), + os.path.join(os.path.dirname(SDK_ROOT), 'libraries'), + os.path.join(SDK_ROOT, 'packages') +]: + if _contains_infineon_package(path): + libraries_path_prefix = path + break + +if not libraries_path_prefix: print("Error: Packages for HAL_Driver does not exist, pull it in ENV using `pkg --update`.") + libraries_path_prefix = os.path.join(SDK_ROOT, 'packages') SDK_LIB = libraries_path_prefix Export('SDK_LIB') diff --git a/bsp/Infineon/xmc7200-kit_xmc7200_evk/SConstruct b/bsp/Infineon/xmc7200-kit_xmc7200_evk/SConstruct index 332a1f967ef..e754114ad09 100644 --- a/bsp/Infineon/xmc7200-kit_xmc7200_evk/SConstruct +++ b/bsp/Infineon/xmc7200-kit_xmc7200_evk/SConstruct @@ -36,12 +36,30 @@ Export('rtconfig') SDK_ROOT = os.path.abspath('./') -libraries_path_prefix = SDK_ROOT +def _contains_infineon_package(path): + if not os.path.isdir(path): + return False -if os.path.exists(SDK_ROOT + '/packages'): - libraries_path_prefix = SDK_ROOT + '/packages' -else: + for name in os.listdir(path): + package_path = os.path.join(path, name) + if name.startswith('Infineon_mtb-pdl-cat1') and os.path.isdir(package_path): + return True + + return False + +libraries_path_prefix = None +for path in [ + os.path.join(SDK_ROOT, 'libraries'), + os.path.join(os.path.dirname(SDK_ROOT), 'libraries'), + os.path.join(SDK_ROOT, 'packages') +]: + if _contains_infineon_package(path): + libraries_path_prefix = path + break + +if not libraries_path_prefix: print("Error: Packages for HAL_Driver does not exist, pull it in ENV using `pkg --update`.") + libraries_path_prefix = os.path.join(SDK_ROOT, 'packages') SDK_LIB = libraries_path_prefix Export('SDK_LIB') diff --git a/bsp/gd32/risc-v/gd32vw553h-eval/SConscript b/bsp/gd32/risc-v/gd32vw553h-eval/SConscript index 945e23289ad..a6a2cb584e4 100644 --- a/bsp/gd32/risc-v/gd32vw553h-eval/SConscript +++ b/bsp/gd32/risc-v/gd32vw553h-eval/SConscript @@ -13,4 +13,31 @@ for d in list: if os.path.isfile(os.path.join(path, 'SConscript')): objs = objs + SConscript(os.path.join(d, 'SConscript')) +def _get_package_path(package_name): + candidates = [ + os.path.join(cwd, 'libraries', package_name), + os.path.join(os.path.dirname(cwd), 'libraries', package_name), + os.path.join(cwd, 'packages', package_name) + ] + + for path in candidates: + if os.path.isdir(path): + return path + + return None + +wifi_pkg_path = _get_package_path('gd32vw55x-wifi-latest') +if wifi_pkg_path and GetDepend(['PKG_USING_GD32VW55X_WIFI']): + lwip_mem = os.path.join(RTT_ROOT, 'components', 'net', 'lwip', 'lwip-2.1.2', 'src', 'core', 'mem.c') + port_src = [os.path.join(cwd, 'board', 'mbedtls_time_port.c')] + if os.path.basename(os.path.dirname(wifi_pkg_path)) == 'libraries' and os.path.isfile(lwip_mem): + port_src.append(lwip_mem) + + objs += DefineGroup('gd32vw55x-wifi-port', port_src, depend=['PKG_USING_GD32VW55X_WIFI'], + CPPPATH=[ + os.path.join(wifi_pkg_path, 'src', 'lwip', 'port'), + os.path.join(wifi_pkg_path, 'src', 'lwip', 'port', 'arch'), + os.path.join(RTT_ROOT, 'components', 'net', 'lwip', 'lwip-2.1.2', 'src', 'include') + ]) + Return('objs') diff --git a/bsp/gd32/risc-v/gd32vw553h-eval/SConstruct b/bsp/gd32/risc-v/gd32vw553h-eval/SConstruct index 6cc366a4226..9232dde5587 100644 --- a/bsp/gd32/risc-v/gd32vw553h-eval/SConstruct +++ b/bsp/gd32/risc-v/gd32vw553h-eval/SConstruct @@ -19,10 +19,14 @@ def bsp_pkg_check(): import subprocess check_paths = [ - os.path.join("packages", "gd32-riscv-series-latest") + [ + os.path.join("libraries", "gd32-riscv-series-latest"), + os.path.join("..", "libraries", "gd32-riscv-series-latest"), + os.path.join("packages", "gd32-riscv-series-latest") + ] ] - need_update = not all(os.path.exists(p) for p in check_paths) + need_update = not all(any(os.path.exists(p) for p in paths) for paths in check_paths) if need_update: print("\n===============================================================================") diff --git a/bsp/gd32/risc-v/gd32vw553h-eval/board/SConscript b/bsp/gd32/risc-v/gd32vw553h-eval/board/SConscript index 2434f2a56f0..7fa07813988 100644 --- a/bsp/gd32/risc-v/gd32vw553h-eval/board/SConscript +++ b/bsp/gd32/risc-v/gd32vw553h-eval/board/SConscript @@ -20,12 +20,36 @@ if GetDepend(['BSP_USING_WLAN']): path = [cwd] # add startup txt path -startup_path_prefix = os.getcwd() + '/../' +package_name = 'gd32-riscv-series-latest' +def _get_package_path(package_name): + bsp_root = os.path.dirname(cwd) + series_root = os.path.dirname(bsp_root) + candidates = [ + os.path.join(bsp_root, 'libraries', package_name), + os.path.join(series_root, 'libraries', package_name), + os.path.join(bsp_root, 'packages', package_name), + os.path.join(series_root, 'packages', package_name), + os.path.join(SDK_LIB, package_name), + os.path.join(os.path.dirname(SDK_LIB), 'packages', package_name), + ] + + entry_file = os.path.join('GD32VW55x', 'RISCV', 'env_Eclipse', 'entry.S') + for path in candidates: + if os.path.isfile(os.path.join(path, entry_file)): + return path + + for path in candidates: + if os.path.isdir(path): + return path + + return os.path.join(bsp_root, 'packages', package_name) + +package_path = _get_package_path(package_name) if rtconfig.PLATFORM in ['gcc']: # Use standard peripheral library startup files for compatibility - src += [startup_path_prefix + '/packages/gd32-riscv-series-latest/GD32VW55x/RISCV/env_Eclipse/start.S'] - src += [startup_path_prefix + '/packages/gd32-riscv-series-latest/GD32VW55x/RISCV/env_Eclipse/entry.S'] + src += [os.path.join(package_path, 'GD32VW55x', 'RISCV', 'env_Eclipse', 'start.S')] + src += [os.path.join(package_path, 'GD32VW55x', 'RISCV', 'env_Eclipse', 'entry.S')] CPPDEFINES = ['GD32VW553H_EVAL'] group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES) diff --git a/bsp/gd32/risc-v/gd32vw553h-eval/board/mbedtls_time_port.c b/bsp/gd32/risc-v/gd32vw553h-eval/board/mbedtls_time_port.c new file mode 100644 index 00000000000..af9842a1bbd --- /dev/null +++ b/bsp/gd32/risc-v/gd32vw553h-eval/board/mbedtls_time_port.c @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2006-2026 RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +rt_weak int mbedtls_platform_set_time(long (*time_func)(long *timer)) +{ + RT_UNUSED(time_func); + + return 0; +} diff --git a/bsp/gd32/risc-v/gd32vw553h-eval/rtconfig.py b/bsp/gd32/risc-v/gd32vw553h-eval/rtconfig.py index e1fd3a8faab..53501d3a77b 100644 --- a/bsp/gd32/risc-v/gd32vw553h-eval/rtconfig.py +++ b/bsp/gd32/risc-v/gd32vw553h-eval/rtconfig.py @@ -30,6 +30,20 @@ MAP_FILE = 'rtthread.map' LINK_FILE = './board/linker_scripts/link.lds' +def _get_package_path(package_name): + bsp_root = os.path.dirname(os.path.abspath(__file__)) + candidates = [ + os.path.join(bsp_root, 'libraries', package_name), + os.path.join(os.path.dirname(bsp_root), 'libraries', package_name), + os.path.join(bsp_root, 'packages', package_name), + ] + + for path in candidates: + if os.path.isdir(path): + return path + + return os.path.join(bsp_root, 'packages', package_name) + if PLATFORM == 'gcc': # toolchains PREFIX = 'riscv-none-embed-' @@ -57,7 +71,7 @@ # Linking Parameters # 添加 --no-warn-mismatch 以忽略预编译库与当前工具链的特权规范版本差异 # 添加 WiFi ROM 符号表 - wifi_pkg_path = os.path.join(os.path.dirname(__file__), 'packages', 'gd32vw55x-wifi-latest') + wifi_pkg_path = _get_package_path('gd32vw55x-wifi-latest') rom_symbol = os.path.join(wifi_pkg_path, 'rom_export', 'symbol', 'rom_symbol_m.gcc') rom_symbol_flag = '' if os.path.exists(rom_symbol): diff --git a/bsp/nxp/lpc/lpc55sxx/lpc55s06_nxp_evk/SConstruct b/bsp/nxp/lpc/lpc55sxx/lpc55s06_nxp_evk/SConstruct index 7538ccf9f3f..19beb7a14f6 100644 --- a/bsp/nxp/lpc/lpc55sxx/lpc55s06_nxp_evk/SConstruct +++ b/bsp/nxp/lpc/lpc55sxx/lpc55s06_nxp_evk/SConstruct @@ -19,10 +19,14 @@ def bsp_pkg_check(): import subprocess check_paths = [ - os.path.join("packages", "nxp-lpc55s-series-latest"), + [ + os.path.join("libraries", "nxp-lpc55s-series-latest"), + os.path.join("..", "libraries", "nxp-lpc55s-series-latest"), + os.path.join("packages", "nxp-lpc55s-series-latest"), + ], ] - need_update = not all(os.path.exists(p) for p in check_paths) + need_update = not all(any(os.path.exists(p) for p in paths) for paths in check_paths) if need_update: print("\n===============================================================================") @@ -65,6 +69,19 @@ Export('rtconfig') SDK_ROOT = os.path.abspath('./') +def _get_package_path(package_name): + candidates = [ + os.path.join(SDK_ROOT, 'libraries', package_name), + os.path.join(os.path.dirname(SDK_ROOT), 'libraries', package_name), + os.path.join(SDK_ROOT, 'packages', package_name), + ] + + for path in candidates: + if os.path.isdir(path): + return path + + return os.path.join(SDK_ROOT, 'packages', package_name) + if os.path.exists(SDK_ROOT + '/libraries'): libraries_path_prefix = SDK_ROOT + '/libraries' else: @@ -79,7 +96,8 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) objs.extend(SConscript(os.path.join(libraries_path_prefix, 'drivers', 'SConscript'))) # include cmsis -objs.extend(SConscript(os.path.join("packages/nxp-lpc55s-series-latest", rtconfig.BSP_LIBRARY_TYPE, 'SConscript'))) +lpc55s_package_path = _get_package_path('nxp-lpc55s-series-latest') +objs.extend(SConscript(os.path.join(lpc55s_package_path, rtconfig.BSP_LIBRARY_TYPE, 'SConscript'))) # make a building DoBuilding(TARGET, objs) diff --git a/bsp/nxp/lpc/lpc55sxx/lpc55s16_nxp_evk/SConstruct b/bsp/nxp/lpc/lpc55sxx/lpc55s16_nxp_evk/SConstruct index 7538ccf9f3f..19beb7a14f6 100644 --- a/bsp/nxp/lpc/lpc55sxx/lpc55s16_nxp_evk/SConstruct +++ b/bsp/nxp/lpc/lpc55sxx/lpc55s16_nxp_evk/SConstruct @@ -19,10 +19,14 @@ def bsp_pkg_check(): import subprocess check_paths = [ - os.path.join("packages", "nxp-lpc55s-series-latest"), + [ + os.path.join("libraries", "nxp-lpc55s-series-latest"), + os.path.join("..", "libraries", "nxp-lpc55s-series-latest"), + os.path.join("packages", "nxp-lpc55s-series-latest"), + ], ] - need_update = not all(os.path.exists(p) for p in check_paths) + need_update = not all(any(os.path.exists(p) for p in paths) for paths in check_paths) if need_update: print("\n===============================================================================") @@ -65,6 +69,19 @@ Export('rtconfig') SDK_ROOT = os.path.abspath('./') +def _get_package_path(package_name): + candidates = [ + os.path.join(SDK_ROOT, 'libraries', package_name), + os.path.join(os.path.dirname(SDK_ROOT), 'libraries', package_name), + os.path.join(SDK_ROOT, 'packages', package_name), + ] + + for path in candidates: + if os.path.isdir(path): + return path + + return os.path.join(SDK_ROOT, 'packages', package_name) + if os.path.exists(SDK_ROOT + '/libraries'): libraries_path_prefix = SDK_ROOT + '/libraries' else: @@ -79,7 +96,8 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) objs.extend(SConscript(os.path.join(libraries_path_prefix, 'drivers', 'SConscript'))) # include cmsis -objs.extend(SConscript(os.path.join("packages/nxp-lpc55s-series-latest", rtconfig.BSP_LIBRARY_TYPE, 'SConscript'))) +lpc55s_package_path = _get_package_path('nxp-lpc55s-series-latest') +objs.extend(SConscript(os.path.join(lpc55s_package_path, rtconfig.BSP_LIBRARY_TYPE, 'SConscript'))) # make a building DoBuilding(TARGET, objs) diff --git a/bsp/nxp/lpc/lpc55sxx/lpc55s28_nxp_evk/SConstruct b/bsp/nxp/lpc/lpc55sxx/lpc55s28_nxp_evk/SConstruct index 7538ccf9f3f..19beb7a14f6 100644 --- a/bsp/nxp/lpc/lpc55sxx/lpc55s28_nxp_evk/SConstruct +++ b/bsp/nxp/lpc/lpc55sxx/lpc55s28_nxp_evk/SConstruct @@ -19,10 +19,14 @@ def bsp_pkg_check(): import subprocess check_paths = [ - os.path.join("packages", "nxp-lpc55s-series-latest"), + [ + os.path.join("libraries", "nxp-lpc55s-series-latest"), + os.path.join("..", "libraries", "nxp-lpc55s-series-latest"), + os.path.join("packages", "nxp-lpc55s-series-latest"), + ], ] - need_update = not all(os.path.exists(p) for p in check_paths) + need_update = not all(any(os.path.exists(p) for p in paths) for paths in check_paths) if need_update: print("\n===============================================================================") @@ -65,6 +69,19 @@ Export('rtconfig') SDK_ROOT = os.path.abspath('./') +def _get_package_path(package_name): + candidates = [ + os.path.join(SDK_ROOT, 'libraries', package_name), + os.path.join(os.path.dirname(SDK_ROOT), 'libraries', package_name), + os.path.join(SDK_ROOT, 'packages', package_name), + ] + + for path in candidates: + if os.path.isdir(path): + return path + + return os.path.join(SDK_ROOT, 'packages', package_name) + if os.path.exists(SDK_ROOT + '/libraries'): libraries_path_prefix = SDK_ROOT + '/libraries' else: @@ -79,7 +96,8 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) objs.extend(SConscript(os.path.join(libraries_path_prefix, 'drivers', 'SConscript'))) # include cmsis -objs.extend(SConscript(os.path.join("packages/nxp-lpc55s-series-latest", rtconfig.BSP_LIBRARY_TYPE, 'SConscript'))) +lpc55s_package_path = _get_package_path('nxp-lpc55s-series-latest') +objs.extend(SConscript(os.path.join(lpc55s_package_path, rtconfig.BSP_LIBRARY_TYPE, 'SConscript'))) # make a building DoBuilding(TARGET, objs) diff --git a/bsp/nxp/lpc/lpc55sxx/lpc55s36_nxp_evk/SConstruct b/bsp/nxp/lpc/lpc55sxx/lpc55s36_nxp_evk/SConstruct index 7538ccf9f3f..19beb7a14f6 100644 --- a/bsp/nxp/lpc/lpc55sxx/lpc55s36_nxp_evk/SConstruct +++ b/bsp/nxp/lpc/lpc55sxx/lpc55s36_nxp_evk/SConstruct @@ -19,10 +19,14 @@ def bsp_pkg_check(): import subprocess check_paths = [ - os.path.join("packages", "nxp-lpc55s-series-latest"), + [ + os.path.join("libraries", "nxp-lpc55s-series-latest"), + os.path.join("..", "libraries", "nxp-lpc55s-series-latest"), + os.path.join("packages", "nxp-lpc55s-series-latest"), + ], ] - need_update = not all(os.path.exists(p) for p in check_paths) + need_update = not all(any(os.path.exists(p) for p in paths) for paths in check_paths) if need_update: print("\n===============================================================================") @@ -65,6 +69,19 @@ Export('rtconfig') SDK_ROOT = os.path.abspath('./') +def _get_package_path(package_name): + candidates = [ + os.path.join(SDK_ROOT, 'libraries', package_name), + os.path.join(os.path.dirname(SDK_ROOT), 'libraries', package_name), + os.path.join(SDK_ROOT, 'packages', package_name), + ] + + for path in candidates: + if os.path.isdir(path): + return path + + return os.path.join(SDK_ROOT, 'packages', package_name) + if os.path.exists(SDK_ROOT + '/libraries'): libraries_path_prefix = SDK_ROOT + '/libraries' else: @@ -79,7 +96,8 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) objs.extend(SConscript(os.path.join(libraries_path_prefix, 'drivers', 'SConscript'))) # include cmsis -objs.extend(SConscript(os.path.join("packages/nxp-lpc55s-series-latest", rtconfig.BSP_LIBRARY_TYPE, 'SConscript'))) +lpc55s_package_path = _get_package_path('nxp-lpc55s-series-latest') +objs.extend(SConscript(os.path.join(lpc55s_package_path, rtconfig.BSP_LIBRARY_TYPE, 'SConscript'))) # make a building DoBuilding(TARGET, objs) diff --git a/bsp/nxp/lpc/lpc55sxx/lpc55s69_nxp_evk/SConstruct b/bsp/nxp/lpc/lpc55sxx/lpc55s69_nxp_evk/SConstruct index 7538ccf9f3f..19beb7a14f6 100644 --- a/bsp/nxp/lpc/lpc55sxx/lpc55s69_nxp_evk/SConstruct +++ b/bsp/nxp/lpc/lpc55sxx/lpc55s69_nxp_evk/SConstruct @@ -19,10 +19,14 @@ def bsp_pkg_check(): import subprocess check_paths = [ - os.path.join("packages", "nxp-lpc55s-series-latest"), + [ + os.path.join("libraries", "nxp-lpc55s-series-latest"), + os.path.join("..", "libraries", "nxp-lpc55s-series-latest"), + os.path.join("packages", "nxp-lpc55s-series-latest"), + ], ] - need_update = not all(os.path.exists(p) for p in check_paths) + need_update = not all(any(os.path.exists(p) for p in paths) for paths in check_paths) if need_update: print("\n===============================================================================") @@ -65,6 +69,19 @@ Export('rtconfig') SDK_ROOT = os.path.abspath('./') +def _get_package_path(package_name): + candidates = [ + os.path.join(SDK_ROOT, 'libraries', package_name), + os.path.join(os.path.dirname(SDK_ROOT), 'libraries', package_name), + os.path.join(SDK_ROOT, 'packages', package_name), + ] + + for path in candidates: + if os.path.isdir(path): + return path + + return os.path.join(SDK_ROOT, 'packages', package_name) + if os.path.exists(SDK_ROOT + '/libraries'): libraries_path_prefix = SDK_ROOT + '/libraries' else: @@ -79,7 +96,8 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) objs.extend(SConscript(os.path.join(libraries_path_prefix, 'drivers', 'SConscript'))) # include cmsis -objs.extend(SConscript(os.path.join("packages/nxp-lpc55s-series-latest", rtconfig.BSP_LIBRARY_TYPE, 'SConscript'))) +lpc55s_package_path = _get_package_path('nxp-lpc55s-series-latest') +objs.extend(SConscript(os.path.join(lpc55s_package_path, rtconfig.BSP_LIBRARY_TYPE, 'SConscript'))) # make a building DoBuilding(TARGET, objs) diff --git a/bsp/raspberry-pico/RP2040/SConstruct b/bsp/raspberry-pico/RP2040/SConstruct index 01cea569da9..568909d15c1 100644 --- a/bsp/raspberry-pico/RP2040/SConstruct +++ b/bsp/raspberry-pico/RP2040/SConstruct @@ -24,11 +24,23 @@ env.PrependENVPath('PATH', rtconfig.EXEC_PATH) Export('RTT_ROOT') Export('rtconfig') +def _get_package_path(package_name): + library_paths = [ + os.path.join(os.getcwd(), 'libraries', package_name), + os.path.join(os.getcwd(), '..', 'libraries', package_name), + ] + + for library_path in library_paths: + if os.path.isdir(library_path): + return library_path + + return os.path.join('packages', package_name) + # prepare building environment objs = PrepareBuilding(env, RTT_ROOT) ocwd = os.getcwd() -os.chdir('packages/raspberrypi-pico-sdk-latest') +os.chdir(_get_package_path('raspberrypi-pico-sdk-latest')) print("Enter " + os.getcwd()) if GetOption('clean'): os.system("scons -c") diff --git a/bsp/raspberry-pico/RP2350/SConstruct b/bsp/raspberry-pico/RP2350/SConstruct index a590fdd6a7a..a9394002584 100644 --- a/bsp/raspberry-pico/RP2350/SConstruct +++ b/bsp/raspberry-pico/RP2350/SConstruct @@ -24,11 +24,23 @@ env.PrependENVPath('PATH', rtconfig.EXEC_PATH) Export('RTT_ROOT') Export('rtconfig') +def _get_package_path(package_name): + library_paths = [ + os.path.join(os.getcwd(), 'libraries', package_name), + os.path.join(os.getcwd(), '..', 'libraries', package_name), + ] + + for library_path in library_paths: + if os.path.isdir(library_path): + return library_path + + return os.path.join('packages', package_name) + # prepare building environment objs = PrepareBuilding(env, RTT_ROOT) ocwd = os.getcwd() -os.chdir('packages/raspberrypi-pico-rp2350-sdk-latest') +os.chdir(_get_package_path('raspberrypi-pico-rp2350-sdk-latest')) print("Enter " + os.getcwd()) if GetOption('clean'): os.system("scons -c") diff --git a/tools/mkdist.py b/tools/mkdist.py index 838ae15ad5b..fff2f4f1f54 100644 --- a/tools/mkdist.py +++ b/tools/mkdist.py @@ -22,6 +22,7 @@ # 2017-10-04 Bernard The first version # 2025-01-07 ZhaoCake components copy and gen doc # 2025-03-02 ZhaoCake Add MkDist_Strip +# 2026-06-10 CYFS Copy shared hal-sdk package libraries for dist import os @@ -159,6 +160,98 @@ def bsp_update_kconfig_library(dist_dir): line = line.replace('../libraries', 'libraries') f.write(line) +def _same_path(path_a, path_b): + return os.path.normcase(os.path.abspath(path_a)) == os.path.normcase(os.path.abspath(path_b)) + +def _get_existing_libraries_path(root): + exact_path = os.path.join(root, 'libraries') + if os.path.isdir(exact_path): + return exact_path + + try: + for name in os.listdir(root): + path = os.path.join(root, name) + if name.lower() == 'libraries' and os.path.isdir(path): + return path + except OSError: + pass + + return None + +def _is_rt_thread_bsp_dir(path): + parent = os.path.dirname(path) + return ( + os.path.basename(path).lower() == 'bsp' + and os.path.isdir(os.path.join(parent, 'bsp')) + and os.path.isfile(os.path.join(parent, 'include', 'rtdef.h')) + ) + +def _find_hal_sdk_libraries_path(bsp_root): + current = os.path.abspath(bsp_root) + + while True: + libraries_path = _get_existing_libraries_path(current) + if libraries_path: + return libraries_path + + if _is_rt_thread_bsp_dir(current): + return None + + parent = os.path.dirname(current) + if _same_path(parent, current): + return None + + current = parent + +def _is_hal_sdk_package_bridge(package_path): + if os.path.isdir(os.path.join(package_path, '.git')): + return False + + sconscript_path = os.path.join(package_path, 'SConscript') + if not os.path.isfile(sconscript_path): + return False + + try: + with open(sconscript_path, 'r') as f: + content = f.read() + return ( + 'hal-sdk package source not found' in content + and ( + 'source_candidates' in content + or '_find_hal_sdk_libraries_path' in content + or 'libraries_path_prefix' in content + ) + ) + except Exception: + return False + +def bsp_copy_hal_sdk_package_libraries(bsp_root, dist_dir): + packages_dir = os.path.join(dist_dir, 'packages') + if not os.path.isdir(packages_dir): + return + + libraries_path = _find_hal_sdk_libraries_path(bsp_root) + if not libraries_path: + return + + copied = False + for package_name in os.listdir(packages_dir): + package_path = os.path.join(packages_dir, package_name) + if not os.path.isdir(package_path): + continue + if not _is_hal_sdk_package_bridge(package_path): + continue + + source_path = os.path.join(libraries_path, package_name) + if not os.path.isdir(source_path): + print('warning: hal-sdk package library not found: %s' % source_path) + continue + + if not copied: + print('=> hal-sdk package libraries') + copied = True + bsp_copy_files(source_path, os.path.join(dist_dir, 'libraries', package_name)) + def zip_dist(dist_dir, dist_name): import zipfile @@ -194,6 +287,8 @@ def MkDist(program, BSP_ROOT, RTT_ROOT, Env, project_name, project_path): dist_handle = Env['dist_handle'] dist_handle(BSP_ROOT, dist_dir) + bsp_copy_hal_sdk_package_libraries(BSP_ROOT, dist_dir) + # copy tools directory print('=> components') do_copy_folder(os.path.join(RTT_ROOT, 'components'), os.path.join(rtt_dir_path, 'components')) @@ -336,4 +431,4 @@ def MkDist_Strip(program, BSP_ROOT, RTT_ROOT, env, project_name, project_path=No if project_path is None: zip_dist(dist_dir, project_name) print("Distribution package created: {}.zip".format(dist_dir)) - print('=> Distribution stripped successfully') \ No newline at end of file + print('=> Distribution stripped successfully')