-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
100 lines (93 loc) · 2.67 KB
/
Makefile
File metadata and controls
100 lines (93 loc) · 2.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
include ./src/common/Makefile
# ========================================
# 文件目录
# ========================================
# 项目根目录
ROOT := $(abspath $(CURDIR))
# 二进制编译结果目录
BIN := $(ROOT)/bin
# 头文件目录
INCLUDE := $(ROOT)/include
# 源代码目录
SRC := $(ROOT)/src
# 中间文件目录
OBJ := $(ROOT)/obj
# 库文件目录
LIB := $(ROOT)/lib
# 目录参数 parameter
DIR_PARAMETER = BIN=$(BIN) INCLUDE=$(INCLUDE) SRC=$(SRC) OBJ=$(OBJ) LIB=$(LIB)
# ========================================
# 子模块列表
# ========================================
MODULES := boot
# ========================================
# 编译子模块
# ========================================
# Boot 模块
boot:
@echo ""
@echo "$(GREEN)=== 开始编译 Boot 模块 ===$(RESET)"
@echo ""
@$(MAKE) $(MAKEF_LAGS) -C $(SRC)/boot ARCH=x86_32 MODEL_DIR=boot $(DIR_PARAMETER) all
@echo ""
bootclean:
@echo ""
@echo "$(GREEN)=== 清理 Boot 模块 ===$(RESET)"
@$(MAKE) $(MAKEF_LAGS) -C $(SRC)/boot ARCH=x86_32 MODEL_DIR=boot $(DIR_PARAMETER) clean
@echo ""
# ========================================
# 创建 ISO 文件
# ========================================
.PHONY: mkiso
mkiso: boot
# 创建 ISO 目录结构
@echo ""
@echo "$(GREEN)=== 开始创建 ISO 文件 ===$(RESET)"
@echo ""
@mkdir -p $(OBJ)/iso_temp_dir/iso_root/boot/grub
# 拷贝配置文件
@cp $(SRC)/boot/grub/grub.cfg $(OBJ)/iso_temp_dir/iso_root/boot/grub/grub.cfg
# 拷贝 ELF 文件
@cp $(BIN)/boot/Boot.elf $(OBJ)/iso_temp_dir/iso_root/boot/Boot.elf
@echo "ISO 目录创建完成:"
@cd $(OBJ)/iso_temp_dir && tree -C -L 3 --noreport -I '*~' iso_root
@echo ""
@echo "正在生成 ISO 文件..."
# 生成 ISO 镜像文件
@grub-mkrescue -o $(BIN)/LikeOS.iso $(OBJ)/iso_temp_dir/iso_root
@echo "成功生成文件:"
@echo "$(BIN)/LikeOS.iso"
@echo ""
@echo "$(GREEN)=== ISO 文件创建完成 ===$(RESET)"
@echo ""
cleaniso:
@echo ""
@echo "$(GREEN)=== 清理 ISO 文件 ===$(RESET)"
@echo ""
@rm -vrf $(BIN)/LikeOS.iso
@echo ""
@echo "正在清理临时目录..."
@rm -vrf $(OBJ)/iso_temp_dir
@echo ""
@echo "$(GREEN)=== ISO 文件清理完成 ===$(RESET)"
@echo ""
.PHONY: clean
clean: bootclean cleaniso
@echo "正在清理残留目录..."
@rm -vrf $(OBJ)/* $(BIN)/*
@echo ""
@echo "$(GREEN)=== 文件全部清理完成 ===$(RESET)"
@echo ""
# ========================================
# 运行
# ========================================
.PHONY: bochs
bochs: mkiso
@echo ""
@echo "$(GREEN)=== 已经拉起 BOCHS ===$(RESET)"
@bochs -q -f bochsrc
.PHONY: qemu
qemu: mkiso
@echo ""
@echo "$(GREEN)=== 已经拉起 QEMU ===$(RESET)"
@qemu-system-x86_64 -cdrom $(BIN)/LikeOS.iso -boot d -m 512M