From 968110ffd61dcc30a48c98308b034fcaf532cdb7 Mon Sep 17 00:00:00 2001 From: SummerGift Date: Thu, 13 Dec 2018 10:56:09 +0800 Subject: [PATCH] [bsp][stm32] add scons --dist function --- .../libraries/templates/stm32f10x/SConstruct | 14 +++++-- .../templates/stm32f10x/board/SConscript | 23 ++++++----- .../libraries/templates/stm32f10x/rtconfig.py | 3 ++ .../libraries/templates/stm32f4xx/SConstruct | 14 +++++-- .../templates/stm32f4xx/board/SConscript | 18 ++++++--- .../libraries/templates/stm32f4xx/rtconfig.py | 3 ++ .../libraries/templates/stm32l4xx/SConstruct | 14 +++++-- .../templates/stm32l4xx/board/SConscript | 18 ++++++--- .../libraries/templates/stm32l4xx/rtconfig.py | 3 ++ bsp/stm32/stm32f103-atk-nano/SConstruct | 14 +++++-- bsp/stm32/stm32f103-atk-nano/board/SConscript | 17 ++++++--- bsp/stm32/stm32f103-atk-nano/rtconfig.py | 3 ++ bsp/stm32/stm32f103-fire-arbitrary/SConstruct | 14 +++++-- .../stm32f103-fire-arbitrary/board/SConscript | 15 ++++++-- .../stm32f103-fire-arbitrary/rtconfig.py | 3 ++ bsp/stm32/stm32f407-atk-explorer/SConstruct | 14 +++++-- .../stm32f407-atk-explorer/board/SConscript | 16 +++++--- bsp/stm32/stm32f407-atk-explorer/rtconfig.py | 3 ++ bsp/stm32/stm32f429-atk-apollo/SConstruct | 14 +++++-- .../stm32f429-atk-apollo/board/SConscript | 18 +++++---- bsp/stm32/stm32f429-atk-apollo/rtconfig.py | 3 ++ .../stm32f429-fire-challenger/SConstruct | 14 +++++-- .../board/SConscript | 19 ++++++---- .../stm32f429-fire-challenger/rtconfig.py | 3 ++ tools/building.py | 3 ++ tools/mkdist.py | 38 +++++++++++++++++++ 26 files changed, 246 insertions(+), 75 deletions(-) diff --git a/bsp/stm32/libraries/templates/stm32f10x/SConstruct b/bsp/stm32/libraries/templates/stm32f10x/SConstruct index b54173767..551465968 100644 --- a/bsp/stm32/libraries/templates/stm32f10x/SConstruct +++ b/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) diff --git a/bsp/stm32/libraries/templates/stm32f10x/board/SConscript b/bsp/stm32/libraries/templates/stm32f10x/board/SConscript index a0011e100..1ddc236ef 100644 --- a/bsp/stm32/libraries/templates/stm32f10x/board/SConscript +++ b/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') \ No newline at end of file +Return('group') diff --git a/bsp/stm32/libraries/templates/stm32f10x/rtconfig.py b/bsp/stm32/libraries/templates/stm32f10x/rtconfig.py index 790691805..79904118e 100644 --- a/bsp/stm32/libraries/templates/stm32f10x/rtconfig.py +++ b/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'): diff --git a/bsp/stm32/libraries/templates/stm32f4xx/SConstruct b/bsp/stm32/libraries/templates/stm32f4xx/SConstruct index f9b3d33a6..bcfdc31e2 100644 --- a/bsp/stm32/libraries/templates/stm32f4xx/SConstruct +++ b/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) diff --git a/bsp/stm32/libraries/templates/stm32f4xx/board/SConscript b/bsp/stm32/libraries/templates/stm32f4xx/board/SConscript index 5709200ba..e7b053a70 100644 --- a/bsp/stm32/libraries/templates/stm32f4xx/board/SConscript +++ b/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) diff --git a/bsp/stm32/libraries/templates/stm32f4xx/rtconfig.py b/bsp/stm32/libraries/templates/stm32f4xx/rtconfig.py index ce04832ca..2e3b7cf49 100644 --- a/bsp/stm32/libraries/templates/stm32f4xx/rtconfig.py +++ b/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'): diff --git a/bsp/stm32/libraries/templates/stm32l4xx/SConstruct b/bsp/stm32/libraries/templates/stm32l4xx/SConstruct index 23a8f6755..c8abfbd6e 100644 --- a/bsp/stm32/libraries/templates/stm32l4xx/SConstruct +++ b/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) diff --git a/bsp/stm32/libraries/templates/stm32l4xx/board/SConscript b/bsp/stm32/libraries/templates/stm32l4xx/board/SConscript index a0bf27755..eaa002ca9 100644 --- a/bsp/stm32/libraries/templates/stm32l4xx/board/SConscript +++ b/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) diff --git a/bsp/stm32/libraries/templates/stm32l4xx/rtconfig.py b/bsp/stm32/libraries/templates/stm32l4xx/rtconfig.py index 53f5cd79b..50c1d8a0f 100644 --- a/bsp/stm32/libraries/templates/stm32l4xx/rtconfig.py +++ b/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'): diff --git a/bsp/stm32/stm32f103-atk-nano/SConstruct b/bsp/stm32/stm32f103-atk-nano/SConstruct index b54173767..551465968 100644 --- a/bsp/stm32/stm32f103-atk-nano/SConstruct +++ b/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) diff --git a/bsp/stm32/stm32f103-atk-nano/board/SConscript b/bsp/stm32/stm32f103-atk-nano/board/SConscript index 16ac2f078..fe2f1bb3f 100644 --- a/bsp/stm32/stm32f103-atk-nano/board/SConscript +++ b/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) diff --git a/bsp/stm32/stm32f103-atk-nano/rtconfig.py b/bsp/stm32/stm32f103-atk-nano/rtconfig.py index 790691805..79904118e 100644 --- a/bsp/stm32/stm32f103-atk-nano/rtconfig.py +++ b/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'): diff --git a/bsp/stm32/stm32f103-fire-arbitrary/SConstruct b/bsp/stm32/stm32f103-fire-arbitrary/SConstruct index b54173767..551465968 100644 --- a/bsp/stm32/stm32f103-fire-arbitrary/SConstruct +++ b/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) diff --git a/bsp/stm32/stm32f103-fire-arbitrary/board/SConscript b/bsp/stm32/stm32f103-fire-arbitrary/board/SConscript index 892d5d6fe..868e5b8a4 100644 --- a/bsp/stm32/stm32f103-fire-arbitrary/board/SConscript +++ b/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) diff --git a/bsp/stm32/stm32f103-fire-arbitrary/rtconfig.py b/bsp/stm32/stm32f103-fire-arbitrary/rtconfig.py index 790691805..79904118e 100644 --- a/bsp/stm32/stm32f103-fire-arbitrary/rtconfig.py +++ b/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'): diff --git a/bsp/stm32/stm32f407-atk-explorer/SConstruct b/bsp/stm32/stm32f407-atk-explorer/SConstruct index f9b3d33a6..bcfdc31e2 100644 --- a/bsp/stm32/stm32f407-atk-explorer/SConstruct +++ b/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) diff --git a/bsp/stm32/stm32f407-atk-explorer/board/SConscript b/bsp/stm32/stm32f407-atk-explorer/board/SConscript index bcaf10e78..861030d80 100644 --- a/bsp/stm32/stm32f407-atk-explorer/board/SConscript +++ b/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) diff --git a/bsp/stm32/stm32f407-atk-explorer/rtconfig.py b/bsp/stm32/stm32f407-atk-explorer/rtconfig.py index ce04832ca..2e3b7cf49 100644 --- a/bsp/stm32/stm32f407-atk-explorer/rtconfig.py +++ b/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'): diff --git a/bsp/stm32/stm32f429-atk-apollo/SConstruct b/bsp/stm32/stm32f429-atk-apollo/SConstruct index f9b3d33a6..bcfdc31e2 100644 --- a/bsp/stm32/stm32f429-atk-apollo/SConstruct +++ b/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) diff --git a/bsp/stm32/stm32f429-atk-apollo/board/SConscript b/bsp/stm32/stm32f429-atk-apollo/board/SConscript index f58944ccb..9e38a4420 100644 --- a/bsp/stm32/stm32f429-atk-apollo/board/SConscript +++ b/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) diff --git a/bsp/stm32/stm32f429-atk-apollo/rtconfig.py b/bsp/stm32/stm32f429-atk-apollo/rtconfig.py index ce04832ca..2e3b7cf49 100644 --- a/bsp/stm32/stm32f429-atk-apollo/rtconfig.py +++ b/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'): diff --git a/bsp/stm32/stm32f429-fire-challenger/SConstruct b/bsp/stm32/stm32f429-fire-challenger/SConstruct index f9b3d33a6..bcfdc31e2 100644 --- a/bsp/stm32/stm32f429-fire-challenger/SConstruct +++ b/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) diff --git a/bsp/stm32/stm32f429-fire-challenger/board/SConscript b/bsp/stm32/stm32f429-fire-challenger/board/SConscript index b42904e35..00d86f2c3 100644 --- a/bsp/stm32/stm32f429-fire-challenger/board/SConscript +++ b/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) diff --git a/bsp/stm32/stm32f429-fire-challenger/rtconfig.py b/bsp/stm32/stm32f429-fire-challenger/rtconfig.py index ce04832ca..2e3b7cf49 100644 --- a/bsp/stm32/stm32f429-fire-challenger/rtconfig.py +++ b/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'): diff --git a/tools/building.py b/tools/building.py index ba6c5000e..eb2da2fab 100644 --- a/tools/building.py +++ b/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') diff --git a/tools/mkdist.py b/tools/mkdist.py index eef6bfd11..e927417fc 100644 --- a/tools/mkdist.py +++ b/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) -- GitLab