初始提交
This commit is contained in:
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)
|
Reference in New Issue
Block a user