50 lines
1.3 KiB
Makefile
50 lines
1.3 KiB
Makefile
# Настройки
|
|
CC = gcc
|
|
AS = nasm
|
|
LD = ld
|
|
|
|
# Добавь эти флаги в CFLAGS:
|
|
CFLAGS = -m32 -ffreestanding -O2 -Wall -Wextra \
|
|
-fno-stack-protector -fno-exceptions \
|
|
-fno-pie -fno-stack-protector \
|
|
-fno-asynchronous-unwind-tables \
|
|
-mno-sse -mno-sse2 -mno-sse3 -mno-3dnow -mno-mmx \
|
|
-I./src
|
|
ASFLAGS = -f elf32
|
|
LDFLAGS = -m elf_i386 -T linker.ld -nostdlib
|
|
BMP_FILES := $(wildcard assets/*.bmp)
|
|
BMP_OBJS := $(patsubst assets/%.bmp, assets/%.o, $(BMP_FILES))
|
|
# Файлы
|
|
SOURCES = $(wildcard src/*.c)
|
|
ASM_SOURCES = $(wildcard src/*.asm)
|
|
OBJECTS = $(patsubst %.c,%.o,$(wildcard src/*.c)) $(patsubst %.asm,%.o,$(wildcard src/*.asm))
|
|
TARGET = kernel.bin
|
|
|
|
all: $(TARGET) iso
|
|
|
|
assets/%.o: assets/%.bmp
|
|
@mkdir -p assets
|
|
objcopy -I binary -O elf32-i386 -B i386 $< $@
|
|
|
|
# Сборка ядра
|
|
$(TARGET): $(OBJECTS) $(BMP_OBJS)
|
|
$(LD) $(LDFLAGS) -o $@ $(OBJECTS) $(BMP_OBJS)
|
|
|
|
%.o: %.c
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
%.o: %.asm
|
|
$(AS) $(ASFLAGS) $< -o $@
|
|
|
|
# Сборка ISO
|
|
iso: $(TARGET)
|
|
mkdir -p iso/boot/
|
|
cp $(TARGET) iso/boot/
|
|
grub-mkrescue -o zalupa.iso iso/
|
|
|
|
run: iso
|
|
qemu-system-i386 -vga std -cdrom zalupa.iso -serial stdio -monitor none #-d int,cpu_reset -no-reboot -no-shutdown
|
|
|
|
clean:
|
|
rm -f src/*.o assets/*.o $(TARGET) zalupa.iso
|
|
rm -rf iso/boot/$(TARGET)
|