finix/kernel/Makefile
2023-07-17 19:34:52 -04:00

30 lines
790 B
Makefile

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