mirror of
https://github.com/micropython/micropython.git
synced 2026-01-07 20:50:14 +01:00
rp2,esp32,extmod: Implement UPDATE_SUBMODULES in CMake.
Rather than having Make calling CMake to generate a list of submodules and then run a Make target (which is complex and prone to masking other errors), implement the submodule update logic in CMake itself. Internal CMake-side changes are that GIT_SUBMODULES is now a CMake list, and the trigger variable name is changed from ECHO_SUBMODULES to UPDATE_SUBMODULES. The run is otherwise 100% a normal CMake run now, so most of the other special casing can be removed. Signed-off-by: Angus Gratton <angus@redyak.com.au>
This commit is contained in:
committed by
Damien George
parent
2db0c0225f
commit
cccac2cc01
@@ -106,12 +106,10 @@ size-components:
|
||||
size-files:
|
||||
$(call RUN_IDF_PY,size-files)
|
||||
|
||||
# Running the build with ECHO_SUBMODULES set will trigger py/mkrules.cmake to
|
||||
# print out the value of the GIT_SUBMODULES variable, prefixed with
|
||||
# "GIT_SUBMODULES", and then abort. This extracts out that line from the idf.py
|
||||
# output and passes the list of submodules to py/mkrules.mk which does the
|
||||
# `git submodule init` on each.
|
||||
# Run idf.py with the UPDATE_SUBMODULES flag to update
|
||||
# necessary submodules for this board.
|
||||
#
|
||||
# This is done in a dedicated build directory as some CMake cache values are not
|
||||
# set correctly if not all submodules are loaded yet.
|
||||
submodules:
|
||||
@GIT_SUBMODULES=$$(IDF_COMPONENT_MANAGER=0 idf.py $(IDFPY_FLAGS) -B $(BUILD)/submodules -D ECHO_SUBMODULES=1 build 2>&1 | \
|
||||
grep '^GIT_SUBMODULES=' | cut -d= -f2); \
|
||||
$(MAKE) -f ../../py/mkrules.mk GIT_SUBMODULES="$${GIT_SUBMODULES}" GIT_SUBMODULES_FAIL_IF_EMPTY=1 submodules
|
||||
IDF_COMPONENT_MANAGER=0 idf.py $(IDFPY_FLAGS) -B $(BUILD)/submodules -D UPDATE_SUBMODULES=1 reconfigure
|
||||
|
||||
@@ -71,8 +71,8 @@ list(APPEND MICROPY_SOURCE_DRIVERS
|
||||
${MICROPY_DIR}/drivers/dht/dht.c
|
||||
)
|
||||
|
||||
string(CONCAT GIT_SUBMODULES "${GIT_SUBMODULES} " lib/tinyusb)
|
||||
if(MICROPY_PY_TINYUSB AND NOT ECHO_SUBMODULES)
|
||||
list(APPEND GIT_SUBMODULES lib/tinyusb)
|
||||
if(MICROPY_PY_TINYUSB)
|
||||
set(TINYUSB_SRC "${MICROPY_DIR}/lib/tinyusb/src")
|
||||
string(TOUPPER OPT_MCU_${IDF_TARGET} tusb_mcu)
|
||||
|
||||
@@ -195,6 +195,17 @@ if (MICROPY_USER_LDFRAGMENTS)
|
||||
set(MICROPY_LDFRAGMENTS ${MICROPY_USER_LDFRAGMENTS})
|
||||
endif()
|
||||
|
||||
if (UPDATE_SUBMODULES)
|
||||
# ESP-IDF checks if some paths exist before CMake does. Some paths don't
|
||||
# yet exist if this is an UPDATE_SUBMODULES pass on a brand new checkout, so remove
|
||||
# any path which might not exist yet. A "real" build will not set UPDATE_SUBMODULES.
|
||||
unset(MICROPY_SOURCE_TINYUSB)
|
||||
unset(MICROPY_SOURCE_EXTMOD)
|
||||
unset(MICROPY_SOURCE_LIB)
|
||||
unset(MICROPY_INC_TINYUSB)
|
||||
unset(MICROPY_INC_CORE)
|
||||
endif()
|
||||
|
||||
# Register the main IDF component.
|
||||
idf_component_register(
|
||||
SRCS
|
||||
|
||||
Reference in New Issue
Block a user