diff --git a/CMakeLists.txt b/CMakeLists.txt index 0729cec04..f55f7f87b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,28 +41,28 @@ include(compile_config) # qemu 参数设置 list(APPEND QEMU_FLAGS - # 使用标准输出显示 - -serial stdio - # 启动 telnet 服务,使用 2333 端口,不等待连接 - -monitor ${QEMU_MONITOR_ARG} + # 使用标准输出显示 + -serial stdio + # 启动 telnet 服务,使用 2333 端口,不等待连接 + -monitor ${QEMU_MONITOR_ARG} ) # 目标平台参数 -if(TARGET_ARCH STREQUAL "x86_64") +if (TARGET_ARCH STREQUAL "x86_64") list(APPEND QEMU_FLAGS - -m 128M - -net none - -bios ${ovmf_BINARY_DIR}/OVMF_${TARGET_ARCH}.fd - -hda fat:rw:./image/ + -m 128M + -net none + -bios ${ovmf_BINARY_DIR}/OVMF_${TARGET_ARCH}.fd + -hda fat:rw:./image/ ) -elseif(TARGET_ARCH STREQUAL "riscv64") +elseif (TARGET_ARCH STREQUAL "riscv64") list(APPEND QEMU_FLAGS - -machine virt - -nographic - # 可选项,qemu7.0 自带了 opensbi1.0 - -bios ${opensbi_BINARY_DIR}/platform/generic/firmware/fw_jump.elf - -kernel $ + -machine virt + -nographic + # 可选项,qemu7.0 自带了 opensbi1.0 + -bios ${opensbi_BINARY_DIR}/platform/generic/firmware/fw_jump.elf + -kernel $ ) -elseif(TARGET_ARCH STREQUAL "aarch64") +elseif (TARGET_ARCH STREQUAL "aarch64") list(APPEND QEMU_FLAGS -machine virt -cpu cortex-a57 @@ -71,7 +71,7 @@ elseif(TARGET_ARCH STREQUAL "aarch64") -bios ${ovmf_BINARY_DIR}/OVMF_${TARGET_ARCH}.fd -hda fat:rw:./image/ ) -endif() +endif () # 添加要编译的目录 add_subdirectory(${PROJECT_SOURCE_DIR}/src) @@ -80,10 +80,10 @@ add_subdirectory(${PROJECT_SOURCE_DIR}/doc) # 添加 run 和 debug target add_run_target(NAME run - DEPENDS $<$:boot> kernel ${RUN_DEPENDS} ${DEBUG_DEPENDS} - WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - TARGET ${TARGET_ARCH} - BOOT ${PROJECT_BINARY_DIR}/src/boot/boot.efi - KERNEL $ - QEMU_FLAGS ${QEMU_FLAGS} + DEPENDS $<$:boot> $<$:boot> kernel ${RUN_DEPENDS} ${DEBUG_DEPENDS} + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + TARGET ${TARGET_ARCH} + BOOT ${PROJECT_BINARY_DIR}/src/boot/boot.efi + KERNEL $ + QEMU_FLAGS ${QEMU_FLAGS} ) diff --git a/cmake/compile_config.cmake b/cmake/compile_config.cmake index e96dbb679..81ee80b6c 100644 --- a/cmake/compile_config.cmake +++ b/cmake/compile_config.cmake @@ -7,67 +7,67 @@ # 通用编译选项 list(APPEND COMMON_COMPILE_OPTIONS - # 如果 CMAKE_BUILD_TYPE 为 Release 则使用 -O3 -Werror,否则使用 -O0 -g -ggdb - $<$:-O3;-Werror> - $<$:-O0;-g;-ggdb> - # 打开全部警告 - -Wall - # 打开额外警告 - -Wextra - # 启用异常处理机制 - -fexceptions - - # 目标平台编译选项 - # @todo clang 交叉编译参数 - $<$: - # 禁用 red-zone - -mno-red-zone - > - - $<$: - > - - $<$: - # 生成 armv8-a 代码 - -march=armv8-a - # 针对 cortex-a72 优化代码 - -mtune=cortex-a72 - > - - # gcc 特定选项 - $<$: - > - - # clang 特定选项 - $<$: - > - - # 平台相关 - $<$: - > + # 如果 CMAKE_BUILD_TYPE 为 Release 则使用 -O3 -Werror,否则使用 -O0 -g -ggdb + $<$:-O3;-Werror> + $<$:-O0;-g;-ggdb> + # 打开全部警告 + -Wall + # 打开额外警告 + -Wextra + # 启用异常处理机制 + -fexceptions + + # 目标平台编译选项 + # @todo clang 交叉编译参数 + $<$: + # 禁用 red-zone + -mno-red-zone + > + + $<$: + > + + $<$: + # 生成 armv8-a 代码 + -march=armv8-a + # 针对 cortex-a72 优化代码 + -mtune=cortex-a72 + > + + # gcc 特定选项 + $<$: + > + + # clang 特定选项 + $<$: + > + + # 平台相关 + $<$: + > ) # 通用链接选项 list(APPEND COMMON_LINK_OPTIONS - # 不链接 ctr0 等启动代码 - -nostartfiles - - # 目标平台编译选项 - # @todo clang 交叉编译参数 - $<$: - # 设置最大页大小为 0x1000(4096) 字节 - -z max-page-size=0x1000 - > - - $<$: - # 链接脚本 - -T ${CMAKE_SOURCE_DIR}/src/kernel/arch/${TARGET_ARCH}/link.ld - # 不生成位置无关可执行代码 - -no-pie - > - - $<$: - > + # 不链接 ctr0 等启动代码 + -nostartfiles + + # 目标平台编译选项 + # @todo clang 交叉编译参数 + $<$: + # 设置最大页大小为 0x1000(4096) 字节 + -z max-page-size=0x1000 + > + + $<$: + # 链接脚本 + -T ${CMAKE_SOURCE_DIR}/src/kernel/arch/${TARGET_ARCH}/link.ld + # 不生成位置无关可执行代码 + -no-pie + > + + $<$: + > ) # 通用库选项 @@ -142,27 +142,27 @@ list(APPEND DEFAULT_KERNEL_COMPILE_OPTIONS ) list(APPEND DEFAULT_KERNEL_LINK_OPTIONS - ${COMMON_LINK_OPTIONS} + ${COMMON_LINK_OPTIONS} ) list(APPEND DEFAULT_KERNEL_LINK_LIB - ${COMMON_LINK_LIB} + ${COMMON_LINK_LIB} ) # 编译依赖 if (${TARGET_ARCH} STREQUAL "x86_64") list(APPEND COMPILE_DEPENDS - gnu-efi - cxxrt-static + gnu-efi + cxxrt-static ) elseif (${TARGET_ARCH} STREQUAL "riscv64") list(APPEND COMPILE_DEPENDS - opensbi - cxxrt-static + opensbi + cxxrt-static ) elseif (${TARGET_ARCH} STREQUAL "aarch64") list(APPEND COMPILE_DEPENDS - gnu-efi + gnu-efi cxxrt-static ) endif ()