Improve Makefile #15
21
Makefile
21
Makefile
@@ -1,7 +1,9 @@
|
|||||||
|
|
||||||
BUILDDIR := build
|
BUILDDIR := build
|
||||||
ELFFILE := pepperk
|
ELFFILE := pepperk
|
||||||
SOURCES = src/sched/spinlock.c src/debug/misc.c src/io/term/flanterm_backends/fb.c src/io/term/flanterm.c src/debug/panic.c src/debug/stacktrace.c src/boot/boot.c src/sched/scheduler.c src/sched/process.c src/mem/heap/kheap.c src/mem/paging/vmm.c src/mem/paging/paging.c src/mem/paging/pmm.c src/string/string.c src/io/kbd/ps2.c src/io/serial/serial.c src/io/term/term.c src/idt/idt.c src/mem/gdt/gdt.c src/mem/misc/utils.c src/time/timer.c src/kmain.c
|
SRC := src
|
||||||
|
SOURCES := $(shell find src -name '*.c')
|
||||||
|
OBJFILES := $(patsubst $(SRC)/%.c, $(BUILDDIR)/%.o, $(SOURCES))
|
||||||
|
|
||||||
CC := x86_64-elf-gcc
|
CC := x86_64-elf-gcc
|
||||||
CC_FLAGS=-Wall -Wextra -std=gnu99 -nostdlib -ffreestanding -fno-stack-protector -fno-omit-frame-pointer -fno-stack-check -fno-PIC -ffunction-sections -fdata-sections -mcmodel=kernel
|
CC_FLAGS=-Wall -Wextra -std=gnu99 -nostdlib -ffreestanding -fno-stack-protector -fno-omit-frame-pointer -fno-stack-check -fno-PIC -ffunction-sections -fdata-sections -mcmodel=kernel
|
||||||
@@ -11,17 +13,20 @@ LD := x86_64-elf-ld
|
|||||||
|
|
||||||
.PHONY: build build-iso debug debug2 run clean
|
.PHONY: build build-iso debug debug2 run clean
|
||||||
|
|
||||||
$(ELFFILE):
|
$(ELFFILE): $(BUILDDIR) $(OBJFILES)
|
||||||
mkdir -p $(BUILDDIR)
|
|
||||||
rm -f *.o $(BUILDDIR)/*.o
|
|
||||||
$(CC) -g -c -Isrc $(SOURCES) $(CC_PROBLEMATIC_FLAGS) $(CC_FLAGS)
|
|
||||||
mv *.o $(BUILDDIR)/
|
|
||||||
nasm -f elf64 src/idt/idt.S -o $(BUILDDIR)/idt_stub.o
|
nasm -f elf64 src/idt/idt.S -o $(BUILDDIR)/idt_stub.o
|
||||||
$(LD) -o $(ELFFILE) -T linker.ld $(BUILDDIR)/*.o
|
$(LD) -o $(ELFFILE) -T linker.ld $(OBJFILES) $(BUILDDIR)/idt_stub.o
|
||||||
nm -n $(ELFFILE) | awk '$$2 ~ /[TtDdBbRr]/ {print $$1, $$3}' > symbols.map
|
nm -n $(ELFFILE) | awk '$$2 ~ /[TtDdBbRr]/ {print $$1, $$3}' > symbols.map
|
||||||
python3 symbols.py
|
python3 symbols.py
|
||||||
nasm -f elf64 symbols.S -o $(BUILDDIR)/symbols.o
|
nasm -f elf64 symbols.S -o $(BUILDDIR)/symbols.o
|
||||||
$(LD) -o $(ELFFILE) -T linker.ld $(BUILDDIR)/*.o
|
$(LD) -o $(ELFFILE) -T linker.ld $(OBJFILES) $(BUILDDIR)/idt_stub.o
|
||||||
|
|
||||||
|
$(BUILDDIR):
|
||||||
|
@mkdir -p $(BUILDDIR)
|
||||||
|
|
||||||
|
$(BUILDDIR)/%.o: $(SRC)/%.c
|
||||||
|
mkdir -p $(dir $@)
|
||||||
|
$(CC) -g -c -Isrc $< $(CC_PROBLEMATIC_FLAGS) $(CC_FLAGS) -o $@
|
||||||
|
|
||||||
limine/limine:
|
limine/limine:
|
||||||
rm -rf limine
|
rm -rf limine
|
||||||
|
|||||||
Reference in New Issue
Block a user