Browse Source

[bsp/stm32] improve build output.

guozhanxin 3 years ago
parent
commit
921247b420
87 changed files with 1154 additions and 209 deletions
  1. 13 2
      bsp/stm32/libraries/templates/stm32f0xx/SConstruct
  2. 13 2
      bsp/stm32/libraries/templates/stm32f10x/SConstruct
  3. 13 2
      bsp/stm32/libraries/templates/stm32f2xx/SConstruct
  4. 13 2
      bsp/stm32/libraries/templates/stm32f3xx/SConstruct
  5. 13 2
      bsp/stm32/libraries/templates/stm32f4xx/SConstruct
  6. 13 2
      bsp/stm32/libraries/templates/stm32f7xx/SConstruct
  7. 14 3
      bsp/stm32/libraries/templates/stm32h7xx/SConstruct
  8. 13 2
      bsp/stm32/libraries/templates/stm32l1xx/SConstruct
  9. 13 2
      bsp/stm32/libraries/templates/stm32l4xx/SConstruct
  10. 13 2
      bsp/stm32/libraries/templates/stm32l5xx/SConstruct
  11. 13 2
      bsp/stm32/libraries/templates/stm32mp1xx/SConstruct
  12. 13 2
      bsp/stm32/libraries/templates/stm32wbxx/SConstruct
  13. 14 3
      bsp/stm32/stm32f072-st-nucleo/SConstruct
  14. 13 2
      bsp/stm32/stm32f091-st-nucleo/SConstruct
  15. 13 2
      bsp/stm32/stm32f103-atk-nano/SConstruct
  16. 13 2
      bsp/stm32/stm32f103-atk-warshipv3/SConstruct
  17. 13 2
      bsp/stm32/stm32f103-blue-pill/SConstruct
  18. 15 4
      bsp/stm32/stm32f103-dofly-M3S/SConstruct
  19. 14 3
      bsp/stm32/stm32f103-dofly-lyc8/SConstruct
  20. 13 2
      bsp/stm32/stm32f103-fire-arbitrary/SConstruct
  21. 13 2
      bsp/stm32/stm32f103-gizwits-gokitv21/SConstruct
  22. 13 2
      bsp/stm32/stm32f103-hw100k-ibox/SConstruct
  23. 13 2
      bsp/stm32/stm32f103-onenet-nbiot/SConstruct
  24. 13 2
      bsp/stm32/stm32f103-yf-ufun/SConstruct
  25. 13 2
      bsp/stm32/stm32f107-uc-eval/SConstruct
  26. 13 2
      bsp/stm32/stm32f207-st-nucleo/SConstruct
  27. 13 2
      bsp/stm32/stm32f302-st-nucleo/SConstruct
  28. 13 2
      bsp/stm32/stm32f401-st-nucleo/SConstruct
  29. 14 3
      bsp/stm32/stm32f405-smdz-breadfruit/SConstruct
  30. 13 2
      bsp/stm32/stm32f407-armfly-v5/SConstruct
  31. 13 2
      bsp/stm32/stm32f407-atk-explorer/SConstruct
  32. 13 2
      bsp/stm32/stm32f407-robomaster-c/SConstruct
  33. 15 4
      bsp/stm32/stm32f407-st-discovery/SConstruct
  34. 15 4
      bsp/stm32/stm32f410-st-nucleo/SConstruct
  35. 13 2
      bsp/stm32/stm32f411-atk-nano/SConstruct
  36. 15 4
      bsp/stm32/stm32f411-st-nucleo/SConstruct
  37. 15 4
      bsp/stm32/stm32f411-weact-MiniF4/SConstruct
  38. 13 2
      bsp/stm32/stm32f412-st-nucleo/SConstruct
  39. 13 2
      bsp/stm32/stm32f413-st-nucleo/SConstruct
  40. 13 2
      bsp/stm32/stm32f427-robomaster-a/SConstruct
  41. 13 2
      bsp/stm32/stm32f429-armfly-v6/SConstruct
  42. 13 2
      bsp/stm32/stm32f429-atk-apollo/SConstruct
  43. 13 2
      bsp/stm32/stm32f429-fire-challenger/SConstruct
  44. 15 4
      bsp/stm32/stm32f429-st-disco/SConstruct
  45. 13 2
      bsp/stm32/stm32f446-st-nucleo/SConstruct
  46. 14 6
      bsp/stm32/stm32f469-st-disco/SConstruct
  47. 13 2
      bsp/stm32/stm32f746-st-disco/SConstruct
  48. 13 2
      bsp/stm32/stm32f746-st-nucleo/SConstruct
  49. 13 2
      bsp/stm32/stm32f767-atk-apollo/SConstruct
  50. 13 2
      bsp/stm32/stm32f767-fire-challenger-v1/SConstruct
  51. 13 2
      bsp/stm32/stm32f767-st-nucleo/SConstruct
  52. 13 2
      bsp/stm32/stm32f769-st-disco/SConstruct
  53. 13 2
      bsp/stm32/stm32g070-st-nucleo/SConstruct
  54. 13 2
      bsp/stm32/stm32g071-st-nucleo/SConstruct
  55. 13 2
      bsp/stm32/stm32g431-st-nucleo/SConstruct
  56. 13 2
      bsp/stm32/stm32g474-st-nucleo/SConstruct
  57. 14 3
      bsp/stm32/stm32h743-armfly-V7/SConstruct
  58. 13 2
      bsp/stm32/stm32h743-atk-apollo/SConstruct
  59. 13 2
      bsp/stm32/stm32h743-openmv-h7plus/SConstruct
  60. 14 3
      bsp/stm32/stm32h743-st-nucleo/SConstruct
  61. 14 3
      bsp/stm32/stm32h747-st-discovery/SConstruct
  62. 14 3
      bsp/stm32/stm32h750-armfly-h7-tool/SConstruct
  63. 14 3
      bsp/stm32/stm32h750-artpi-h750/SConstruct
  64. 14 3
      bsp/stm32/stm32l010-st-nucleo/SConstruct
  65. 14 3
      bsp/stm32/stm32l053-st-nucleo/SConstruct
  66. 13 2
      bsp/stm32/stm32l412-st-nucleo/SConstruct
  67. 13 2
      bsp/stm32/stm32l431-BearPi/SConstruct
  68. 13 2
      bsp/stm32/stm32l432-st-nucleo/SConstruct
  69. 13 2
      bsp/stm32/stm32l433-ali-startkit/SConstruct
  70. 13 2
      bsp/stm32/stm32l433-st-nucleo/SConstruct
  71. 13 2
      bsp/stm32/stm32l452-st-nucleo/SConstruct
  72. 12 3
      bsp/stm32/stm32l475-atk-pandora/SConstruct
  73. 4 3
      bsp/stm32/stm32l475-atk-pandora/board/SConscript
  74. 15 4
      bsp/stm32/stm32l475-st-discovery/SConstruct
  75. 13 2
      bsp/stm32/stm32l476-st-nucleo/SConstruct
  76. 13 2
      bsp/stm32/stm32l496-ali-developer/SConstruct
  77. 13 2
      bsp/stm32/stm32l496-st-nucleo/SConstruct
  78. 14 2
      bsp/stm32/stm32l4r5-st-nucleo/SConstruct
  79. 15 4
      bsp/stm32/stm32l4r9-st-eval/SConstruct
  80. 15 4
      bsp/stm32/stm32l4r9-st-sensortile-box/SConstruct
  81. 13 2
      bsp/stm32/stm32l552-st-nucleo/SConstruct
  82. 13 2
      bsp/stm32/stm32mp157a-st-discovery/SConstruct
  83. 13 2
      bsp/stm32/stm32mp157a-st-ev1/SConstruct
  84. 13 2
      bsp/stm32/stm32u575-st-nucleo/SConstruct
  85. 13 2
      bsp/stm32/stm32wb55-st-nucleo/SConstruct
  86. 14 2
      bsp/stm32/stm32wl55-st-nucleo/SConstruct
  87. 14 2
      bsp/stm32/stm32wle5-yizhilian-lm401/SConstruct

+ 13 - 2
bsp/stm32/libraries/templates/stm32f0xx/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F0xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/libraries/templates/stm32f10x/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F1xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/libraries/templates/stm32f2xx/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F2xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/libraries/templates/stm32f3xx/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F3xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/libraries/templates/stm32f4xx/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/libraries/templates/stm32f7xx/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F7xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 14 - 3
bsp/stm32/libraries/templates/stm32h7xx/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32H7xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
-# include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+bsp_vdir = 'build'
 
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
+
+# include drivers
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/libraries/templates/stm32l1xx/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32L1xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/libraries/templates/stm32l4xx/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32L4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/libraries/templates/stm32l5xx/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32L5xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/libraries/templates/stm32mp1xx/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32MPxx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/libraries/templates/stm32wbxx/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32WBxx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 14 - 3
bsp/stm32/stm32f072-st-nucleo/SConstruct

@@ -15,7 +15,7 @@ except:
     print(RTT_ROOT)
     exit(-1)
 
-TARGET = 'rt-thread_acm32f030.' + rtconfig.TARGET_EXT
+TARGET = 'rt-thread.' + rtconfig.TARGET_EXT
 
 DefaultEnvironment(tools=[])
 env = Environment(tools = ['mingw'],
@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F0xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f091-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F0xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f103-atk-nano/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F1xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f103-atk-warshipv3/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F1xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f103-blue-pill/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F1xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 15 - 4
bsp/stm32/stm32f103-dofly-M3S/SConstruct

@@ -15,7 +15,7 @@ except:
     print(RTT_ROOT)
     exit(-1)
 
-TARGET = 'rtthread.' + rtconfig.TARGET_EXT
+TARGET = 'rt-thread.' + rtconfig.TARGET_EXT
 
 DefaultEnvironment(tools=[])
 env = Environment(tools = ['mingw'],
@@ -29,7 +29,7 @@ env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
 if rtconfig.PLATFORM == 'iar':
     env.Replace(CCCOM = ['$CC $CFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
     env.Replace(ARFLAGS = [''])
-    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map')
+    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rt-thread.map')
 
 Export('RTT_ROOT')
 Export('rtconfig')
@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F1xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 14 - 3
bsp/stm32/stm32f103-dofly-lyc8/SConstruct

@@ -29,7 +29,7 @@ env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
 if rtconfig.PLATFORM == 'iar':
     env.Replace(CCCOM = ['$CC $CFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
     env.Replace(ARFLAGS = [''])
-    env.Replace(LINKCOM = ['$LINK $SOURCES $LINKFLAGS -o $TARGET --map rt-thread.map'])
+    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rt-thread.map')
 
 Export('RTT_ROOT')
 Export('rtconfig')
@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F1xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f103-fire-arbitrary/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F1xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f103-gizwits-gokitv21/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F1xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f103-hw100k-ibox/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F1xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f103-onenet-nbiot/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F1xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f103-yf-ufun/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F1xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f107-uc-eval/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F1xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f207-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F2xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f302-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F3xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f401-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 14 - 3
bsp/stm32/stm32f405-smdz-breadfruit/SConstruct

@@ -29,7 +29,7 @@ env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
 if rtconfig.PLATFORM == 'iar':
     env.Replace(CCCOM = ['$CC $CFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
     env.Replace(ARFLAGS = [''])
-    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map')
+    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rt-thread.map')
 
 Export('RTT_ROOT')
 Export('rtconfig')
@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f407-armfly-v5/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f407-atk-explorer/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f407-robomaster-c/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 15 - 4
bsp/stm32/stm32f407-st-discovery/SConstruct

@@ -15,7 +15,7 @@ except:
     print(RTT_ROOT)
     exit(-1)
 
-TARGET = 'rtthread.' + rtconfig.TARGET_EXT
+TARGET = 'rt-thread.' + rtconfig.TARGET_EXT
 
 DefaultEnvironment(tools=[])
 env = Environment(tools = ['mingw'],
@@ -29,7 +29,7 @@ env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
 if rtconfig.PLATFORM == 'iar':
     env.Replace(CCCOM = ['$CC $CFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
     env.Replace(ARFLAGS = [''])
-    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map')
+    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rt-thread.map')
 
 Export('RTT_ROOT')
 Export('rtconfig')
@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 15 - 4
bsp/stm32/stm32f410-st-nucleo/SConstruct

@@ -15,7 +15,7 @@ except:
     print(RTT_ROOT)
     exit(-1)
 
-TARGET = 'rtthread.' + rtconfig.TARGET_EXT
+TARGET = 'rt-thread.' + rtconfig.TARGET_EXT
 
 DefaultEnvironment(tools=[])
 env = Environment(tools = ['mingw'],
@@ -29,7 +29,7 @@ env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
 if rtconfig.PLATFORM == 'iar':
     env.Replace(CCCOM = ['$CC $CFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
     env.Replace(ARFLAGS = [''])
-    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map')
+    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rt-thread.map')
 
 Export('RTT_ROOT')
 Export('rtconfig')
@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f411-atk-nano/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 15 - 4
bsp/stm32/stm32f411-st-nucleo/SConstruct

@@ -15,7 +15,7 @@ except:
     print(RTT_ROOT)
     exit(-1)
 
-TARGET = 'rtthread.' + rtconfig.TARGET_EXT
+TARGET = 'rt-thread.' + rtconfig.TARGET_EXT
 
 DefaultEnvironment(tools=[])
 env = Environment(tools = ['mingw'],
@@ -29,7 +29,7 @@ env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
 if rtconfig.PLATFORM == 'iar':
     env.Replace(CCCOM = ['$CC $CFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
     env.Replace(ARFLAGS = [''])
-    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map')
+    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rt-thread.map')
 
 Export('RTT_ROOT')
 Export('rtconfig')
@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 15 - 4
bsp/stm32/stm32f411-weact-MiniF4/SConstruct

@@ -15,7 +15,7 @@ except:
     print(RTT_ROOT)
     exit(-1)
 
-TARGET = 'rtthread.' + rtconfig.TARGET_EXT
+TARGET = 'rt-thread.' + rtconfig.TARGET_EXT
 
 DefaultEnvironment(tools=[])
 env = Environment(tools = ['mingw'],
@@ -29,7 +29,7 @@ env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
 if rtconfig.PLATFORM == 'iar':
     env.Replace(CCCOM = ['$CC $CFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
     env.Replace(ARFLAGS = [''])
-    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map')
+    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rt-thread.map')
 
 Export('RTT_ROOT')
 Export('rtconfig')
@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f412-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f413-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f427-robomaster-a/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f429-armfly-v6/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f429-atk-apollo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f429-fire-challenger/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 15 - 4
bsp/stm32/stm32f429-st-disco/SConstruct

@@ -15,7 +15,7 @@ except:
     print(RTT_ROOT)
     exit(-1)
 
-TARGET = 'rtthread.' + rtconfig.TARGET_EXT
+TARGET = 'rt-thread.' + rtconfig.TARGET_EXT
 
 DefaultEnvironment(tools=[])
 env = Environment(tools = ['mingw'],
@@ -29,7 +29,7 @@ env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
 if rtconfig.PLATFORM == 'iar':
     env.Replace(CCCOM = ['$CC $CFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
     env.Replace(ARFLAGS = [''])
-    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map')
+    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rt-thread.map')
 
 Export('RTT_ROOT')
 Export('rtconfig')
@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f446-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 14 - 6
bsp/stm32/stm32f469-st-disco/SConstruct

@@ -15,7 +15,7 @@ except:
     print(RTT_ROOT)
     exit(-1)
 
-TARGET = 'rtthread.' + rtconfig.TARGET_EXT
+TARGET = 'rt-thread.' + rtconfig.TARGET_EXT
 
 DefaultEnvironment(tools=[])
 env = Environment(tools = ['mingw'],
@@ -29,7 +29,7 @@ env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
 if rtconfig.PLATFORM == 'iar':
     env.Replace(CCCOM = ['$CC $CFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
     env.Replace(ARFLAGS = [''])
-    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map')
+    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rt-thread.map')
 
 Export('RTT_ROOT')
 Export('rtconfig')
@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,14 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
 
-# include ports
-objs.extend(SConscript(os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')))
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f746-st-disco/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F7xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f746-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F7xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f767-atk-apollo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F7xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f767-fire-challenger-v1/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F7xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f767-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F7xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32f769-st-disco/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32F7xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32g070-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32G0xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32g071-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32G0xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32g431-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32G4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32g474-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32G4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 14 - 3
bsp/stm32/stm32h743-armfly-V7/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32H7xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
-# include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+bsp_vdir = 'build'
 
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
+
+# include drivers
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32h743-atk-apollo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32H7xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32h743-openmv-h7plus/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32H7xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 14 - 3
bsp/stm32/stm32h743-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32H7xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
-# include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+bsp_vdir = 'build'
 
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
+
+# include drivers
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 14 - 3
bsp/stm32/stm32h747-st-discovery/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32H7xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
-# include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+bsp_vdir = 'build'
 
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
+
+# include drivers
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 14 - 3
bsp/stm32/stm32h750-armfly-h7-tool/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32H7xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
-# include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+bsp_vdir = 'build'
 
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
+
+# include drivers
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 14 - 3
bsp/stm32/stm32h750-artpi-h750/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32H7xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
-# include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+bsp_vdir = 'build'
 
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
+
+# include drivers
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 14 - 3
bsp/stm32/stm32l010-st-nucleo/SConstruct

@@ -41,20 +41,31 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
 # prepare building environment
 objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 
-stm32_library = 'STM32L0xx_HAL'
+stm32_library = 'STM32L4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 14 - 3
bsp/stm32/stm32l053-st-nucleo/SConstruct

@@ -41,20 +41,31 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
 # prepare building environment
 objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 
-stm32_library = 'STM32L0xx_HAL'
+stm32_library = 'STM32L4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32l412-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32L4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32l431-BearPi/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32L4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32l432-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32L4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32l433-ali-startkit/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32L4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32l433-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32L4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32l452-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32L4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 12 - 3
bsp/stm32/stm32l475-atk-pandora/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,13 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32L4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
 
-objs.extend(SConscript(os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')))
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 4 - 3
bsp/stm32/stm32l475-atk-pandora/board/SConscript

@@ -17,7 +17,7 @@ if GetDepend(['BSP_USING_KEY']):
 
 if GetDepend(['BSP_USING_QSPI_FLASH']):
     src += Glob('ports/drv_qspi_flash.c')
-    
+
 if GetDepend(['BSP_USING_SDCARD']):
     src += Glob('ports/drv_sdcard.c')
 
@@ -39,7 +39,7 @@ path += [cwd + '/CubeMX_Config/Inc']
 
 if GetDepend(['BSP_USING_AUDIO']):
     path += [cwd + '/ports/audio']
-    
+
 startup_path_prefix = SDK_LIB
 
 if rtconfig.CROSS_TOOL == 'gcc':
@@ -49,7 +49,8 @@ elif rtconfig.CROSS_TOOL == 'keil':
 elif rtconfig.CROSS_TOOL == 'iar':
     src += [startup_path_prefix + '/STM32L4xx_HAL/CMSIS/Device/ST/STM32L4xx/Source/Templates/iar/startup_stm32l475xx.s']
 
-CPPDEFINES = ['STM32L475xx'] 
+CPPDEFINES = ['STM32L475xx']
 group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES)
 
 Return('group')
+

+ 15 - 4
bsp/stm32/stm32l475-st-discovery/SConstruct

@@ -15,7 +15,7 @@ except:
     print(RTT_ROOT)
     exit(-1)
 
-TARGET = 'rtthread.' + rtconfig.TARGET_EXT
+TARGET = 'rt-thread.' + rtconfig.TARGET_EXT
 
 DefaultEnvironment(tools=[])
 env = Environment(tools = ['mingw'],
@@ -29,7 +29,7 @@ env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
 if rtconfig.PLATFORM == 'iar':
     env.Replace(CCCOM = ['$CC $CFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
     env.Replace(ARFLAGS = [''])
-    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map')
+    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rt-thread.map')
 
 Export('RTT_ROOT')
 Export('rtconfig')
@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32L4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32l476-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32L4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32l496-ali-developer/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32L4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32l496-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32L4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 14 - 2
bsp/stm32/stm32l4r5-st-nucleo/SConstruct

@@ -17,6 +17,7 @@ except:
 
 TARGET = 'rt-thread.' + rtconfig.TARGET_EXT
 
+DefaultEnvironment(tools=[])
 env = Environment(tools = ['mingw'],
     AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
     CC = rtconfig.CC, CFLAGS = rtconfig.CFLAGS,
@@ -40,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -49,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32L4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 15 - 4
bsp/stm32/stm32l4r9-st-eval/SConstruct

@@ -15,7 +15,7 @@ except:
     print(RTT_ROOT)
     exit(-1)
 
-TARGET = 'rtthread.' + rtconfig.TARGET_EXT
+TARGET = 'rt-thread.' + rtconfig.TARGET_EXT
 
 DefaultEnvironment(tools=[])
 env = Environment(tools = ['mingw'],
@@ -29,7 +29,7 @@ env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
 if rtconfig.PLATFORM == 'iar':
     env.Replace(CCCOM = ['$CC $CFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
     env.Replace(ARFLAGS = [''])
-    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map')
+    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rt-thread.map')
 
 Export('RTT_ROOT')
 Export('rtconfig')
@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32L4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 15 - 4
bsp/stm32/stm32l4r9-st-sensortile-box/SConstruct

@@ -15,7 +15,7 @@ except:
     print(RTT_ROOT)
     exit(-1)
 
-TARGET = 'rtthread.' + rtconfig.TARGET_EXT
+TARGET = 'rt-thread.' + rtconfig.TARGET_EXT
 
 DefaultEnvironment(tools=[])
 env = Environment(tools = ['mingw'],
@@ -29,7 +29,7 @@ env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
 if rtconfig.PLATFORM == 'iar':
     env.Replace(CCCOM = ['$CC $CFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
     env.Replace(ARFLAGS = [''])
-    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map')
+    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rt-thread.map')
 
 Export('RTT_ROOT')
 Export('rtconfig')
@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32L4xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32l552-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32L5xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32mp157a-st-discovery/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32MPxx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32mp157a-st-ev1/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32MPxx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32u575-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32U5xx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 13 - 2
bsp/stm32/stm32wb55-st-nucleo/SConstruct

@@ -41,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -50,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32WBxx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 14 - 2
bsp/stm32/stm32wl55-st-nucleo/SConstruct

@@ -17,6 +17,7 @@ except:
 
 TARGET = 'rt-thread.' + rtconfig.TARGET_EXT
 
+DefaultEnvironment(tools=[])
 env = Environment(tools = ['mingw'],
     AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
     CC = rtconfig.CC, CFLAGS = rtconfig.CFLAGS,
@@ -40,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -49,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32WLxx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 14 - 2
bsp/stm32/stm32wle5-yizhilian-lm401/SConstruct

@@ -17,6 +17,7 @@ except:
 
 TARGET = 'rt-thread.' + rtconfig.TARGET_EXT
 
+DefaultEnvironment(tools=[])
 env = Environment(tools = ['mingw'],
     AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
     CC = rtconfig.CC, CFLAGS = rtconfig.CFLAGS,
@@ -40,6 +41,9 @@ if os.path.exists(SDK_ROOT + '/libraries'):
 else:
     libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
 
+from utils import _make_path_relative
+libraries_path_prefix = _make_path_relative(os.path.abspath('./'), libraries_path_prefix)
+
 SDK_LIB = libraries_path_prefix
 Export('SDK_LIB')
 
@@ -49,11 +53,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 stm32_library = 'STM32WLxx_HAL'
 rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
+bsp_vdir = 'build'
+
 # include libraries
-objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/'+ stm32_library, duplicate=0))
 
 # include drivers
-objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),
+                        variant_dir=bsp_vdir + '/libraries/HAL_Drivers', duplicate=0))
+
+bsp_port_script = os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')
+if os.path.isfile(bsp_port_script):
+    objs.extend(SConscript(bsp_port_script, variant_dir=bsp_vdir + '/board/ports', duplicate=0))
 
 # make a building
 DoBuilding(TARGET, objs)