try to fetch needed mcu submodule while running make

This commit is contained in:
hathach 2021-03-01 20:25:55 +07:00
parent 0374e08550
commit c222f6f111
5 changed files with 24 additions and 15 deletions

View File

@ -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 }}

View File

@ -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-

View File

@ -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

View File

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

View File

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