]> git.dujemihanovic.xyz Git - nameless-os.git/blob - Makefile
993a455b631b63c0d082d7150a80de0394bff5b3
[nameless-os.git] / Makefile
1 export AS = yasm
2 export CC = i686-elf-gcc
3 export QEMU = qemu-system-i386 -monitor stdio
4 export GIT_REV = $(shell git describe --long HEAD)
5 MAKEFLAGS += -rR
6
7 default: kernel/kernel.elf bootloader
8 all: default boot/x86/disk.img
9 run: all
10 $(QEMU) boot/x86/disk.img
11 debug: all
12 $(QEMU) -s -S boot/x86/disk.img
13
14 kernel/kernel.elf:
15 $(MAKE) -C kernel
16 bootloader:
17 $(MAKE) -C boot/x86
18
19 boot/x86/disk.img: bootloader boot/x86/disk.dump kernel/kernel.elf
20 truncate -s1G boot/x86/disk.img
21 sfdisk boot/x86/disk.img < boot/x86/disk.dump
22 mkfs.fat -F 32 --offset 2048 boot/x86/disk.img
23 dd if=boot/x86/mbr of=boot/x86/disk.img bs=440 count=1 conv=notrunc
24 dd if=boot/x86/vbr-fat32 of=boot/x86/disk.img bs=1 skip=90 seek=1048666 conv=notrunc
25 mcopy -i boot/x86/disk.img@@1M boot/x86/stage3/LOADER.BIN ::.
26 mcopy -i boot/x86/disk.img@@1M kernel/kernel.elf ::./KERNEL.ELF
27
28 clean:
29 $(MAKE) -C boot/x86 clean
30 $(MAKE) -C kernel clean
31
32 # Even though kernel.elf is a real target, it's considered phony so that the
33 # kernel Makefile is always run. We don't check is the kernel binary up-to-date
34 # here because we want to be more recursive.
35 .PHONY: default all clean run debug bootloader kernel/kernel.elf