-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
62 lines (47 loc) · 1.25 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
# Makefile for T1 Kernel
NAME = t1
MAJOR = 0
PATCH = 1
MINOR = 0
VERSION = $(MAJOR).$(PATCH).$(MINOR)
BINDIR = bin
BINARYNAME = $(NAME)-$(VERSION)
BINARY = $(BINDIR)/$(BINARYNAME)
ISO = $(BINARY).iso
CC = gcc
LD = ld
AS = nasm
CC_OBJS := $(patsubst %.c, %.o, $(shell find . -name '*.c'))
AS_OBJS := $(patsubst %.asm, %.o, $(shell find . -name '*.asm'))
OBJS = $(AS_OBJS) $(CC_OBJS)
all: $(BINARY)
$(BINARY): $(OBJS)
@echo "LD $(BINARY)"
$(LD) -melf_i386 -T memmap -nostdlib -o $(BINARY) $(OBJS)
clean:
@echo "RM OBJS"
rm -rf $(OBJS)
@echo "RM $(BINARY)"
rm -rf $(BINARY)
rm -rf $(ISO)
rm -rf ./iso/boot/$(BINARYNAME)
rm -rf bochsout.txt
disasm: $(BINARY)
objdump -M intel -f -D $(BINARY) > $(BINDIR)/disasm.txt
grub-iso: $(ISO)
$(ISO): $(BINARY)
cp $(BINARY) ./iso/boot/kernel
grub-mkrescue -o $(ISO) ./iso
qemu: $(BINARY)
@echo "QEMU $(BINARY)"
qemu-system-x86_64 -no-reboot -d int -m 128M -s -kernel $(BINARY)
bochs: $(ISO)
@echo "BOCHS $(ISO)"
bochs -f bochsrc.txt -log $(BINDIR)/bochsout.txt -dbglog $(BINDIR)/bochsdbg.txt
%.o: %.c
@echo "CC $<"
$(CC) -D__KVERSION__='"$(VERSION)"' -m32 -Iinclude -Wall -Wextra -O0 -ffreestanding -fno-asynchronous-unwind-tables -c $< -o $@
%.o: %.asm
@echo "AS $<"
$(AS) -felf32 $< -o $@
$(V).SILENT: