mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-05-21 09:05:59 +08:00
feat(make): Sync code from esp-idf and modify for ESP8266
Commit ID: f6bfe13e
This commit is contained in:
76
components/partition_table/CMakeLists.txt
Normal file
76
components/partition_table/CMakeLists.txt
Normal file
@ -0,0 +1,76 @@
|
||||
register_config_only_component()
|
||||
|
||||
if(NOT BOOTLOADER_BUILD)
|
||||
|
||||
set(partition_csv "${PARTITION_CSV_PATH}")
|
||||
|
||||
if(CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES)
|
||||
set(unsigned_partition_bin "partition-table-unsigned.bin")
|
||||
set(final_partition_bin "partition-table.bin")
|
||||
set(final_partition_target "sign_partition_table")
|
||||
else()
|
||||
set(unsigned_partition_bin "partition-table.bin")
|
||||
set(final_partition_bin "partition-table.bin")
|
||||
set(final_partition_target "build_partition_table")
|
||||
endif()
|
||||
|
||||
if(CONFIG_PARTITION_TABLE_MD5)
|
||||
set(md5_opt --disable-md5sum)
|
||||
endif()
|
||||
|
||||
if(CONFIG_ESPTOOLPY_FLASHSIZE)
|
||||
set(flashsize_opt --flash-size ${CONFIG_ESPTOOLPY_FLASHSIZE})
|
||||
endif()
|
||||
|
||||
set(PARTITION_MD5_OPT "--disable-md5sum")
|
||||
set(PARTITION_FLASHSIZE_OPT "--flash-size" "${CONFIG_ESPTOOLPY_FLASHSIZE}")
|
||||
set(PARTITION_TABLE_OFFSET "${CONFIG_PARTITION_TABLE_OFFSET}")
|
||||
set(PARTITION_TABLE_OFFSET_ARG "--offset" "${PARTITION_TABLE_OFFSET}")
|
||||
|
||||
add_custom_command(OUTPUT "${unsigned_partition_bin}"
|
||||
COMMAND "${PYTHON}" "${CMAKE_CURRENT_SOURCE_DIR}/gen_esp32part.py" -q
|
||||
${PARTITION_MD5_OPT} ${PARTITION_FLASHSIZE_OPT} ${PARTITION_TABLE_OFFSET_ARG}
|
||||
${partition_csv} ${unsigned_partition_bin}
|
||||
DEPENDS ${partition_csv} "${CMAKE_CURRENT_SOURCE_DIR}/gen_esp32part.py"
|
||||
VERBATIM)
|
||||
|
||||
# Add signing steps
|
||||
if(CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES)
|
||||
get_filename_component(secure_boot_signing_key
|
||||
"${CONFIG_SECURE_BOOT_SIGNING_KEY}"
|
||||
ABSOLUTE BASE_DIR "${PROJECT_PATH}")
|
||||
|
||||
add_custom_command(OUTPUT "${final_partition_bin}"
|
||||
COMMAND "${PYTHON}" "${ESPSECUREPY}" sign_data --keyfile "${secure_boot_signing_key}"
|
||||
-o "${final_partition_bin}" "${unsigned_partition_bin}"
|
||||
DEPENDS "${unsigned_partition_bin}"
|
||||
VERBATIM)
|
||||
|
||||
endif()
|
||||
|
||||
if(EXISTS ${partition_csv})
|
||||
add_custom_target(partition_table ALL DEPENDS "${final_partition_bin}")
|
||||
else()
|
||||
# This is a bit of a hack: If the partition input CSV is not found, create a phony partition_table target that
|
||||
# fails the build. Have it also touch CMakeCache.txt to cause a cmake run next time
|
||||
# (to pick up a new CSV if one exists, etc.)
|
||||
#
|
||||
# This is because partition CSV is required at CMake runtime (to generate metadata files with flashing data, etc) but we can't
|
||||
# fail the build if it is not found, because the "menuconfig" target may be required to fix the problem. CMAKE_CONFIGURE_DEPENDS
|
||||
# only works for files which exist at CMake runtime.
|
||||
add_custom_target(partition_table ALL
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "Partition table CSV ${partition_csv} does not exist. Either change partition table in menuconfig or create this input file."
|
||||
COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_BINARY_DIR}/CMakeCache.txt"
|
||||
COMMAND ${CMAKE_COMMAND} -P ${IDF_PATH}/tools/cmake/scripts/fail.cmake)
|
||||
endif()
|
||||
|
||||
add_dependencies(bootloader partition_table)
|
||||
add_dependencies(app partition_table)
|
||||
|
||||
# Use global properties ESPTOOL_WRITE_FLASH_ARGS to pass this info to build
|
||||
# the list of esptool write arguments for flashing
|
||||
set_property(GLOBAL APPEND_STRING PROPERTY
|
||||
ESPTOOL_WRITE_FLASH_ARGS
|
||||
"${PARTITION_TABLE_OFFSET} ${final_partition_bin} ")
|
||||
|
||||
endif()
|
@ -83,7 +83,7 @@ partition_table-flash: $(PARTITION_TABLE_BIN)
|
||||
partition_table-clean:
|
||||
rm -f $(PARTITION_TABLE_BIN)
|
||||
|
||||
global-macro: partition_table_get_info
|
||||
make_prepare: partition_table_get_info
|
||||
|
||||
clean: partition_table-clean
|
||||
|
||||
|
65
components/partition_table/project_include.cmake
Normal file
65
components/partition_table/project_include.cmake
Normal file
@ -0,0 +1,65 @@
|
||||
if(NOT BOOTLOADER_BUILD)
|
||||
|
||||
set(PARTITION_TABLE_OFFSET ${CONFIG_PARTITION_TABLE_OFFSET})
|
||||
|
||||
# Set PARTITION_CSV_PATH to the configured partition CSV file
|
||||
# absolute path
|
||||
if(CONFIG_PARTITION_TABLE_CUSTOM)
|
||||
# Custom filename expands any path relative to the project
|
||||
get_filename_component(PARTITION_CSV_PATH "${CONFIG_PARTITION_TABLE_FILENAME}" ABSOLUTE BASE_DIR "${PROJECT_PATH}")
|
||||
|
||||
if(NOT EXISTS "${PARTITION_CSV_PATH}")
|
||||
message(WARNING "Partition table CSV file ${PARTITION_CSV_PATH} not found. "
|
||||
"Change custom partition CSV path in menuconfig.")
|
||||
# Note: partition_table CMakeLists.txt contains some logic to create a dummy
|
||||
# partition_table target in this case, see comments in that file.
|
||||
endif()
|
||||
else()
|
||||
# Other .csv files are always in the component directory
|
||||
get_filename_component(PARTITION_CSV_PATH "${COMPONENT_PATH}/${CONFIG_PARTITION_TABLE_FILENAME}" ABSOLUTE)
|
||||
|
||||
if(NOT EXISTS "${PARTITION_CSV_PATH}")
|
||||
message(FATAL_ERROR "Internal error, built-in ${PARTITION_CSV_PATH} not found.")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# need to re-run CMake if the partition CSV changes, as the offsets/sizes of partitions may change
|
||||
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${PARTITION_CSV_PATH})
|
||||
|
||||
# Parse the partition table to get variable partition offsets & sizes which must be known at CMake runtime
|
||||
function(get_partition_info variable get_part_info_args)
|
||||
separate_arguments(get_part_info_args)
|
||||
execute_process(COMMAND ${PYTHON}
|
||||
${COMPONENT_PATH}/parttool.py -q
|
||||
--partition-table-offset ${PARTITION_TABLE_OFFSET}
|
||||
${get_part_info_args}
|
||||
${PARTITION_CSV_PATH}
|
||||
OUTPUT_VARIABLE result
|
||||
RESULT_VARIABLE exit_code
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
if(NOT ${exit_code} EQUAL 0 AND NOT ${exit_code} EQUAL 1)
|
||||
# can't fail here as it would prevent the user from running 'menuconfig' again
|
||||
message(WARNING "parttool.py execution failed (${result}), problem with partition CSV file (see above)")
|
||||
endif()
|
||||
set(${variable} ${result} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
if(CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION)
|
||||
get_partition_info(PHY_PARTITION_OFFSET "--type data --subtype phy --offset")
|
||||
set(PHY_PARTITION_BIN_FILE "${CMAKE_BINARY_DIR}/esp32/phy_init_data.bin")
|
||||
endif()
|
||||
|
||||
get_partition_info(APP_PARTITION_OFFSET "--default-boot-partition --offset")
|
||||
|
||||
get_partition_info(APP_PARTITION_SIZE "--default-boot-partition --size")
|
||||
|
||||
get_partition_info(OTADATA_PARTITION_OFFSET "--type data --subtype ota --offset")
|
||||
|
||||
get_partition_info(OTADATA_PARTITION_SIZE "--type data --subtype ota --size")
|
||||
|
||||
set(APP_OFFSET ${APP_PARTITION_OFFSET})
|
||||
set(APP_SIZE ${APP_PARTITION_SIZE})
|
||||
|
||||
set(CFLAGS "${CFLAGS}" "-DAPP_OFFSET=${APP_OFFSET}" "-DAPP_SIZE=${APP_SIZE}")
|
||||
|
||||
endif()
|
Reference in New Issue
Block a user