初始提交
This commit is contained in:
23
build/cmake/build_boot_bin_cp.cmake
Executable file
23
build/cmake/build_boot_bin_cp.cmake
Executable file
@ -0,0 +1,23 @@
|
||||
#===============================================================================
|
||||
# @brief cmake file
|
||||
# Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2023-2023. All rights reserved.
|
||||
#===============================================================================
|
||||
|
||||
if(NOT "${FLASHBOOT_CFG}" STREQUAL "")
|
||||
add_custom_target(COPY_FLASHBOOT_BIN ALL
|
||||
COMMAND ${CP} ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin/${FLASHBOOT_CFG}/flashboot_sign_a.bin ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin/flashboot_sign_a.bin &&
|
||||
${CP} ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin/${FLASHBOOT_CFG}/flashboot_sign_b.bin ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin/flashboot_sign_b.bin
|
||||
COMMENT "copy bin file"
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS GENERAT_SIGNBIN
|
||||
)
|
||||
endif()
|
||||
|
||||
if(NOT "${LOADERBOOT_CFG}" STREQUAL "")
|
||||
add_custom_target(COPY_LOADERBOOT_BIN ALL
|
||||
COMMAND ${CP} ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin/${LOADERBOOT_CFG}/loaderboot_sign.bin ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin/loaderboot_sign.bin
|
||||
COMMENT "copy bin file"
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS GENERAT_SIGNBIN
|
||||
)
|
||||
endif()
|
15
build/cmake/build_command.cmake
Executable file
15
build/cmake/build_command.cmake
Executable file
@ -0,0 +1,15 @@
|
||||
set(ECHO ${CMAKE_COMMAND} -E echo)
|
||||
set(MKDIR ${CMAKE_COMMAND} -E make_directory)
|
||||
set(RENAME ${CMAKE_COMMAND} -E rename)
|
||||
set(CP_PY ${Python3_EXECUTABLE} ${BUILD_UTILS} copy)
|
||||
set(CP_PY_FORCE ${Python3_EXECUTABLE} ${BUILD_UTILS} copy_force)
|
||||
set(CP_DIR ${CMAKE_COMMAND} -E copy_directory)
|
||||
set(RM ${CMAKE_COMMAND} -E rm -f)
|
||||
set(RM_DIR ${CMAKE_COMMAND} -E rm -rf)
|
||||
set(UNZIP ${CMAKE_COMMAND} -E tar x)
|
||||
|
||||
if(${BUILD_PLATFORM} MATCHES "linux")
|
||||
set(CP cp)
|
||||
elseif(${BUILD_PLATFORM} MATCHES "windows")
|
||||
set(CP ${CMAKE_COMMAND} -E copy)
|
||||
endif()
|
335
build/cmake/build_component.cmake
Executable file
335
build/cmake/build_component.cmake
Executable file
@ -0,0 +1,335 @@
|
||||
#===============================================================================
|
||||
# @brief cmake component build
|
||||
# Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2022-2022. All rights reserved.
|
||||
#===============================================================================
|
||||
macro(get_obj_path output obj_root)
|
||||
set(ret)
|
||||
foreach(src ${REGD_SOURCES})
|
||||
# filter full path
|
||||
string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" relpath ${src})
|
||||
# make suffix to be .o
|
||||
list(APPEND ret ${obj_root}/${relpath}.o)
|
||||
endforeach()
|
||||
set(${output} ${ret})
|
||||
endmacro()
|
||||
|
||||
macro(register_component)
|
||||
set(${COMPONENT_NAME}_MODULE_NAME ${MODULE_NAME} CACHE INTERNAL "" FORCE)
|
||||
set(${COMPONENT_NAME}_AUTO_DEF ${AUTO_DEF_FILE_ID} CACHE INTERNAL "" FORCE)
|
||||
set(${COMPONENT_NAME}_SOURCES ${SOURCES} CACHE INTERNAL "" FORCE)
|
||||
endmacro(register_component)
|
||||
|
||||
macro(component_on_rom)
|
||||
if(${COMPONENT_NAME} IN_LIST RAM_COMPONENT)
|
||||
set(COMPONENT_ON_ROM false)
|
||||
elseif(${COMPONENT_NAME} IN_LIST ROM_COMPONENT)
|
||||
set(COMPONENT_ON_ROM true)
|
||||
else()
|
||||
unset(COMPONENT_ON_ROM)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(need_whole_archiv)
|
||||
set(WHOLE_ARCHIV false)
|
||||
if (COMPONENT_ON_ROM STREQUAL true)
|
||||
set(WHOLE_ARCHIV true)
|
||||
endif()
|
||||
if(DEFINED WHOLE_LINK AND WHOLE_LINK STREQUAL true)
|
||||
set(WHOLE_ARCHIV true)
|
||||
endif()
|
||||
unset(WHOLE_LINK)
|
||||
endmacro()
|
||||
|
||||
macro(replace_lib_output_path)
|
||||
install_lib_gen()
|
||||
if(DEFINED LIB)
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIB})
|
||||
endif()
|
||||
if(DEFINED LIB_OUT_PATH)
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIB_OUT_PATH})
|
||||
endif()
|
||||
if(DEFINED CMAKE_ARCHIVE_OUTPUT_DIRECTORY AND ${BUILD_ROM_CALLBACK} AND ${COMPONENT_ON_ROM})
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}-prerom)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(build_library)
|
||||
set(lib_type STATIC)
|
||||
if(DEFINED BUILD_AS_OBJ AND BUILD_AS_OBJ STREQUAL true)
|
||||
set(lib_type OBJECT)
|
||||
endif()
|
||||
|
||||
list(GET SOURCES 0 SOURCES0)
|
||||
get_filename_component(SOURCES0 "${SOURCES0}" ABSOLUTE)
|
||||
if(EXISTS ${SOURCES0})
|
||||
replace_lib_output_path()
|
||||
add_library(${COMPONENT_NAME}
|
||||
${lib_type}
|
||||
"${SOURCES}"
|
||||
)
|
||||
|
||||
target_compile_definitions(${COMPONENT_NAME}
|
||||
PRIVATE
|
||||
${DEFINES}
|
||||
${PRIVATE_DEFINES}
|
||||
${PUBLIC_DEFINES}
|
||||
)
|
||||
|
||||
target_include_directories(${COMPONENT_NAME}
|
||||
PRIVATE
|
||||
${PRIVATE_HEADER}
|
||||
${PUBLIC_HEADER}
|
||||
$<$<COMPILE_LANGUAGE:CXX>:${CXX_HEADERS}>
|
||||
)
|
||||
|
||||
target_compile_options(${COMPONENT_NAME}
|
||||
PRIVATE
|
||||
${COMPILE_CCFLAGS}
|
||||
$<$<BOOL:${USE_KCONFIG}>:-include${PROJECT_BINARY_DIR}/mconfig.h>
|
||||
)
|
||||
|
||||
set(LINK_LIB_${COMPONENT_NAME} ${COMPONENT_NAME})
|
||||
register_component()
|
||||
target_link_libraries(${COMPONENT_NAME} PRIVATE ${TARGETS_INTERFACES})
|
||||
else()
|
||||
if(DEFINED LIB)
|
||||
else()
|
||||
# message(STATUS "[HSF HiLink NOTE] ${SOURCES0} is not found, finding lib${COMPONENT_NAME}.a in ${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_COMMAND}")
|
||||
find_library(LINK_LIB_${COMPONENT_NAME} "lib${COMPONENT_NAME}.a" ${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_COMMAND})
|
||||
if(NOT LINK_LIB_${COMPONENT_NAME})
|
||||
find_library(LINK_LIB_${COMPONENT_NAME} "lib${COMPONENT_NAME}.a" ${ROOT_DIR}/application/ws63/hsf)
|
||||
if(NOT LINK_LIB_${COMPONENT_NAME})
|
||||
message(FATAL_ERROR "${SOURCES0} is not found && lib${COMPONENT_NAME}.a not find")
|
||||
endif()
|
||||
endif()
|
||||
install_sdk(${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_COMMAND}/lib${COMPONENT_NAME}.a "*")
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
if(WHOLE_ARCHIV STREQUAL false)
|
||||
# treat as a non-rom component
|
||||
target_link_libraries(${TARGET_NAME}
|
||||
PRIVATE
|
||||
${LINK_LIB_${COMPONENT_NAME}}
|
||||
)
|
||||
else()
|
||||
# one on rom.
|
||||
target_link_libraries(${TARGET_NAME}
|
||||
PRIVATE
|
||||
-Wl,--whole-archive ${LINK_LIB_${COMPONENT_NAME}} -Wl,--no-whole-archive
|
||||
)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(link_libs)
|
||||
if(DEFINED LIBS)
|
||||
if(WHOLE_ARCHIV STREQUAL false)
|
||||
target_link_libraries(${TARGET_NAME}
|
||||
PRIVATE
|
||||
${LIBS}
|
||||
)
|
||||
else()
|
||||
target_link_libraries(${TARGET_NAME}
|
||||
PRIVATE
|
||||
-Wl,--whole-archive ${LIBS} -Wl,--no-whole-archive
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endmacro(link_libs)
|
||||
|
||||
macro(main_component)
|
||||
if(DEFINED MAIN_COMPONENT AND MAIN_COMPONENT STREQUAL true)
|
||||
set(SDK_PROJECT_FILE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" CACHE INTERNAL "" FORCE)
|
||||
set(MAIN_COMPONENT "${COMPONENT_NAME}" CACHE INTERNAL "" FORCE)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(add_to_logdef)
|
||||
if(DEFINED LOG_DEF)
|
||||
set(LOG_DEF_LIST "${LOG_DEF_LIST}" "${LOG_DEF}" CACHE INTERNAL "" FORCE)
|
||||
endif()
|
||||
endmacro(add_to_logdef)
|
||||
|
||||
macro(install_file)
|
||||
if (DEFINED SDK_OUTPUT_PATH)
|
||||
check_if_closed_component(${COMPONENT_NAME})
|
||||
if (${COMPONENT_IS_CLOSED})
|
||||
if (TARGET ${COMPONENT_NAME})
|
||||
get_property(LIB_PATH TARGET ${COMPONENT_NAME} PROPERTY BINARY_DIR)
|
||||
endif()
|
||||
|
||||
if(DEFINED LIB)
|
||||
install_sdk(${LIB}/ "*")
|
||||
elseif(DEFINED LIB_OUT_PATH)
|
||||
install_dest_sdk(${LIB_OUT_PATH}/lib${COMPONENT_NAME}.a ${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_COMMAND}/lib${COMPONENT_NAME}.a "*.a")
|
||||
elseif(LIB_PATH)
|
||||
install_dest_sdk(${LIB_PATH}/lib${COMPONENT_NAME}.a ${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_COMMAND}/lib${COMPONENT_NAME}.a "*.a")
|
||||
endif()
|
||||
else()
|
||||
foreach(src ${SOURCES})
|
||||
install_sdk(${src} "*")
|
||||
endforeach()
|
||||
foreach(header ${PRIVATE_HEADER} ${PUBLIC_HEADER})
|
||||
install_sdk(${header} "*.h")
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
foreach(lib ${LIBS})
|
||||
install_sdk(${lib} "*")
|
||||
endforeach()
|
||||
endif()
|
||||
endmacro(install_file)
|
||||
|
||||
macro(define_this_module_and_file_id)
|
||||
foreach(filename ${SOURCES})
|
||||
if(filename STREQUAL "")
|
||||
continue()
|
||||
endif()
|
||||
if(${AUTO_DEF_FILE_ID})
|
||||
string(STRIP ${filename} filename)
|
||||
get_filename_component(barename ${filename} NAME)
|
||||
string(REPLACE "." "_" barename ${barename})
|
||||
string(TOUPPER ${barename} barename)
|
||||
string(STRIP ${barename} barename)
|
||||
set_property(
|
||||
SOURCE ${filename}
|
||||
APPEND
|
||||
PROPERTY COMPILE_DEFINITIONS
|
||||
THIS_FILE_ID=${barename})
|
||||
endif()
|
||||
|
||||
if(${AUTO_DEF_MODULE_ID})
|
||||
set(prefix "LOG_")
|
||||
set(suffix "MODULE")
|
||||
string(TOUPPER ${MODULE_NAME} mod_name)
|
||||
string(JOIN ${mod_name} mod_name ${prefix} ${suffix})
|
||||
set_property(
|
||||
SOURCE ${filename}
|
||||
APPEND
|
||||
PROPERTY COMPILE_DEFINITIONS
|
||||
THIS_MOD_ID=${mod_name})
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro(define_this_module_and_file_id)
|
||||
|
||||
macro(unset_var)
|
||||
UNSET(COMPONENT_NAME)
|
||||
UNSET(SOURCES)
|
||||
UNSET(PRIVATE_HEADER)
|
||||
UNSET(PUBLIC_HEADER)
|
||||
UNSET(PRIVATE_DEFINES)
|
||||
UNSET(PUBLIC_DEFINES)
|
||||
UNSET(COMPONENT_CCFLAGS)
|
||||
UNSET(COMPONENT_PUBLIC_CCFLAGS)
|
||||
UNSET(BUILD_AS_OBJ)
|
||||
UNSET(LOG_DEF)
|
||||
UNSET(WHOLE_LINK)
|
||||
UNSET(LINK_LIB_${COMPONENT_NAME})
|
||||
UNSET(LIB_OUT_PATH)
|
||||
UNSET(LIB_DIR)
|
||||
UNSET(LIBS)
|
||||
UNSET(LIB)
|
||||
UNSET(REWRITE_CCFLAGS)
|
||||
UNSET(COMPONENT_IS_CLOSED)
|
||||
endmacro(unset_var)
|
||||
|
||||
|
||||
macro(build_component)
|
||||
component_on_rom()
|
||||
if(DEFINED ROM_SYM_PATH AND COMPONENT_ON_ROM)
|
||||
add_library(${COMPONENT_NAME}_interface INTERFACE)
|
||||
target_include_directories(${COMPONENT_NAME}_interface INTERFACE ${PUBLIC_HEADER})
|
||||
target_compile_definitions(${COMPONENT_NAME}_interface INTERFACE ${PUBLIC_DEFINES})
|
||||
list(GET SOURCES 0 SOURCES0)
|
||||
get_filename_component(SOURCES0 "${SOURCES0}" ABSOLUTE)
|
||||
if(EXISTS ${SOURCES0})
|
||||
register_component()
|
||||
endif()
|
||||
elseif(DEFINED COMPONENT_ON_ROM)
|
||||
need_whole_archiv()
|
||||
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/private)
|
||||
set(PRIVATE_HEADER ${PRIVATE_HEADER} ${CMAKE_CURRENT_SOURCE_DIR}/private)
|
||||
endif()
|
||||
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/public)
|
||||
set(PUBLIC_HEADER ${PUBLIC_HEADER} ${CMAKE_CURRENT_SOURCE_DIR}/public)
|
||||
endif()
|
||||
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||
set(PUBLIC_HEADER ${PUBLIC_HEADER} ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||
endif()
|
||||
if(COMPONENT_ON_ROM STREQUAL false)
|
||||
if(REWRITE_CCFLAGS STREQUAL true)
|
||||
set(COMPILE_CCFLAGS ${COMPONENT_CCFLAGS})
|
||||
else()
|
||||
# treat as a non-rom component
|
||||
set(COMPILE_CCFLAGS ${CCFLAGS} ${COMPONENT_CCFLAGS})
|
||||
endif()
|
||||
else()
|
||||
# one on rom.
|
||||
|
||||
set(COMPILE_CCFLAGS ${ROM_CCFLAGS})
|
||||
endif()
|
||||
|
||||
check_if_closed_component(${COMPONENT_NAME})
|
||||
if (RELEASE OR ${COMPONENT_IS_CLOSED})
|
||||
list(REMOVE_ITEM COMPILE_CCFLAGS "-g")
|
||||
endif()
|
||||
|
||||
add_library(${COMPONENT_NAME}_interface INTERFACE)
|
||||
target_include_directories(${COMPONENT_NAME}_interface INTERFACE ${PUBLIC_HEADER})
|
||||
target_compile_definitions(${COMPONENT_NAME}_interface INTERFACE ${PUBLIC_DEFINES})
|
||||
target_compile_options(${COMPONENT_NAME}_interface INTERFACE ${COMPONENT_PUBLIC_CCFLAGS})
|
||||
set(TARGETS_INTERFACES ${RAM_COMPONENT} ${ROM_COMPONENT})
|
||||
list(TRANSFORM TARGETS_INTERFACES APPEND "_interface")
|
||||
|
||||
list(LENGTH PUBLIC_HEADER PUBLIC_HEADER_NUM)
|
||||
if(NOT ${PUBLIC_HEADER_NUM} EQUAL 0)
|
||||
set(ALL_PUBLIC_HEADER "${ALL_PUBLIC_HEADER}" "${PUBLIC_HEADER}" CACHE INTERNAL "" FORCE)
|
||||
endif()
|
||||
|
||||
if(DEFINED LOG_CUSTOM_ENABLE)
|
||||
if(${LOG_CUSTOM_ENABLE} STREQUAL True)
|
||||
if(NOT ${PUBLIC_HEADER_NUM} EQUAL 0)
|
||||
set(ALL_HEADER_DIRS "${ALL_HEADER_DIRS}" "${PUBLIC_HEADER}" CACHE INTERNAL "" FORCE)
|
||||
endif()
|
||||
|
||||
list(LENGTH PRIVATE_HEADER PRIVATE_HEADER_NUM)
|
||||
if(NOT ${PRIVATE_HEADER_NUM} EQUAL 0)
|
||||
set(ALL_HEADER_DIRS "${ALL_HEADER_DIRS}" "${PRIVATE_HEADER}" CACHE INTERNAL "" FORCE)
|
||||
endif()
|
||||
|
||||
list(LENGTH PUBLIC_DEFINES PUBLIC_DEFINES_NUM)
|
||||
if(NOT ${PUBLIC_DEFINES_NUM} EQUAL 0)
|
||||
set(ALL_DEFINES "${ALL_DEFINES}" "${PUBLIC_DEFINES}" CACHE INTERNAL "" FORCE)
|
||||
endif()
|
||||
|
||||
list(LENGTH PRIVATE_DEFINES PRIVATE_DEFINES_NUM)
|
||||
if(NOT ${PRIVATE_DEFINES_NUM} EQUAL 0)
|
||||
set(ALL_DEFINES "${ALL_DEFINES}" "${PRIVATE_DEFINES}" CACHE INTERNAL "" FORCE)
|
||||
endif()
|
||||
|
||||
list(LENGTH DEFINES DEFINES_NUM)
|
||||
if(NOT ${DEFINES_NUM} EQUAL 0)
|
||||
set(ALL_DEFINES "${ALL_DEFINES}" "${DEFINES}" CACHE INTERNAL "" FORCE)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(ALL_PUBLIC_DEFINES "${ALL_PUBLIC_DEFINES}" "${PUBLIC_DEFINES}" CACHE INTERNAL "" FORCE)
|
||||
set(ALL_PUBLIC_CCFLAGS "${ALL_PUBLIC_CCFLAGS}" "${COMPONENT_PUBLIC_CCFLAGS}" CACHE INTERNAL "" FORCE)
|
||||
link_libs()
|
||||
list(LENGTH SOURCES SOURCES_NUM)
|
||||
if(NOT ${SOURCES_NUM} EQUAL 0)
|
||||
build_library()
|
||||
endif()
|
||||
if(${BUILD_ROM_CALLBACK} AND ${COMPONENT_ON_ROM})
|
||||
reg_rom_callback()
|
||||
endif()
|
||||
define_this_module_and_file_id()
|
||||
sdk_export_component("component")
|
||||
install_file()
|
||||
add_to_logdef()
|
||||
main_component()
|
||||
endif()
|
||||
unset_var()
|
||||
endmacro()
|
164
build/cmake/build_elf_info.cmake
Executable file
164
build/cmake/build_elf_info.cmake
Executable file
@ -0,0 +1,164 @@
|
||||
#===============================================================================
|
||||
# @brief cmake file
|
||||
# Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2022-2022. All rights reserved.
|
||||
#===============================================================================
|
||||
|
||||
set(BUILT_LDS ${CMAKE_BINARY_DIR}/linker.lds)
|
||||
|
||||
if (DEFINED BUILD_LEVEL AND NOT ${BUILD_LEVEL} STREQUAL "release")
|
||||
set(EXTRA_DUMP_OPT -S -l)
|
||||
endif()
|
||||
|
||||
if (DEFINED NHSO AND "${NHSO}" STREQUAL "True")
|
||||
set(GEN_PARSE_TOOL False)
|
||||
endif()
|
||||
|
||||
if((NOT DEFINED DEBUG_FILES OR "lst" IN_LIST DEBUG_FILES OR "mem" IN_LIST DEBUG_FILES) AND NOT ${ROM_CHECK})
|
||||
add_custom_target(GENERAT_LST ALL
|
||||
COMMAND ${CMAKE_OBJDUMP} -x ${EXTRA_DUMP_OPT} ${BIN_NAME}.elf > ${BIN_NAME}.lst
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS ${TARGET_NAME}
|
||||
)
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED DEBUG_FILES OR "nm" IN_LIST DEBUG_FILES OR "${GEN_PARSE_TOOL}" STREQUAL "True")
|
||||
add_custom_target(GENERAT_NM ALL
|
||||
COMMAND ${CMAKE_NM} -S -n --format=sysv ${BIN_NAME}.elf > ${BIN_NAME}.nm
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS ${TARGET_NAME}
|
||||
)
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED DEBUG_FILES OR "asm" IN_LIST DEBUG_FILES)
|
||||
add_custom_target(GENERAT_ASM ALL
|
||||
COMMAND ${CMAKE_OBJDUMP} -d -m ${ARCH_FAMILY} ${BIN_NAME}.elf > ${BIN_NAME}.asm
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS ${TARGET_NAME}
|
||||
)
|
||||
endif()
|
||||
|
||||
if("${GEN_PARSE_TOOL}" STREQUAL "True")
|
||||
add_custom_target(GENERAT_INFO ALL
|
||||
COMMAND ${CMAKE_OBJDUMP} -Wi ${BIN_NAME}.elf > ${BIN_NAME}.info
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS ${TARGET_NAME}
|
||||
)
|
||||
endif()
|
||||
|
||||
if((NOT DEFINED DEBUG_FILES OR "mem" IN_LIST DEBUG_FILES) AND NOT ${ROM_CHECK})
|
||||
add_custom_target(GENERAT_MEM ALL
|
||||
COMMAND ${Python3_EXECUTABLE} ${ELF_TO_DU} ${ROOT_DIR} ${BIN_NAME}.elf ${CMAKE_NM} > ${BIN_NAME}.du
|
||||
COMMAND ${Python3_EXECUTABLE} ${MEM_STATE} ${BIN_NAME}.lst ${BIN_NAME}.du ${BUILT_LDS} ${CHIP} > ${BIN_NAME}.mem
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS "${TARGET_NAME};GENERAT_LST"
|
||||
)
|
||||
if(NOT "SDK_NOT_MEM_LIMIT" IN_LIST DEFINES)
|
||||
add_custom_target(GENERAT_MEM_LIMIT ALL
|
||||
COMMENT "MEM_LIMIT"
|
||||
COMMAND ${Python3_EXECUTABLE} ${PARSE_MAP_SIZE_INFO} ${BIN_NAME}.lst ${BIN_NAME}.map
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS "${TARGET_NAME};GENERAT_LST")
|
||||
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED DEBUG_FILES OR "hex" IN_LIST DEBUG_FILES)
|
||||
add_custom_target(GENERAT_STD_HEX ALL
|
||||
# 生成 intel 标准 hex 文件
|
||||
COMMAND ${CMAKE_OBJCOPY} -O ihex ${BIN_NAME}.elf ${BIN_NAME}_std.hex
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS GENERAT_BIN
|
||||
)
|
||||
add_custom_target(GENERAT_HEX ALL
|
||||
COMMAND ${Python3_EXECUTABLE} ${GEN_HEX} ${BIN_NAME}.bin ${BIN_NAME}.hex
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS GENERAT_BIN
|
||||
)
|
||||
|
||||
if(DEFINED ROM_COMPONENT)
|
||||
add_custom_target(GENERAT_ROM_HEX ALL
|
||||
COMMAND ${Python3_EXECUTABLE} ${GEN_HEX} ${BIN_NAME}_rom.bin ${BIN_NAME}_rom.hex
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS GENERAT_BIN
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (DEFINED BUILD_LEVEL AND NOT ${BUILD_LEVEL} STREQUAL "release")
|
||||
if("${IMAGE_ANALYSIS}" STREQUAL "True" AND ${BUILD_PLATFORM} MATCHES "linux")
|
||||
add_custom_target(GENERAT_IMAGE_ANALYSIS ALL
|
||||
COMMAND ${Python3_EXECUTABLE} ${IMAGE_ANALSIS_TOOL} ${TARGET_COMMAND} ${OBJDUMP_PATH}
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS ${TARGET_NAME}
|
||||
)
|
||||
endif()
|
||||
|
||||
if("${CODESIZE_STATISTIC}" STREQUAL "True")
|
||||
add_custom_target(GENERAT_CODESIZE_STATISTIC ALL
|
||||
COMMAND ${Python3_EXECUTABLE} ${CODESIZE_STATISTIC_TOOL} ${TARGET_COMMAND}
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS ${TARGET_NAME}
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if("${GEN_ROM_INFO}" STREQUAL "True")
|
||||
set(REMOTE_LIB ${ROOT_DIR}/drivers/chips/${CHIP}/remote_lib/${BUILD_TARGET_NAME}.cfg)
|
||||
if (${CHIP} MATCHES "bs20|bs21|bs21a|bs21e|bs22|bs26")
|
||||
set(TARGET_SYM ${ROOT_DIR}/drivers/chips/bs2x/rom/rom_config/${CORE}/${BIN_NAME}.sym)
|
||||
else()
|
||||
set(TARGET_SYM ${ROOT_DIR}/drivers/chips/${CHIP}/rom_config/${CORE}/${BIN_NAME}.sym)
|
||||
endif()
|
||||
add_custom_target(GENERAT_ROM_INFO ALL
|
||||
COMMAND ${Python3_EXECUTABLE} ${GEN_ROM_INFO_TOOL} ${BIN_NAME}.elf ${REMOTE_LIB} ${TARGET_SYM}
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS GENERAT_BIN
|
||||
)
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED PATCH)
|
||||
set(PATCH False)
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED PATCH_DYN_TBL)
|
||||
set(PATCH_DYN_TBL False)
|
||||
endif()
|
||||
|
||||
if(${PATCH_DYN_TBL})
|
||||
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${ROOT_DIR}/build/config/target_config/${CHIP}/patch_config
|
||||
${PROJECT_BINARY_DIR}/patch_config
|
||||
)
|
||||
|
||||
if((${PATCH} AND ${PATCH_DYN_TBL}) AND NOT ${ROM_CHECK})
|
||||
set(PATCH_CONFIG ${PROJECT_BINARY_DIR}/patch_config)
|
||||
set(GET_TA_TOOL ${ROOT_DIR}/build/config/target_config/${CHIP}/script/patch_get_tbl_info.py)
|
||||
add_custom_target(GET_DYN_TBL_ADDR ALL
|
||||
COMMAND ${Python3_EXECUTABLE} ${GET_TA_TOOL} ${CORE} ${TARGET_COMMAND} ${BIN_NAME} ${PATCH_CONFIG} ${PROJECT_BINARY_DIR}
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS GENERAT_BIN
|
||||
)
|
||||
endif()
|
||||
|
||||
if((DEFINED ROM_COMPONENT AND ${PATCH}) AND NOT ${ROM_CHECK})
|
||||
set(PATCH_CONFIG ${PROJECT_BINARY_DIR}/patch_config)
|
||||
add_custom_target(GENERAT_ROM_PATCH ALL
|
||||
COMMAND ${Python3_EXECUTABLE} ${GEN_PATCH} ${BIN_NAME}.bin ${BIN_NAME}_rom.bin ${BIN_NAME}.nm ${PATCH_CONFIG} ${CORE} ${TARGET_COMMAND} ${PROJECT_BINARY_DIR}
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS GET_DYN_TBL_ADDR GENERAT_NM
|
||||
)
|
||||
endif()
|
||||
|
||||
else()
|
||||
|
||||
if(((DEFINED ROM_COMPONENT AND ${PATCH}) AND NOT ${ROM_CHECK}) OR DEFINED ROM_SYM_PATH)
|
||||
set(PATCH_CONFIG ${ROOT_DIR}/build/config/target_config/${CHIP}/patch_config)
|
||||
add_custom_target(GENERAT_ROM_PATCH ALL
|
||||
COMMAND ${Python3_EXECUTABLE} ${GEN_PATCH} ${BIN_NAME}.bin ${BIN_NAME}_rom.bin ${BIN_NAME}.nm ${PATCH_CONFIG} ${CORE} ${TARGET_COMMAND} ${PROJECT_BINARY_DIR}
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS GENERAT_BIN GENERAT_NM
|
||||
)
|
||||
endif()
|
||||
|
||||
endif()
|
195
build/cmake/build_function.cmake
Executable file
195
build/cmake/build_function.cmake
Executable file
@ -0,0 +1,195 @@
|
||||
#===============================================================================
|
||||
# @brief cmake toolchains
|
||||
# Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2022-2022. All rights reserved.
|
||||
#===============================================================================
|
||||
macro(return_if_not_build)
|
||||
if(NOT ${COMPONENT_NAME} IN_LIST TARGET_COMPONENT)
|
||||
return()
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(add_subdirectory_if_exist _path)
|
||||
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_path}/CMakeLists.txt)
|
||||
add_subdirectory(${_path})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(add_subdirectory_with_alias_if_exist _path _path_alias)
|
||||
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_path}/CMakeLists.txt)
|
||||
add_subdirectory(${_path} ${_path_alias})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
function(add_path_with_alias_if_exist _path _name)
|
||||
if(EXISTS ${_path}/CMakeLists.txt)
|
||||
add_subdirectory(${_path} ${_name})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(add_path_if_exist _path)
|
||||
if(EXISTS ${_path}/CMakeLists.txt)
|
||||
add_subdirectory(${_path})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(KCONFIG_GET_PARAMS KCONFIG_PATH)
|
||||
file(STRINGS ${KCONFIG_PATH} LOS_CONFIG_LIST ENCODING "UTF-8")
|
||||
|
||||
foreach (CONFIG ${LOS_CONFIG_LIST})
|
||||
# CONFIG maybe: CONFIG_CC_STACKPROTECTOR_STRONG=y
|
||||
|
||||
# The first: variable name
|
||||
string(REGEX MATCH "[^=]+" CONFIG_VAR_NAME ${CONFIG})
|
||||
|
||||
# The second: variable value
|
||||
string(REGEX MATCH "=(.+$)" CONFIG_VAR_VAL ${CONFIG})
|
||||
set(CONFIG_VAR_VAL ${CMAKE_MATCH_1})
|
||||
if(CONFIG_VAR_VAL MATCHES "^y$" OR CONFIG_VAR_VAL MATCHES "^\".*\"$")
|
||||
string(REPLACE "\"" "" CONFIG_VAR_VAL ${CONFIG_VAR_VAL})
|
||||
set(${CONFIG_VAR_NAME} ${CONFIG_VAR_VAL} PARENT_SCOPE)
|
||||
endif()
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
macro(check_if_closed_component component_name)
|
||||
set(COMPONENT_IS_CLOSED false)
|
||||
if("${component_name}" IN_LIST CLOSED_COMPONENTS)
|
||||
set(COMPONENT_IS_CLOSED true)
|
||||
endif()
|
||||
if(DEFINED OPEN_COMPONENTS AND NOT ("${component_name}" IN_LIST OPEN_COMPONENTS))
|
||||
set(COMPONENT_IS_CLOSED true)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(add_glob_include_path INCLUDE_PATHS)
|
||||
get_property(GLOB_TARGET_INCLUDE GLOBAL PROPERTY TARGET_INCLUDE)
|
||||
list(APPEND GLOB_TARGET_INCLUDE "${INCLUDE_PATHS}")
|
||||
list(REMOVE_DUPLICATES GLOB_TARGET_INCLUDE)
|
||||
set_property(GLOBAL PROPERTY TARGET_INCLUDE ${GLOB_TARGET_INCLUDE})
|
||||
endmacro(add_glob_include_path)
|
||||
|
||||
macro(add_fsm_msgdef_headers MSGDEF_HEADERS)
|
||||
get_property(GLOB_MSGDEF_HEADERS GLOBAL PROPERTY TARGET_MSGDEF_HEADERS)
|
||||
list(APPEND GLOB_MSGDEF_HEADERS "${MSGDEF_HEADERS}")
|
||||
list(REMOVE_DUPLICATES GLOB_MSGDEF_HEADERS)
|
||||
set_property(GLOBAL PROPERTY TARGET_MSGDEF_HEADERS ${GLOB_MSGDEF_HEADERS})
|
||||
endmacro()
|
||||
|
||||
macro(ut_autogen_fsms FSM_FILES AUTOGEN_SOURCES AUTOGEN_INCLUDE_PATH)
|
||||
set(FSM_AUTOGEN_INCLUDE_PATH)
|
||||
foreach(FILE_PATH ${FSM_FILES})
|
||||
if(EXISTS ${CMAKE_SOURCE_DIR}/../../../../../../protocol/cat1/lte/${FILE_PATH})
|
||||
get_filename_component(FILE_REL_PATH ${FILE_PATH} ABSOLUTE BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
get_filename_component(FILE_DIRECTORY ${FILE_REL_PATH} DIRECTORY)
|
||||
string(REGEX MATCH "${CMAKE_CURRENT_SOURCE_DIR}/" MATCH_RES ${FILE_DIRECTORY})
|
||||
if(MATCH_RES STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}/")
|
||||
set(AUTOGEN_PATH ${CMAKE_CURRENT_SOURCE_DIR}/stub/fsm_autogen)
|
||||
file(MAKE_DIRECTORY ${AUTOGEN_PATH})
|
||||
file(RELATIVE_PATH FILE_RELATIVE_PATH ${CMAKE_SOURCE_DIR} ${FILE_REL_PATH})
|
||||
set(FSM_FILE_ABSOLUTE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../protocol/cat1/lte/${FSM_FILES})
|
||||
execute_process(
|
||||
COMMAND python ${CMAKE_SOURCE_DIR}/../../../../../../tools/fsmgen/fsmgen.py ${FSM_FILE_ABSOLUTE_PATH} --out_dir ${AUTOGEN_PATH}
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
)
|
||||
list(APPEND FSM_AUTOGEN_INCLUDE_PATH ${AUTOGEN_PATH})
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
list(REMOVE_DUPLICATES FSM_AUTOGEN_INCLUDE_PATH)
|
||||
foreach(FSM_GEN_PATCH ${FSM_AUTOGEN_INCLUDE_PATH})
|
||||
aux_source_directory(${FSM_GEN_PATCH} FSM_SOURCES)
|
||||
list(APPEND ${AUTOGEN_SOURCES} ${FSM_SOURCES})
|
||||
file(GLOB FSM_MSGDEF_PUB_HEADERS "${FSM_AUTOGEN_INCLUDE_PATH}/*public.h")
|
||||
file(GLOB FSM_MSGDEF_PRV_HEADERS "${FSM_AUTOGEN_INCLUDE_PATH}/*private.h")
|
||||
foreach(FSM_MSGDEF_PRV_HEADER ${FSM_MSGDEF_PRV_HEADERS})
|
||||
string(REPLACE "${FSM_AUTOGEN_INCLUDE_PATH}" "${CMAKE_CURRENT_SOURCE_DIR}/private" RET "${FSM_MSGDEF_PRV_HEADER}")
|
||||
string(REPLACE "fsm_gen_private.h" "fsm_private.h" FSM_SRC_PRV_HEADER "${RET}")
|
||||
string(REPLACE "fsm_gen_private.h" "fsm.h" FSM_SRC_HEADER "${RET}")
|
||||
file(GLOB FSM_SRC_PRV_HEADERS "${FSM_SRC_PRV_HEADER}")
|
||||
file(GLOB FSM_SRC_HEADERS "${FSM_SRC_HEADER}")
|
||||
add_fsm_msgdef_headers("${FSM_SRC_PRV_HEADERS}")
|
||||
add_fsm_msgdef_headers("${FSM_SRC_HEADERS}")
|
||||
endforeach()
|
||||
add_fsm_msgdef_headers("${FSM_MSGDEF_PUB_HEADERS}")
|
||||
add_fsm_msgdef_headers("${FSM_MSGDEF_PRV_HEADERS}")
|
||||
endforeach(FSM_GEN_PATCH)
|
||||
set(${AUTOGEN_INCLUDE_PATH} ${FSM_AUTOGEN_INCLUDE_PATH})
|
||||
endmacro(ut_autogen_fsms)
|
||||
|
||||
macro(autogen_fsms FSM_FILES AUTOGEN_SOURCES AUTOGEN_INCLUDE_PATH)
|
||||
set(FSM_AUTOGEN_INCLUDE_PATH)
|
||||
foreach(FILE_PATH ${FSM_FILES})
|
||||
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${FILE_PATH})
|
||||
get_filename_component(FILE_REL_PATH ${FILE_PATH} ABSOLUTE BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
get_filename_component(FILE_DIRECTORY ${FILE_REL_PATH} DIRECTORY)
|
||||
string(REGEX MATCH "${CMAKE_CURRENT_SOURCE_DIR}/" MATCH_RES ${FILE_DIRECTORY})
|
||||
if(MATCH_RES STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}/")
|
||||
set(AUTOGEN_PATH ${CMAKE_CURRENT_BINARY_DIR}/private)
|
||||
file(MAKE_DIRECTORY ${AUTOGEN_PATH})
|
||||
# message(STATUS "Autogen fsm code form ${FILE_PATH}")
|
||||
file(RELATIVE_PATH FILE_RELATIVE_PATH ${CMAKE_SOURCE_DIR} ${FILE_REL_PATH})
|
||||
execute_process(
|
||||
COMMAND python ${CMAKE_SOURCE_DIR}/tools/fsmgen/fsmgen.py ${FILE_RELATIVE_PATH} --out_dir ${AUTOGEN_PATH}
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
)
|
||||
list(APPEND FSM_AUTOGEN_INCLUDE_PATH ${AUTOGEN_PATH})
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
list(REMOVE_DUPLICATES FSM_AUTOGEN_INCLUDE_PATH)
|
||||
foreach(FSM_GEN_PATCH ${FSM_AUTOGEN_INCLUDE_PATH})
|
||||
aux_source_directory(${FSM_GEN_PATCH} FSM_SOURCES)
|
||||
list(APPEND ${AUTOGEN_SOURCES} ${FSM_SOURCES})
|
||||
file(GLOB FSM_MSGDEF_PUB_HEADERS "${FSM_AUTOGEN_INCLUDE_PATH}/*public.h")
|
||||
file(GLOB FSM_MSGDEF_PRV_HEADERS "${FSM_AUTOGEN_INCLUDE_PATH}/*private.h")
|
||||
foreach(FSM_MSGDEF_PRV_HEADER ${FSM_MSGDEF_PRV_HEADERS})
|
||||
string(REPLACE "${FSM_AUTOGEN_INCLUDE_PATH}" "${CMAKE_CURRENT_SOURCE_DIR}/private" RET "${FSM_MSGDEF_PRV_HEADER}")
|
||||
string(REPLACE "fsm_gen_private.h" "fsm_private.h" FSM_SRC_PRV_HEADER "${RET}")
|
||||
string(REPLACE "fsm_gen_private.h" "fsm.h" FSM_SRC_HEADER "${RET}")
|
||||
file(GLOB FSM_SRC_PRV_HEADERS "${FSM_SRC_PRV_HEADER}")
|
||||
file(GLOB FSM_SRC_HEADERS "${FSM_SRC_HEADER}")
|
||||
add_fsm_msgdef_headers("${FSM_SRC_PRV_HEADERS}")
|
||||
add_fsm_msgdef_headers("${FSM_SRC_HEADERS}")
|
||||
endforeach()
|
||||
add_fsm_msgdef_headers("${FSM_MSGDEF_PUB_HEADERS}")
|
||||
add_fsm_msgdef_headers("${FSM_MSGDEF_PRV_HEADERS}")
|
||||
endforeach(FSM_GEN_PATCH)
|
||||
set(${AUTOGEN_INCLUDE_PATH} ${FSM_AUTOGEN_INCLUDE_PATH})
|
||||
endmacro(autogen_fsms)
|
||||
|
||||
macro(autogen_rpc_code RPC_JSON_PATH)
|
||||
if(${CORE} STREQUAL "protocol_core")
|
||||
set(RPC_CORE "protocol")
|
||||
elseif(${CORE} STREQUAL "acore")
|
||||
set(RPC_CORE "application")
|
||||
endif()
|
||||
if(DEFINED RPC_CORE)
|
||||
string(REPLACE "_" "-" TARGET_DIR ${BUILD_TARGET_NAME})
|
||||
set(RPC_BASE_PATH ${CMAKE_SOURCE_DIR}/output/${CHIP}/${CORE}/${TARGET_DIR}/rpc_autogen)
|
||||
set(PRC_INCLUDE_DIR_PATH ${RPC_BASE_PATH}/public/${RPC_CORE})
|
||||
set(PRC_INCLUDE_FILE_PATH ${PRC_INCLUDE_DIR_PATH}/rpc_auto_generated.h)
|
||||
set(RPC_SOURCE_FILE_PATH ${RPC_BASE_PATH}/private/${RPC_CORE}/rpc_auto_generated_${RPC_CORE}.c)
|
||||
set(RPC_OPT_FILE_PATH ${RPC_BASE_PATH}/public/${RPC_CORE}/rpc_auto_generated_call_tree.opt)
|
||||
set(RPC_SCRIPT_PATH ${CMAKE_SOURCE_DIR}/tools/fsmgen/autogen/rpc/json_to_rpc_code.py)
|
||||
execute_process(
|
||||
COMMAND python3 ${RPC_SCRIPT_PATH} ${RPC_CORE} ${RPC_SOURCE_FILE_PATH} ${PRC_INCLUDE_FILE_PATH} ${RPC_OPT_FILE_PATH} ${RPC_JSON_PATH}
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
)
|
||||
endif()
|
||||
endmacro(autogen_rpc_code)
|
||||
|
||||
macro(autogen_at_json_code)
|
||||
string(REPLACE "_" "-" TARGET_DIR ${BUILD_TARGET_NAME})
|
||||
set(AT_GEN_DIR ${CMAKE_SOURCE_DIR}/output/${CHIP}/${CORE}/${TARGET_DIR}/at_autogen)
|
||||
set(AT_GEN_TOOL ${CMAKE_SOURCE_DIR}/tools/fsmgen/autogen/at/json_to_at_code.py)
|
||||
if((DEFINED TARGET_AT_JSON_FILES) AND (DEFINED AT_GEN_DIR))
|
||||
if(NOT EXISTS ${AT_GEN_DIR})
|
||||
file(MAKE_DIRECTORY ${AT_GEN_DIR})
|
||||
endif()
|
||||
foreach(json_path ${TARGET_AT_JSON_FILES})
|
||||
execute_process(COMMAND python3 ${AT_GEN_TOOL} --outdir ${AT_GEN_DIR} --inputfile ${json_path})
|
||||
endforeach()
|
||||
endif()
|
||||
endmacro(autogen_at_json_code)
|
91
build/cmake/build_hso_database.cmake
Executable file
91
build/cmake/build_hso_database.cmake
Executable file
@ -0,0 +1,91 @@
|
||||
#===============================================================================
|
||||
# @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)
|
84
build/cmake/build_linker.cmake
Executable file
84
build/cmake/build_linker.cmake
Executable file
@ -0,0 +1,84 @@
|
||||
#===============================================================================
|
||||
# @brief cmake deal with link script
|
||||
# Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2022-2022. All rights reserved.
|
||||
#===============================================================================
|
||||
|
||||
if("${LINK_SCRIPT}" STREQUAL "")
|
||||
MESSAGE(FATAL_ERROR "linkscript is not found!")
|
||||
endif()
|
||||
|
||||
function(auto_gen_lds macro_name lib_list)
|
||||
file(APPEND ${CMAKE_BINARY_DIR}/auto_gen_libfunc.lds "#define ${macro_name}(func) \\\n")
|
||||
set(LIB_FUNC "${${lib_list}}")
|
||||
list(TRANSFORM LIB_FUNC PREPEND " func(*lib")
|
||||
list(TRANSFORM LIB_FUNC APPEND ".a:*.o) \\\n")
|
||||
file(APPEND ${CMAKE_BINARY_DIR}/auto_gen_libfunc.lds ${LIB_FUNC} "\n")
|
||||
endfunction()
|
||||
|
||||
# 添加用于处理链接脚本用的编译宏
|
||||
set(LDS_DEFINES ${DEFINES})
|
||||
list(TRANSFORM LDS_DEFINES PREPEND "-D")
|
||||
|
||||
# 添加用于处理链接脚本用的编译头文件
|
||||
if(DEFINED LDS_HEADER)
|
||||
list(REMOVE_ITEM LDS_HEADER "")
|
||||
list(TRANSFORM LDS_HEADER PREPEND "-I")
|
||||
else()
|
||||
set(LDS_HEADER ${ALL_PUBLIC_HEADER})
|
||||
list(REMOVE_DUPLICATES LDS_HEADER)
|
||||
list(REMOVE_ITEM LDS_HEADER "")
|
||||
list(TRANSFORM LDS_HEADER PREPEND "-I")
|
||||
endif()
|
||||
list(APPEND LDS_HEADER -I${CMAKE_BINARY_DIR})
|
||||
if(DEFINED ROM_RAM_CHECK)
|
||||
list(APPEND LDSDEFINES -DROM_BIN_CHECK)
|
||||
endif()
|
||||
list(TRANSFORM LDS_HEADER PREPEND "\"")
|
||||
list(TRANSFORM LDS_HEADER APPEND "\"")
|
||||
string(JOIN " " LDS_HEADER_STR ${LDS_HEADER})
|
||||
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/linker_header.srp "${LDS_HEADER_STR}")
|
||||
auto_gen_lds("LIB_RAM_FUNC" RAM_COMPONENT)
|
||||
auto_gen_lds("LIB_ROM_FUNC" ROM_COMPONENT)
|
||||
auto_gen_lds("LIB_LOS_FUNC" LOS_LIB)
|
||||
|
||||
if(DEFINED SDK_OUTPUT_PATH)
|
||||
string(REPLACE "${PROJECT_SOURCE_DIR}" "${SDK_OUTPUT_PATH}" dest ${LINK_SCRIPT})
|
||||
get_filename_component(dest ${dest} DIRECTORY)
|
||||
install(FILES ${LINK_SCRIPT} DESTINATION ${dest})
|
||||
install_sdk(${LINK_SCRIPT} "*.prelds")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED ROM_CHECK)
|
||||
set(ROM_CHECK False)
|
||||
endif()
|
||||
|
||||
if(${ROM_CHECK})
|
||||
list(APPEND LDS_DEFINES "-DROM_CHECK")
|
||||
endif()
|
||||
|
||||
add_custom_command(TARGET ${TARGET_NAME} PRE_BUILD
|
||||
COMMAND ${CMAKE_C_COMPILER} -P -xc -E -o linker.lds @${CMAKE_CURRENT_BINARY_DIR}/linker_header.srp ${LDS_DEFINES} ${LINK_SCRIPT}
|
||||
COMMENT "Generating ${LINK_SCRIPT} -> ${CMAKE_BINARY_DIR}/linker.lds"
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
target_link_directories(${TARGET_NAME}
|
||||
PRIVATE
|
||||
${LIB_GCC}
|
||||
${LIB_C}
|
||||
${LIB_CXX}
|
||||
)
|
||||
|
||||
target_link_libraries(${TARGET_NAME}
|
||||
PRIVATE
|
||||
-Wl,--start-group "${STD_LIBS}" -Wl,--end-group
|
||||
)
|
||||
|
||||
target_link_options(${TARGET_NAME}
|
||||
PRIVATE
|
||||
${LINKFLAGS}
|
||||
-Wl,-T${CMAKE_BINARY_DIR}/linker.lds -nostartfiles
|
||||
-Wl,--gc-sections -Wl,-Map=${CMAKE_BINARY_DIR}/${BIN_NAME}.map
|
||||
-Wl,--print-memory-usage
|
||||
)
|
71
build/cmake/build_nv_bin.cmake
Executable file
71
build/cmake/build_nv_bin.cmake
Executable file
@ -0,0 +1,71 @@
|
||||
#===============================================================================
|
||||
# @brief cmake file
|
||||
# Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2023-2023. All rights reserved.
|
||||
#===============================================================================
|
||||
|
||||
if(${NV_UPDATE})
|
||||
add_custom_target(GENERAT_NVBIN ALL
|
||||
COMMAND ${Python3_EXECUTABLE} ${ROOT_DIR}/build/config/target_config/${CHIP}/build_nvbin.py ${TARGET_NAME}
|
||||
COMMENT "update nv bin"
|
||||
WORKING_DIRECTORY ${ROOT_DIR}
|
||||
DEPENDS GENERAT_BIN
|
||||
)
|
||||
endif()
|
||||
|
||||
if(NOT ${NV_CFG} EQUAL "")
|
||||
set(NV_CFG_JSON ${PROJECT_BINARY_DIR}/nv_config/build_nv_config.json)
|
||||
set(OUT_BIN_DIR ${ROOT_DIR}/interim_binary/${CHIP}/bin/nv/${PKG_TARGET_NAME})
|
||||
if (NOT EXISTS ${OUT_BIN_DIR})
|
||||
file(MAKE_DIRECTORY ${OUT_BIN_DIR})
|
||||
endif()
|
||||
set(OUT_BIN_NAME ${CHIP}_all_nv.bin)
|
||||
set(BUILD_TEMP_PATH ${PROJECT_BINARY_DIR}/nv_config)
|
||||
set(NV_TARGET_JSON_PATH ${ROOT_DIR}/middleware/chips/${CHIP}/nv/nv_config/nv_target.json)
|
||||
set(NV_RELATIVE_PATH ${PROJECT_BINARY_DIR}/nv_config)
|
||||
set(NV_DEFAULT_CFG_DIR ${ROOT_DIR}/middleware/chips/${CHIP}/nv/nv_config/${NV_CFG}/cfg)
|
||||
set(DATABASE_TXT_FILE ${PROJECT_BINARY_DIR}/nv_config)
|
||||
|
||||
|
||||
if (NOT EXISTS ${NV_CFG_JSON})
|
||||
file(WRITE ${NV_CFG_JSON} "{\"OUT_BIN_DIR\":\"${OUT_BIN_DIR}\", \
|
||||
\"OUT_BIN_NAME\":\"${OUT_BIN_NAME}\", \"BUILD_TEMP_PATH\":\"${BUILD_TEMP_PATH}\", \
|
||||
\"NV_TARGET_JSON_PATH\":\"${NV_TARGET_JSON_PATH}\", \"NV_RELATIVE_PATH\":\"${NV_RELATIVE_PATH}\", \
|
||||
\"NV_DEFAULT_CFG_DIR\":\"${NV_DEFAULT_CFG_DIR}\", \"DATABASE_TXT_FILE\":\"${DATABASE_TXT_FILE}\"}")
|
||||
endif()
|
||||
|
||||
set(TARGET_INCLUDE
|
||||
-I${ROOT_DIR}/include
|
||||
-I${ROOT_DIR}/middleware/utils/common_headers/native
|
||||
-I${ROOT_DIR}/middleware/chips/${CHIP}/nv/nv_config/${NV_CFG}/include
|
||||
)
|
||||
|
||||
set(TARGET_DEFINES -DCONFIG_NV_SUPPORT_SINGLE_CORE_SYSTEM)
|
||||
|
||||
set(GEN_TARGET_DIR ${PROJECT_BINARY_DIR}/nv_config/etypes)
|
||||
if (NOT EXISTS ${GEN_TARGET_DIR})
|
||||
file(MAKE_DIRECTORY ${GEN_TARGET_DIR})
|
||||
endif()
|
||||
set(GEN_TARGET_SRC ${GEN_TARGET_DIR}/${CORE}.c)
|
||||
set(PRECOMPILE_TARGET ${GEN_TARGET_DIR}/${CORE}.etypes)
|
||||
|
||||
add_custom_target(GENERAT_NV_INFO ALL
|
||||
COMMAND ${Python3_EXECUTABLE} ${BUILD_NV_GEN_UTILS} NV include ${GEN_TARGET_SRC}
|
||||
COMMAND ${CMAKE_C_COMPILER} -o ${PRECOMPILE_TARGET} ${TARGET_INCLUDE} ${TARGET_DEFINES} -E ${GEN_TARGET_SRC}
|
||||
WORKING_DIRECTORY ${ROOT_DIR}/middleware/chips/${CHIP}/nv/nv_config/${NV_CFG}
|
||||
DEPENDS GENERAT_BIN
|
||||
)
|
||||
|
||||
if (${NV_CRC16})
|
||||
set(CRC_FLAGS True)
|
||||
else()
|
||||
set(CRC_FLAGS False)
|
||||
endif()
|
||||
|
||||
add_custom_target(GENERAT_NVBIN ALL
|
||||
COMMAND ${Python3_EXECUTABLE} ${BUILD_NV_TOOL} ${NV_CFG_JSON} ${CORE} ${CRC_FLAGS} &&
|
||||
${CP} ${OUT_BIN_DIR}/${OUT_BIN_NAME} ${PROJECT_BINARY_DIR}/${OUT_BIN_NAME}
|
||||
COMMENT "update nv bin"
|
||||
WORKING_DIRECTORY ${ROOT_DIR}
|
||||
DEPENDS GENERAT_NV_INFO
|
||||
)
|
||||
endif()
|
19
build/cmake/build_partition_bin.cmake
Executable file
19
build/cmake/build_partition_bin.cmake
Executable file
@ -0,0 +1,19 @@
|
||||
#===============================================================================
|
||||
# @brief cmake file
|
||||
# Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2023-2023. All rights reserved.
|
||||
#===============================================================================
|
||||
|
||||
if(NOT "${SECTOR_CFG}" STREQUAL "")
|
||||
SET(SECTOR_JSON ${ROOT_DIR}/build/config/target_config/${CHIP}/flash_sector_config/${SECTOR_CFG}.json)
|
||||
SET(SECTOR_BIN_PATH ${ROOT_DIR}/interim_binary/${CHIP}/bin/partition/${PKG_TARGET_NAME})
|
||||
if (NOT EXISTS ${SECTOR_BIN_PATH})
|
||||
file(MAKE_DIRECTORY ${SECTOR_BIN_PATH})
|
||||
endif()
|
||||
add_custom_target(GENERAT_PARTITION ALL
|
||||
COMMAND ${Python3_EXECUTABLE} ${ROOT_DIR}/build/script/param_packet.py ${SECTOR_JSON} ${SECTOR_BIN_PATH}/partition.bin &&
|
||||
${CP} ${SECTOR_BIN_PATH}/partition.bin ${PROJECT_BINARY_DIR}/partition.bin
|
||||
COMMENT "update partition bin"
|
||||
WORKING_DIRECTORY ${ROOT_DIR}
|
||||
DEPENDS GENERAT_BIN
|
||||
)
|
||||
endif()
|
43
build/cmake/build_rom_callback.cmake
Executable file
43
build/cmake/build_rom_callback.cmake
Executable file
@ -0,0 +1,43 @@
|
||||
if(NOT DEFINED BUILD_ROM_CALLBACK)
|
||||
set(BUILD_ROM_CALLBACK False)
|
||||
endif()
|
||||
set(OBJ_TEMP_DIR "${PROJECT_BINARY_DIR}/obj_tmp")
|
||||
|
||||
macro(reg_rom_callback)
|
||||
if(NOT TARGET ${COMPONENT_NAME})
|
||||
set(ROM_LIB ${LIBS})
|
||||
set(DEPEND_TARGET)
|
||||
else()
|
||||
get_target_property(ORI_LIB_DIR ${COMPONENT_NAME} BINARY_DIR)
|
||||
get_target_property(CUSTOM_LIB_DIR ${COMPONENT_NAME} ARCHIVE_OUTPUT_DIRECTORY)
|
||||
if(CUSTOM_LIB_DIR)
|
||||
set(ROM_LIB ${CUSTOM_LIB_DIR}/lib${COMPONENT_NAME}.a)
|
||||
else()
|
||||
set(ROM_LIB ${ORI_LIB_DIR}/lib${COMPONENT_NAME}.a)
|
||||
endif()
|
||||
set(DEPEND_TARGET ${COMPONENT_NAME})
|
||||
endif()
|
||||
|
||||
add_custom_target(GEN_ROM_CB_${COMPONENT_NAME} ALL
|
||||
WORKING_DIRECTORY ${OBJ_TEMP_DIR}
|
||||
COMMAND echo "${ROM_LIB}"
|
||||
COMMAND ${CP} ${ROM_LIB} ${OBJ_TEMP_DIR}
|
||||
COMMAND ${CMAKE_AR} -x lib${COMPONENT_NAME}.a
|
||||
DEPENDS ${DEPEND_TARGET}
|
||||
)
|
||||
endmacro()
|
||||
|
||||
function(build_rom_callback)
|
||||
execute_process(
|
||||
COMMAND ${MKDIR} ${OBJ_TEMP_DIR}
|
||||
)
|
||||
add_custom_target(BUILD_ROM_CALLBACK ALL
|
||||
COMMAND ${CMAKE_LINKER} -r ${OBJ_TEMP_DIR}/*.o* -o ${OBJ_TEMP_DIR}/rom_bin.o
|
||||
COMMAND ${CMAKE_NM} -u ${OBJ_TEMP_DIR}/rom_bin.o > rom_bin_raw.undef
|
||||
COMMAND ${CMAKE_READELF} -W -r ${OBJ_TEMP_DIR}/rom_bin.o > rom_bin.rel
|
||||
COMMAND ${CMAKE_READELF} -W -s ${OBJ_TEMP_DIR}/rom_bin.o > rom_symbol.list
|
||||
COMMAND ${CMAKE_READELF} -W -s ${TARGET_NAME}.elf > image_symbol.list
|
||||
DEPENDS ${TARGET_NAME}
|
||||
)
|
||||
|
||||
endfunction(build_rom_callback)
|
56
build/cmake/build_script.cmake
Executable file
56
build/cmake/build_script.cmake
Executable file
@ -0,0 +1,56 @@
|
||||
#===============================================================================
|
||||
# @brief cmake script path
|
||||
# Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2022-2022. All rights reserved.
|
||||
#===============================================================================
|
||||
|
||||
set(SCRIPT_DIR "${ROOT_DIR}/build/script")
|
||||
|
||||
set(PRO_GEN ${SCRIPT_DIR}/sdk_generator/project_generator.py)
|
||||
set(BUILD_UTILS ${SCRIPT_DIR}/utils/build_utils.py)
|
||||
set(ELF_TO_DU ${SCRIPT_DIR}/utils/elftodu.py)
|
||||
set(MEM_STATE ${SCRIPT_DIR}/utils/mem_stats.py)
|
||||
set(PARSE_MAP_SIZE_INFO ${SCRIPT_DIR}/utils/parse_map_size_info.py)
|
||||
set(GEN_HEX ${SCRIPT_DIR}/utils/create_hex.py)
|
||||
set(GEN_PATCH ${SCRIPT_DIR}/patch/patch_${ARCH_FAMILY}.py)
|
||||
|
||||
# HSO script
|
||||
set(HDB_SCRIPT_DIR ${SCRIPT_DIR}/hdbxml)
|
||||
set(MAK_HSO_XML ${HDB_SCRIPT_DIR}/mk_hso_prim_xml.py)
|
||||
set(BT_STATUS_HSO_XML ${HDB_SCRIPT_DIR}/bt_status_to_hso_prim_xml.py)
|
||||
set(OTA_MSG_HSO_XML ${HDB_SCRIPT_DIR}/ota_msg_to_hso_prim_xml.py)
|
||||
set(HSO_XML_MERGE ${HDB_SCRIPT_DIR}/hso_prim_xml_merge.py)
|
||||
set(HSO_XML_DB_CREATE ${HDB_SCRIPT_DIR}/database_create.py)
|
||||
set(HSO_XML_PRE_PROCESS ${HDB_SCRIPT_DIR}/process_pregenerated_xml.py)
|
||||
|
||||
# PARSE script
|
||||
set(OUTPUT_DIR "${ROOT_DIR}/output")
|
||||
set(HSO_PARSE_DIR ${SCRIPT_DIR}/parse_tool)
|
||||
set(HSO_PARSE_MAIN ${HSO_PARSE_DIR}/parse_main_phase1.py)
|
||||
|
||||
# sign tool
|
||||
set(SIGN_TOOL ${ROOT_DIR}/tools/bin/sign_tool/sign_tool_pltuni)
|
||||
|
||||
# concat tool
|
||||
set(CONCAT_TOOL ${ROOT_DIR}/build/script/concat_bin.py)
|
||||
|
||||
# build nv tool
|
||||
set(BUILD_NV_TOOL ${ROOT_DIR}/build/script/build_nvbin.py)
|
||||
set(BUILD_NV_GEN_UTILS ${ROOT_DIR}/build/script/nv/generate_utils.py)
|
||||
|
||||
# sec tool
|
||||
if(${BUILD_PLATFORM} MATCHES "linux")
|
||||
set(SEC_OBJCPY_TOOL ${ROOT_DIR}/tools/bin/sec_tool/linux/riscv32-linux-musl-objcopy)
|
||||
set(SEC_TOOL_DIR ${ROOT_DIR}/tools/bin/sec_tool/linux)
|
||||
elseif(${BUILD_PLATFORM} MATCHES "windows")
|
||||
set(SEC_OBJCPY_TOOL ${ROOT_DIR}/tools/bin/sec_tool/win/riscv32-linux-musl-objcopy.exe)
|
||||
set(SEC_TOOL_DIR ${ROOT_DIR}/tools/bin/sec_tool/win)
|
||||
endif()
|
||||
|
||||
# rom info gen script
|
||||
set(GEN_ROM_INFO_TOOL ${ROOT_DIR}/tools/bin/remote_lib_tool/remote_lib_sym2addr.py)
|
||||
|
||||
# IMAGE ANALYSIS script
|
||||
set(IMAGE_ANALSIS_TOOL ${SCRIPT_DIR}/image_analysis/build_data_analyzer_allinone.py)
|
||||
|
||||
# CODESIZE_STATISTIC script
|
||||
set(CODESIZE_STATISTIC_TOOL ${SCRIPT_DIR}/codesize_statistic.py)
|
241
build/cmake/build_sdk.cmake
Executable file
241
build/cmake/build_sdk.cmake
Executable file
@ -0,0 +1,241 @@
|
||||
#===============================================================================
|
||||
# @brief cmake sdk build
|
||||
# Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2022-2022. All rights reserved.
|
||||
#===============================================================================
|
||||
|
||||
# copy file or dir to the dest path in sdk
|
||||
function(install_dest_sdk src sdk_dest partern)
|
||||
if (NOT DEFINED SDK_OUTPUT_PATH)
|
||||
return()
|
||||
endif()
|
||||
string(REPLACE "*" "all" _partern ${partern})
|
||||
string(REPLACE "/" "_" _name ${src}_${_partern})
|
||||
string(REPLACE "@" "_" _name ${_name})
|
||||
if(TARGET COPY${_name})
|
||||
return()
|
||||
endif()
|
||||
string(REPLACE "${ROOT_DIR}" "${SDK_OUTPUT_PATH}" dest ${sdk_dest})
|
||||
add_custom_target(COPY${_name} ALL
|
||||
COMMENT "--Installing ${src} => ${dest}"
|
||||
COMMAND ${Python3_EXECUTABLE} ${BUILD_UTILS} copy "${src}" "${dest}" ".srcrelease" '${partern}'
|
||||
)
|
||||
add_dependencies(COPY${_name} ${TARGET_NAME})
|
||||
endfunction()
|
||||
|
||||
# copy file or dir to it's sdk path
|
||||
function(install_sdk src partern)
|
||||
if (NOT DEFINED SDK_OUTPUT_PATH)
|
||||
return()
|
||||
endif()
|
||||
string(REPLACE "/" "_" _name ${src})
|
||||
string(REPLACE "@" "_" _name ${_name})
|
||||
if(TARGET COPY${_name})
|
||||
return()
|
||||
endif()
|
||||
string(REPLACE "${ROOT_DIR}" "${SDK_OUTPUT_PATH}" dest ${src})
|
||||
add_custom_target(COPY${_name} ALL
|
||||
COMMENT "--Installing ${src} => ${dest}"
|
||||
COMMAND ${Python3_EXECUTABLE} ${BUILD_UTILS} copy "${src}" "${dest}" ".srcrelease" '${partern}'
|
||||
)
|
||||
add_dependencies(COPY${_name} ${TARGET_NAME})
|
||||
endfunction()
|
||||
|
||||
function(install_sdk_by_sh src partern)
|
||||
if (NOT DEFINED SDK_OUTPUT_PATH)
|
||||
return()
|
||||
endif()
|
||||
return_if_not_build()
|
||||
string(REPLACE "*" "all" _partern ${partern})
|
||||
string(REPLACE "/" "_" _name ${src}_${_partern})
|
||||
string(REPLACE "@" "_" _name ${_name})
|
||||
if(TARGET COPY${_name})
|
||||
return()
|
||||
endif()
|
||||
string(REPLACE "${ROOT_DIR}" "${SDK_OUTPUT_PATH}" dest ${src})
|
||||
add_custom_target(COPY${_name} ALL
|
||||
COMMENT "--Installing ${src} => ${dest}"
|
||||
COMMAND mkdir -p "${dest}"
|
||||
COMMAND cp -rf "${src}/${partern}" "${dest}" || :
|
||||
)
|
||||
add_dependencies(COPY${_name} ${TARGET_NAME})
|
||||
endfunction()
|
||||
|
||||
macro(install_lib_gen)
|
||||
if (DEFINED SDK_OUTPUT_PATH AND DEFINED LIB_GEN_NAME AND ${COMPONENT_NAME} IN_LIST SDK_LIBGEN_COMPONENTS)
|
||||
set(LIB_OUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/${LIB_GEN_NAME})
|
||||
string(REPLACE "${ROOT_DIR}" "${SDK_OUTPUT_PATH}" LIB_OUT_PATH ${LIB_OUT_PATH})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(export_component_info)
|
||||
file(WRITE ${PROJECT_BINARY_DIR}/component_info/${COMPONENT_NAME} "SOURCES: ${SOURCES}\n")
|
||||
file(APPEND ${PROJECT_BINARY_DIR}/component_info/${COMPONENT_NAME} "HEADER: ${PRIVATE_HEADER}\n")
|
||||
file(APPEND ${PROJECT_BINARY_DIR}/component_info/${COMPONENT_NAME} "DEFINES: ${PRIVATE_DEFINES}\n")
|
||||
file(APPEND ${PROJECT_BINARY_DIR}/component_info/${COMPONENT_NAME} "COMPONENT_FLAGS: ${COMPONENT_FLAGS}\n")
|
||||
endmacro()
|
||||
|
||||
macro(export_public_info)
|
||||
file(WRITE ${PROJECT_BINARY_DIR}/component_info/PUBLIC "PUBLIC_HEADER: ${ALL_PUBLIC_HEADER}\n")
|
||||
file(APPEND ${PROJECT_BINARY_DIR}/component_info/PUBLIC "PUBLIC_DEFINES: ${ALL_PUBLIC_DEFINES}\n")
|
||||
endmacro()
|
||||
|
||||
macro(add_tooltrain)
|
||||
set(TOOLCHAIN_FILE ${PROJECT_BINARY_DIR}/toolchains/${TARGET_NAME}.json)
|
||||
file(WRITE ${TOOLCHAIN_FILE}
|
||||
"{
|
||||
\"CC\": \"${CMAKE_C_COMPILER}\",
|
||||
\"CXX\": \"${CMAKE_CXX_COMPILER}\",
|
||||
\"AS\": \"${CMAKE_ASM_COMPILER}\",
|
||||
\"LD\": \"${CMAKE_LINKER}\",
|
||||
\"AR\": \"${CMAKE_AR}\",
|
||||
\"RANLIB\": \"${CMAKE_RANLIB}\",
|
||||
\"STRIP\": \"${CMAKE_STRIP}\",
|
||||
\"NM\": \"${CMAKE_NM}\",
|
||||
\"OBJCOPY\": \"${CMAKE_OBJCOPY}\",
|
||||
\"READELF\": \"${CMAKE_READELF}\",
|
||||
\"OBJDUMP\": \"${CMAKE_OBJDUMP}\"
|
||||
}")
|
||||
endmacro(add_tooltrain)
|
||||
|
||||
macro(sdk_export_component type)
|
||||
if (DEFINED SDK_OUTPUT_PATH)
|
||||
set(COMPONENT_INFO ${PROJECT_BINARY_DIR}/component_info/info.json)
|
||||
if(${type} STREQUAL "start")
|
||||
set(START_SYMBOL "" CACHE INTERNAL "" FORCE)
|
||||
file(WRITE ${COMPONENT_INFO} "{\n")
|
||||
file(APPEND ${COMPONENT_INFO}
|
||||
"\"COMPONENTS\":{")
|
||||
elseif(${type} STREQUAL "end")
|
||||
set(PUBLIC_INCLUDES)
|
||||
foreach(pub_header ${ALL_PUBLIC_HEADER})
|
||||
get_filename_component(header ${pub_header} ABSOLUTE)
|
||||
if (NOT ${header} IN_LIST PUBLIC_INCLUDES)
|
||||
set(PUBLIC_INCLUDES ${PUBLIC_INCLUDES} ${header})
|
||||
endif()
|
||||
endforeach()
|
||||
list(REMOVE_DUPLICATES ALL_PUBLIC_DEFINES)
|
||||
list(REMOVE_DUPLICATES ALL_PUBLIC_CCFLAGS)
|
||||
list(REMOVE_DUPLICATES LOG_DEF_LIST)
|
||||
set(STD_LIB_DIR ${LIB_GCC} ${LIB_C} ${LIB_CXX})
|
||||
file(APPEND ${COMPONENT_INFO} "},")
|
||||
file(APPEND ${COMPONENT_INFO} "\"PUBLIC_INCLUDES\": \"${PUBLIC_INCLUDES}\",\n")
|
||||
file(APPEND ${COMPONENT_INFO} "\"PUBLIC_DEFINES\": \"${ALL_PUBLIC_DEFINES}\",\n")
|
||||
file(APPEND ${COMPONENT_INFO} "\"PUBLIC_CCFLAGS\": \"${ALL_PUBLIC_CCFLAGS}\",\n")
|
||||
file(APPEND ${COMPONENT_INFO} "\"BIN_NAME\": \"${BIN_NAME}\",\n")
|
||||
file(APPEND ${COMPONENT_INFO} "\"LINKFLAGS\": \"${LINKFLAGS}\",\n")
|
||||
file(APPEND ${COMPONENT_INFO} "\"STD_LIB_DIR\": \"${STD_LIB_DIR}\",\n")
|
||||
file(APPEND ${COMPONENT_INFO} "\"STD_LIBS\": \"${STD_LIBS}\",\n")
|
||||
file(APPEND ${COMPONENT_INFO} "\"ARCH_FAMILY\": \"${ARCH_FAMILY}\",\n")
|
||||
file(APPEND ${COMPONENT_INFO} "\"LINK_SCRIPT\": \"${LINK_SCRIPT}\",\n")
|
||||
file(APPEND ${COMPONENT_INFO} "\"KERNEL\": \"${OS}\",\n")
|
||||
file(APPEND ${COMPONENT_INFO} "\"LOS_ROOT\": \"${LOS_ROOT}\",\n")
|
||||
file(APPEND ${COMPONENT_INFO} "\"LOS_PUB_CCFLAGS\": \"${LOS_PUB_CCFLAGS}\",\n")
|
||||
file(APPEND ${COMPONENT_INFO} "\"LOG_DEF_LIST\": \"${LOG_DEF_LIST}\"\n")
|
||||
file(APPEND ${COMPONENT_INFO} "}")
|
||||
elseif(${type} STREQUAL "third_party")
|
||||
if(DEFINED LIB_DIR)
|
||||
set(LINK_LIB_DIR ${LIB_DIR})
|
||||
else()
|
||||
set(LINK_LIB_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
endif()
|
||||
file(APPEND ${COMPONENT_INFO}
|
||||
"${START_SYMBOL}
|
||||
\"${COMPONENT_NAME}\":{
|
||||
\"SOURCES\": \"${SOURCES}\",
|
||||
\"THIRD_PARTY\": \"true\",
|
||||
\"WHOLE_LINK\": \"${WHOLE_ARCHIV}\",
|
||||
\"COMPONENT_CUSTOM_INCLUDE\": \"${COMPONENT_CUSTOM_INCLUDE}\",
|
||||
\"LIB_DIR\":\"${LINK_LIB_DIR}\",
|
||||
\"COMPONENT_CUSTOM_CCFLAGS\":\"${COMPONENT_CUSTOM_CCFLAGS}\",
|
||||
\"COMPONENT_CUSTOM_DEFINES\":\"${COMPONENT_CUSTOM_DEFINES}\",
|
||||
\"LIBS\":\"${LIBS}\"
|
||||
}
|
||||
")
|
||||
set(START_SYMBOL "," CACHE INTERNAL "" FORCE)
|
||||
else()
|
||||
if(DEFINED LIB_DIR)
|
||||
set(LINK_LIB_DIR ${LIB_DIR})
|
||||
else()
|
||||
check_if_closed_component(${COMPONENT_NAME})
|
||||
if (${COMPONENT_IS_CLOSED})
|
||||
set(LINK_LIB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_COMMAND})
|
||||
else()
|
||||
set(LINK_LIB_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
check_if_closed_component(${COMPONENT_NAME})
|
||||
if (${COMPONENT_IS_CLOSED})
|
||||
file(APPEND ${COMPONENT_INFO}
|
||||
"${START_SYMBOL}
|
||||
\"${COMPONENT_NAME}\":{
|
||||
\"SOURCES\": \"\",
|
||||
\"PRIVATE_INCLUDE\": \"\",
|
||||
\"PRIVATE_DEFINES\": \"\",
|
||||
\"PRIVATE_CCFLAGS\": \"\",
|
||||
\"WHOLE_LINK\": \"${WHOLE_ARCHIV}\",
|
||||
\"LIB_DIR\":\"${LINK_LIB_DIR}\",
|
||||
\"LIBS\":\"${LIBS}\",
|
||||
\"MODULE_NAME\":\"${${COMPONENT_NAME}_MODULE_NAME}\",
|
||||
\"AUTO_DEF\":\"${${COMPONENT_NAME}_AUTO_DEF}\"
|
||||
}
|
||||
")
|
||||
else()
|
||||
file(APPEND ${COMPONENT_INFO}
|
||||
"${START_SYMBOL}
|
||||
\"${COMPONENT_NAME}\":{
|
||||
\"SOURCES\": \"${SOURCES}\",
|
||||
\"PRIVATE_INCLUDE\": \"${PRIVATE_HEADER}\",
|
||||
\"PRIVATE_DEFINES\": \"${PRIVATE_DEFINES}\",
|
||||
\"PRIVATE_CCFLAGS\": \"${COMPONENT_CCFLAGS}\",
|
||||
\"WHOLE_LINK\": \"${WHOLE_ARCHIV}\",
|
||||
\"LIB_DIR\":\"${LINK_LIB_DIR}\",
|
||||
\"LIBS\":\"${LIBS}\",
|
||||
\"MODULE_NAME\":\"${${COMPONENT_NAME}_MODULE_NAME}\",
|
||||
\"AUTO_DEF\":\"${${COMPONENT_NAME}_AUTO_DEF}\"
|
||||
}
|
||||
")
|
||||
endif()
|
||||
set(START_SYMBOL "," CACHE INTERNAL "" FORCE)
|
||||
endif()
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
function(generate_project_file)
|
||||
if (NOT DEFINED SDK_OUTPUT_PATH)
|
||||
return()
|
||||
endif()
|
||||
set(COMPONENT_INFO ${PROJECT_BINARY_DIR}/component_info/info.json)
|
||||
add_tooltrain()
|
||||
set(CC_JSON "${PROJECT_BINARY_DIR}/compile_commands.json")
|
||||
if("${SDK_PROJECT_FILE_DIR}" STREQUAL "" )
|
||||
set(SDK_PROJECT_FILE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
endif()
|
||||
string(REPLACE "${PROJECT_SOURCE_DIR}" "${SDK_OUTPUT_PATH}" SDK_CURRENT_DIR ${SDK_PROJECT_FILE_DIR})
|
||||
string(REPLACE "${PROJECT_SOURCE_DIR}" "${SDK_OUTPUT_PATH}" SDK_CURRENT_COMPILER_DIR ${COMPILER_ROOT})
|
||||
list(JOIN SDK_TYPE "," SDK_TYPE_LIST)
|
||||
|
||||
add_custom_target(GEN_PROJECT ALL
|
||||
COMMAND ${Python3_EXECUTABLE} ${PRO_GEN} "${SDK_TYPE_LIST}" "${MAIN_COMPONENT}" "${CC_JSON}" "${SDK_CURRENT_DIR}" "${PROJECT_SOURCE_DIR}" "${SDK_OUTPUT_PATH}" "${CHIP},${CORE},${BOARD},${ARCH},${OS},${PKG_TARGET_NAME}" "${TOOLCHAIN_FILE}" "${COMPONENT_INFO}"
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
COMMENT "Generating project file..."
|
||||
)
|
||||
|
||||
add_dependencies(GEN_PROJECT "${TARGET_NAME}")
|
||||
if(NOT EXISTS ${SDK_CURRENT_COMPILER_DIR})
|
||||
get_filename_component(SDK_CURRENT_COMPILER_DIR_ABS "${SDK_CURRENT_COMPILER_DIR}/.." ABSOLUTE)
|
||||
add_custom_target(GEN_COMPILER_LN ALL
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
COMMAND mkdir -p ${SDK_CURRENT_COMPILER_DIR_ABS}
|
||||
COMMAND ln -s ${COMPILER_ROOT} ${SDK_CURRENT_COMPILER_DIR}
|
||||
)
|
||||
if(DEFINED COMPILER_ROOT_WIN AND EXISTS ${COMPILER_ROOT_WIN})
|
||||
add_custom_target(GEN_COMPILER_WIN_LN ALL
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
COMMAND ln -s ${COMPILER_ROOT_WIN} ${SDK_CURRENT_COMPILER_DIR_ABS}
|
||||
DEPENDS GEN_COMPILER_LN
|
||||
)
|
||||
endif()
|
||||
|
||||
endif()
|
||||
endfunction(generate_project_file)
|
41
build/cmake/build_sdk_lib.cmake
Executable file
41
build/cmake/build_sdk_lib.cmake
Executable file
@ -0,0 +1,41 @@
|
||||
#===============================================================================
|
||||
# @brief cmake sdk build
|
||||
# Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2023-2023. All rights reserved.
|
||||
#===============================================================================
|
||||
|
||||
|
||||
if ("${GEN_SEC_BIN}" STREQUAL "True")
|
||||
if (NOT EXISTS ${COMPILER_ROOT}/lib/sec)
|
||||
file(MAKE_DIRECTORY ${COMPILER_ROOT}/lib/sec)
|
||||
endif()
|
||||
if (NOT EXISTS ${COMPILER_ROOT}_win/lib/sec)
|
||||
file(MAKE_DIRECTORY ${COMPILER_ROOT}_win/lib/sec)
|
||||
endif()
|
||||
# tools libs
|
||||
execute_process(COMMAND ${CP} ${ROOT_DIR}/tools/bin/sec_tool/lib/sec/${IMAGE_VERSION}/libsec_image.so ${ROOT_DIR}/tools/bin/sec_tool/lib/sec/libsec_image.so)
|
||||
execute_process(COMMAND ${CP} ${ROOT_DIR}/tools/bin/sec_tool/lib/sec/${IMAGE_VERSION}/libsec_image.pyd ${ROOT_DIR}/tools/bin/sec_tool/lib/sec/libsec_image.pyd)
|
||||
execute_process(COMMAND ${CP} ${ROOT_DIR}/tools/bin/sec_tool/lib/sec/${IMAGE_VERSION}/libsec_image.so ${COMPILER_ROOT}/lib/sec/libsec_image.so)
|
||||
execute_process(COMMAND ${CP} ${ROOT_DIR}/tools/bin/sec_tool/lib/sec/${IMAGE_VERSION}/libsec_image.pyd ${COMPILER_ROOT}_win/lib/sec/libsec_image.pyd)
|
||||
# linux
|
||||
execute_process(COMMAND ${CP} ${ROOT_DIR}/tools/bin/sec_tool/linux/riscv32-linux-musl-objcopy ${COMPILER_ROOT}/bin/riscv32-linux-musl-objcopy)
|
||||
execute_process(COMMAND ${CP} ${ROOT_DIR}/tools/bin/sec_tool/linux/riscv32-linux-secmain ${COMPILER_ROOT}/bin/riscv32-linux-secmain)
|
||||
|
||||
if(${CORE} STREQUAL "acore")
|
||||
# win: only acore will build win.
|
||||
execute_process(COMMAND ${CP} ${ROOT_DIR}/tools/bin/sec_tool/win/riscv32-linux-musl-objcopy.exe ${COMPILER_ROOT}_win/bin/riscv32-linux-musl-objcopy.exe)
|
||||
execute_process(COMMAND ${CP} ${ROOT_DIR}/tools/bin/sec_tool/win/riscv32-linux-secmain.exe ${COMPILER_ROOT}_win/bin/riscv32-linux-secmain.exe)
|
||||
# image info
|
||||
if (EXISTS ${ROOT_DIR}/middleware/chips/${CHIP}/image_info/${IMAGE_VERSION}/libapp_info_nofp.a)
|
||||
execute_process(COMMAND ${CP} ${ROOT_DIR}/middleware/chips/${CHIP}/image_info/${IMAGE_VERSION}/libapp_info_nofp.a ${ROOT_DIR}/middleware/chips/${CHIP}/image_info/libapp_info_nofp.a)
|
||||
endif()
|
||||
|
||||
if (EXISTS ${ROOT_DIR}/middleware/chips/${CHIP}/image_info/${IMAGE_VERSION}/libimage_info.a)
|
||||
execute_process(COMMAND ${CP} ${ROOT_DIR}/middleware/chips/${CHIP}/image_info/${IMAGE_VERSION}/libimage_info.a ${ROOT_DIR}/middleware/chips/${CHIP}/image_info/libimage_info.a)
|
||||
endif()
|
||||
|
||||
elseif(${CORE} STREQUAL "bt_core")
|
||||
if (EXISTS ${ROOT_DIR}/application/${CHIP}/${CHIP}_bgle/common/lib/image_info/${IMAGE_VERSION}/libimage_info.a)
|
||||
execute_process(COMMAND ${CP} ${ROOT_DIR}/application/${CHIP}/${CHIP}_bgle/common/lib/image_info/${IMAGE_VERSION}/libimage_info.a ${ROOT_DIR}/application/${CHIP}/${CHIP}_bgle/common/lib/image_info/libimage_info.a)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
158
build/cmake/build_sign.cmake
Executable file
158
build/cmake/build_sign.cmake
Executable file
@ -0,0 +1,158 @@
|
||||
#===============================================================================
|
||||
# @brief cmake file
|
||||
# Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2022-2023. All rights reserved.
|
||||
#===============================================================================
|
||||
|
||||
if (${TARGET_NAME} STREQUAL "flashboot")
|
||||
if (EXISTS ${ROOT_DIR}/build/config/target_config/${CHIP}/sign_config/${BUILD_TARGET_NAME}.cfg)
|
||||
if (NOT ${SEC_BOOT} STREQUAL "")
|
||||
add_custom_target(CONCAT_BIN ALL
|
||||
COMMAND ${Python3_EXECUTABLE} ${CONCAT_TOOL} ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin/${SEC_BOOT}/sec_boot.bin ${PROJECT_BINARY_DIR}/flashboot.bin ${SEC_BOOT_SIZE} ${PROJECT_BINARY_DIR}/flashboot.bin
|
||||
COMMENT "concat bin"
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS GENERAT_BIN
|
||||
)
|
||||
endif()
|
||||
add_custom_target(GENERAT_SIGNBIN ALL
|
||||
COMMAND ${SIGN_TOOL} 0 ${ROOT_DIR}/build/config/target_config/${CHIP}/sign_config/${BUILD_TARGET_NAME}.cfg 1>nul 2>nul &&
|
||||
${CP} ${PROJECT_BINARY_DIR}/flashboot_sign_a.bin ${PROJECT_BINARY_DIR}/flashboot_sign_b.bin
|
||||
COMMENT "sign file:gen boot sign file"
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS GENERAT_BIN
|
||||
)
|
||||
if (NOT ${SEC_BOOT} STREQUAL "")
|
||||
add_dependencies(GENERAT_SIGNBIN CONCAT_BIN)
|
||||
endif()
|
||||
if (${UPDATE_BIN})
|
||||
string(REPLACE "_" "-" TARGET_DIR ${BUILD_TARGET_NAME})
|
||||
if (NOT EXISTS ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin)
|
||||
file(MAKE_DIRECTORY ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin)
|
||||
endif()
|
||||
if (NOT EXISTS ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin/${TARGET_DIR})
|
||||
file(MAKE_DIRECTORY ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin/${TARGET_DIR})
|
||||
endif()
|
||||
add_custom_target(COPY_SIGNBIN ALL
|
||||
COMMAND ${CP} ${ROOT_DIR}/output/${CHIP}/acore/${TARGET_DIR}/flashboot_sign_a.bin ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin/${TARGET_DIR}/flashboot_sign_a.bin &&
|
||||
${CP} ${ROOT_DIR}/output/${CHIP}/acore/${TARGET_DIR}/flashboot_sign_a.bin ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin/${TARGET_DIR}/flashboot_sign_b.bin
|
||||
COMMENT "copy bin file"
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS GENERAT_SIGNBIN
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
elseif (${TARGET_NAME} STREQUAL "loaderboot")
|
||||
if (EXISTS ${ROOT_DIR}/build/config/target_config/${CHIP}/sign_config/${BUILD_TARGET_NAME}.cfg)
|
||||
add_custom_target(GENERAT_SIGNBIN ALL
|
||||
COMMAND ${SIGN_TOOL} 0 ${ROOT_DIR}/build/config/target_config/${CHIP}/sign_config/${BUILD_TARGET_NAME}.cfg 1>nul 2>nul
|
||||
COMMENT "sign file:gen boot sign file"
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS GENERAT_BIN
|
||||
)
|
||||
if (${UPDATE_BIN})
|
||||
string(REPLACE "_" "-" TARGET_DIR ${BUILD_TARGET_NAME})
|
||||
if (NOT EXISTS ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin)
|
||||
file(MAKE_DIRECTORY ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin)
|
||||
endif()
|
||||
if (NOT EXISTS ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin/${TARGET_DIR})
|
||||
file(MAKE_DIRECTORY ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin/${TARGET_DIR})
|
||||
endif()
|
||||
add_custom_target(COPY_SIGNBIN ALL
|
||||
COMMAND ${CP} ${ROOT_DIR}/output/${CHIP}/acore/${TARGET_DIR}/loaderboot_sign.bin ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin/${TARGET_DIR}/loaderboot_sign.bin
|
||||
COMMENT "copy bin file"
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS GENERAT_SIGNBIN
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
elseif (${TARGET_NAME} MATCHES "application*" OR ${TARGET_NAME} STREQUAL "ate_debug" OR ${TARGET_NAME} STREQUAL "ate" OR
|
||||
${TARGET_NAME} MATCHES "protocol*" )
|
||||
if (EXISTS ${ROOT_DIR}/build/config/target_config/${CHIP}/sign_config/${BUILD_TARGET_NAME}.cfg)
|
||||
add_custom_target(GENERAT_SIGNBIN ALL
|
||||
COMMAND ${SIGN_TOOL} 0 ${ROOT_DIR}/build/config/target_config/${CHIP}/sign_config/${BUILD_TARGET_NAME}.cfg 1>nul 2>nul
|
||||
COMMENT "sign file:gen boot sign file"
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS GENERAT_BIN
|
||||
)
|
||||
endif()
|
||||
elseif (${TARGET_NAME} MATCHES "control_ws53*")
|
||||
if (EXISTS ${ROOT_DIR}/build/config/target_config/${CHIP}/sign_config/${BUILD_TARGET_NAME}.cfg)
|
||||
add_custom_target(GENERAT_SIGNBIN ALL
|
||||
COMMAND ${SIGN_TOOL} 0 ${ROOT_DIR}/build/config/target_config/${CHIP}/sign_config/${BUILD_TARGET_NAME}.cfg
|
||||
COMMENT "sign file:gen boot sign file"
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS GENERAT_BIN
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
if (${CHIP} STREQUAL "ws63")
|
||||
add_custom_target(WS63_GENERAT_SIGNBIN ALL
|
||||
COMMAND ${Python3_EXECUTABLE} ${ROOT_DIR}/build/config/target_config/${CHIP}/sign_config/params_and_bin_sign.py ${TARGET_NAME}
|
||||
COMMENT "ws63 image sign"
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS GENERAT_BIN
|
||||
)
|
||||
|
||||
if(TARGET GENERAT_ROM_PATCH)
|
||||
add_dependencies(WS63_GENERAT_SIGNBIN GENERAT_ROM_PATCH)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (${CHIP} STREQUAL "ws53")
|
||||
add_custom_target(WS53_GENERAT_SIGNBIN ALL
|
||||
COMMAND sh ${ROOT_DIR}/build/config/target_config/${CHIP}/sign_config/params_and_bin_sign.sh
|
||||
COMMENT "ws53 image sign"
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS GENERAT_BIN
|
||||
)
|
||||
|
||||
if(TARGET GENERAT_ROM_PATCH)
|
||||
add_dependencies(WS53_GENERAT_SIGNBIN GENERAT_ROM_PATCH)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(TARGET GENERAT_ROM_PATCH AND TARGET GENERAT_SIGNBIN)
|
||||
add_dependencies(GENERAT_SIGNBIN GENERAT_ROM_PATCH)
|
||||
endif()
|
||||
|
||||
if (${TARGET_NAME} STREQUAL "sec_boot")
|
||||
if (${UPDATE_BIN})
|
||||
string(REPLACE "_" "-" TARGET_DIR ${BUILD_TARGET_NAME})
|
||||
if (NOT EXISTS ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin)
|
||||
file(MAKE_DIRECTORY ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin)
|
||||
endif()
|
||||
if (NOT EXISTS ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin/${TARGET_DIR})
|
||||
file(MAKE_DIRECTORY ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin/${TARGET_DIR})
|
||||
endif()
|
||||
add_custom_target(COPY_SEC_BOOTBIN ALL
|
||||
COMMAND ${CP} ${ROOT_DIR}/output/${CHIP}/acore/${TARGET_DIR}/sec_boot.bin ${ROOT_DIR}/interim_binary/${CHIP}/bin/boot_bin/${TARGET_DIR}/sec_boot.bin
|
||||
COMMENT "copy bin file"
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS GENERAT_BIN
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(${GEN_SEC_BIN} AND ${GEN_SEC_BIN} STREQUAL "True")
|
||||
if(${CORE} STREQUAL "acore")
|
||||
if (TARGET GENERAT_SIGNBIN)
|
||||
add_custom_target(GENERAT_SEC_IMAGE ALL
|
||||
COMMAND ${CMAKE_OBJCOPY} --enable_sec ${PROJECT_BINARY_DIR}/${BIN_NAME}_sign.bin
|
||||
WORKING_DIRECTORY ${COMPILER_ROOT}/bin
|
||||
DEPENDS GENERAT_SIGNBIN
|
||||
)
|
||||
else()
|
||||
add_custom_target(GENERAT_SEC_IMAGE ALL
|
||||
COMMAND ${CMAKE_OBJCOPY} --enable_sec ${PROJECT_BINARY_DIR}/${BIN_NAME}.bin
|
||||
WORKING_DIRECTORY ${COMPILER_ROOT}/bin
|
||||
DEPENDS GENERAT_BIN
|
||||
)
|
||||
endif()
|
||||
elseif(${CORE} STREQUAL "bt_core")
|
||||
add_custom_target(GENERAT_SEC_IMAGE ALL
|
||||
COMMAND ${SEC_OBJCPY_TOOL} --enable_sec ${PROJECT_BINARY_DIR}/${BIN_NAME}.bin
|
||||
WORKING_DIRECTORY ${SEC_TOOL_DIR}
|
||||
DEPENDS GENERAT_ROM_PATCH
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
15
build/cmake/build_ssb.cmake
Executable file
15
build/cmake/build_ssb.cmake
Executable file
@ -0,0 +1,15 @@
|
||||
#===============================================================================
|
||||
# @brief cmake file
|
||||
# Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2022-2022. All rights reserved.
|
||||
#===============================================================================
|
||||
|
||||
if(DEFINED APPLICATION)
|
||||
if(${APPLICATION} STREQUAL "ssb")
|
||||
add_custom_target(ADD_SHA_TO_SSB ALL
|
||||
COMMAND ${Python3_EXECUTABLE} ${BUILD_UTILS} add_len_and_sha256_info_to_ssb ${TARGET_NAME}.bin ${CHIP}
|
||||
COMMENT "add ssb length and sha256 info into ssb.bin"
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS GENERAT_BIN
|
||||
)
|
||||
endif()
|
||||
endif()
|
19
build/cmake/global_variable.cmake
Executable file
19
build/cmake/global_variable.cmake
Executable file
@ -0,0 +1,19 @@
|
||||
#===============================================================================
|
||||
# @brief cmake global variable init
|
||||
# Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2022-2022. All rights reserved.
|
||||
#===============================================================================
|
||||
|
||||
set(ALL_PUBLIC_HEADER "" CACHE INTERNAL "" FORCE)
|
||||
set(ALL_HEADER "" CACHE INTERNAL "" FORCE)
|
||||
set(ALL_PUBLIC_DEFINES ${DEFINES} CACHE INTERNAL "" FORCE)
|
||||
set(ALL_PUBLIC_CCFLAGS "${CCFLAGS}" CACHE INTERNAL "" FORCE)
|
||||
set(ALL_SOURCES "" CACHE INTERNAL "" FORCE)
|
||||
set(LOS_LIB "" CACHE INTERNAL "" FORCE)
|
||||
set(LINKER_DIR "" CACHE INTERNAL "" FORCE)
|
||||
set(SDK_PROJECT_FILE_DIR "" CACHE INTERNAL "" FORCE)
|
||||
set(LOG_DEF_LIST "" CACHE INTERNAL "" FORCE)
|
||||
set(WSTP_HEADER_LIST "" CACHE INTERNAL "" FORCE)
|
||||
set(PLAT_SRC_LIST "" CACHE INTERNAL "" FORCE)
|
||||
set(WSTP_SRC_LIST "" CACHE INTERNAL "" FORCE)
|
||||
set(TEST_HAED_LIST "" CACHE INTERNAL "" FORCE)
|
||||
set(BTH_SDK_LIST "" CACHE INTERNAL "" FORCE)
|
8
build/cmake/open_source.cmake
Executable file
8
build/cmake/open_source.cmake
Executable file
@ -0,0 +1,8 @@
|
||||
include(${CMAKE_DIR}/open_source/gmssl.cmake)
|
||||
include(${CMAKE_DIR}/open_source/mbedtls.cmake)
|
||||
include(${CMAKE_DIR}/open_source/hitls.cmake)
|
||||
include(${CMAKE_DIR}/open_source/littlefs.cmake)
|
||||
include(${CMAKE_DIR}/open_source/libcoap.cmake)
|
||||
if (EXISTS ${ROOT_DIR}/protocol/wifi/CMakeLists.txt)
|
||||
include(${CMAKE_DIR}/open_source/wpa_supplicant.cmake)
|
||||
endif()
|
Reference in New Issue
Block a user