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

44 lines
1.5 KiB
CMake
Executable File

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)