DragonOS/Makefile
login 2813126e31
新增rust ffi (#77)
* 引入cargo

* 取消对Cargo.lock的跟踪

* 解决vscode报错问题

* new: rust的代码能够调用c语言的printk_color

* 1、将原本run.sh的工作拆解,变为几个不同的make命令
2、在docker镜像中编译rust

* 更改workflow

* update workflow

* new: 解决workflow无法通过编译的问题
2022-11-11 15:35:37 +08:00

96 lines
2.1 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

SUBDIRS = kernel user
# ifndef $(EMULATOR)
ifeq ($(EMULATOR), )
export EMULATOR=__NO_EMULATION__
endif
# todo: 增加参数判断是否在QEMU中仿真若是则启用该环境变量
# export EMULATOR=__QEMU_EMULATION__
# 计算cpu核心数
NPROCS:=1
OS:=$(shell uname -s)
ifeq ($(OS),Linux)
NPROCS:=$(shell grep -c ^processor /proc/cpuinfo)
endif
ifeq ($(OS),Darwin) # Assume Mac OS X
NPROCS:=$(shell system_profiler | awk '/Number Of CPUs/{print $4}{next;}')
endif
export ARCH=__x86_64__
export ROOT_PATH=$(shell pwd)
export RUSTC=$(shell which rustc)
export DEBUG=DEBUG
export GLOBAL_CFLAGS := -mcmodel=large -fno-builtin -m64 -fno-stack-protector -D $(ARCH) -D $(EMULATOR) -O1
ifeq ($(DEBUG), DEBUG)
GLOBAL_CFLAGS += -g
endif
export CC=gcc
.PHONY: all
all: kernel user
.PHONY: kernel
kernel:
mkdir -p bin/kernel/
$(MAKE) -C ./kernel all || (sh -c "echo 内核编译失败" && exit 1)
.PHONY: user
user:
mkdir -p bin/user/
mkdir -p bin/tmp/user
$(MAKE) -C ./user all || (sh -c "echo 用户程序编译失败" && exit 1)
.PHONY: clean
clean:
@list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Clean in dir: $$subdir";\
cd $$subdir && $(MAKE) clean;\
cd .. ;\
done
cppcheck-xml:
cppcheck kernel user --platform=unix64 --std=c11 -I user/libs/ -I=kernel/ --force -j $(NPROCS) --xml 2> cppcheck.xml
cppcheck:
cppcheck kernel user --platform=unix64 --std=c11 -I user/libs/ -I=kernel/ --force -j $(NPROCS)
gdb:
gdb -n -x tools/.gdbinit
# 写入磁盘镜像
write_diskimage:
sudo sh -c "cd tools && bash $(ROOT_PATH)/tools/write_disk_image.sh && cd .."
# 不编译直接启动QEMU
qemu:
sh -c "cd tools && bash run-qemu.sh && cd .."
# 编译并写入磁盘镜像
build:
$(MAKE) all -j $(NPROCS)
$(MAKE) write_diskimage || exit 1
# 在docker中编译并写入磁盘镜像
docker:
@echo "使用docker构建"
sudo bash tools/build_in_docker.sh || exit 1
# 编译并启动QEMU
run:
$(MAKE) all -j $(NPROCS)
$(MAKE) write_diskimage || exit 1
$(MAKE) qemu
# 在docker中编译并启动QEMU
run-docker:
@echo "使用docker构建并运行"
sudo bash tools/build_in_docker.sh || exit 1
$(MAKE) qemu