2025-10-10 16:07:00 +08:00

789 lines
32 KiB
CMake
Executable File

set(incs .)
set(srcs)
armino_component_register(SRCS "${srcs}" INCLUDE_DIRS "${incs}")
armino_build_get_property(target ARMINO_SOC)
armino_build_get_property(python PYTHON)
armino_build_get_property(armino_path ARMINO_PATH)
armino_build_get_property(project_dir PROJECT_DIR)
armino_build_get_property(sdkconfig SDKCONFIG)
armino_build_get_property(sdkconfig_defaults SDKCONFIG_DEFAULTS)
armino_build_get_property(sdkconfig_default_soc SDKCONFIG_DEFAULT_SOC)
armino_build_get_property(config_env_path CONFIG_ENV_PATH)
armino_build_get_property(root_kconfig __ROOT_KCONFIG)
armino_build_get_property(build_dir BUILD_DIR)
set(cmd_armino_soc "$ENV{CMD_ARMINO_SOC}")
######################################################################
# Create supported projects list for bk7235 #
######################################################################
set(bk7235xx_supported_targets)
list(APPEND bk7235xx_supported_targets
"bk7235"
"bk7235_cp1"
)
set(bk7235xx_supported_projects)
list(APPEND bk7235xx_supported_projects
"app"
"at"
"matter"
)
######################################################################
# Create supported projects list for bk7256 #
######################################################################
set(bk7256xx_supported_targets)
list(APPEND bk7256xx_supported_targets
"bk7256"
"bk7256_cp1"
)
set(bk7256xx_supported_projects)
list(APPEND bk7256xx_supported_projects
"app"
"customization/bk7256_configa"
"customization/bk7256_configb"
"ate_mini_code"
"bluetooth/central"
"bluetooth/hci"
"bluetooth/headset"
"bluetooth/mesh"
"media/doorbell"
"media/audio_play_sdcard_mp3_music"
"media/audio_record_to_sdcard"
"thirdparty/p2p_client"
"thirdparty/p2p_server"
"thirdparty/wanson_asr"
"wifi/repeater"
"at"
"matter"
)
######################################################################
# Create supported projects list for bk7236 #
######################################################################
set(bk7236xx_supported_targets)
list(APPEND bk7236xx_supported_targets
"bk7236"
"bk7236_cp1"
)
set(bk7236xx_supported_projects)
list(APPEND bk7236xx_supported_projects
"app"
"wifi/repeater"
"at"
"customization/config_ab"
"thirdparty/doorbell_cs2_ab_4M"
"clip"
"matter"
)
######################################################################
# Create supported projects list for bk7258 #
######################################################################
set(bk7258xx_supported_targets)
list(APPEND bk7258xx_supported_targets
"bk7258"
"bk7258_cp1"
"bk7258_cp2"
)
set(bk7258xx_supported_projects)
list(APPEND bk7258xx_supported_projects
"app"
"app_psram_4mb"
"smp"
"bluetooth/central"
"bluetooth/headset"
"bluetooth/spp"
"bluetooth/bt_hidd"
"bluetooth/mesh"
"bluetooth/gatt_server"
"bluetooth/gatt_client"
"media/audio_play_sdcard_mp3_music"
"media/doorbell_4M"
"media/doorbell_8M"
"media/doorviewer"
"media/doorbell_pro"
"media/audio_record_to_sdcard"
"media/doorbell"
"media/doorviewer_8M"
"media/media_transfer"
"media/doorbell_720p"
"lvgl/86box"
"lvgl/86box_smart_panel"
"lvgl/avi_player"
"lvgl/stress"
"lvgl/benchmark"
"lvgl/meter_rgb_16M"
"lvgl/widgets"
"lvgl/camera"
"lvgl/img_decode"
"lvgl/meter"
"lvgl/meter_spi"
"lvgl/music"
"lvgl/keypad_encoder"
"thirdparty/doorbell_cs2"
"thirdparty/doorbell_cs2_4M"
"thirdparty/doorbell_cs2_8M"
"thirdparty/doorbell_cs2_720p"
"thirdparty/agora"
"agora_ai"
"agora_wanson_ai"
"agora_wenwen_ai"
"beken_genie"
"ai_dialog_free"
"phy/cert_test"
"wifi/repeater"
"at"
"customization/config_ab"
"thirdparty/doorbell_cs2_ab_4M"
"thirdparty/wanson_asr"
"thirdparty/wenwen_asr"
"thirdparty/jpeg_sw_enc"
"peripheral/lcd_8080"
"peripheral/lcd_rgb565"
"peripheral/lcd_rgb888"
"peripheral/lcd_rgb666"
"matter"
)
######################################################################
# Create supported projects list for bk7234 #
######################################################################
set(bk7234xx_supported_targets)
list(APPEND bk7234xx_supported_targets
"bk7234"
"bk7234_cp1"
"bk7234_cp2"
)
set(bk7234xx_supported_projects)
list(APPEND bk7234xx_supported_projects
"app"
"customization/config_ab"
)
######################################################################
# Create supported projects list for bk7239 #
######################################################################
set(bk7239xx_supported_targets)
list(APPEND bk7239xx_supported_targets
"bk7239"
"bk7239_cp1"
"bk7239_cp2"
)
set(bk7239xx_supported_projects)
list(APPEND bk7239xx_supported_projects
"app"
)
######################################################################
# Create supported projects list for bk723L #
######################################################################
set(bk723Lxx_supported_targets)
list(APPEND bk723Lxx_supported_targets
"bk723L"
"bk723L_cp1"
"bk723L_cp2"
)
set(bk723Lxx_supported_projects)
list(APPEND bk723Lxx_supported_projects
"app"
"customization/config_ab"
)
#Create supported soc list which if armino_soc is not in, return without deal with the project
set(supported_targets)
list(APPEND supported_targets
${bk7235xx_supported_targets}
${bk7256xx_supported_targets}
${bk7236xx_supported_targets}
${bk7258xx_supported_targets}
${bk7234xx_supported_targets}
${bk7239xx_supported_targets}
${bk723Lxx_supported_targets}
)
#For compatible with bk7236 and bk7258 partitions approach
set(special_supported_targets)
list(APPEND special_supported_targets
${bk7236xx_supported_targets}
${bk7258xx_supported_targets}
${bk7234xx_supported_targets}
${bk7239xx_supported_targets}
${bk723Lxx_supported_targets}
)
if(target IN_LIST bk7235xx_supported_targets)
set(supported_projects ${bk7235xx_supported_projects})
set(cpu1_base_addr "0x00000000")
elseif(target IN_LIST bk7256xx_supported_targets)
set(supported_projects ${bk7256xx_supported_projects})
set(cpu1_base_addr "0x00000000")
elseif(target IN_LIST bk7236xx_supported_targets)
set(supported_projects ${bk7236xx_supported_projects})
set(cpu1_base_addr "0x02000000")
elseif(target IN_LIST bk7258xx_supported_targets)
set(supported_projects ${bk7258xx_supported_projects})
set(cpu1_base_addr "0x02000000")
elseif(target IN_LIST bk7234xx_supported_targets)
set(supported_projects ${bk7234xx_supported_projects})
set(cpu1_base_addr "0x02000000")
elseif(target IN_LIST bk7239xx_supported_targets)
set(supported_projects ${bk7239xx_supported_projects})
set(cpu1_base_addr "0x02000000")
elseif(target IN_LIST bk723Lxx_supported_targets)
set(supported_projects ${bk723Lxx_supported_projects})
set(cpu1_base_addr "0x02000000")
else()
set(supported_projects)
set(cpu1_base_addr)
endif()
set(supported_main_targets ${supported_targets})
list(FILTER supported_main_targets EXCLUDE REGEX "^bk.*_cp[0-9]$")
set(supported_slave_targets ${supported_targets})
list(FILTER supported_slave_targets INCLUDE REGEX "^bk.*_cp[0-9]$")
#get_filename_component(project_name ${project_dir} NAME)
# STRING(REPLACE ${armino_path} "" new_project_dir ${project_dir})
# set(pattern "/projects/")
# STRING(FIND ${new_project_dir} ${pattern} project_name_start)
# STRING(LENGTH ${pattern} pattern_len)
# math(EXPR project_name_start "${project_name_start}+${pattern_len}" OUTPUT_FORMAT DECIMAL)
# STRING(SUBSTRING ${new_project_dir} ${project_name_start} -1 project_name)
set(project_name $ENV{PROJECT})
STRING(FIND ${target} "_" main_target_len REVERSE)
STRING(SUBSTRING ${target} 0 ${main_target_len} main_target)
set(check_security_firmware_tool "${armino_path}/tools/build_tools/check_security_firmware.py")
set(main_target_path "${project_dir}/config/${main_target}")
set(partitions_path "${project_dir}/config/${main_target}/partitions.csv")
set(partitions_path_tmp "${project_dir}/config/${main_target}/.partitions.csv")
message(STATUS "check_security_firmware_tool = ${check_security_firmware_tool}")
message(STATUS "main_target_path = ${main_target_path}")
execute_process(COMMAND
"${python}" ${check_security_firmware_tool} ${main_target_path}
OUTPUT_VARIABLE output
RESULT_VARIABLE result)
if(result STREQUAL 0)
file(GLOB PARTITIONS_CSV_FILES ${partitions_path_tmp})
if(PARTITIONS_CSV_FILES)
file(REMOVE ${partitions_path})
foreach(FILE ${PARTITIONS_CSV_FILES})
file(RENAME ${FILE} ${partitions_path})
endforeach()
endif()
return()
else()
if (NOT cmd_armino_soc IN_LIST supported_main_targets OR
NOT target IN_LIST supported_targets OR
NOT project_name IN_LIST supported_projects
)
return()
else()
STRING(FIND "${main_target_path}" "security" string_position)
if(${string_position} GREATER_EQUAL 0)
return()
endif()
endif()
endif()
if(sdkconfig_default_soc)
list(APPEND defaults_arg --defaults "${sdkconfig_default_soc}")
endif()
if(sdkconfig_defaults)
foreach(sdkconfig_default ${sdkconfig_defaults})
if(EXISTS "${sdkconfig_default}.${armino_target}")
list(APPEND defaults_arg --defaults "${sdkconfig_default}.${armino_target}")
endif()
endforeach()
endif()
if(sdkconfig_defaults)
foreach(sdkconfig_default ${sdkconfig_defaults})
list(APPEND defaults_arg --defaults "${sdkconfig_default}")
endforeach()
endif()
set(confgen_basecommand
${python} ${armino_path}/tools/build_tools/kconfig_new/confgen.py
--kconfig ${root_kconfig}
#--config ${sdkconfig}
${defaults_arg}
--env-file ${config_env_path})
# Generate the config outputs
set(config_dir ${build_dir}/config)
set(sdkconfig_cmake ${config_dir}/sdkconfig.cmake)
set(sdkconfig_header ${config_dir}/sdkconfig.h)
set(sdkconfig_json ${config_dir}/sdkconfig.json)
set(sdkconfig_json_menus ${config_dir}/kconfig_menus.json)
get_filename_component(special_project ${project_dir} NAME)
set(special_supported_project)
list(APPEND special_supported_project
"bk7256_configa"
"bk7256_configb"
#"config_ab"
)
set(smode_inseqs_tool "${armino_path}/tools/build_tools/part_table_tools/otherScript/get_smode_inseqs.py")
set(depends_check_tool "${armino_path}/tools/build_tools/part_table_tools/otherScript/depends_files_check.py")
set(part_table_tool "${armino_path}/tools/build_tools/part_table_tools/gen_bk7256partitions.py")
set(part_table_args "--flash-size=16MB;--smode")
set(slave_target_num)
if(target IN_LIST supported_slave_targets)
STRING(LENGTH ${target} slave_target_len)
math(EXPR slave_target_substart "${slave_target_len}-1" OUTPUT_FORMAT DECIMAL)
STRING(SUBSTRING ${target} ${slave_target_substart} 1 slave_target_num)
#message(SEND_ERROR "target = ${target}, slave_target_len = ${slave_target_len}, slave_target_num = ${slave_target_num}")
execute_process(COMMAND
"${python}" ${smode_inseqs_tool} application${slave_target_num}.sag
OUTPUT_VARIABLE output
RESULT_VARIABLE result)
if(result STREQUAL 0)
LOGI("smode_inseqs_tool execute success...")
STRING(STRIP "${output}" output)
set(application${slave_target_num}_sag_inseq "--smode-inseq=${output}")
else()
LOGE("smode_inseqs_tool execute failed...")
endif()
execute_process(COMMAND
"${python}" ${smode_inseqs_tool} genCsvFiles
OUTPUT_VARIABLE output
RESULT_VARIABLE result)
if(result STREQUAL 0)
LOGI("smode_inseqs_tool execute success...")
STRING(STRIP "${output}" output)
set(csv_file_inseq "--smode-inseq=${output}")
else()
LOGE("smode_inseqs_tool execute failed...")
endif()
execute_process(COMMAND
"${python}" ${smode_inseqs_tool} genSourceFiles
OUTPUT_VARIABLE output
RESULT_VARIABLE result)
if(result STREQUAL 0)
LOGI("smode_inseqs_tool execute success...")
STRING(STRIP "${output}" output)
set(source_file_inseq "--smode-inseq=${output}")
else()
LOGE("smode_inseqs_tool execute failed...")
endif()
set(main_target_config "${project_dir}/config/${main_target}.config")
if(EXISTS "${project_dir}/config/${main_target}/config")
set(main_target_config "${project_dir}/config/${main_target}/config")
endif()
#set(main_target_config "${project_dir}/config/${main_target}/config")
set(target_config_tool "${armino_path}/tools/build_tools/part_table_tools/otherScript/get_target_config_val.py")
set(target_config_tool_args "--config=${main_target_config}")
execute_process(COMMAND
"${python}" "${target_config_tool}" ${target_config_tool_args}
OUTPUT_VARIABLE output
RESULT_VARIABLE result)
if(result STREQUAL 0)
STRING(STRIP "${output}" output)
if(output STREQUAL y)
set(CONFIG_FLASH_PARTITION_USER "y")
endif()
endif()
#message(SEND_ERROR "target = ${target}, main_target_len = ${main_target_len}, main_target = ${main_target}")
elseif(target IN_LIST supported_main_targets)
set(main_target "${target}")
execute_process(COMMAND
"${python}" ${smode_inseqs_tool} application.sag
OUTPUT_VARIABLE output
RESULT_VARIABLE result)
if(result STREQUAL 0)
LOGI("smode_inseqs_tool execute success...")
STRING(STRIP "${output}" output)
set(application_sag_inseq "--smode-inseq=${output}")
else()
LOGE("smode_inseqs_tool execute failed...")
endif()
execute_process(COMMAND
"${python}" ${smode_inseqs_tool} genCsvFiles
OUTPUT_VARIABLE output
RESULT_VARIABLE result)
if(result STREQUAL 0)
LOGI("smode_inseqs_tool execute success...")
STRING(STRIP "${output}" output)
set(csv_file_inseq "--smode-inseq=${output}")
else()
LOGE("smode_inseqs_tool execute failed...")
endif()
execute_process(COMMAND
"${python}" ${smode_inseqs_tool} configuration_new.json
OUTPUT_VARIABLE output
RESULT_VARIABLE result)
if(result STREQUAL 0)
LOGI("smode_inseqs_tool execute success...")
STRING(STRIP "${output}" output)
set(configuration_json_inseq "--smode-inseq=${output}")
else()
LOGE("smode_inseqs_tool execute failed...")
endif()
execute_process(COMMAND
"${python}" ${smode_inseqs_tool} genSourceFiles
OUTPUT_VARIABLE output
RESULT_VARIABLE result)
if(result STREQUAL 0)
LOGI("smode_inseqs_tool execute success...")
STRING(STRIP "${output}" output)
set(source_file_inseq "--smode-inseq=${output}")
else()
LOGE("smode_inseqs_tool execute failed...")
endif()
else()
message(STATUS "target: ${target}")
message(STATUS "supported_targets: ${supported_targets}")
message(STATUS "supported_main_targets: ${supported_main_targets}")
message(STATUS "supported_slave_targets: ${supported_slave_targets}")
message(SEND_ERROR "target is not supported!!!")
endif()
# isolate the partition action between developer and customer
# by macro argument CONFIG_FLASH_PARTITION_USER
# if CONFIG_FLASH_PARTITION_USER set, assume the partition action come from customer,
# then *.csv file and all other files generated from part_table_tool located in dir: project/...
# if CONFIG_FLASH_PARTITION_USER not set, assume the partition action come from developer,
# then *.csv file and all other files generated from part_table_tool located in dir: middleware/...
if (CONFIG_FLASH_PARTITION_USER)
if(special_project IN_LIST special_supported_project)
set(configuration_json "${armino_path}/tools/build_tools/part_table_tools/tempFiles/configuration_new.json")
set(configuration_json_old "${project_dir}/config/${main_target}/configuration.json")
else()
set(configuration_json "${armino_path}/tools/build_tools/part_table_tools/tempFiles/configuration_new.json")
set(configuration_json_old "${project_dir}/config/${main_target}/configuration.json")
endif()
set(source_cfile "${armino_path}/tools/build_tools/part_table_tools/tempFiles/vendor_flash_new.c")
set(source_cfile_old "${project_dir}/main/vendor_flash.c")
set(source_hfile "${armino_path}/tools/build_tools/part_table_tools/tempFiles/vendor_flash_partition.h")
set(source_hfile_old "${project_dir}/main/vendor_flash_partition.h")
#set(part_csv_file "${project_dir}/partitions.csv")
set(part_csv_file "${project_dir}/csv/${main_target}.csv")
if(EXISTS ${project_dir}/config/${main_target}/${main_target}_partitions.csv)
set(part_csv_file "${project_dir}/config/${main_target}/${main_target}_partitions.csv")
endif()
set(config_file "${project_dir}/config/${target}.config")
if(EXISTS "${project_dir}/config/${main_target}/config")
set(config_file "${project_dir}/config/${main_target}/config")
endif()
set(src_sag_file "${armino_path}/middleware/soc/${target}/${target}_bsp.sag")
if(EXISTS ${project_dir}/${target}_bsp.sag)
set(src_sag_file "${project_dir}/${target}_bsp.sag")
endif()
set(refer_sag_file "${armino_path}/tools/build_tools/part_table_tools/tempFiles/application${slave_target_num}.sag")
set(dest_sag_file "${project_dir}/${target}_bsp.sag")
set(det_ld_file "${project_dir}/${target}_bsp.ld")
if(EXISTS ${project_dir}/${main_target}/${target}_bsp.sag)
set(src_sag_file "${project_dir}/${main_target}/${target}_bsp.sag")
set(dest_sag_file "${project_dir}/${main_target}/${target}_bsp.sag")
set(det_ld_file "${project_dir}/${main_target}/${target}_bsp.ld")
endif()
set(dest_csv_file_old "${armino_path}/middleware/boards/${main_target}/csv/partitions.csv")
set(dest_csv_file_old "${project_dir}/config/${main_target}/partitions.csv")
#message(SEND_ERROR "Check error: don`t place partitions.csv in directory ${project_dir}/config/${main_target}/partitions.csv")
set(dest_csv_file "${armino_path}/tools/build_tools/part_table_tools/tempFiles/partitions_new.csv")
else()
set(configuration_json "${armino_path}/tools/build_tools/part_table_tools/tempFiles/configuration_new.json")
set(configuration_json_old "${armino_path}/middleware/boards/${target}/configuration.json")
set(source_cfile "${armino_path}/tools/build_tools/part_table_tools/tempFiles/vnd_flash_new.c")
set(source_cfile_old "${armino_path}/middleware/boards/${main_target}/vnd_flash/vnd_flash.c")
set(source_hfile "${armino_path}/tools/build_tools/part_table_tools/tempFiles/vnd_flash_partition.h")
set(source_hfile_old "${armino_path}/middleware/boards/${main_target}/vnd_flash/vnd_flash_partition.h")
set(part_csv_file "${armino_path}/middleware/boards/${main_target}/partitions.csv")
set(config_file "${armino_path}/middleware/soc/${target}/${target}.defconfig")
set(src_sag_file "${armino_path}/middleware/soc/${target}/${target}_bsp.sag")
set(refer_sag_file "${armino_path}/tools/build_tools/part_table_tools/tempFiles/application${slave_target_num}.sag")
set(dest_sag_file "${armino_path}/middleware/soc/${target}/${target}_bsp_new.sag")
set(det_ld_file "${armino_path}/middleware/soc/${target}/${target}_bsp_new.ld")
set(dest_csv_file_old "${armino_path}/middleware/boards/${main_target}/csv/partitions.csv")
set(dest_csv_file_old "${project_dir}/config/${main_target}/partitions.csv")
#message(SEND_ERROR "Check error: don`t place partitions.csv in directory ${project_dir}/config/${main_target}/partitions.csv")
set(dest_csv_file "${armino_path}/tools/build_tools/part_table_tools/tempFiles/partitions_new.csv")
endif()
set(special_supported_tool "${armino_path}/tools/build_tools/part_table_tools/otherScript/special_project_deal.py")
set(special_supported_tool_args "--project-dir=${project_dir};--project=${special_project};--target=${target};--json-src=${configuration_json};--config=${config_file};--cpu1_base_addr=${cpu1_base_addr}")
set(sag_supported_tool "${armino_path}/tools/build_tools/part_table_tools/otherScript/special_sag_deal.py")
set(sag_supported_tool_args "--armino-soc=${target}")
set(nds_files_path "${armino_path}/tools/build_tools/nds_files")
set(nds_ldsag_cmd ${nds_files_path}/nds_ldsag --version=v5 -t ${nds_files_path}/nds32_template_v5_linux.txt)
set(add_gen_files_tool "${armino_path}/tools/build_tools/part_table_tools/otherScript/add_gen_files_list.py")
# ${target}'s ld file take part in linking process
# 1: Ensure ${target}'s add_subdirectory(...) has processed
# 2: Only when ${target}'s add_subdirectory(...) has processed,
# then ${target}'s get_target_property(...) will success
# 3: finally read ${target}'s PROPERTIES: INTERFACE_LINK_LIBRARIES
# and only modify the args of INTERFACE_LINK_LIBRARIES: -L, -T
# note:
# all actions below must be done between ${target}'s add_subdirectory(...)
# and app.elf linking process
if(NOT special_project IN_LIST special_supported_project AND NOT target IN_LIST special_supported_targets)
set(component_name_temp ${COMPONENT_NAME})
set(component_dir_temp ${COMPONENT_DIR})
set(component_alias_temp ${COMPONENT_ALIAS})
set(componnet_path_temp ${COMPONENT_PATH})
__component_get_target(component_target ${target})
__component_get_property(dir ${component_target} COMPONENT_DIR)
__component_get_property(_name ${component_target} COMPONENT_NAME)
__component_get_property(prefix ${component_target} __PREFIX)
__component_get_property(alias ${component_target} COMPONENT_ALIAS)
__component_get_property(component_lib ${component_target} COMPONENT_LIB)
set(COMPONENT_NAME ${_name})
set(COMPONENT_DIR ${dir})
set(COMPONENT_ALIAS ${alias})
set(COMPONENT_PATH ${dir})
armino_build_get_property(build_prefix __PREFIX)
armino_build_get_property(include_prefix __INCLUDE_PREFIX)
__component_get_property(component_add_subdired ${component_target} __COMPONENT_ADD_SUBDIRED)
if(NOT "${component_add_subdired}" STREQUAL 1)
if(NOT prefix STREQUAL build_prefix AND NOT prefix STREQUAL __INCLUDE_PREFIX)
add_subdirectory(${dir} ${build_dir}/armino/${prefix}_${_name})
else()
add_subdirectory(${dir} ${build_dir}/armino/${_name})
endif()
__component_set_property(${component_target} __COMPONENT_ADD_SUBDIRED 1)
endif()
get_target_property(__link_libraries "${component_lib}" INTERFACE_LINK_LIBRARIES)
list(FILTER __link_libraries EXCLUDE REGEX "(^-L.*)|(^-T.*)")
get_filename_component(dest_ld_file_dir "${det_ld_file}" DIRECTORY)
list(APPEND __link_libraries "-L ${dest_ld_file_dir}")
get_filename_component(dest_ld_file_nm "${det_ld_file}" NAME)
list(APPEND __link_libraries "-T ${dest_ld_file_nm}")
set_target_properties("${component_lib}" PROPERTIES INTERFACE_LINK_LIBRARIES "${__link_libraries}")
set(COMPONENT_NAME ${component_name_temp})
set(COMPONENT_DIR ${component_dir_temp})
set(COMPONENT_ALIAS ${component_alias_temp})
set(COMPONENT_PATH ${componnet_path_temp})
endif()
macro(pt_verbose_slave_targets)
message(STATUS "${Magenta}<========================part_table_tools slave target info start========================>${ColourReset}")
message(STATUS "${Magenta}target: ${target}${ColourReset}")
message(STATUS "${Magenta}cmd_target: $ENV{CMD_ARMINO_SOC}${ColourReset}")
message(STATUS "${Magenta}main_target: ${main_target}${ColourReset}")
message(STATUS "${Magenta}supported_targets: ${supported_targets}${ColourReset}")
message(STATUS "${Magenta}supported_main_targets: ${supported_main_targets}${ColourReset}")
message(STATUS "${Magenta}supported_slave_targets: ${supported_slave_targets}${ColourReset}")
message(STATUS "${Magenta}special_project: ${special_project}${ColourReset}")
message(STATUS "${Magenta}CONFIG_OVERRIDE_FLASH_PARTITION: ${CONFIG_FLASH_PARTITION_USER}${ColourReset}")
message(STATUS "${Magenta}part_csv_file: ${part_csv_file}${ColourReset}")
message(STATUS "${Magenta}source_cfile: ${source_cfile_old}${ColourReset}")
message(STATUS "${Magenta}source_hfile: ${source_hfile_old}${ColourReset}")
message(STATUS "${Magenta}source_file_inseq: ${source_file_inseq}${ColourReset}")
message(STATUS "${Magenta}refer_sag_file: ${refer_sag_file}${ColourReset}")
message(STATUS "${Magenta}application${slave_target_num}_sag_inseq: ${application${slave_target_num}_sag_inseq}${ColourReset}")
message(STATUS "${Magenta}src_sag_file: ${src_sag_file}${ColourReset}")
message(STATUS "${Magenta}dest_sag_file: ${dest_sag_file}${ColourReset}")
message(STATUS "${Magenta}det_ld_file: ${det_ld_file}${ColourReset}")
message(STATUS "${Magenta}dest_csv_file: ${dest_csv_file_old}${ColourReset}")
message(STATUS "${Magenta}<========================part_table_tools slave target info stop ========================>${ColourReset}")
endmacro()
macro(pt_verbose_main_targets)
message(STATUS "${Magenta}<========================part_table_tools main target info start ========================>${ColourReset}")
message(STATUS "${Magenta}target: ${target}${ColourReset}")
message(STATUS "${Magenta}cmd_target: $ENV{CMD_ARMINO_SOC}${ColourReset}")
message(STATUS "${Magenta}main_target: ${main_target}${ColourReset}")
message(STATUS "${Magenta}supported_targets: ${supported_targets}${ColourReset}")
message(STATUS "${Magenta}supported_main_targets: ${supported_main_targets}${ColourReset}")
message(STATUS "${Magenta}supported_slave_targets: ${supported_slave_targets}${ColourReset}")
message(STATUS "${Magenta}special_project: ${special_project}${ColourReset}")
message(STATUS "${Magenta}CONFIG_OVERRIDE_FLASH_PARTITION: ${CONFIG_FLASH_PARTITION_USER}${ColourReset}")
message(STATUS "${Magenta}part_csv_file: ${part_csv_file}${ColourReset}")
message(STATUS "${Magenta}config_file: ${config_file}${ColourReset}")
message(STATUS "${Magenta}source_cfile: ${source_cfile_old}${ColourReset}")
message(STATUS "${Magenta}source_hfile: ${source_hfile_old}${ColourReset}")
message(STATUS "${Magenta}source_file_inseq: ${source_file_inseq}${ColourReset}")
message(STATUS "${Magenta}configuration_json: ${configuration_json_old}${ColourReset}")
message(STATUS "${Magenta}configuration_json_inseq: ${configuration_json_inseq}${ColourReset}")
message(STATUS "${Magenta}refer_sag_file: ${refer_sag_file}${ColourReset}")
message(STATUS "${Magenta}application${slave_target_num}_sag_inseq: ${application${slave_target_num}_sag_inseq}${ColourReset}")
message(STATUS "${Magenta}src_sag_file: ${src_sag_file}${ColourReset}")
message(STATUS "${Magenta}dest_sag_file: ${dest_sag_file}${ColourReset}")
message(STATUS "${Magenta}det_ld_file: ${det_ld_file}${ColourReset}")
message(STATUS "${Magenta}dest_csv_file: ${dest_csv_file_old}${ColourReset}")
message(STATUS "${Magenta}<========================part_table_tools main target info stop ========================>${ColourReset}")
endmacro()
if (EXISTS ${part_csv_file})
if(target IN_LIST supported_slave_targets)
if("$ENV{PT_VERBOSE}" STREQUAL "1")
pt_verbose_slave_targets()
endif()
# gen application[1-9].sag file
# read and modify bk*_cp[1-9]_bsp.sag according to application[1-9].sag file
# gen bk*_cp[1-9]_bsp.ld file from bk*_cp[1-9]_bsp.sag
if(NOT special_project IN_LIST special_supported_project)
if(NOT target IN_LIST special_supported_targets)
#message(SEND_ERROR "===========>gen *sag files")
set(dest_csv_file)
add_custom_command(
OUTPUT "${det_ld_file}"
COMMAND "${python}" "${part_table_tool}"
${part_csv_file} --to-sag=${refer_sag_file}
${part_table_args} ${application${slave_target_num}_sag_inseq}
COMMAND "${python}" "${sag_supported_tool}" ${sag_supported_tool_args}
--refer-sag=${refer_sag_file} --src-sag=${src_sag_file} --dest-sag=${dest_sag_file}
COMMAND ${nds_ldsag_cmd} ${dest_sag_file} -o ${det_ld_file}
COMMAND "${python}" "${add_gen_files_tool}" ${det_ld_file}
DEPENDS ${part_table_tool} ${part_csv_file} ${sag_supported_tool} ${src_sag_file}
${nds_files_path}/nds_ldsag ${nds_files_path}/nds32_template_v5_linux.txt
COMMENT "armino ====> gen application${slave_target_num}.sag and application${slave_target_num}.ld..."
VERBATIM)
else()
#message(SEND_ERROR "===========>gen *csv files")
set(det_ld_file)
add_custom_command(
OUTPUT "${dest_csv_file}"
COMMAND "${python}" "${part_table_tool}"
${part_csv_file} --to-csv=${dest_csv_file}
${part_table_args} ${csv_file_inseq}
COMMAND ${CMAKE_COMMAND} -E copy ${dest_csv_file} ${dest_csv_file_old}
COMMAND "${python}" "${add_gen_files_tool}" ${dest_csv_file_old}
DEPENDS ${part_table_tool} ${part_csv_file}
COMMENT "armino ====> gen *csv files..."
VERBATIM)
endif()
else()
set(dest_csv_file)
set(det_ld_file)
endif()
# check whether depends_files of *.h files modify
# gen *.c and *.h files
add_custom_command(
OUTPUT "${source_cfile}"
#COMMAND ${CMAKE_COMMAND} -E touch ${source_cfile}
COMMAND "${python}" "${depends_check_tool}" ${armino_path}
COMMAND "${python}" "${part_table_tool}"
${part_csv_file} --to-src=${source_cfile}
--to-inc=${source_hfile}
${part_table_args} ${source_file_inseq}
COMMAND ${CMAKE_COMMAND} -E copy ${source_cfile} ${source_cfile_old}
COMMAND ${CMAKE_COMMAND} -E copy ${source_hfile} ${source_hfile_old}
DEPENDS ${part_table_tool} ${part_csv_file}
COMMENT "armino ====> gen *c and *h files..."
VERBATIM)
add_custom_target(part_table_tool_op DEPENDS ${det_ld_file} ${dest_csv_file} ${source_cfile})
add_dependencies(${COMPONENT_LIB} part_table_tool_op)
elseif(target IN_LIST supported_main_targets)
if("$ENV{PT_VERBOSE}" STREQUAL "1")
pt_verbose_main_targets()
endif()
# gen application.sag file
# read and modify bk*_bsp.sag according to application.sag file
# gen bk*_bsp.ld file from bk*_bsp.sag
if(NOT special_project IN_LIST special_supported_project)
if(NOT target IN_LIST special_supported_targets)
set(dest_csv_file)
add_custom_command(
OUTPUT "${det_ld_file}"
COMMAND "${python}" "${part_table_tool}"
${part_csv_file} --to-sag=${refer_sag_file}
${part_table_args} ${application_sag_inseq}
COMMAND "${python}" "${sag_supported_tool}" ${sag_supported_tool_args}
--refer-sag=${refer_sag_file} --src-sag=${src_sag_file} --dest-sag=${dest_sag_file}
COMMAND ${nds_ldsag_cmd} ${dest_sag_file} -o ${det_ld_file}
COMMAND "${python}" "${add_gen_files_tool}" ${det_ld_file}
DEPENDS ${part_table_tool} ${part_csv_file} ${sag_supported_tool} ${src_sag_file}
${nds_files_path}/nds_ldsag ${nds_files_path}/nds32_template_v5_linux.txt
COMMENT "armino ====> gen application_sag and application_ld..."
VERBATIM)
else()
set(det_ld_file)
add_custom_command(
OUTPUT "${dest_csv_file}"
COMMAND "${python}" "${part_table_tool}"
${part_csv_file} --to-csv=${dest_csv_file}
${part_table_args} ${csv_file_inseq}
COMMAND ${CMAKE_COMMAND} -E copy ${dest_csv_file} ${dest_csv_file_old}
COMMAND "${python}" "${add_gen_files_tool}" ${dest_csv_file_old}
DEPENDS ${part_table_tool} ${part_csv_file}
COMMENT "armino ====> gen *csv files..."
VERBATIM)
endif()
else()
set(det_ld_file)
set(dest_csv_file)
endif()
# gen configuration.json file
# modify *.defconfig and *.config file
add_custom_command(
OUTPUT "${configuration_json}"
#COMMAND ${CMAKE_COMMAND} -E touch ${configuration_json}
COMMAND "${python}" "${part_table_tool}"
${part_csv_file} --to-json=${configuration_json}
${part_table_args} ${configuration_json_inseq}
COMMAND ${CMAKE_COMMAND} -E copy ${configuration_json} ${configuration_json_old}
COMMAND "${python}" "${special_supported_tool}" ${special_supported_tool_args}
DEPENDS ${part_table_tool} ${part_csv_file}
COMMENT "armino ====> gen configuration_json..."
VERBATIM)
# check whether depends_files of *.h files modify
# gen *.c and *.h files
add_custom_command(
OUTPUT "${source_cfile}"
#COMMAND ${CMAKE_COMMAND} -E touch ${source_cfile}
COMMAND "${python}" "${depends_check_tool}" ${armino_path}
COMMAND "${python}" "${part_table_tool}"
${part_csv_file} --to-src=${source_cfile}
--to-inc=${source_hfile}
${part_table_args} ${source_file_inseq}
COMMAND ${CMAKE_COMMAND} -E copy ${source_cfile} ${source_cfile_old}
COMMAND ${CMAKE_COMMAND} -E copy ${source_hfile} ${source_hfile_old}
DEPENDS ${part_table_tool} ${part_csv_file}
COMMENT "armino ====> gen *c and *h files..."
VERBATIM)
add_custom_target(part_table_tool_op DEPENDS ${det_ld_file} ${dest_csv_file} ${configuration_json} ${source_cfile})
# regenerate sdkconfig.h after modify *.defconfig or *.config file
# which must done before all other components,and after part_table_tool_op
add_custom_target(config_regenerate
COMMAND ${confgen_basecommand}
--output header ${sdkconfig_header}
--output cmake ${sdkconfig_cmake}
--output json ${sdkconfig_json}
--output json_menus ${sdkconfig_json_menus}
--output config ${sdkconfig}
DEPENDS part_table_tool_op
COMMENT "armino ====> regenerate sdkconfig file..."
VERBATIM)
add_dependencies(${COMPONENT_LIB} config_regenerate)
else()
message(SEND_ERROR "target is not supported!!!")
endif()
else()
if(target IN_LIST supported_slave_targets)
if("$ENV{PT_VERBOSE}" STREQUAL "1")
pt_verbose_slave_targets()
endif()
elseif(target IN_LIST supported_main_targets)
if("$ENV{PT_VERBOSE}" STREQUAL "1")
pt_verbose_main_targets()
endif()
else()
endif()
message(SEND_ERROR "${part_csv_file} is not exist!!!")
endif()