-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
51 lines (41 loc) · 1.52 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
GCCPARAMS = -m32 -fno-use-cxa-atexit -nostdlib -fno-builtin -fno-rtti -fno-exceptions -fno-leading-underscore -Wno-write-strings
ASPARAMS = --32
LDPARAMS = -melf_i386
MKRESCUE = grub2-mkrescue
app = shell.o calc.o fufetch.o login.o date.o
lib = string.o stdlib.o
objects = loader.o gdt.o port.o interruptstubs.o mouse.o interrupts.o input.o keyboard.o time.o \
cpuid.o kernel.o
run: fusion.iso
qemu-system-i386 -m 512M -cdrom fusion.iso
%.o: app/%.cpp
$(CC) $(GCCPARAMS) -c -o $@ $<
%.o: lib/%.cpp
$(CC) $(GCCPARAMS) -c -o $@ $<
%.o: kernel/%.cpp
$(CC) $(GCCPARAMS) -c -o $@ $<
%.o: %.s
$(AS) $(ASPARAMS) -o $@ $<
fusion.bin: linker.ld $(objects) $(lib) $(app)
$(LD) $(LDPARAMS) -T $< -o $@ $(objects) $(lib) $(app)
fusion.iso: fusion.bin
mkdir -p iso
mkdir -p iso/boot
mkdir -p iso/boot/grub
cp fusion.bin iso/boot/fusion.bin
echo 'set timeout=5' > iso/boot/grub/grub.cfg
echo 'set default=0' >> iso/boot/grub/grub.cfg
echo '' >> iso/boot/grub/grub.cfg
echo 'menuentry "Fegeya Fusion" {' >> iso/boot/grub/grub.cfg
echo ' multiboot /boot/fusion.bin' >> iso/boot/grub/grub.cfg
echo ' boot' >> iso/boot/grub/grub.cfg
echo '}' >> iso/boot/grub/grub.cfg
${MKRESCUE} --output=fusion.iso iso
${RM} $(objects) $(lib) $(app) fusion.bin
rm -rf iso
install: fusion.bin
sudo cp $< /boot/fusion.bin
.PHONY: clean
clean:
$(RM) $(objects) $(lib) $(app) fusion.bin fusion.iso
rm -rf iso