mirror of
https://github.com/apache/nuttx.git
synced 2025-12-12 05:34:38 +08:00
cmake/allsyms: Generate empty files using scripts instead of implementing them within cmake files
The function of generating an empty symbol table has been implemented in tools/mkallsyms.py. Makefile is implemented in python script. Cmake needs to be consistent with Makefile. Signed-off-by: wangmingrong1 <wangmingrong1@xiaomi.com>
This commit is contained in:
committed by
Xiang Xiao
parent
651a5e6afa
commit
447a73003c
@@ -38,26 +38,24 @@
|
||||
# dep_target : targets which depends on
|
||||
# allsyms_file : generated allsyms file name
|
||||
# ~~~
|
||||
|
||||
# create an empty allsyms source file for `nuttx`
|
||||
set(ALLSYMS_SOURCE ${CMAKE_BINARY_DIR}/allsyms_empty.c)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${ALLSYMS_SOURCE}
|
||||
COMMAND ${NUTTX_DIR}/tools/mkallsyms.py nuttx.empty ${ALLSYMS_SOURCE}
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
COMMENT "Generating allsyms_empty.c")
|
||||
add_custom_target(generate_empty_allsyms DEPENDS ${ALLSYMS_SOURCE})
|
||||
add_dependencies(nuttx generate_empty_allsyms)
|
||||
|
||||
target_sources(nuttx PRIVATE ${ALLSYMS_SOURCE})
|
||||
set(ALLSYMS_INCDIR ${CMAKE_SOURCE_DIR}/include ${CMAKE_BINARY_DIR}/include)
|
||||
set_source_files_properties(${ALLSYMS_SOURCE} PROPERTIES INCLUDE_DIRECTORIES
|
||||
"${ALLSYMS_INCDIR}")
|
||||
|
||||
macro(define_allsyms_link_target inter_target dep_target allsyms_file)
|
||||
if(${inter_target} STREQUAL nuttx)
|
||||
# create an empty allsyms source file for `nuttx`
|
||||
set(ALLSYMS_SOURCE ${CMAKE_BINARY_DIR}/allsyms_empty.c)
|
||||
if(NOT EXISTS ${ALLSYMS_SOURCE})
|
||||
file(WRITE ${ALLSYMS_SOURCE} "#include <nuttx/compiler.h>\n\n")
|
||||
file(APPEND ${ALLSYMS_SOURCE} "#include <nuttx/symtab.h>\n")
|
||||
file(APPEND ${ALLSYMS_SOURCE} "extern int g_nallsyms;\n\n")
|
||||
file(APPEND ${ALLSYMS_SOURCE} "extern struct symtab_s g_allsyms[];\n\n")
|
||||
file(APPEND ${ALLSYMS_SOURCE} "int g_nallsyms = 1;\n\n")
|
||||
file(
|
||||
APPEND ${ALLSYMS_SOURCE}
|
||||
"struct symtab_s g_allsyms[1] = {{ \"Unknown\", (FAR void *)0x00000000 }};\n\n"
|
||||
)
|
||||
endif()
|
||||
target_sources(nuttx PRIVATE ${ALLSYMS_SOURCE})
|
||||
set(ALLSYMS_INCDIR ${CMAKE_SOURCE_DIR}/include ${CMAKE_BINARY_DIR}/include)
|
||||
set_source_files_properties(
|
||||
${ALLSYMS_SOURCE} PROPERTIES INCLUDE_DIRECTORIES "${ALLSYMS_INCDIR}")
|
||||
else()
|
||||
# generate `g_allsyms` file
|
||||
add_custom_command(
|
||||
OUTPUT ${allsyms_file}.c POST_BUILD
|
||||
@@ -86,13 +84,9 @@ macro(define_allsyms_link_target inter_target dep_target allsyms_file)
|
||||
$<TARGET_PROPERTY:nuttx,LINK_OPTIONS>)
|
||||
target_link_libraries(
|
||||
${inter_target}
|
||||
PRIVATE $<TARGET_GENEX_EVAL:nuttx,$<TARGET_PROPERTY:nuttx,LINK_LIBRARIES>>
|
||||
)
|
||||
endif()
|
||||
PRIVATE $<TARGET_GENEX_EVAL:nuttx,$<TARGET_PROPERTY:nuttx,LINK_LIBRARIES>>)
|
||||
endmacro()
|
||||
|
||||
# nuttx link with allsysm
|
||||
define_allsyms_link_target(nuttx NULL NULL)
|
||||
# allsyms link phase 1 with generated allsyms source file
|
||||
define_allsyms_link_target(allsyms_inter nuttx allsyms_first_link)
|
||||
# allsyms link phase 2 since the table offset may changed
|
||||
|
||||
Reference in New Issue
Block a user