Просмотр исходного кода

try to fetch needed mcu submodule while running make

hathach 5 лет назад
Родитель
Сommit
c222f6f111
5 измененных файлов с 24 добавлено и 15 удалено
  1. 4 3
      .github/workflows/build.yml
  2. 11 12
      examples/make.mk
  3. 7 0
      examples/rules.mk
  4. 1 0
      hw/bsp/imxrt/family.mk
  5. 1 0
      hw/bsp/nrf/family.mk

+ 4 - 3
.github/workflows/build.yml

@@ -62,13 +62,14 @@ jobs:
     - name: Checkout TinyUSB
       uses: actions/checkout@v2
       with:
-        submodules: 'true'
+        submodules: 'false'
 
     - name: Checkout Sub-Submodules
       run: |
+        # Clone all submodules in lib
+        git submodule update --init --recursive lib
         # some submodule has it own submodules that need to be fetched as well
-        git submodule update --init --recursive hw/mcu/microchip
-        git submodule update --init --recursive lib/FreeRTOS
+        #git submodule update --init --recursive hw/mcu/microchip
 
     - name: Build
       run: python3 tools/build_family.py ${{ matrix.family }}

+ 11 - 12
examples/make.mk

@@ -15,20 +15,8 @@ check_defined = \
 __check_defined = \
     $(if $(value $1),, \
     $(error Undefined make flag: $1$(if $2, ($2))))
-    
-# TODO Check if submodule haven't checkout yet
-fetch_submodule_if_empty = \
-  ifeq ($(wildcard $(TOP)/$1/*),) \
-    $(info $(shell git -C $(TOP) submodule update --init)) \
-  endif
 
 #-------------- Select the board to build for. ------------
-#BOARD_LIST = $(sort $(subst /.,,$(subst $(TOP)/hw/bsp/,,$(wildcard $(TOP)/hw/bsp/*/.))))
-#ifeq ($(filter $(BOARD),$(BOARD_LIST)),)
-#  $(info You must provide a BOARD parameter with 'BOARD=', supported boards are:)
-#  $(foreach b,$(BOARD_LIST),$(info - $(b)))
-#  $(error Invalid BOARD specified)
-#endif
 
 # Board without family
 BOARD_PATH := $(subst $(TOP)/,,$(wildcard $(TOP)/hw/bsp/$(BOARD)))
@@ -42,6 +30,7 @@ ifeq ($(BOARD_PATH),)
 endif
 
 ifeq ($(BOARD_PATH),)
+  $(info You must provide a BOARD parameter with 'BOARD=')
   $(error Invalid BOARD specified)
 endif
 
@@ -56,6 +45,16 @@ endif
 
 #TODO $(call fetch_submodule_if_empty,lib/sct_neopixel)
 
+# Fetch submodules depended by family
+fetch_submodule_if_empty = \
+  ifeq ($(wildcard $(TOP)/$1/*),) \
+    $(info $(shell git -C $(TOP) submodule update --init $1)) \
+  endif
+
+ifdef FAMILY_SUBMODULES
+  $(foreach s,$(FAMILY_SUBMODULES),:$(call fetch_submodule_if_empty,$(s)))
+endif
+
 #-------------- Cross Compiler  ------------
 # Can be set by board, default to ARM GCC
 CROSS_COMPILE ?= arm-none-eabi-

+ 7 - 0
examples/rules.mk

@@ -6,7 +6,9 @@
 .DEFAULT_GOAL := all
 
 ifeq ($(FAMILY),esp32s2)
+# ---------------------------------------
 # Espressif IDF use CMake build system, this add wrapper target to call idf.py
+# ---------------------------------------
 
 .PHONY: all clean flash
 
@@ -44,6 +46,9 @@ $(BUILD)/$(PROJECT).uf2: $(BUILD)/$(PROJECT).bin
 	$(PYTHON) $(TOP)/tools/uf2/utils/uf2conv.py -f $(UF2_FAMILY_ID) -b 0x0 -c -o $@ $^
 
 else ifeq ($(FAMILY),rp2040)
+# ---------------------------------------
+# RP2040 CMake
+# ---------------------------------------
 
 ifeq ($(DEBUG), 1)
 CMAKE_DEFSYM += -DCMAKE_BUILD_TYPE=Debug
@@ -62,7 +67,9 @@ flash:
 	@$(CP) $(BUILD)/$(PROJECT).uf2 /media/$(USER)/RPI-RP2
 
 else
+# ---------------------------------------
 # GNU Make build system
+# ---------------------------------------
 
 # libc
 LIBS += -lgcc -lm -lnosys

+ 1 - 0
hw/bsp/imxrt/family.mk

@@ -1,4 +1,5 @@
 UF2_FAMILY_ID = 0x4fb2d5bd
+FAMILY_SUBMODULES = hw/mcu/nxp
 
 include $(TOP)/$(BOARD_PATH)/board.mk
 

+ 1 - 0
hw/bsp/nrf/family.mk

@@ -1,4 +1,5 @@
 UF2_FAMILY_ID = 0xADA52840
+FAMILY_SUBMODULES = hw/mcu/nordic/nrfx
 
 include $(TOP)/$(BOARD_PATH)/board.mk