init
This commit is contained in:
44
makefile
Normal file
44
makefile
Normal file
@@ -0,0 +1,44 @@
|
||||
CC = x86_64-elf-gcc
|
||||
LD = x86_64-elf-ld
|
||||
AS = nasm
|
||||
|
||||
# Modify these settings here for defines and debug info
|
||||
# CFLAGS = -g -D DEBUG
|
||||
# LDFLAGS = -g
|
||||
# ASFLAGS = -g -F dwarf
|
||||
|
||||
# Do not modify
|
||||
CFLAGS += -m64 -ffreestanding -nostdinc -nostdlib -Wall -Wextra -Wshadow -std=c23
|
||||
LDFLAGS +=
|
||||
ASFLAGS += -f elf64
|
||||
|
||||
SRC_C := $(shell find src -name '*.c')
|
||||
SRC_ASM := $(shell find src -name '*.asm')
|
||||
|
||||
OBJS := $(patsubst src/%.c, .build/%.o, $(SRC_C)) $(patsubst src/%.asm, .build/%.o, $(SRC_ASM))
|
||||
|
||||
iso: .build/nub-os.iso
|
||||
@echo "ISO created at '.build/nub-os.iso'"
|
||||
|
||||
run: .build/nub-os.iso
|
||||
qemu-system-x86_64 -cdrom .build/nub-os.iso
|
||||
|
||||
clean:
|
||||
@rm -r .build 2>/dev/null || true
|
||||
|
||||
.build/nub-os.iso: .build/nub-os src/grub.cfg
|
||||
mkdir -p .build/grub/boot/grub
|
||||
cp src/grub.cfg .build/grub/boot/grub
|
||||
cp .build/nub-os .build/grub/boot/
|
||||
grub-mkrescue -o .build/nub-os.iso .build/grub/
|
||||
|
||||
.build/nub-os: $(OBJS)
|
||||
$(LD) $(LDFLAGS) -T src/linker.ld -o $@ $^
|
||||
|
||||
.build/%.o: src/%.c
|
||||
@mkdir -p $(dir $@)
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
.build/%.o: src/%.asm
|
||||
@mkdir -p $(dir $@)
|
||||
$(AS) $(ASFLAGS) -o $@ $<
|
||||
Reference in New Issue
Block a user