From c222f6f1119667f69da4d45df110da5b5cda5427 Mon Sep 17 00:00:00 2001 From: hathach Date: Mon, 1 Mar 2021 20:25:55 +0700 Subject: [PATCH] try to fetch needed mcu submodule while running make --- .github/workflows/build.yml | 7 ++++--- examples/make.mk | 23 +++++++++++------------ examples/rules.mk | 7 +++++++ hw/bsp/imxrt/family.mk | 1 + hw/bsp/nrf/family.mk | 1 + 5 files changed, 24 insertions(+), 15 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 77903d65e..635884674 100644 --- a/.github/workflows/build.yml +++ b/.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 }} diff --git a/examples/make.mk b/examples/make.mk index 5387a4ec4..c981d0de4 100644 --- a/examples/make.mk +++ b/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- diff --git a/examples/rules.mk b/examples/rules.mk index d248ed247..1d5a190fe 100644 --- a/examples/rules.mk +++ b/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 diff --git a/hw/bsp/imxrt/family.mk b/hw/bsp/imxrt/family.mk index 3311768bd..91298d400 100644 --- a/hw/bsp/imxrt/family.mk +++ b/hw/bsp/imxrt/family.mk @@ -1,4 +1,5 @@ UF2_FAMILY_ID = 0x4fb2d5bd +FAMILY_SUBMODULES = hw/mcu/nxp include $(TOP)/$(BOARD_PATH)/board.mk diff --git a/hw/bsp/nrf/family.mk b/hw/bsp/nrf/family.mk index c7dff1d0c..16c912dc4 100644 --- a/hw/bsp/nrf/family.mk +++ b/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