Files
nub-os-2/makefile
nub31 87c79f50be ...
2025-12-30 21:00:20 +01:00

44 lines
1.1 KiB
Makefile

CC = x86_64-elf-gcc
LD = x86_64-elf-ld
AS = nasm
# Modify these settings here for defines and debug info
CFLAGS =
LDFLAGS =
ASFLAGS =
# Do not modify
CFLAGS += -m64 -ffreestanding -fno-stack-protector -nostdlib -nostdinc -Wall -Wextra -std=c23 -Isrc/shared
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/boot/grub.cfg
mkdir -p .build/grub/boot/grub
cp src/boot/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 linker/x86_64.ld -o $@ $^
.build/%.o: src/%.c
@mkdir -p $(dir $@)
$(CC) $(CFLAGS) -c -o $@ $<
.build/%.o: src/%.asm
@mkdir -p $(dir $@)
$(AS) $(ASFLAGS) -o $@ $<