mirror of
https://github.com/Leonmmcoset/cleonos.git
synced 2026-04-24 11:14:01 +00:00
linux同款panic二维码
This commit is contained in:
@@ -1,18 +1,25 @@
|
||||
set(KERNEL_SOURCE_DIRS
|
||||
"${CMAKE_SOURCE_DIR}/clks/kernel"
|
||||
"${CMAKE_SOURCE_DIR}/clks/arch/${CLKS_ARCH}"
|
||||
"${CMAKE_SOURCE_DIR}/clks/third_party"
|
||||
)
|
||||
|
||||
set(C_SOURCES)
|
||||
set(CPP_SOURCES)
|
||||
set(ASM_SOURCES)
|
||||
foreach(_src_dir IN LISTS KERNEL_SOURCE_DIRS)
|
||||
if(EXISTS "${_src_dir}")
|
||||
file(GLOB_RECURSE _c_abs CONFIGURE_DEPENDS "${_src_dir}/*.c")
|
||||
file(GLOB_RECURSE _cpp_abs CONFIGURE_DEPENDS "${_src_dir}/*.cpp")
|
||||
file(GLOB_RECURSE _s_abs CONFIGURE_DEPENDS "${_src_dir}/*.S")
|
||||
foreach(_abs IN LISTS _c_abs)
|
||||
file(RELATIVE_PATH _rel "${CMAKE_SOURCE_DIR}" "${_abs}")
|
||||
list(APPEND C_SOURCES "${_rel}")
|
||||
endforeach()
|
||||
foreach(_abs IN LISTS _cpp_abs)
|
||||
file(RELATIVE_PATH _rel "${CMAKE_SOURCE_DIR}" "${_abs}")
|
||||
list(APPEND CPP_SOURCES "${_rel}")
|
||||
endforeach()
|
||||
foreach(_abs IN LISTS _s_abs)
|
||||
file(RELATIVE_PATH _rel "${CMAKE_SOURCE_DIR}" "${_abs}")
|
||||
list(APPEND ASM_SOURCES "${_rel}")
|
||||
@@ -20,8 +27,10 @@ foreach(_src_dir IN LISTS KERNEL_SOURCE_DIRS)
|
||||
endif()
|
||||
endforeach()
|
||||
list(REMOVE_DUPLICATES C_SOURCES)
|
||||
list(REMOVE_DUPLICATES CPP_SOURCES)
|
||||
list(REMOVE_DUPLICATES ASM_SOURCES)
|
||||
list(SORT C_SOURCES)
|
||||
list(SORT CPP_SOURCES)
|
||||
list(SORT ASM_SOURCES)
|
||||
|
||||
set(CLKS_BOOT_LIMINE_SOURCE "clks/kernel/boot/limine/limine_requests.c")
|
||||
@@ -50,11 +59,23 @@ function(add_kernel_c_object SRC OUTPUT_LIST_VAR)
|
||||
set(OBJ_PATH "${OBJ_ROOT}/${OBJ_REL}")
|
||||
get_filename_component(OBJ_DIR "${OBJ_PATH}" DIRECTORY)
|
||||
set(_deps "${CMAKE_SOURCE_DIR}/${SRC}" ${KERNEL_INC_SOURCES_ABS})
|
||||
set(_cflags ${CFLAGS_COMMON})
|
||||
|
||||
if("${SRC}" MATCHES "^clks/third_party/")
|
||||
list(APPEND _cflags
|
||||
-Wno-error
|
||||
-Wno-unused-function
|
||||
-Wno-unused-parameter
|
||||
-Wno-sign-compare
|
||||
-Wno-type-limits
|
||||
-Wno-missing-field-initializers
|
||||
)
|
||||
endif()
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "${OBJ_PATH}"
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${OBJ_DIR}"
|
||||
COMMAND ${CC} ${CFLAGS_COMMON} ${ARCH_CFLAGS} -c "${CMAKE_SOURCE_DIR}/${SRC}" -o "${OBJ_PATH}"
|
||||
COMMAND ${CC} ${_cflags} ${ARCH_CFLAGS} -c "${CMAKE_SOURCE_DIR}/${SRC}" -o "${OBJ_PATH}"
|
||||
DEPENDS ${_deps}
|
||||
VERBATIM
|
||||
)
|
||||
@@ -79,10 +100,30 @@ function(add_kernel_asm_object SRC OUTPUT_LIST_VAR)
|
||||
set(${OUTPUT_LIST_VAR} ${${OUTPUT_LIST_VAR}} "${OBJ_PATH}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(add_kernel_cpp_object SRC OUTPUT_LIST_VAR)
|
||||
string(REGEX REPLACE "\\.cpp$" ".o" OBJ_REL "${SRC}")
|
||||
set(OBJ_PATH "${OBJ_ROOT}/${OBJ_REL}")
|
||||
get_filename_component(OBJ_DIR "${OBJ_PATH}" DIRECTORY)
|
||||
set(_deps "${CMAKE_SOURCE_DIR}/${SRC}" ${KERNEL_INC_SOURCES_ABS})
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "${OBJ_PATH}"
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${OBJ_DIR}"
|
||||
COMMAND ${KERNEL_CXX} ${CXXFLAGS_COMMON} ${ARCH_CFLAGS} -c "${CMAKE_SOURCE_DIR}/${SRC}" -o "${OBJ_PATH}"
|
||||
DEPENDS ${_deps}
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
set(${OUTPUT_LIST_VAR} ${${OUTPUT_LIST_VAR}} "${OBJ_PATH}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
set(KERNEL_OBJECTS)
|
||||
foreach(SRC IN LISTS C_SOURCES)
|
||||
add_kernel_c_object("${SRC}" KERNEL_OBJECTS)
|
||||
endforeach()
|
||||
foreach(SRC IN LISTS CPP_SOURCES)
|
||||
add_kernel_cpp_object("${SRC}" KERNEL_OBJECTS)
|
||||
endforeach()
|
||||
foreach(SRC IN LISTS ASM_SOURCES)
|
||||
add_kernel_asm_object("${SRC}" KERNEL_OBJECTS)
|
||||
endforeach()
|
||||
|
||||
Reference in New Issue
Block a user