LPT26x-HSF-4MB-Hilink_14.2..../build/cmake/build_hso_database.cmake
2025-05-13 22:00:58 +08:00

92 lines
3.8 KiB
CMake
Executable File

#===============================================================================
# @brief cmake component build
# Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2022-2022. All rights reserved.
#===============================================================================
add_custom_target(HSO_DB
COMMENT "Generating HSO_DB ${TARGET_NAME}"
)
if(DEFINED LOG_CUSTOM_ENABLE)
if(${LOG_CUSTOM_ENABLE} STREQUAL True)
include(${CMAKE_SOURCE_DIR}/build/script/hdbxml_custom/MessageXmlGen/messagexmlgen.cmake)
endif()
endif()
function(create_hso_db)
if(DEFINED HSO_XML_CHIP)
set(XML_CHIP ${HSO_XML_CHIP})
else()
set(XML_CHIP ${CHIP})
endif()
set(XML_FILE ${ROOT_DIR}/build/config/target_config/${XML_CHIP}/hdb_config/database_template/acore/system/hdbcfg/mss_cmd_db.xml)
add_custom_target(HSO_DB_MKDIR
COMMAND ${Python3_EXECUTABLE} ${MAK_HSO_XML} mkdir ${ROOT_DIR}/ ${XML_CHIP} ${CORE}
COMMENT "HSO_DB Makedir"
)
if(DEFINED LOG_CUSTOM_ENABLE)
if(${LOG_CUSTOM_ENABLE} STREQUAL True)
build_xml()
endif()
endif()
foreach(COMPONENT ${TARGET_COMPONENT})
if (NOT DEFINED ${COMPONENT}_SOURCES)
continue()
endif()
set(CLOSED_FLAG "False")
check_if_closed_component(${COMPONENT})
if (${COMPONENT_IS_CLOSED})
set(CLOSED_FLAG "True")
endif()
list(JOIN LOG_DEF_LIST "," LOG_DEF)
list(JOIN ${COMPONENT}_SOURCES "," SOURCE)
# for windows command length limit
file(WRITE "${PROJECT_BINARY_DIR}/hso_temp/${COMPONENT}_temp.txt" "${LOG_DEF}####${SOURCE}")
add_custom_command(
OUTPUT ${PROJECT_BINARY_DIR}/hso_temp/${COMPONENT}.txt
# for re-run HDB
COMMAND ${CP} ${PROJECT_BINARY_DIR}/hso_temp/${COMPONENT}_temp.txt ${PROJECT_BINARY_DIR}/hso_temp/${COMPONENT}.txt
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
COMMENT "Building HSO_DB_${COMPONENT}"
DEPENDS "${${COMPONENT}_SOURCES}" ${LOG_DEF_LIST} HSO_DB_MKDIR
)
add_custom_target(HSO_DB_${COMPONENT}
DEPENDS ${PROJECT_BINARY_DIR}/hso_temp/${COMPONENT}.txt
)
add_dependencies(HSO_DB HSO_DB_${COMPONENT})
endforeach ()
if(NOT DEFINED HSO_ENABLE_BT)
set(HSO_ENABLE_BT FALSE)
endif()
if(${CORE} STREQUAL "bt_core" OR ${HSO_ENABLE_BT} STREQUAL "True")
add_custom_target(HSO_DB_BT_STATUS
COMMAND ${Python3_EXECUTABLE} ${BT_STATUS_HSO_XML} ${ROOT_DIR}/ ${XML_CHIP}
COMMAND ${Python3_EXECUTABLE} ${OTA_MSG_HSO_XML} ${ROOT_DIR}/ ${XML_CHIP}
)
add_dependencies(HSO_DB HSO_DB_BT_STATUS)
endif()
add_custom_command(TARGET HSO_DB POST_BUILD
COMMENT "Merge HSO_XML & Create HSO_DB"
COMMAND ${Python3_EXECUTABLE} ${HSO_XML_PRE_PROCESS} ${ROOT_DIR}/ ${XML_CHIP} ${CORE}
COMMAND ${Python3_EXECUTABLE} ${HSO_XML_MERGE} ${ROOT_DIR}/ ${XML_CHIP} ${CORE} "${HSO_ENABLE_BT}"
COMMAND ${Python3_EXECUTABLE} ${HSO_XML_DB_CREATE} ${ROOT_DIR}/ ${XML_CHIP}
)
if(NOT DEFINED GEN_PARSE_TOOL)
set(HSO_ENABLE_BT FALSE)
endif()
if("${GEN_PARSE_TOOL}" STREQUAL "True")
set(INFO_FILE ${PROJECT_BINARY_DIR}/${BIN_NAME}.info)
set(NM_FILE ${PROJECT_BINARY_DIR}/${BIN_NAME}.nm)
set(PARSE_TOOL_DIR "${PROJECT_BINARY_DIR}/parse_tool")
add_custom_command(TARGET HSO_DB POST_BUILD
COMMAND ${Python3_EXECUTABLE} ${HSO_PARSE_MAIN} ${PARSE_TOOL_DIR} ${INFO_FILE} ${NM_FILE} ${XML_FILE}
COMMAND ${CP_PY} ${HSO_PARSE_DIR}/ ${PARSE_TOOL_DIR} "none" *.py
)
endif()
endfunction(create_hso_db)