Files
mkrtos-real/mkrtos_knl/CMakeLists.txt

84 lines
2.0 KiB
CMake
Raw Normal View History

2023-08-20 20:52:23 +08:00
cmake_minimum_required(VERSION 3.13)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} \
-Werror \
-DSMP=1 \
-Wno-unused-parameter \
-Wno-unused-function \
-Wno-unused-variable \
2023-12-23 22:28:42 +08:00
-Wno-builtin-declaration-mismatch \
2023-08-20 20:52:23 +08:00
")
2023-08-20 20:52:23 +08:00
message(编译参数:${CMAKE_C_FLAGS})
add_subdirectory(arch)
add_subdirectory(drivers)
add_subdirectory(knl)
add_subdirectory(lib)
2024-04-04 16:51:29 +00:00
add_subdirectory(test)
2023-08-20 20:52:23 +08:00
add_executable(mkrtos.elf
${deps}
dummy.c
)
2023-08-20 20:52:23 +08:00
target_link_libraries(
mkrtos.elf
PUBLIC
2023-11-19 23:01:35 +08:00
--whole-archive
2023-08-22 00:26:34 +08:00
knl
arch
lib
2023-12-02 20:18:32 +08:00
drv
2024-04-04 16:51:29 +00:00
test
2023-12-02 20:18:32 +08:00
--no-whole-archive
2023-08-20 20:52:23 +08:00
)
2023-08-22 00:26:34 +08:00
add_dependencies(mkrtos.elf arch)
add_dependencies(mkrtos.elf drv)
add_dependencies(mkrtos.elf knl)
add_dependencies(mkrtos.elf lib)
2024-04-04 16:51:29 +00:00
add_dependencies(mkrtos.elf test)
2023-08-22 00:26:34 +08:00
2023-08-20 20:52:23 +08:00
set_target_properties(mkrtos.elf PROPERTIES
2024-03-31 16:06:11 +00:00
LINK_FLAGS "-T ${CMAKE_CURRENT_LIST_DIR}/arch/${CONFIG_ARCH}/link.lds -z max-page-size=0x1000 --gc-section ")
2023-08-20 20:52:23 +08:00
add_custom_target(
link_file_dump ALL
COMMAND
${CMAKE_C_COMPILER}
# -DKNL_TEXT=$ENV{KNL_TEXT}
2023-08-20 20:52:23 +08:00
-DKNL_DATA=$ENV{KNL_DATA}
2024-01-18 00:48:16 +08:00
-DKNL_OFFSET=${CONFIG_KNL_OFFSET}
2023-12-23 16:17:15 +08:00
# -DKNL_DATA_SIZE=$ENV{KNL_DATA_SIZE}
-include ${CMAKE_SOURCE_DIR}/build/autoconf.h
2024-03-31 16:06:11 +00:00
-E -P -<${CMAKE_CURRENT_LIST_DIR}/arch/${CONFIG_ARCH}/link.lds.S>
${CMAKE_CURRENT_LIST_DIR}/arch/${CONFIG_ARCH}/link.lds
2023-08-20 20:52:23 +08:00
)
add_custom_target(
mkrtos_dump ALL
COMMAND
${CMAKE_OBJCOPY} -O binary -S mkrtos.elf mkrtos.bin
COMMAND
mkdir -p ${CMAKE_SOURCE_DIR}/build/output
COMMAND
2024-03-31 16:06:11 +00:00
mkdir -p ${CMAKE_SOURCE_DIR}/build/output/cpio
COMMAND
2023-08-20 20:52:23 +08:00
cp mkrtos.bin ${CMAKE_SOURCE_DIR}/build/output/mkrtos
COMMAND
cp mkrtos.elf ${CMAKE_SOURCE_DIR}/build/output/mkrtos.elf
2023-09-16 22:08:39 +08:00
COMMAND
2024-03-31 16:06:11 +00:00
cp mkrtos.elf ${CMAKE_SOURCE_DIR}/build/output/cpio/mkrtos.elf
COMMAND
2023-10-05 23:10:18 +08:00
${CMAKE_OBJDUMP} -s -S mkrtos.elf > ${CMAKE_SOURCE_DIR}/build/output/mkrtos.S
COMMAND
2023-09-16 22:08:39 +08:00
${CMAKE_SIZE} mkrtos.elf
2023-08-20 20:52:23 +08:00
)
add_dependencies(mkrtos.elf link_file_dump)
2023-12-02 20:18:32 +08:00
add_dependencies(mkrtos_dump mkrtos.elf)
add_dependencies(mkrtos_dump knl)
add_dependencies(mkrtos_dump arch)
add_dependencies(mkrtos_dump lib)
add_dependencies(mkrtos_dump drv)