Files
mkrtos-real/mkrtos_knl/CMakeLists.txt
2025-03-05 11:07:53 +08:00

85 lines
2.1 KiB
CMake
Executable File

cmake_minimum_required(VERSION 3.13)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} \
-Werror \
-Wno-unused-parameter \
-Wno-unused-function \
-Wno-unused-variable \
-Wno-builtin-declaration-mismatch \
")
# message(编译参数:${CMAKE_C_FLAGS})
# cortex-m 系列处理器采用相同的内核arch
if(${CONFIG_ARCH} MATCHES "cortex-m")
set(CONFIG_ARCH "cortex-m")
endif()
include_directories(
${CMAKE_SOURCE_DIR}/mkrtos_knl/knl/mm
)
add_subdirectory(arch)
add_subdirectory(knl)
add_subdirectory(lib)
add_subdirectory(test)
add_executable(mkrtos.elf
${deps}
dummy.c
)
target_link_libraries(
mkrtos.elf
PUBLIC
--whole-archive
knl
arch
lib
test
--no-whole-archive
)
add_dependencies(mkrtos.elf arch)
add_dependencies(mkrtos.elf knl)
add_dependencies(mkrtos.elf lib)
add_dependencies(mkrtos.elf test)
set_target_properties(mkrtos.elf PROPERTIES
LINK_FLAGS "-T ${CMAKE_CURRENT_LIST_DIR}/arch/${CONFIG_ARCH}/link.lds -z max-page-size=0x1000 --gc-section ")
add_custom_target(
link_file_dump ALL
COMMAND
${CMAKE_C_COMPILER}
-include ${CMAKE_SOURCE_DIR}/build/autoconf.h
-E -P -<${CMAKE_CURRENT_LIST_DIR}/arch/${CONFIG_ARCH}/link.lds.S>
${CMAKE_CURRENT_LIST_DIR}/arch/${CONFIG_ARCH}/link.lds
)
file(MAKE_DIRECTORY ${CMAKE_SOURCE_DIR}/build/output)
file(MAKE_DIRECTORY ${CMAKE_SOURCE_DIR}/build/output/cpio)
add_custom_target(
mkrtos_dump ALL
COMMAND
${CMAKE_OBJCOPY} -O binary -S mkrtos.elf mkrtos.bin
COMMAND
${CMAKE_COMMAND} -E copy mkrtos.bin ${CMAKE_SOURCE_DIR}/build/output/mkrtos
COMMAND
${CMAKE_COMMAND} -E copy mkrtos.elf ${CMAKE_SOURCE_DIR}/build/output/mkrtos.elf
COMMAND
${CMAKE_SIZE} mkrtos.elf
)
if ((DEFINED CONFIG_ELF_LAUNCH) AND (CONFIG_ELF_LAUNCH STREQUAL "y"))
add_custom_target(
mkrtos_dump_elf ALL
COMMAND
${CMAKE_COMMAND} -E copy mkrtos.elf ${CMAKE_SOURCE_DIR}/build/output/cpio/mkrtos.elf
)
add_dependencies(mkrtos_dump_elf mkrtos_dump)
endif()
add_dependencies(mkrtos.elf link_file_dump)
add_dependencies(mkrtos_dump mkrtos.elf)
add_dependencies(mkrtos_dump knl)
add_dependencies(mkrtos_dump arch)
add_dependencies(mkrtos_dump lib)