1
0
Эх сурвалжийг харах

[bsp][stm32] add scons --dist function

SummerGift 6 жил өмнө
parent
commit
968110ffd6
26 өөрчлөгдсөн 246 нэмэгдсэн , 75 устгасан
  1. 11 3
      bsp/stm32/libraries/templates/stm32f10x/SConstruct
  2. 14 9
      bsp/stm32/libraries/templates/stm32f10x/board/SConscript
  3. 3 0
      bsp/stm32/libraries/templates/stm32f10x/rtconfig.py
  4. 11 3
      bsp/stm32/libraries/templates/stm32f4xx/SConstruct
  5. 12 6
      bsp/stm32/libraries/templates/stm32f4xx/board/SConscript
  6. 3 0
      bsp/stm32/libraries/templates/stm32f4xx/rtconfig.py
  7. 11 3
      bsp/stm32/libraries/templates/stm32l4xx/SConstruct
  8. 12 6
      bsp/stm32/libraries/templates/stm32l4xx/board/SConscript
  9. 3 0
      bsp/stm32/libraries/templates/stm32l4xx/rtconfig.py
  10. 11 3
      bsp/stm32/stm32f103-atk-nano/SConstruct
  11. 12 5
      bsp/stm32/stm32f103-atk-nano/board/SConscript
  12. 3 0
      bsp/stm32/stm32f103-atk-nano/rtconfig.py
  13. 11 3
      bsp/stm32/stm32f103-fire-arbitrary/SConstruct
  14. 11 4
      bsp/stm32/stm32f103-fire-arbitrary/board/SConscript
  15. 3 0
      bsp/stm32/stm32f103-fire-arbitrary/rtconfig.py
  16. 11 3
      bsp/stm32/stm32f407-atk-explorer/SConstruct
  17. 11 5
      bsp/stm32/stm32f407-atk-explorer/board/SConscript
  18. 3 0
      bsp/stm32/stm32f407-atk-explorer/rtconfig.py
  19. 11 3
      bsp/stm32/stm32f429-atk-apollo/SConstruct
  20. 10 8
      bsp/stm32/stm32f429-atk-apollo/board/SConscript
  21. 3 0
      bsp/stm32/stm32f429-atk-apollo/rtconfig.py
  22. 11 3
      bsp/stm32/stm32f429-fire-challenger/SConstruct
  23. 11 8
      bsp/stm32/stm32f429-fire-challenger/board/SConscript
  24. 3 0
      bsp/stm32/stm32f429-fire-challenger/rtconfig.py
  25. 3 0
      tools/building.py
  26. 38 0
      tools/mkdist.py

+ 11 - 3
bsp/stm32/libraries/templates/stm32f10x/SConstruct

@@ -38,11 +38,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 SDK_ROOT = os.path.abspath('./')
 bsp_vdir = 'build'
 
-# include drivers
-objs.extend(SConscript(os.path.dirname(SDK_ROOT) + '/libraries/STM32F1xx_HAL/SConscript'))
+if os.path.exists(SDK_ROOT + '/libraries'):
+    libraries_path_prefix = SDK_ROOT + '/libraries/'
+else:
+    libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries/'
+
+stm32_library = 'STM32F1xx_HAL'
+rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
 # include libraries
-objs.extend(SConscript(os.path.dirname(SDK_ROOT) + '/libraries/HAL_Drivers/SConscript'))
+objs.extend(SConscript(libraries_path_prefix + stm32_library + '/SConscript'))
+
+# include drivers
+objs.extend(SConscript(libraries_path_prefix + '/HAL_Drivers/SConscript'))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 14 - 9
bsp/stm32/libraries/templates/stm32f10x/board/SConscript

@@ -1,23 +1,28 @@
+import os
 import rtconfig
 from building import *
 
 cwd = GetCurrentDir()
 
-# add the general drivers.
-src = Glob('board.c')
+# add general drivers
+src =  Glob('board.c')
 src += Glob('CubeMX_Config/Src/stm32f1xx_hal_msp.c')
 
-path = [cwd]
+path =  [cwd]
 path += [cwd + '/CubeMX_Config/Inc']
 
+if os.path.exists(cwd + '/../libraries'):
+    startup_path_prefix = cwd + '/../libraries'
+else:
+    startup_path_prefix = cwd + '/../../libraries'
+
 if rtconfig.CROSS_TOOL == 'gcc':
-    src += [cwd + '/../../libraries/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103xb.s']
+    src += [startup_path_prefix + '/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103xb.s']
 elif rtconfig.CROSS_TOOL == 'keil':
-    src += [cwd + '/../../libraries/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/arm/startup_stm32f103xb.s']
+    src += [startup_path_prefix + '/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/arm/startup_stm32f103xb.s']
 elif rtconfig.CROSS_TOOL == 'iar':
-    src += [cwd + '/../../libraries/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/iar/startup_stm32f103xb.s']
-
+    src += [startup_path_prefix + '/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/iar/startup_stm32f103xb.s']
+    
 CPPDEFINES = ['STM32F103xB']
 group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES)
-
-Return('group')
+Return('group')

+ 3 - 0
bsp/stm32/libraries/templates/stm32f10x/rtconfig.py

@@ -5,6 +5,9 @@ ARCH='arm'
 CPU='cortex-m3'
 CROSS_TOOL='gcc'
 
+# bsp lib config
+BSP_LIBRARY_TYPE = None
+
 if os.getenv('RTT_CC'):
     CROSS_TOOL = os.getenv('RTT_CC')
 if os.getenv('RTT_ROOT'):

+ 11 - 3
bsp/stm32/libraries/templates/stm32f4xx/SConstruct

@@ -37,11 +37,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 
 SDK_ROOT = os.path.abspath('./')
 
-# include drivers
-objs.extend(SConscript(os.path.dirname(SDK_ROOT) + '/libraries/STM32F4xx_HAL/SConscript'))
+if os.path.exists(SDK_ROOT + '/libraries'):
+    libraries_path_prefix = SDK_ROOT + '/libraries/'
+else:
+    libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries/'
+
+stm32_library = 'STM32F4xx_HAL'
+rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
 # include libraries
-objs.extend(SConscript(os.path.dirname(SDK_ROOT) + '/libraries/HAL_Drivers/SConscript'))
+objs.extend(SConscript(libraries_path_prefix + stm32_library + '/SConscript'))
+
+# include drivers
+objs.extend(SConscript(libraries_path_prefix + '/HAL_Drivers/SConscript'))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 12 - 6
bsp/stm32/libraries/templates/stm32f4xx/board/SConscript

@@ -1,21 +1,27 @@
+import os
 import rtconfig
 from building import *
 
 cwd = GetCurrentDir()
 
-# add the general drivers.
-src = Glob('board.c')
+# add general drivers
+src =  Glob('board.c')
 src += Glob('CubeMX_Config/Src/stm32f4xx_hal_msp.c')
 
-path = [cwd]
+path =  [cwd]
 path += [cwd + '/CubeMX_Config/Inc']
 
+if os.path.exists(cwd + '/../libraries'):
+    startup_path_prefix = cwd + '/../libraries'
+else:
+    startup_path_prefix = cwd + '/../../libraries'
+
 if rtconfig.CROSS_TOOL == 'gcc':
-    src += [cwd + '/../../libraries/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f407xx.s']
+    src += [startup_path_prefix + '/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f407xx.s']
 elif rtconfig.CROSS_TOOL == 'keil':
-    src += [cwd + '/../../libraries/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm/startup_stm32f407xx.s']
+    src += [startup_path_prefix + '/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm/startup_stm32f407xx.s']
 elif rtconfig.CROSS_TOOL == 'iar':
-    src += [cwd + '/../../libraries/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/iar/startup_stm32f407xx.s']
+    src += [startup_path_prefix + '/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/iar/startup_stm32f407xx.s']
 
 CPPDEFINES = ['STM32F407xx']
 group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES)

+ 3 - 0
bsp/stm32/libraries/templates/stm32f4xx/rtconfig.py

@@ -5,6 +5,9 @@ ARCH='arm'
 CPU='cortex-m4'
 CROSS_TOOL='gcc'
 
+# bsp lib config
+BSP_LIBRARY_TYPE = None
+
 if os.getenv('RTT_CC'):
     CROSS_TOOL = os.getenv('RTT_CC')
 if os.getenv('RTT_ROOT'):

+ 11 - 3
bsp/stm32/libraries/templates/stm32l4xx/SConstruct

@@ -37,11 +37,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 
 SDK_ROOT = os.path.abspath('./')
 
-# include drivers
-objs.extend(SConscript(os.path.dirname(SDK_ROOT) + '/libraries/STM32L4xx_HAL/SConscript'))
+if os.path.exists(SDK_ROOT + '/libraries'):
+    libraries_path_prefix = SDK_ROOT + '/libraries/'
+else:
+    libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries/'
+
+stm32_library = 'STM32FL4xx_HAL'
+rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
 # include libraries
-objs.extend(SConscript(os.path.dirname(SDK_ROOT) + '/libraries/HAL_Drivers/SConscript'))
+objs.extend(SConscript(libraries_path_prefix + stm32_library + '/SConscript'))
+
+# include drivers
+objs.extend(SConscript(libraries_path_prefix + '/HAL_Drivers/SConscript'))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 12 - 6
bsp/stm32/libraries/templates/stm32l4xx/board/SConscript

@@ -1,21 +1,27 @@
+import os
 import rtconfig
 from building import *
 
 cwd = GetCurrentDir()
 
-# add the general drivers.
-src = Glob('board.c')
+# add general drivers
+src =  Glob('board.c')
 src += Glob('CubeMX_Config/Src/stm32l4xx_hal_msp.c')
 
-path = [cwd]
+path =  [cwd]
 path += [cwd + '/CubeMX_Config/Inc']
 
+if os.path.exists(cwd + '/../libraries'):
+    startup_path_prefix = cwd + '/../libraries'
+else:
+    startup_path_prefix = cwd + '/../../libraries'
+
 if rtconfig.CROSS_TOOL == 'gcc':
-    src += [cwd + '/../../libraries/STM32L4xx_HAL/CMSIS/Device/ST/STM32L4xx/Source/Templates/gcc/startup_stm32l475xx.s']
+    src += [startup_path_prefix + '/STM32L4xx_HAL/CMSIS/Device/ST/STM32L4xx/Source/Templates/gcc/startup_stm32l475xx.s']
 elif rtconfig.CROSS_TOOL == 'keil':
-    src += [cwd + '/../../libraries/STM32L4xx_HAL/CMSIS/Device/ST/STM32L4xx/Source/Templates/arm/startup_stm32l475xx.s']
+    src += [startup_path_prefix + '/STM32L4xx_HAL/CMSIS/Device/ST/STM32L4xx/Source/Templates/arm/startup_stm32l475xx.s']
 elif rtconfig.CROSS_TOOL == 'iar':
-    src += [cwd + '/../../libraries/STM32L4xx_HAL/CMSIS/Device/ST/STM32L4xx/Source/Templates/iar/startup_stm32l475xx.s']
+    src += [startup_path_prefix + '/STM32L4xx_HAL/CMSIS/Device/ST/STM32L4xx/Source/Templates/iar/startup_stm32l475xx.s']
 
 CPPDEFINES = ['STM32L475xx']
 group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES)

+ 3 - 0
bsp/stm32/libraries/templates/stm32l4xx/rtconfig.py

@@ -5,6 +5,9 @@ ARCH='arm'
 CPU='cortex-m4'
 CROSS_TOOL='gcc'
 
+# bsp lib config
+BSP_LIBRARY_TYPE = None
+
 if os.getenv('RTT_CC'):
     CROSS_TOOL = os.getenv('RTT_CC')
 if os.getenv('RTT_ROOT'):

+ 11 - 3
bsp/stm32/stm32f103-atk-nano/SConstruct

@@ -38,11 +38,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 SDK_ROOT = os.path.abspath('./')
 bsp_vdir = 'build'
 
-# include drivers
-objs.extend(SConscript(os.path.dirname(SDK_ROOT) + '/libraries/STM32F1xx_HAL/SConscript'))
+if os.path.exists(SDK_ROOT + '/libraries'):
+    libraries_path_prefix = SDK_ROOT + '/libraries/'
+else:
+    libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries/'
+
+stm32_library = 'STM32F1xx_HAL'
+rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
 # include libraries
-objs.extend(SConscript(os.path.dirname(SDK_ROOT) + '/libraries/HAL_Drivers/SConscript'))
+objs.extend(SConscript(libraries_path_prefix + stm32_library + '/SConscript'))
+
+# include drivers
+objs.extend(SConscript(libraries_path_prefix + '/HAL_Drivers/SConscript'))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 12 - 5
bsp/stm32/stm32f103-atk-nano/board/SConscript

@@ -1,24 +1,31 @@
+import os
 import rtconfig
 from building import *
 
 cwd = GetCurrentDir()
 
-src = Glob('board.c')
+# add general drivers
+src =  Glob('board.c')
 src += Glob('CubeMX_Config/Src/stm32f1xx_hal_msp.c')
 
 if GetDepend(['BSP_USING_SPI_FLASH']):
     src += Glob('ports/spi_flash_init.c')
 
-path = [cwd]
+path =  [cwd]
 path += [cwd + '/CubeMX_Config/Inc']
 path += [cwd + '/ports']
 
+if os.path.exists(cwd + '/../libraries'):
+    startup_path_prefix = cwd + '/../libraries'
+else:
+    startup_path_prefix = cwd + '/../../libraries'
+
 if rtconfig.CROSS_TOOL == 'gcc':
-    src += [cwd + '/../../libraries/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103xb.s']
+    src += [startup_path_prefix + '/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103xb.s']
 elif rtconfig.CROSS_TOOL == 'keil':
-    src += [cwd + '/../../libraries/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/arm/startup_stm32f103xb.s']
+    src += [startup_path_prefix + '/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/arm/startup_stm32f103xb.s']
 elif rtconfig.CROSS_TOOL == 'iar':
-    src += [cwd + '/../../libraries/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/iar/startup_stm32f103xb.s']
+    src += [startup_path_prefix + '/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/iar/startup_stm32f103xb.s']
     
 CPPDEFINES = ['STM32F103xB']
 group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES)

+ 3 - 0
bsp/stm32/stm32f103-atk-nano/rtconfig.py

@@ -5,6 +5,9 @@ ARCH='arm'
 CPU='cortex-m3'
 CROSS_TOOL='gcc'
 
+# bsp lib config
+BSP_LIBRARY_TYPE = None
+
 if os.getenv('RTT_CC'):
     CROSS_TOOL = os.getenv('RTT_CC')
 if os.getenv('RTT_ROOT'):

+ 11 - 3
bsp/stm32/stm32f103-fire-arbitrary/SConstruct

@@ -38,11 +38,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 SDK_ROOT = os.path.abspath('./')
 bsp_vdir = 'build'
 
-# include drivers
-objs.extend(SConscript(os.path.dirname(SDK_ROOT) + '/libraries/STM32F1xx_HAL/SConscript'))
+if os.path.exists(SDK_ROOT + '/libraries'):
+    libraries_path_prefix = SDK_ROOT + '/libraries/'
+else:
+    libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries/'
+
+stm32_library = 'STM32F1xx_HAL'
+rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
 # include libraries
-objs.extend(SConscript(os.path.dirname(SDK_ROOT) + '/libraries/HAL_Drivers/SConscript'))
+objs.extend(SConscript(libraries_path_prefix + stm32_library + '/SConscript'))
+
+# include drivers
+objs.extend(SConscript(libraries_path_prefix + '/HAL_Drivers/SConscript'))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 11 - 4
bsp/stm32/stm32f103-fire-arbitrary/board/SConscript

@@ -1,9 +1,11 @@
+import os
 import rtconfig
 from building import *
 
 cwd = GetCurrentDir()
 
-src = Glob('board.c')
+# add general drivers
+src =  Glob('board.c')
 src += Glob('CubeMX_Config/Src/stm32f1xx_hal_msp.c')
 
 if GetDepend(['BSP_USING_ETH']):
@@ -16,12 +18,17 @@ path =  [cwd]
 path += [cwd + '/CubeMX_Config/Inc']
 path += [cwd + '/ports']
 
+if os.path.exists(cwd + '/../libraries'):
+    startup_path_prefix = cwd + '/../libraries'
+else:
+    startup_path_prefix = cwd + '/../../libraries'
+
 if rtconfig.CROSS_TOOL == 'gcc':
-    src += [cwd + '/../../libraries/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103xe.s']
+    src += [startup_path_prefix + '/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103xe.s']
 elif rtconfig.CROSS_TOOL == 'keil':
-    src += [cwd + '/../../libraries/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/arm/startup_stm32f103xe.s']
+    src += [startup_path_prefix + '/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/arm/startup_stm32f103xe.s']
 elif rtconfig.CROSS_TOOL == 'iar':
-    src += [cwd + '/../../libraries/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/iar/startup_stm32f103xe.s']
+    src += [startup_path_prefix + '/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/iar/startup_stm32f103xe.s']
     
 CPPDEFINES = ['STM32F103xE']
 group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES)

+ 3 - 0
bsp/stm32/stm32f103-fire-arbitrary/rtconfig.py

@@ -5,6 +5,9 @@ ARCH='arm'
 CPU='cortex-m3'
 CROSS_TOOL='gcc'
 
+# bsp lib config
+BSP_LIBRARY_TYPE = None
+
 if os.getenv('RTT_CC'):
     CROSS_TOOL = os.getenv('RTT_CC')
 if os.getenv('RTT_ROOT'):

+ 11 - 3
bsp/stm32/stm32f407-atk-explorer/SConstruct

@@ -37,11 +37,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 
 SDK_ROOT = os.path.abspath('./')
 
-# include drivers
-objs.extend(SConscript(os.path.dirname(SDK_ROOT) + '/libraries/STM32F4xx_HAL/SConscript'))
+if os.path.exists(SDK_ROOT + '/libraries'):
+    libraries_path_prefix = SDK_ROOT + '/libraries/'
+else:
+    libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries/'
+
+stm32_library = 'STM32F4xx_HAL'
+rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
 # include libraries
-objs.extend(SConscript(os.path.dirname(SDK_ROOT) + '/libraries/HAL_Drivers/SConscript'))
+objs.extend(SConscript(libraries_path_prefix + stm32_library + '/SConscript'))
+
+# include drivers
+objs.extend(SConscript(libraries_path_prefix + '/HAL_Drivers/SConscript'))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 11 - 5
bsp/stm32/stm32f407-atk-explorer/board/SConscript

@@ -1,10 +1,11 @@
+import os
 import rtconfig
 from building import *
 
 cwd = GetCurrentDir()
 
-# add the general drivers.
-src = Glob('board.c')
+# add general drivers
+src =  Glob('board.c')
 src += Glob('CubeMX_Config/Src/stm32f4xx_hal_msp.c')
 
 if GetDepend(['BSP_USING_ETH']):
@@ -17,12 +18,17 @@ path =  [cwd]
 path += [cwd + '/CubeMX_Config/Inc']
 path += [cwd + '/ports']
 
+if os.path.exists(cwd + '/../libraries'):
+    startup_path_prefix = cwd + '/../libraries'
+else:
+    startup_path_prefix = cwd + '/../../libraries'
+
 if rtconfig.CROSS_TOOL == 'gcc':
-    src += [cwd + '/../../libraries/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f407xx.s']
+    src += [startup_path_prefix + '/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f407xx.s']
 elif rtconfig.CROSS_TOOL == 'keil':
-    src += [cwd + '/../../libraries/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm/startup_stm32f407xx.s']
+    src += [startup_path_prefix + '/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm/startup_stm32f407xx.s']
 elif rtconfig.CROSS_TOOL == 'iar':
-    src += [cwd + '/../../libraries/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/iar/startup_stm32f407xx.s']
+    src += [startup_path_prefix + '/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/iar/startup_stm32f407xx.s']
 
 CPPDEFINES = ['STM32F407xx']
 group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES)

+ 3 - 0
bsp/stm32/stm32f407-atk-explorer/rtconfig.py

@@ -5,6 +5,9 @@ ARCH='arm'
 CPU='cortex-m4'
 CROSS_TOOL='gcc'
 
+# bsp lib config
+BSP_LIBRARY_TYPE = None
+
 if os.getenv('RTT_CC'):
     CROSS_TOOL = os.getenv('RTT_CC')
 if os.getenv('RTT_ROOT'):

+ 11 - 3
bsp/stm32/stm32f429-atk-apollo/SConstruct

@@ -37,11 +37,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 
 SDK_ROOT = os.path.abspath('./')
 
-# include drivers
-objs.extend(SConscript(os.path.dirname(SDK_ROOT) + '/libraries/STM32F4xx_HAL/SConscript'))
+if os.path.exists(SDK_ROOT + '/libraries'):
+    libraries_path_prefix = SDK_ROOT + '/libraries/'
+else:
+    libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries/'
+
+stm32_library = 'STM32F4xx_HAL'
+rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
 # include libraries
-objs.extend(SConscript(os.path.dirname(SDK_ROOT) + '/libraries/HAL_Drivers/SConscript'))
+objs.extend(SConscript(libraries_path_prefix + stm32_library + '/SConscript'))
+
+# include drivers
+objs.extend(SConscript(libraries_path_prefix + '/HAL_Drivers/SConscript'))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 10 - 8
bsp/stm32/stm32f429-atk-apollo/board/SConscript

@@ -1,9 +1,10 @@
+import os
 import rtconfig
 from building import *
 
 cwd = GetCurrentDir()
 
-# add the general drivers.
+# add general drivers
 src =  Glob('board.c')
 src += Glob('CubeMX_Config/Src/stm32f4xx_hal_msp.c')
 
@@ -16,17 +17,18 @@ if GetDepend(['BSP_USING_SPI_FLASH']):
 path =  [cwd]
 path += [cwd + '/CubeMX_Config/Inc']
 path += [cwd + '/ports']
-
-
-if GetDepend(['BSP_USING_SDRAM']):
-    path += [cwd + '/ports']
+    
+if os.path.exists(cwd + '/../libraries'):
+    startup_path_prefix = cwd + '/../libraries'
+else:
+    startup_path_prefix = cwd + '/../../libraries'
 
 if rtconfig.CROSS_TOOL == 'gcc':
-    src += [cwd + '/../../libraries/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f429xx.s']
+    src += [startup_path_prefix + '/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f429xx.s']
 elif rtconfig.CROSS_TOOL == 'keil':
-    src += [cwd + '/../../libraries/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm/startup_stm32f429xx.s']
+    src += [startup_path_prefix + '/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm/startup_stm32f429xx.s']
 elif rtconfig.CROSS_TOOL == 'iar':
-    src += [cwd + '/../../libraries/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/iar/startup_stm32f429xx.s']
+    src += [startup_path_prefix + '/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/iar/startup_stm32f429xx.s']
 
 CPPDEFINES = ['STM32F429xx']
 group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES)

+ 3 - 0
bsp/stm32/stm32f429-atk-apollo/rtconfig.py

@@ -5,6 +5,9 @@ ARCH='arm'
 CPU='cortex-m4'
 CROSS_TOOL='gcc'
 
+# bsp lib config
+BSP_LIBRARY_TYPE = None
+
 if os.getenv('RTT_CC'):
     CROSS_TOOL = os.getenv('RTT_CC')
 if os.getenv('RTT_ROOT'):

+ 11 - 3
bsp/stm32/stm32f429-fire-challenger/SConstruct

@@ -37,11 +37,19 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 
 SDK_ROOT = os.path.abspath('./')
 
-# include drivers
-objs.extend(SConscript(os.path.dirname(SDK_ROOT) + '/libraries/STM32F4xx_HAL/SConscript'))
+if os.path.exists(SDK_ROOT + '/libraries'):
+    libraries_path_prefix = SDK_ROOT + '/libraries/'
+else:
+    libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries/'
+
+stm32_library = 'STM32F4xx_HAL'
+rtconfig.BSP_LIBRARY_TYPE = stm32_library
 
 # include libraries
-objs.extend(SConscript(os.path.dirname(SDK_ROOT) + '/libraries/HAL_Drivers/SConscript'))
+objs.extend(SConscript(libraries_path_prefix + stm32_library + '/SConscript'))
+
+# include drivers
+objs.extend(SConscript(libraries_path_prefix + '/HAL_Drivers/SConscript'))
 
 # make a building
 DoBuilding(TARGET, objs)

+ 11 - 8
bsp/stm32/stm32f429-fire-challenger/board/SConscript

@@ -1,10 +1,11 @@
+import os
 import rtconfig
 from building import *
 
 cwd = GetCurrentDir()
 
-# add the general drivers.
-src = Glob('board.c')
+# add general drivers
+src =  Glob('board.c')
 src += Glob('CubeMX_Config/Src/stm32f4xx_hal_msp.c')
 
 if GetDepend(['BSP_USING_ETH']):
@@ -13,19 +14,21 @@ if GetDepend(['BSP_USING_ETH']):
 if GetDepend(['BSP_USING_SPI_FLASH']):
     src += Glob('ports/spi_flash_init.c')
 
-path = [cwd]
+path =  [cwd]
 path += [cwd + '/CubeMX_Config/Inc']
 path += [cwd + '/ports']
 
-if GetDepend(['BSP_USING_SDRAM']):
-    path += [cwd + '/ports']
+if os.path.exists(cwd + '/../libraries'):
+    startup_path_prefix = cwd + '/../libraries'
+else:
+    startup_path_prefix = cwd + '/../../libraries'
 
 if rtconfig.CROSS_TOOL == 'gcc':
-    src += [cwd + '/../../libraries/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f429xx.s']
+    src += [startup_path_prefix + '/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f429xx.s']
 elif rtconfig.CROSS_TOOL == 'keil':
-    src += [cwd + '/../../libraries/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm/startup_stm32f429xx.s']
+    src += [startup_path_prefix + '/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm/startup_stm32f429xx.s']
 elif rtconfig.CROSS_TOOL == 'iar':
-    src += [cwd + '/../../libraries/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/iar/startup_stm32f429xx.s']
+    src += [startup_path_prefix + '/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/iar/startup_stm32f429xx.s']
 
 CPPDEFINES = ['STM32F429xx']
 group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES)

+ 3 - 0
bsp/stm32/stm32f429-fire-challenger/rtconfig.py

@@ -5,6 +5,9 @@ ARCH='arm'
 CPU='cortex-m4'
 CROSS_TOOL='gcc'
 
+# bsp lib config
+BSP_LIBRARY_TYPE = None
+
 if os.getenv('RTT_CC'):
     CROSS_TOOL = os.getenv('RTT_CC')
 if os.getenv('RTT_ROOT'):

+ 3 - 0
tools/building.py

@@ -810,6 +810,9 @@ def EndBuilding(target, program = None):
     Env['target']  = program
     Env['project'] = Projects
 
+    if hasattr(rtconfig, 'BSP_LIBRARY_TYPE'):
+        Env['bsp_lib_type'] = rtconfig.BSP_LIBRARY_TYPE
+
     Env.AddPostAction(target, rtconfig.POST_ACTION)
     # Add addition clean files
     Clean(target, 'cconfig.h')

+ 38 - 0
tools/mkdist.py

@@ -122,6 +122,24 @@ def bsp_update_kconfig(dist_dir):
                 line = line[0:position] + 'default: "rt-thread"\n'
                 found = 0
             f.write(line)
+            
+def bsp_update_kconfig_library(dist_dir):
+    # change RTT_ROOT in Kconfig
+    if not os.path.isfile(os.path.join(dist_dir, 'Kconfig')):
+        return
+
+    with open(os.path.join(dist_dir, 'Kconfig'), 'r') as f:
+        data = f.readlines()
+    with open(os.path.join(dist_dir, 'Kconfig'), 'w') as f:
+        found = 0
+        for line in data:
+            if line.find('RTT_ROOT') != -1:
+                found = 1
+            if line.find('../libraries') != -1 and found:
+                position = line.find('../libraries')
+                line = line[0:position] + 'libraries/Kconfig"\n'
+                found = 0
+            f.write(line)
 
 def bs_update_ide_project(bsp_root, rtt_root):
     import subprocess
@@ -169,6 +187,15 @@ def MkDist_Strip(program, BSP_ROOT, RTT_ROOT, Env):
     print('=> %s' % os.path.basename(BSP_ROOT))
     bsp_copy_files(BSP_ROOT, dist_dir)
 
+    # copy stm32 bsp libiary files
+    if os.path.basename(os.path.dirname(BSP_ROOT)) == 'stm32':
+        print("=> copy stm32 bsp library")
+        library_path = os.path.join(os.path.dirname(BSP_ROOT), 'libraries')
+        library_dir  = os.path.join(dist_dir, 'libraries')
+        bsp_copy_files(os.path.join(library_path, 'HAL_Drivers'), os.path.join(library_dir, 'HAL_Drivers'))
+        bsp_copy_files(os.path.join(library_path, Env['bsp_lib_type']), os.path.join(library_dir, Env['bsp_lib_type']))
+        shutil.copyfile(os.path.join(library_path, 'Kconfig'), os.path.join(library_dir, 'Kconfig'))
+
     # get all source files from program
     for item in program:
         walk_children(item)
@@ -260,6 +287,7 @@ def MkDist_Strip(program, BSP_ROOT, RTT_ROOT, Env):
     bsp_update_sconstruct(dist_dir)
     # change RTT_ROOT in Kconfig
     bsp_update_kconfig(dist_dir)
+    bsp_update_kconfig_library(dist_dir)
     # update all project files
     bs_update_ide_project(dist_dir, target_path)
 
@@ -280,6 +308,15 @@ def MkDist(program, BSP_ROOT, RTT_ROOT, Env):
     print('=> %s' % os.path.basename(BSP_ROOT))
     bsp_copy_files(BSP_ROOT, dist_dir)
 
+    # copy stm32 bsp libiary files
+    if os.path.basename(os.path.dirname(BSP_ROOT)) == 'stm32':
+        print("=> copy stm32 bsp library")
+        library_path = os.path.join(os.path.dirname(BSP_ROOT), 'libraries')
+        library_dir  = os.path.join(dist_dir, 'libraries')
+        bsp_copy_files(os.path.join(library_path, 'HAL_Drivers'), os.path.join(library_dir, 'HAL_Drivers'))
+        bsp_copy_files(os.path.join(library_path, Env['bsp_lib_type']), os.path.join(library_dir, Env['bsp_lib_type']))
+        shutil.copyfile(os.path.join(library_path, 'Kconfig'), os.path.join(library_dir, 'Kconfig'))
+    
     # copy tools directory
     print('=> components')
     do_copy_folder(os.path.join(RTT_ROOT, 'components'), os.path.join(target_path, 'components'))
@@ -316,6 +353,7 @@ def MkDist(program, BSP_ROOT, RTT_ROOT, Env):
     bsp_update_sconstruct(dist_dir)
     # change RTT_ROOT in Kconfig
     bsp_update_kconfig(dist_dir)
+    bsp_update_kconfig_library(dist_dir)
     # update all project files
     bs_update_ide_project(dist_dir, target_path)