mirror of
https://github.com/tailix/libkernaux.git
synced 2024-11-13 11:04:27 -05:00
82 lines
2.2 KiB
Makefile
82 lines
2.2 KiB
Makefile
all: run
|
|
|
|
# CCPREFIX = i386-elftailix-
|
|
|
|
AS = $(CCPREFIX)as
|
|
CC = $(CCPREFIX)gcc
|
|
|
|
LIMINE = ../../vendor/limine/build/bin
|
|
XORRISO = xorriso
|
|
|
|
IMAGE = image.iso
|
|
LINKERSCR = linker.ld
|
|
ROOTFS = rootfs
|
|
|
|
LIMINE_CD = $(LIMINE)/limine-cd.bin
|
|
LIMINE_ELTORITO = $(LIMINE)/limine-eltorito-efi.bin
|
|
LIMINE_INSTALL = $(LIMINE)/limine-install
|
|
LIMINE_SYS = $(LIMINE)/limine.sys
|
|
|
|
REL_KERNEL = boot/kernel
|
|
REL_LIMINE_CD = boot/limine-cd.bin
|
|
REL_LIMINE_CFG = boot/limine.cfg
|
|
REL_LIMINE_ELTORITO = boot/limine-eltorito-efi.bin
|
|
REL_LIMINE_SYS = boot/limine.sys
|
|
|
|
FULL_KERNEL = $(ROOTFS)/$(REL_KERNEL)
|
|
FULL_LIMINE_CD = $(ROOTFS)/$(REL_LIMINE_CD)
|
|
FULL_LIMINE_CFG = $(ROOTFS)/$(REL_LIMINE_CFG)
|
|
FULL_LIMINE_ELTORITO = $(ROOTFS)/$(REL_LIMINE_ELTORITO)
|
|
FULL_LIMINE_SYS = $(ROOTFS)/$(REL_LIMINE_SYS)
|
|
|
|
CFLAGS = \
|
|
-std=c99 \
|
|
-Wall \
|
|
-Wextra \
|
|
-Werror \
|
|
-ffreestanding \
|
|
-fno-builtin \
|
|
-fno-stack-protector \
|
|
-fno-pic \
|
|
-I../../include \
|
|
-mabi=sysv \
|
|
-mno-80387 \
|
|
-mno-mmx \
|
|
-mno-3dnow \
|
|
-mno-sse \
|
|
-mno-sse2 \
|
|
-mno-red-zone \
|
|
-mcmodel=kernel \
|
|
-MMD
|
|
# -pedantic \
|
|
|
|
OBJS = main.c.o # start.S.o
|
|
|
|
run: $(IMAGE)
|
|
qemu-system-x86_64 -cdrom $< -serial stdio # -display none
|
|
|
|
clean:
|
|
rm -f $(IMAGE) $(OBJS) $(FULL_KERNEL) $(FULL_LIMINE_CD) $(FULL_LIMINE_ELTORITO) $(FULL_LIMINE_SYS)
|
|
|
|
$(IMAGE): $(FULL_KERNEL) $(FULL_LIMINE_CD) $(FULL_LIMINE_ELTORITO) $(FULL_LIMINE_SYS)
|
|
$(XORRISO) -as mkisofs -b $(REL_LIMINE_CD) -no-emul-boot -boot-load-size 4 -boot-info-table --efi-boot $(REL_LIMINE_ELTORITO) -efi-boot-part --efi-boot-image --protective-msdos-label $(ROOTFS) -o $@
|
|
$(LIMINE_INSTALL) $@
|
|
|
|
$(FULL_KERNEL): $(LINKERSCR) $(OBJS)
|
|
$(CC) -T $(LINKERSCR) -o $@ $(OBJS) -ffreestanding -nostdlib -zmax-page-size=0x1000 -static -lgcc # -lkernaux -Wl,-L../..
|
|
$(GRUB_FILE) --is-x86-multiboot2 $@
|
|
|
|
$(FULL_LIMINE_CD):
|
|
cp -f $(LIMINE_CD) $(FULL_LIMINE_CD)
|
|
|
|
$(FULL_LIMINE_ELTORITO):
|
|
cp -f $(LIMINE_ELTORITO) $(FULL_LIMINE_ELTORITO)
|
|
|
|
$(FULL_LIMINE_SYS):
|
|
cp -f $(LIMINE_SYS) $(FULL_LIMINE_SYS)
|
|
|
|
%.c.o: %.c
|
|
$(CC) -c $< -o $@ $(CFLAGS)
|
|
|
|
%.S.o: %.S
|
|
$(AS) $< -o $@
|