mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-10-30 12:50:41 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			52 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| 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)
 | |
|         idf_build_get_property(project_dir PROJECT_DIR)
 | |
|         # Custom filename expands any path relative to the project
 | |
|         get_filename_component(PARTITION_CSV_PATH "${CONFIG_PARTITION_TABLE_FILENAME}"
 | |
|                                 ABSOLUTE BASE_DIR "${project_dir}")
 | |
| 
 | |
|         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_DIR}/${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})
 | |
| endif()
 | |
| 
 | |
| # partition_table_get_partition_info
 | |
| #
 | |
| # Get information about a partition from the partition table
 | |
| function(partition_table_get_partition_info result get_part_info_args part_info)
 | |
|     idf_build_get_property(python PYTHON)
 | |
|     idf_build_get_property(idf_path IDF_PATH)
 | |
|     separate_arguments(get_part_info_args)
 | |
|     execute_process(COMMAND ${python}
 | |
|         ${idf_path}/components/partition_table/parttool.py -q
 | |
|         --partition-table-offset ${PARTITION_TABLE_OFFSET}
 | |
|         --partition-table-file ${PARTITION_CSV_PATH}
 | |
|         get_partition_info ${get_part_info_args} --info ${part_info}
 | |
|         OUTPUT_VARIABLE info
 | |
|         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(${result} ${info} PARENT_SCOPE)
 | |
| endfunction()
 | 
