diff --git a/.github/workflows/rustfmt.yml b/.github/workflows/rustfmt.yml index 44e9daf0..0cb6e848 100644 --- a/.github/workflows/rustfmt.yml +++ b/.github/workflows/rustfmt.yml @@ -34,7 +34,5 @@ jobs: printf "\n" >> user/libs/libc/src/include/internal/bindings/bindings.rs - name: Check format - uses: actions-rs/cargo@v1 - with: - command: fmt - args: --all -- --check + run: | + FMT_CHECK=1 make fmt diff --git a/Cargo.toml b/Cargo.toml deleted file mode 100644 index cc4c4197..00000000 --- a/Cargo.toml +++ /dev/null @@ -1,7 +0,0 @@ -[workspace] -resolver = "2" - -members = [ - "kernel", - "user/libs/libc/", -] \ No newline at end of file diff --git a/Makefile b/Makefile index 876a19c1..39316c44 100644 --- a/Makefile +++ b/Makefile @@ -36,6 +36,16 @@ export NM=$(DragonOS_GCC)/x86_64-elf-nm export AR=$(DragonOS_GCC)/x86_64-elf-ar export OBJCOPY=$(DragonOS_GCC)/x86_64-elf-objcopy +# 检查是否需要进行fmt --check +# 解析命令行参数 +FMT_CHECK?=0 + +ifeq ($(FMT_CHECK), 1) + FMT_CHECK=--check +else + FMT_CHECK= +endif + .PHONY: all all: kernel user @@ -142,6 +152,11 @@ run-docker: $(MAKE) write_diskimage || exit 1 $(MAKE) qemu +fmt: + @echo "格式化代码" + FMT_CHECK=$(FMT_CHECK) $(MAKE) fmt -C kernel + FMT_CHECK=$(FMT_CHECK) $(MAKE) fmt -C user + help: @echo "编译:" @echo " make all -j - 本地编译,不运行,n为要用于编译的CPU核心数" diff --git a/docs/introduction/build_system.md b/docs/introduction/build_system.md index 17962793..e5c087e4 100644 --- a/docs/introduction/build_system.md +++ b/docs/introduction/build_system.md @@ -238,6 +238,7 @@ make run-docker - 清理编译产生的文件: `make clean` - 编译文档: `make docs` (需要手动安装sphinx以及docs下的`requirements.txt`中的依赖) - 清理文档: `make clean-docs` +- 格式化代码: `make fmt` :::{note} 如果您需要在vnc中运行DragonOS,请在上述命令后加上`-vnc`后缀。如:`make run-vnc` diff --git a/kernel/Makefile b/kernel/Makefile index f2740473..edfb8a47 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -6,4 +6,8 @@ all: clean: rm -f Cargo.lock - $(MAKE) -C src clean \ No newline at end of file + $(MAKE) -C src clean + +.PHONY: fmt +fmt: + cargo fmt --all $(FMT_CHECK) diff --git a/kernel/src/Makefile b/kernel/src/Makefile index 1c8f9650..7500550a 100644 --- a/kernel/src/Makefile +++ b/kernel/src/Makefile @@ -38,7 +38,7 @@ kernel_rust: all: kernel @echo "Linking kernel..." - $(LD) -b elf64-x86-64 -z muldefs -o kernel head.o main.o $(shell find . -name "*.o") $(ROOT_PATH)/target/x86_64-unknown-none/release/libdragonos_kernel.a -T link.lds + $(LD) -b elf64-x86-64 -z muldefs -o kernel head.o main.o $(shell find . -name "*.o") ../target/x86_64-unknown-none/release/libdragonos_kernel.a -T link.lds # 生成kallsyms current_dir=$(pwd) @@ -55,7 +55,7 @@ all: kernel # 重新链接 @echo "Re-Linking kernel..." @echo $(shell find . -name "*.o") - $(LD) -b elf64-x86-64 -z muldefs -o kernel head.o main.o $(shell find . -name "*.o") $(ROOT_PATH)/target/x86_64-unknown-none/release/libdragonos_kernel.a ./debug/kallsyms.o -T link.lds + $(LD) -b elf64-x86-64 -z muldefs -o kernel head.o main.o $(shell find . -name "*.o") ../target/x86_64-unknown-none/release/libdragonos_kernel.a ./debug/kallsyms.o -T link.lds @echo "Generating kernel ELF file..." # 生成内核文件 $(OBJCOPY) -I elf64-x86-64 -O elf64-x86-64 kernel ../../bin/kernel/kernel.elf diff --git a/rust-toolchain.toml b/rust-toolchain.toml deleted file mode 100644 index 3d808158..00000000 --- a/rust-toolchain.toml +++ /dev/null @@ -1,3 +0,0 @@ -[toolchain] -channel = "nightly-2023-01-21" -components = ["rust-src"] \ No newline at end of file diff --git a/user/Makefile b/user/Makefile index da796370..1430927b 100644 --- a/user/Makefile +++ b/user/Makefile @@ -95,7 +95,7 @@ sys_api_lib: sys_api_lib_stage_1 mkdir -p $(ROOT_PATH)/bin/tmp/user/sys_api_lib_build_tmp mkdir -p $(OLD_LIBC_INSTALL_PATH)/include mkdir -p $(OLD_LIBC_INSTALL_PATH)/lib - $(AR) x $(ROOT_PATH)/target/x86_64-unknown-none/release/liblibc.a --output=$(ROOT_PATH)/bin/tmp/user/sys_api_lib_build_tmp + $(AR) x libs/libc/target/x86_64-unknown-none/release/liblibc.a --output=$(ROOT_PATH)/bin/tmp/user/sys_api_lib_build_tmp $(AR) crvs $(OLD_LIBC_INSTALL_PATH)/lib/libc.a $(shell find ./libs/* -name "*.o") $(shell find $(ROOT_PATH)/bin/tmp/user/sys_api_lib_build_tmp/* -name "*.o") rm -rf $(ROOT_PATH)/bin/tmp/user/sys_api_lib_build_tmp # $(shell find ./libs/* -name "*.o" | xargs -I {} cp {} $(ROOT_PATH)/bin/sysroot/usr/lib/) @@ -112,4 +112,8 @@ clean: cd $$subdir && $(MAKE) clean;\ cd .. ;\ done - \ No newline at end of file + +.PHONY: fmt +fmt: + FMT_CHECK=$(FMT_CHECK) $(MAKE) -C libs + FMT_CHECK=$(FMT_CHECK) $(MAKE) -C apps diff --git a/user/apps/Makefile b/user/apps/Makefile index d3d39ff4..4daffef4 100644 --- a/user/apps/Makefile +++ b/user/apps/Makefile @@ -9,4 +9,7 @@ $(user_apps_sub_dirs): ECHO $(MAKE) -C $@ all CFLAGS="$(CFLAGS)" tmp_output_dir="$(tmp_output_dir)" output_dir="$(output_dir)" sys_libs_dir="$(sys_libs_dir)" all: $(user_apps_sub_dirs) - \ No newline at end of file + +.PHONY: clean +fmt: + @echo "格式化代码: user/apps" diff --git a/user/libs/Makefile b/user/libs/Makefile index aa2e6fe2..4d3da120 100644 --- a/user/libs/Makefile +++ b/user/libs/Makefile @@ -16,4 +16,9 @@ clean: echo "Clean in dir: $$subdir";\ cd $$subdir && $(MAKE) clean;\ cd .. ;\ - done \ No newline at end of file + done + +.PHONY: clean +fmt: + @echo "格式化代码: user/libs" + FMT_CHECK=$(FMT_CHECK) $(MAKE) -C libc fmt diff --git a/user/libs/libc/Makefile b/user/libs/libc/Makefile index 735c2bf7..c805b5f9 100644 --- a/user/libs/libc/Makefile +++ b/user/libs/libc/Makefile @@ -4,4 +4,8 @@ all: clean: rm -f Cargo.lock - $(MAKE) -C src clean \ No newline at end of file + $(MAKE) -C src clean + +.PHONY: fmt +fmt: + cargo fmt --all $(FMT_CHECK)