From 3ae69484fea6c1471483181d7f18d7234599d55a Mon Sep 17 00:00:00 2001 From: Renz Christian Bagaporo Date: Fri, 10 May 2019 18:01:58 +0800 Subject: [PATCH] esptool_py: do not generate flasher arg files on bootloader build --- components/esptool_py/CMakeLists.txt | 115 +++++++++++++-------------- 1 file changed, 56 insertions(+), 59 deletions(-) diff --git a/components/esptool_py/CMakeLists.txt b/components/esptool_py/CMakeLists.txt index e93d9496f..c83cd5286 100644 --- a/components/esptool_py/CMakeLists.txt +++ b/components/esptool_py/CMakeLists.txt @@ -1,56 +1,53 @@ idf_component_register(REQUIRES bootloader) -string(REPLACE ";" " " ESPTOOLPY_FLASH_PROJECT_OPTIONS "${ESPTOOLPY_FLASH_OPTIONS}") -set(ESPTOOLPY_FLASH_PROJECT_OPTIONS - "${ESPTOOLPY_FLASH_PROJECT_OPTIONS}" - ) - -if(CONFIG_SECURE_BOOT_ENABLED) - set(ESPTOOLPY_FLASH_PROJECT_OPTIONS "") -endif() - -# 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") - - if(NOT BOOTLOADER_BUILD) + string(REPLACE ";" " " ESPTOOLPY_FLASH_PROJECT_OPTIONS "${ESPTOOLPY_FLASH_OPTIONS}") + set(ESPTOOLPY_FLASH_PROJECT_OPTIONS + "${ESPTOOLPY_FLASH_PROJECT_OPTIONS}" + ) + + if(CONFIG_SECURE_BOOT_ENABLED) + set(ESPTOOLPY_FLASH_PROJECT_OPTIONS "") + endif() + + # 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) @@ -62,14 +59,14 @@ if(NOT BOOTLOADER_BUILD) 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() - -# 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() \ No newline at end of file