summaryrefslogtreecommitdiff
path: root/kernel/Makefile
blob: 2e7954ea1773efba0b95c65f924f050a503c3826 (plain)
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
include ../.env

C_SRC =  $(shell find src -type f -name "*.c" -not -path "src/arch/*")
C_SRC += $(shell find src/arch/$(ARCH) -type f -name "*.c")
C_OBJ = $(patsubst %.c,bin/%.o, $(C_SRC))

ASM_SRC = $(shell find src -type f -name "*.asm" -not -path "src/arch/*")
ASM_SRC += $(shell find src/arch/$(ARCH) -type f -name "*.asm")
ASM_OBJ = $(patsubst %.asm,bin/%.asm.o, $(ASM_SRC))

CFLAGS += -Iinclude -Isrc -I../libk/include -std=gnu17

.PHONY: all

all: bin/kernel.bin

$(C_OBJ): bin/%.o : %.c
	@mkdir -p $(@D)
	$(CC) -c $(CFLAGS) -o $@ $<

$(ASM_OBJ): bin/%.asm.o : %.asm
	@mkdir -p $(@D)
	$(AS) $< -f elf -o $@

bin/kernel.bin: $(C_OBJ) $(ASM_OBJ)
	@mkdir -p $(@D)
	$(LD) -o bin/kernel.bin -T arch/$(ARCH)/linker.ld $(C_OBJ) $(ASM_OBJ) ../libk/bin/libk.a $(LDFLAGS)

clean:
	rm -fr bin