There's still some cleanup to do (like making the script cache automatically, removing unneeded flags and adding more redundancy) but those will be taken care of as part of #5 later.
56 lines
1.4 KiB
Makefile
56 lines
1.4 KiB
Makefile
override MAKEFLAGS += -rR
|
|
override IMAGE_NAME := asagiri
|
|
override ARCH := aarch64
|
|
|
|
override CC := aarch64-none-elf-gcc
|
|
override LD := aarch64-none-elf-ld
|
|
override DEFAULT_HOST_CFLAGS := -g -O3 -pipe
|
|
|
|
.PHONY: all
|
|
all: $(IMAGE_NAME).iso
|
|
|
|
.PHONY: run
|
|
run: $(IMAGE_NAME).iso
|
|
qemu-system-aarch64 -M raspi3b -drive file=asagiri.iso,if=sd,format=raw -serial stdio -boot d
|
|
|
|
limine:
|
|
git clone https://github.com/limine-bootloader/limine.git --branch=v5.x-branch-binary --depth=1
|
|
$(MAKE) -C limine
|
|
|
|
.PHONY: hal
|
|
hal:
|
|
$(MAKE) -C arch/$(ARCH)
|
|
|
|
.PHONY: yukari
|
|
yukari:
|
|
$(MAKE) -C yukari
|
|
|
|
$(IMAGE_NAME).iso: limine hal libc yukari
|
|
rm -rf iso_root
|
|
mkdir -p iso_root
|
|
cp -v yukari/bin/yukari \
|
|
limine.cfg limine/limine-bios.sys limine/limine-bios-cd.bin limine/limine-uefi-cd.bin iso_root/
|
|
mkdir -p iso_root/EFI/BOOT
|
|
cp -v limine/BOOTX64.EFI iso_root/EFI/BOOT/
|
|
cp -v limine/BOOTIA32.EFI iso_root/EFI/BOOT/
|
|
xorriso -as mkisofs -b limine-bios-cd.bin \
|
|
-no-emul-boot -boot-load-size 4 -boot-info-table \
|
|
--efi-boot limine-uefi-cd.bin \
|
|
-efi-boot-part --efi-boot-image --protective-msdos-label \
|
|
iso_root -o $(IMAGE_NAME).iso
|
|
./limine/limine bios-install $(IMAGE_NAME).iso
|
|
qemu-img resize $(IMAGE_NAME).iso 4M
|
|
rm -rf iso_root
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm -rf iso_root $(IMAGE_NAME).iso $(IMAGE_NAME).hdd
|
|
$(MAKE) -C yukari clean
|
|
$(MAKE) -C arch/$(ARCH) clean
|
|
$(MAKE) -C libc clean
|
|
|
|
.PHONY: distclean
|
|
distclean: clean
|
|
rm -rf limine ovmf
|
|
$(MAKE) -C yukari distclean
|