-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
38 lines (27 loc) · 775 Bytes
/
Copy pathMakefile
File metadata and controls
38 lines (27 loc) · 775 Bytes
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
CC = clang
LD = ld.lld
TARGET = -target i386-pc-none-elf
CCOPTS = $(TARGET) -march=i386 -m32 -std=c99 -ffreestanding -O2 -Wall -Wextra
LDOPTS = -m elf_i386 -T linker.ld
BUILD = build/
C_SOURCES = $(wildcard src/*.c)
C_OBJECTS = $(patsubst src/%.c, $(BUILD)%.o, $(C_SOURCES))
ASM_OBJECTS = $(BUILD)boot.o
.PHONY: b r c
b: $(BUILD) $(ASM_OBJECTS) $(C_OBJECTS)
@echo "LINKING..."
$(LD) $(LDOPTS) -o $(BUILD)kernel.bin $(ASM_OBJECTS) $(C_OBJECTS)
$(BUILD)boot.o: boot.asm
@echo "BUILDING ASM..."
nasm -f elf32 -o $@ $<
$(BUILD)%.o: src/%.c
@echo "BUILDING $<..."
$(CC) $(CCOPTS) -c $< -o $@ -Iinclude/
$(BUILD):
@mkdir -p $(BUILD)
r: b
@echo "RUNNING..."
qemu-system-i386 -kernel $(BUILD)kernel.bin
c:
@echo "CLEANING..."
rm -rf $(BUILD)