clipper/Makefile

40 lines
1.1 KiB
Makefile
Raw Normal View History

2023-09-02 19:40:46 +02:00
ASM=nasm
2025-05-29 17:48:27 +02:00
CC=/bin/i686-elf-gcc
2023-09-02 19:40:46 +02:00
SRC_DIR=src
BUILD_DIR=build
2023-09-03 20:11:33 +02:00
ISO_DIR=$(BUILD_DIR)/iso
2023-09-02 19:40:46 +02:00
2023-09-03 20:31:42 +02:00
INCLUDE_DIR=$(SRC_DIR)/kernel/include
2023-09-03 20:11:33 +02:00
KERNEL_ASM := $(shell find $(SRC_DIR)/kernel -name "*.asm")
KERNEL_C := $(shell find $(SRC_DIR)/kernel -name "*.c")
2023-09-02 19:40:46 +02:00
2023-09-03 20:11:33 +02:00
KERNEL_ASM_O := $(patsubst $(SRC_DIR)/kernel/%.asm, $(BUILD_DIR)/kernel/%.asm.o, $(KERNEL_ASM))
KERNEL_C_O := $(patsubst $(SRC_DIR)/kernel/%.c, $(BUILD_DIR)/kernel/%.c.o, $(KERNEL_C))
2023-09-02 19:40:46 +02:00
2023-09-03 20:11:33 +02:00
KERNEL = $(BUILD_DIR)/clipper.bin
IMAGE = $(BUILD_DIR)/clipper.iso
2023-09-02 19:40:46 +02:00
2023-09-03 20:11:33 +02:00
.PHONY: all clipper kernel clean always
2023-09-02 19:40:46 +02:00
2023-09-03 20:11:33 +02:00
clipper: kernel
mkdir -p $(ISO_DIR)/boot/grub
cp $(KERNEL) $(ISO_DIR)/boot/clipper.bin
cp grub/grub.cfg $(ISO_DIR)/boot/grub/grub.cfg
grub-mkrescue -o $(IMAGE) $(ISO_DIR)
2023-09-02 19:40:46 +02:00
2023-09-03 20:11:33 +02:00
kernel: $(KERNEL_ASM_O) $(KERNEL_C_O)
$(CC) -T linker.ld -o $(KERNEL) -ffreestanding -O2 -nostdlib $^ -lgcc
2023-09-02 19:40:46 +02:00
2023-09-03 20:11:33 +02:00
$(BUILD_DIR)/%.asm.o: $(SRC_DIR)/%.asm
@mkdir -p "$(@D)"
$(ASM) -felf32 $< -o $@
2023-09-02 19:40:46 +02:00
2023-09-03 20:11:33 +02:00
$(BUILD_DIR)/%.c.o: $(SRC_DIR)/%.c
2023-09-02 19:40:46 +02:00
@mkdir -p "$(@D)"
$(CC) -c $< -o $@ -I$(INCLUDE_DIR) -std=gnu99 -ffreestanding -O2 -Wall -Wextra -Wformat
2023-09-02 19:40:46 +02:00
clean:
rm -rf $(BUILD_DIR)/*