mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
Merge branch 'bugfix/cmake_issues' into 'master'
CMake bugfixes See merge request espressif/esp-idf!7605
This commit is contained in:
commit
2f1815f74e
@ -226,7 +226,12 @@ $<JOIN:$<TARGET_PROPERTY:encrypted-${target_name},IMAGES>,\n>")
|
||||
CONTENT "${flash_args_content}")
|
||||
file(GENERATE OUTPUT "${build_dir}/encrypted_${target_name}_args"
|
||||
INPUT "${CMAKE_CURRENT_BINARY_DIR}/encrypted_${target_name}_args.in")
|
||||
else()
|
||||
fail_target(encrypted-${target_name} "Error: The target encrypted-${target_name} requires"
|
||||
"CONFIG_SECURE_FLASH_ENCRYPTION_MODE_DEVELOPMENT to be enabled.")
|
||||
|
||||
endif()
|
||||
|
||||
endfunction()
|
||||
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# 'cmake -E' doesn't have a way to fail outright, so run this script
|
||||
# with 'cmake -P' to fail a build.
|
||||
message(FATAL_ERROR "Failing the build (see errors on lines above)")
|
||||
message(FATAL_ERROR "$ENV{FAIL_MESSAGE}")
|
||||
|
||||
|
@ -214,13 +214,37 @@ function(fail_at_build_time target_name message_line0)
|
||||
set(filename "${CMAKE_CURRENT_BINARY_DIR}/${filename}.cmake")
|
||||
file(WRITE "${filename}" "")
|
||||
include("${filename}")
|
||||
set(fail_message "Failing the build (see errors on lines above)")
|
||||
add_custom_target(${target_name} ALL
|
||||
${message_lines}
|
||||
COMMAND ${CMAKE_COMMAND} -E remove "${filename}"
|
||||
COMMAND ${CMAKE_COMMAND} -P ${idf_path}/tools/cmake/scripts/fail.cmake
|
||||
COMMAND ${CMAKE_COMMAND} -E env FAIL_MESSAGE=${fail_message}
|
||||
${CMAKE_COMMAND} -P ${idf_path}/tools/cmake/scripts/fail.cmake
|
||||
VERBATIM)
|
||||
endfunction()
|
||||
|
||||
# fail_target
|
||||
#
|
||||
# Creates a phony target which fails when invoked. This is used when the necessary conditions
|
||||
# for a target are not met, such as configuration. Rather than ommitting the target altogether,
|
||||
# we fail execution with a helpful message.
|
||||
function(fail_target target_name message_line0)
|
||||
idf_build_get_property(idf_path IDF_PATH)
|
||||
set(message_lines COMMAND ${CMAKE_COMMAND} -E echo "${message_line0}")
|
||||
foreach(message_line ${ARGN})
|
||||
set(message_lines ${message_lines} COMMAND ${CMAKE_COMMAND} -E echo "${message_line}")
|
||||
endforeach()
|
||||
# Generate a timestamp file that gets included. When deleted on build, this forces CMake
|
||||
# to rerun.
|
||||
set(fail_message "Failed executing target (see errors on lines above)")
|
||||
add_custom_target(${target_name}
|
||||
${message_lines}
|
||||
COMMAND ${CMAKE_COMMAND} -E env FAIL_MESSAGE=${fail_message}
|
||||
${CMAKE_COMMAND} -P ${idf_path}/tools/cmake/scripts/fail.cmake
|
||||
VERBATIM)
|
||||
endfunction()
|
||||
|
||||
|
||||
function(check_exclusive_args args prefix)
|
||||
set(_args ${args})
|
||||
spaces2list(_args)
|
||||
|
@ -111,6 +111,7 @@ def action_extensions(base_actions, project_path):
|
||||
run_tool("idf_monitor", monitor_args, args.project_dir)
|
||||
|
||||
def flash(action, ctx, args):
|
||||
ensure_build_directory(args, ctx.info_name)
|
||||
"""
|
||||
Run esptool to flash the entire project, from an argfile generated by the build system
|
||||
"""
|
||||
@ -147,8 +148,7 @@ def action_extensions(base_actions, project_path):
|
||||
"callback": flash,
|
||||
"help": "Flash the project.",
|
||||
"options": global_options + [baud_rate, port],
|
||||
"dependencies": ["all"],
|
||||
"order_dependencies": ["erase_flash"],
|
||||
"order_dependencies": ["all", "erase_flash"],
|
||||
},
|
||||
"erase_flash": {
|
||||
"callback": erase_flash,
|
||||
@ -197,34 +197,29 @@ def action_extensions(base_actions, project_path):
|
||||
"callback": flash,
|
||||
"help": "Flash partition table only.",
|
||||
"options": [baud_rate, port],
|
||||
"dependencies": ["partition_table"],
|
||||
"order_dependencies": ["erase_flash"],
|
||||
"order_dependencies": ["partition_table", "erase_flash"],
|
||||
},
|
||||
"bootloader-flash": {
|
||||
"callback": flash,
|
||||
"help": "Flash bootloader only.",
|
||||
"options": [baud_rate, port],
|
||||
"dependencies": ["bootloader"],
|
||||
"order_dependencies": ["erase_flash"],
|
||||
"order_dependencies": ["bootloader", "erase_flash"],
|
||||
},
|
||||
"app-flash": {
|
||||
"callback": flash,
|
||||
"help": "Flash the app only.",
|
||||
"options": [baud_rate, port],
|
||||
"dependencies": ["app"],
|
||||
"order_dependencies": ["erase_flash"],
|
||||
"order_dependencies": ["app", "erase_flash"],
|
||||
},
|
||||
"encrypted-app-flash": {
|
||||
"callback": flash,
|
||||
"help": "Flash the encrypted app only.",
|
||||
"dependencies": ["app"],
|
||||
"order_dependencies": ["erase_flash"],
|
||||
"order_dependencies": ["app", "erase_flash"],
|
||||
},
|
||||
"encrypted-flash": {
|
||||
"callback": flash,
|
||||
"help": "Flash the encrypted project.",
|
||||
"dependencies": ["all"],
|
||||
"order_dependencies": ["erase_flash"],
|
||||
"order_dependencies": ["all", "erase_flash"],
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -84,7 +84,7 @@ class TestDependencyManagement(unittest.TestCase):
|
||||
args=['--dry-run', 'flash'],
|
||||
standalone_mode=False,
|
||||
)
|
||||
self.assertEqual(['all', 'flash'], list(result.keys()))
|
||||
self.assertEqual(['flash'], list(result.keys()))
|
||||
|
||||
def test_order_only_dependencies(self):
|
||||
result = idf.init_cli()(
|
||||
@ -105,7 +105,7 @@ class TestDependencyManagement(unittest.TestCase):
|
||||
args=['--dry-run', 'clean', 'monitor', 'clean', 'fullclean', 'flash'],
|
||||
standalone_mode=False,
|
||||
)
|
||||
self.assertEqual(['fullclean', 'clean', 'all', 'flash', 'monitor'], list(result.keys()))
|
||||
self.assertEqual(['fullclean', 'clean', 'flash', 'monitor'], list(result.keys()))
|
||||
|
||||
def test_dupplicated_commands_warning(self):
|
||||
capturedOutput = StringIO()
|
||||
|
Loading…
Reference in New Issue
Block a user