1#=============================================================================== 2# @brief cmake component build 3# Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED. 4#=============================================================================== 5 6add_custom_target(HSO_DB 7 COMMENT "Generating HSO_DB ${TARGET_NAME}" 8) 9if(DEFINED LOG_CUSTOM_ENABLE) 10 if(${LOG_CUSTOM_ENABLE} STREQUAL True) 11 include(${CMAKE_SOURCE_DIR}/build/script/hdbxml_custom/MessageXmlGen/messagexmlgen.cmake) 12 endif() 13endif() 14 15function(create_hso_db) 16 if(DEFINED HSO_XML_CHIP) 17 set(XML_CHIP ${HSO_XML_CHIP}) 18 else() 19 set(XML_CHIP ${CHIP}) 20 endif() 21 22 set(XML_FILE ${ROOT_DIR}/build/config/target_config/${XML_CHIP}/hdb_config/database_template/acore/system/hdbcfg/mss_cmd_db.xml) 23 add_custom_target(HSO_DB_MKDIR 24 COMMAND ${Python3_EXECUTABLE} ${MAK_HSO_XML} mkdir ${ROOT_DIR}/ ${XML_CHIP} ${CORE} 25 COMMENT "HSO_DB Makedir" 26 ) 27 28 if(DEFINED LOG_CUSTOM_ENABLE) 29 if(${LOG_CUSTOM_ENABLE} STREQUAL True) 30 build_xml() 31 endif() 32 endif() 33 34 foreach(COMPONENT ${TARGET_COMPONENT}) 35 if (NOT DEFINED ${COMPONENT}_SOURCES) 36 continue() 37 endif() 38 39 set(CLOSED_FLAG "False") 40 check_if_closed_component(${COMPONENT}) 41 if (${COMPONENT_IS_CLOSED}) 42 set(CLOSED_FLAG "True") 43 endif() 44 list(JOIN LOG_DEF_LIST "," LOG_DEF) 45 list(JOIN ${COMPONENT}_SOURCES "," SOURCE) 46 # for windows command length limit 47 file(WRITE "${PROJECT_BINARY_DIR}/hso_temp/${COMPONENT}_temp.txt" "${LOG_DEF}####${SOURCE}") 48 add_custom_command( 49 OUTPUT ${PROJECT_BINARY_DIR}/hso_temp/${COMPONENT}.txt 50 # for re-run HDB 51 COMMAND ${CP} ${PROJECT_BINARY_DIR}/hso_temp/${COMPONENT}_temp.txt ${PROJECT_BINARY_DIR}/hso_temp/${COMPONENT}.txt 52 COMMAND ${Python3_EXECUTABLE} ${MAK_HSO_XML} ${ROOT_DIR}/ ${XML_CHIP} ${CORE} ${ARCH} ${${COMPONENT}_AUTO_DEF} ${${COMPONENT}_MODULE_NAME} ${CLOSED_FLAG} ${PROJECT_BINARY_DIR}/hso_temp/${COMPONENT}.txt 53 COMMENT "Building HSO_DB_${COMPONENT}" 54 DEPENDS "${${COMPONENT}_SOURCES}" ${LOG_DEF_LIST} HSO_DB_MKDIR 55 ) 56 add_custom_target(HSO_DB_${COMPONENT} 57 DEPENDS ${PROJECT_BINARY_DIR}/hso_temp/${COMPONENT}.txt 58 ) 59 add_dependencies(HSO_DB HSO_DB_${COMPONENT}) 60 endforeach () 61 if(NOT DEFINED HSO_ENABLE_BT) 62 set(HSO_ENABLE_BT FALSE) 63 endif() 64 if(${CORE} STREQUAL "bt_core" OR ${HSO_ENABLE_BT} STREQUAL "True") 65 add_custom_target(HSO_DB_BT_STATUS 66 COMMAND ${Python3_EXECUTABLE} ${BT_STATUS_HSO_XML} ${ROOT_DIR}/ ${XML_CHIP} 67 COMMAND ${Python3_EXECUTABLE} ${OTA_MSG_HSO_XML} ${ROOT_DIR}/ ${XML_CHIP} 68 ) 69 add_dependencies(HSO_DB HSO_DB_BT_STATUS) 70 endif() 71 72 add_custom_command(TARGET HSO_DB POST_BUILD 73 COMMENT "Merge HSO_XML & Create HSO_DB" 74 COMMAND ${Python3_EXECUTABLE} ${HSO_XML_PRE_PROCESS} ${ROOT_DIR}/ ${XML_CHIP} ${CORE} 75 COMMAND ${Python3_EXECUTABLE} ${HSO_XML_MERGE} ${ROOT_DIR}/ ${XML_CHIP} ${CORE} "${HSO_ENABLE_BT}" 76 COMMAND ${Python3_EXECUTABLE} ${HSO_XML_DB_CREATE} ${ROOT_DIR}/ ${XML_CHIP} 77 ) 78 if(NOT DEFINED GEN_PARSE_TOOL) 79 set(HSO_ENABLE_BT FALSE) 80 endif() 81 82 if("${GEN_PARSE_TOOL}" STREQUAL "True") 83 set(INFO_FILE ${PROJECT_BINARY_DIR}/${BIN_NAME}.info) 84 set(NM_FILE ${PROJECT_BINARY_DIR}/${BIN_NAME}.nm) 85 set(PARSE_TOOL_DIR "${PROJECT_BINARY_DIR}/parse_tool") 86 add_custom_command(TARGET HSO_DB POST_BUILD 87 COMMAND ${Python3_EXECUTABLE} ${HSO_PARSE_MAIN} ${PARSE_TOOL_DIR} ${INFO_FILE} ${NM_FILE} ${XML_FILE} 88 COMMAND ${CP_PY} ${HSO_PARSE_DIR}/ ${PARSE_TOOL_DIR} "none" *.py 89 ) 90 endif() 91endfunction(create_hso_db) 92