idf_component_register(REQUIRES bootloader) if(NOT BOOTLOADER_BUILD AND CONFIG_APP_BUILD_GENERATE_BINARIES) string(REPLACE ";" " " ESPTOOLPY_FLASH_PROJECT_OPTIONS "${ESPTOOLPY_FLASH_OPTIONS}") set(ESPTOOLPY_FLASH_PROJECT_OPTIONS "${ESPTOOLPY_FLASH_PROJECT_OPTIONS}" ) if(CONFIG_SECURE_BOOT) set(ESPTOOLPY_FLASH_PROJECT_OPTIONS "") endif() # FLASH_PROJECT_ARGS, FLASH_PROJECT_ARGS_JSON, FLASH_PROJECT_ARGS_ENTRY_JSON # are used in the flasher args input files (flash_project_args.in, flasher_args.json.in) idf_component_get_property(FLASH_PROJECT_ARGS ${COMPONENT_NAME} FLASH_PROJECT_ARGS GENERATOR_EXPRESSION) idf_component_get_property(FLASH_PROJECT_ARGS_JSON ${COMPONENT_NAME} FLASH_PROJECT_ARGS_JSON GENERATOR_EXPRESSION) idf_component_get_property(FLASH_PROJECT_ARGS_ENTRY_JSON ${COMPONENT_NAME} FLASH_PROJECT_ARGS_ENTRY_JSON GENERATOR_EXPRESSION) # Generate the flash project args and the flasher args json file using the accumulated values # from esptool_py_flash_project_args calls. The file is first configured using configure_file() for all variable values, # and then generated using file(GENERATE... for generator expressions. configure_file(${COMPONENT_DIR}/flash_project_args.in ${CMAKE_CURRENT_BINARY_DIR}/flash_project_args.in) file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/flash_project_args.in2 INPUT ${CMAKE_CURRENT_BINARY_DIR}/flash_project_args.in) file(GENERATE OUTPUT ${CMAKE_BINARY_DIR}/flash_project_args INPUT ${CMAKE_CURRENT_BINARY_DIR}/flash_project_args.in2) if(CONFIG_SECURE_FLASH_ENCRYPTION_MODE_DEVELOPMENT) configure_file(${COMPONENT_DIR}/flash_encrypted_project_args.in ${CMAKE_CURRENT_BINARY_DIR}/flash_encrypted_project_args.in) file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/flash_encrypted_project_args.in2 INPUT ${CMAKE_CURRENT_BINARY_DIR}/flash_encrypted_project_args.in) file(GENERATE OUTPUT ${CMAKE_BINARY_DIR}/flash_encrypted_project_args INPUT ${CMAKE_CURRENT_BINARY_DIR}/flash_encrypted_project_args.in2) endif() configure_file(${COMPONENT_DIR}/flasher_args.json.in ${CMAKE_CURRENT_BINARY_DIR}/flasher_args.json.in) file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/flasher_args.json.in2 INPUT ${CMAKE_CURRENT_BINARY_DIR}/flasher_args.json.in) file(GENERATE OUTPUT ${CMAKE_BINARY_DIR}/flasher_args.json INPUT ${CMAKE_CURRENT_BINARY_DIR}/flasher_args.json.in2) set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${CMAKE_CURRENT_BINARY_DIR}/flash_project_args.in" "${CMAKE_CURRENT_BINARY_DIR}/flash_project_args.in2" "${CMAKE_BINARY_DIR}/flash_project_args" "${CMAKE_CURRENT_BINARY_DIR}/flasher_args.json.in" "${CMAKE_CURRENT_BINARY_DIR}/flasher_args.json.in2" "${CMAKE_BINARY_DIR}/flasher_args.json") idf_build_get_property(build_dir BUILD_DIR) partition_table_get_partition_info(app_partition_offset "--partition-boot-default" "offset") esptool_py_flash_project_args(app ${app_partition_offset} ${build_dir}/${PROJECT_BIN} FLASH_IN_PROJECT) if(CONFIG_SECURE_FLASH_ENCRYPTION_MODE_DEVELOPMENT) file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/flash_encrypted_app_args.in "--encrypt ${app_partition_offset} ${PROJECT_BIN}") esptool_py_flash_project_args(encrypted_app ${app_partition_offset} ${build_dir}/${PROJECT_BIN} FLASH_FILE_TEMPLATE ${CMAKE_CURRENT_BINARY_DIR}/flash_encrypted_app_args.in) endif() add_dependencies(flash partition_table) # If anti-rollback option is set then factory partition should not be in Partition Table. # In this case, should be used the partition table with two ota app without the factory. partition_table_get_partition_info(factory_offset "--partition-type app --partition-subtype factory" "offset") if(CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK AND factory_offset) fail_at_build_time(check_table_contents "ERROR: Anti-rollback option is enabled. Partition table should consist of two ota app without factory partition.") add_dependencies(app check_table_contents) endif() endif()