1#=============================================================================== 2# @brief cmake file 3# Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED. 4#=============================================================================== 5 6set(BUILT_LDS ${CMAKE_BINARY_DIR}/linker.lds) 7 8if (DEFINED BUILD_LEVEL AND NOT ${BUILD_LEVEL} STREQUAL "release") 9 set(EXTRA_DUMP_OPT -S -l) 10endif() 11 12if (DEFINED NHSO AND "${NHSO}" STREQUAL "True") 13 set(GEN_PARSE_TOOL False) 14endif() 15 16if((NOT DEFINED DEBUG_FILES OR "lst" IN_LIST DEBUG_FILES OR "mem" IN_LIST DEBUG_FILES) AND NOT ${ROM_CHECK}) 17 add_custom_target(GENERAT_LST ALL 18 COMMAND ${CMAKE_OBJDUMP} -x ${EXTRA_DUMP_OPT} ${BIN_NAME}.elf > ${BIN_NAME}.lst 19 WORKING_DIRECTORY ${PROJECT_BINARY_DIR} 20 DEPENDS ${TARGET_NAME} 21 ) 22endif() 23 24if(NOT DEFINED DEBUG_FILES OR "nm" IN_LIST DEBUG_FILES OR "${GEN_PARSE_TOOL}" STREQUAL "True") 25 add_custom_target(GENERAT_NM ALL 26 COMMAND ${CMAKE_NM} -S -n --format=sysv ${BIN_NAME}.elf > ${BIN_NAME}.nm 27 WORKING_DIRECTORY ${PROJECT_BINARY_DIR} 28 DEPENDS ${TARGET_NAME} 29 ) 30endif() 31 32if(NOT DEFINED DEBUG_FILES OR "asm" IN_LIST DEBUG_FILES) 33 add_custom_target(GENERAT_ASM ALL 34 COMMAND ${CMAKE_OBJDUMP} -d -m ${ARCH_FAMILY} ${BIN_NAME}.elf > ${BIN_NAME}.asm 35 WORKING_DIRECTORY ${PROJECT_BINARY_DIR} 36 DEPENDS ${TARGET_NAME} 37 ) 38endif() 39 40if("${GEN_PARSE_TOOL}" STREQUAL "True") 41 add_custom_target(GENERAT_INFO ALL 42 COMMAND ${CMAKE_OBJDUMP} -Wi ${BIN_NAME}.elf > ${BIN_NAME}.info 43 WORKING_DIRECTORY ${PROJECT_BINARY_DIR} 44 DEPENDS ${TARGET_NAME} 45 ) 46endif() 47 48if((NOT DEFINED DEBUG_FILES OR "mem" IN_LIST DEBUG_FILES) AND NOT ${ROM_CHECK}) 49add_custom_target(GENERAT_MEM ALL 50 COMMAND ${Python3_EXECUTABLE} ${ELF_TO_DU} ${ROOT_DIR} ${BIN_NAME}.elf ${CMAKE_NM} > ${BIN_NAME}.du 51 COMMAND ${Python3_EXECUTABLE} ${MEM_STATE} ${BIN_NAME}.lst ${BIN_NAME}.du ${BUILT_LDS} ${CHIP} > ${BIN_NAME}.mem 52 WORKING_DIRECTORY ${PROJECT_BINARY_DIR} 53 DEPENDS "${TARGET_NAME};GENERAT_LST" 54) 55if(NOT "SDK_NOT_MEM_LIMIT" IN_LIST DEFINES) 56 add_custom_target(GENERAT_MEM_LIMIT ALL 57 COMMENT "MEM_LIMIT" 58 COMMAND ${Python3_EXECUTABLE} ${PARSE_MAP_SIZE_INFO} ${BIN_NAME}.lst ${BIN_NAME}.map 59 WORKING_DIRECTORY ${PROJECT_BINARY_DIR} 60 DEPENDS "${TARGET_NAME};GENERAT_LST") 61 62endif() 63endif() 64 65if(NOT DEFINED DEBUG_FILES OR "hex" IN_LIST DEBUG_FILES) 66add_custom_target(GENERAT_STD_HEX ALL 67 # 生成 intel 标准 hex 文件 68 COMMAND ${CMAKE_OBJCOPY} -O ihex ${BIN_NAME}.elf ${BIN_NAME}_std.hex 69 WORKING_DIRECTORY ${PROJECT_BINARY_DIR} 70 DEPENDS GENERAT_BIN 71) 72add_custom_target(GENERAT_HEX ALL 73 COMMAND ${Python3_EXECUTABLE} ${GEN_HEX} ${BIN_NAME}.bin ${BIN_NAME}.hex 74 WORKING_DIRECTORY ${PROJECT_BINARY_DIR} 75 DEPENDS GENERAT_BIN 76) 77 78if(DEFINED ROM_COMPONENT) 79 add_custom_target(GENERAT_ROM_HEX ALL 80 COMMAND ${Python3_EXECUTABLE} ${GEN_HEX} ${BIN_NAME}_rom.bin ${BIN_NAME}_rom.hex 81 WORKING_DIRECTORY ${PROJECT_BINARY_DIR} 82 DEPENDS GENERAT_BIN 83 ) 84endif() 85endif() 86 87if (DEFINED BUILD_LEVEL AND NOT ${BUILD_LEVEL} STREQUAL "release") 88if("${IMAGE_ANALYSIS}" STREQUAL "True" AND ${BUILD_PLATFORM} MATCHES "linux") 89 add_custom_target(GENERAT_IMAGE_ANALYSIS ALL 90 COMMAND ${Python3_EXECUTABLE} ${IMAGE_ANALSIS_TOOL} ${TARGET_COMMAND} ${OBJDUMP_PATH} 91 WORKING_DIRECTORY ${PROJECT_BINARY_DIR} 92 DEPENDS ${TARGET_NAME} 93 ) 94endif() 95 96if("${CODESIZE_STATISTIC}" STREQUAL "True") 97 add_custom_target(GENERAT_CODESIZE_STATISTIC ALL 98 COMMAND ${Python3_EXECUTABLE} ${CODESIZE_STATISTIC_TOOL} ${TARGET_COMMAND} 99 WORKING_DIRECTORY ${PROJECT_BINARY_DIR} 100 DEPENDS ${TARGET_NAME} 101 ) 102endif() 103endif() 104 105if("${GEN_ROM_INFO}" STREQUAL "True") 106 set(REMOTE_LIB ${ROOT_DIR}/drivers/chips/${CHIP}/remote_lib/${BUILD_TARGET_NAME}.cfg) 107if (${CHIP} MATCHES "bs20|bs21|bs21a|bs21e|bs22|bs26") 108 set(TARGET_SYM ${ROOT_DIR}/drivers/chips/bs2x/rom/rom_config/${CORE}/${BIN_NAME}.sym) 109else() 110 set(TARGET_SYM ${ROOT_DIR}/drivers/chips/${CHIP}/rom_config/${CORE}/${BIN_NAME}.sym) 111endif() 112 add_custom_target(GENERAT_ROM_INFO ALL 113 COMMAND ${Python3_EXECUTABLE} ${GEN_ROM_INFO_TOOL} ${BIN_NAME}.elf ${REMOTE_LIB} ${TARGET_SYM} 114 WORKING_DIRECTORY ${PROJECT_BINARY_DIR} 115 DEPENDS GENERAT_BIN 116 ) 117endif() 118 119if(NOT DEFINED PATCH) 120 set(PATCH False) 121endif() 122 123if(NOT DEFINED PATCH_DYN_TBL) 124 set(PATCH_DYN_TBL False) 125endif() 126 127if(${PATCH_DYN_TBL}) 128 129execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory 130 ${ROOT_DIR}/build/config/target_config/${CHIP}/patch_config 131 ${PROJECT_BINARY_DIR}/patch_config 132) 133 134if((${PATCH} AND ${PATCH_DYN_TBL}) AND NOT ${ROM_CHECK}) 135 set(PATCH_CONFIG ${PROJECT_BINARY_DIR}/patch_config) 136 set(GET_TA_TOOL ${ROOT_DIR}/build/config/target_config/${CHIP}/script/patch_get_tbl_info.py) 137 add_custom_target(GET_DYN_TBL_ADDR ALL 138 COMMAND ${Python3_EXECUTABLE} ${GET_TA_TOOL} ${CORE} ${TARGET_COMMAND} ${BIN_NAME} ${PATCH_CONFIG} ${PROJECT_BINARY_DIR} 139 WORKING_DIRECTORY ${PROJECT_BINARY_DIR} 140 DEPENDS GENERAT_BIN 141 ) 142endif() 143 144if((DEFINED ROM_COMPONENT AND ${PATCH}) AND NOT ${ROM_CHECK}) 145 set(PATCH_CONFIG ${PROJECT_BINARY_DIR}/patch_config) 146 add_custom_target(GENERAT_ROM_PATCH ALL 147 COMMAND ${Python3_EXECUTABLE} ${GEN_PATCH} ${BIN_NAME}.bin ${BIN_NAME}_rom.bin ${BIN_NAME}.nm ${PATCH_CONFIG} ${CORE} ${TARGET_COMMAND} ${PROJECT_BINARY_DIR} 148 WORKING_DIRECTORY ${PROJECT_BINARY_DIR} 149 DEPENDS GET_DYN_TBL_ADDR GENERAT_NM 150 ) 151endif() 152 153else() 154 155if(((DEFINED ROM_COMPONENT AND ${PATCH}) AND NOT ${ROM_CHECK}) OR DEFINED ROM_SYM_PATH) 156 set(PATCH_CONFIG ${ROOT_DIR}/build/config/target_config/${CHIP}/patch_config) 157 add_custom_target(GENERAT_ROM_PATCH ALL 158 COMMAND ${Python3_EXECUTABLE} ${GEN_PATCH} ${BIN_NAME}.bin ${BIN_NAME}_rom.bin ${BIN_NAME}.nm ${PATCH_CONFIG} ${CORE} ${TARGET_COMMAND} ${PROJECT_BINARY_DIR} 159 WORKING_DIRECTORY ${PROJECT_BINARY_DIR} 160 DEPENDS GENERAT_BIN GENERAT_NM 161 ) 162endif() 163 164endif() 165