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