• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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