-
Notifications
You must be signed in to change notification settings - Fork 0
/
makefile
61 lines (47 loc) · 1.24 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
VERSION = 1.0.0
OS_NAME = omphalos
EXEC = kernel
BIN_PATH = archx86/
SRC_PATH = src/
OBJ_PATH = build/
KERNEL_BIN = $(BIN_PATH)boot/kernel.bin
SRC = $(wildcard src/*.c)
OBJ = $(patsubst src/%.c, build/%.o, $(SRC))
ASM = $(patsubst src/%.asm, build/%.o, $(SRC))
CC = gcc
ASSEMBLER = nasm
LINKER = ld
EMULATOR = qemu-system-i386
ASFLAGS = -f elf32
CFLAGS = -m32 -Wall -ffreestanding
LDFLAGS= -m elf_i386 -T $(SRC_PATH)link.ld
EMULATOR_FLAGS = -kernel
run: all
$(EMULATOR) $(EMULATOR_FLAGS) $(KERNEL_BIN)
test:
$(EMULATOR) $(EMULATOR_FLAGS) $(KERNEL_BIN)
all: header $(EXEC) asm
@mkdir -p archx86/
@mkdir -p archx86/boot/grub/
@cp grub.cfg archx86/boot/grub/grub.cfg
$(LINKER) $(LDFLAGS) -o $(KERNEL_BIN) $(OBJ_PATH)kasm.o $(OBJ)
kernel: $(OBJ)
$(OBJ_PATH)%.o: $(SRC_PATH)%.c
$(CC) -I./include -o $@ -c $< $(CFLAGS)
asm: $(OBJ_PATH)kasm.o
$(OBJ_PATH)kasm.o: $(SRC_PATH)kernel.asm
$(ASSEMBLER) $(ASFLAGS) -o $(OBJ_PATH)kasm.o $(SRC_PATH)kernel.asm
build: all
grub-mkrescue -o $(OS_NAME).iso $(BIN_PATH)
header:
@figlet $(OS_NAME)
@echo "\n"
$(info version $(VERSION))
$(info author NotBad4U)
$(info https://github.com/NotBad4U)
.PHONY: clean mrproper
clean:
@rm -rf $(OBJ_PATH)*.o
@rm -f $(OS_NAME).iso
mrproper: clean
@rm -rf $(BIN_PATH)