-
Notifications
You must be signed in to change notification settings - Fork 2
/
Makefile
executable file
·78 lines (57 loc) · 1.82 KB
/
Makefile
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
TARGET=bin/vmlinux
CC=gcc
LD=ld
CFLAGS=-m32 -fno-stack-protector -fno-builtin -nostdlib -g -static -Wall
LDFLAGS=-m elf_i386
INCLUDE=-I./boot/include -I./include -I./include/sys
ISOIMAGE=bin/isoimage.iso
GRUB_CONF=config/grub.cfg
.PHONY:all clean disasm install run
all:$(OBJS) $(TARGET)
SRC_CC=$(wildcard *.c kernel/*.c)
SRC_CC+=$(wildcard *.c mm/*.c)
SRC_CC+=$(wildcard *.c lib/*.c)
SRC_CC+=$(wildcard *.c boot/*.c)
SRC_CC+=$(wildcard *.c video/*.c)
SRC_CC+=$(wildcard *.c init/*.c)
SRC_CC+=$(wildcard *.c drivers/*.c)
SRC_ASM=$(wildcard *.S kernel/*.S)
SRC_ASM+=$(wildcard *.S boot/*.S)
SRC_ASM+=$(wildcard *.S lib/*.S)
SRC_ASM+=$(wildcard *.S drivers/*.S)
OBJS=$(patsubst %c, %o, $(SRC_CC))
OBJS+=$(patsubst %S, %o, $(SRC_ASM))
%.o: %.c
@$(CC) -o $@ -c $< $(CFLAGS) $(INCLUDE)
@echo "\tCC $< to $@ .... [ \033[40;32mOK\033[0m ]"
%.o: %.S
@$(CC) -o $@ -c $^ $(CFLAGS) $(INCLUDE)
@echo "\tASM $< to $@ .... [ \033[40;32mOK\033[0m ]"
$(TARGET):$(OBJS)
@$(LD) -N -o $@ $^ -T vmlinux.lds
@echo "\tLINK ${OBJS} to $@ .... [ \033[40;32mOK\033[0m ]"
@echo "\tBuild date `date`"
clean:
@rm -rf $(TARGET) $(OBJS) kernel.asm iso/ $(ISOIMAGE)
@echo "\tCLEAN .... [ \033[40;32mOK\033[0m ]"
disasm:
@objdump -S $(TARGET) > kernel.asm
@echo "\tCREAT kernel.asm .... [ \033[40;32mOK\033[0m ]"
isoimage:$(GRUB_CONF) $(TARGET)
@mkdir -p iso/boot/grub
@cp config/grub.cfg iso/boot/grub
@cp -rf /usr/lib/grub/i386-pc/ iso/boot/grub/
@cp $(TARGET) iso/boot
@grub-mkrescue -o $(ISOIMAGE) iso
@rm -rf iso/
#run:$(ISOIMAGE)
#isoimage:$(GRUB_CONF) $(TARGET)
run:$(GRUB_CONF) $(TARGET)
@mkdir -p iso/boot/grub
@cp config/grub.cfg iso/boot/grub
@cp -rf bin/i386-pc/ iso/boot/grub/
#@cp -rf /usr/lib/grub/i386-pc/ iso/boot/grub/
@cp $(TARGET) iso/boot
@grub-mkrescue -o $(ISOIMAGE) iso
@rm -rf iso/
@qemu-system-i386 -cdrom $(ISOIMAGE)